diff --git a/.gitignore b/.gitignore index 1f890220..5a401156 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,7 @@ rust/ python/update-linux-aide/linux-aide/ *.rpm *.bin -*.terraform* +**.terraform/ *.tfstate* *.tfvars* *.tfplan diff --git a/ansible/collections/ansible_collections/ansible.utils-3.1.0.info/GALAXY.yml b/ansible/collections/ansible_collections/ansible.utils-3.1.0.info/GALAXY.yml deleted file mode 100644 index 9c133401..00000000 --- a/ansible/collections/ansible_collections/ansible.utils-3.1.0.info/GALAXY.yml +++ /dev/null @@ -1,8 +0,0 @@ -download_url: https://galaxy.ansible.com/api/v3/plugin/ansible/content/published/collections/artifacts/ansible-utils-3.1.0.tar.gz -format_version: 1.0.0 -name: utils -namespace: ansible -server: https://galaxy.ansible.com/api/ -signatures: [] -version: 3.1.0 -version_url: /api/v3/plugin/ansible/content/published/collections/index/ansible/utils/versions/3.1.0/ diff --git a/ansible/collections/ansible_collections/ansible/utils/.ansible-lint b/ansible/collections/ansible_collections/ansible/utils/.ansible-lint deleted file mode 100644 index 8d9bb70b..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/.ansible-lint +++ /dev/null @@ -1,5 +0,0 @@ ---- -profile: production - -exclude_paths: - - changelogs/changelog.yaml diff --git a/ansible/collections/ansible_collections/ansible/utils/.config/ansible-lint.yaml b/ansible/collections/ansible_collections/ansible/utils/.config/ansible-lint.yaml deleted file mode 100644 index b688aca6..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/.config/ansible-lint.yaml +++ /dev/null @@ -1,3 +0,0 @@ ---- -exclude_paths: - - .github diff --git a/ansible/collections/ansible_collections/ansible/utils/.config/dictionary.txt b/ansible/collections/ansible_collections/ansible/utils/.config/dictionary.txt deleted file mode 100644 index 4d4455b7..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/.config/dictionary.txt +++ /dev/null @@ -1,28 +0,0 @@ -antsichaut -argspec -astimezone -autoupdate -basepython -cdcp -cidrblock -cmds -dataclass -devel -endgroup -envname -envtmpdir -etime -extraheader -fileh -isoformat -nolabel -notesdir -passenv -returncode -setenv -setuptools -suboptions -tmpvtm -toxfile -toxinidir -tracebackhide diff --git a/ansible/collections/ansible_collections/ansible/utils/.darglint b/ansible/collections/ansible_collections/ansible/utils/.darglint deleted file mode 100644 index 8e68aa3e..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/.darglint +++ /dev/null @@ -1,7 +0,0 @@ -[darglint] -# NOTE: All `darglint` styles except for `sphinx` hit ridiculously low -# NOTE: performance on some of the in-project Python modules. -# Refs: -# * https://github.com/terrencepreilly/darglint/issues/186 -docstring_style = sphinx -strictness = full diff --git a/ansible/collections/ansible_collections/ansible/utils/.flake8 b/ansible/collections/ansible_collections/ansible/utils/.flake8 deleted file mode 100644 index 4795515e..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/.flake8 +++ /dev/null @@ -1,72 +0,0 @@ -[flake8] - -builtins = _ - -# Print the total number of errors: -count = true - -# Don't even try to analyze these: -extend-exclude = - # No need to traverse egg info dir - *.egg-info, - # tool cache dirs - *_cache - # project env vars - .env, - # GitHub configs - .github, - # Cache files of MyPy - .mypy_cache, - # Cache files of pytest - .pytest_cache, - # Temp dir of pytest-testmon - .tmontmp, - # Occasional virtualenv dir - .venv - # VS Code - .vscode, - # Temporary build dir - build, - # This contains sdists and wheels of ansible-navigator that we don't want to check - dist, - # Metadata of `pip wheel` cmd is autogenerated - pip-wheel-metadata, - # adjacent venv - venv - # ansible won't let me - __init__.py - -# IMPORTANT: avoid using ignore option, always use extend-ignore instead -# Completely and unconditionally ignore the following errors: -extend-ignore = - # Safeguard neutering of flake8-quotes : https://github.com/zheller/flake8-quotes/issues/105 - Q, - # annoy black by allowing white space before : https://github.com/psf/black/issues/315 - E203, - # duplicate of pylint W0611 (unused-import) - F401, - # duplicate of pylint E0602 (undefined-variable) - F821, - # duplicate of pylint W0612 (unused-variable) - F841, - -# Accessibility/large fonts and PEP8 unfriendly: -max-line-length = 100 - -# Allow certain violations in certain files: -# Please keep both sections of this list sorted, as it will be easier for others to find and add entries in the future -per-file-ignores = - # The following ignores have been researched and should be considered permanent - # each should be preceeded with an explanation of each of the error codes - # If other ignores are added for a specific file in the section following this, - # these will need to be added to that line as well. - - - # S101: Allow the use of assert within the tests directory, since tests require it. - tests/**.py: S101 - - # The following were present during the initial implementation. - # They are expected to be fixed and unignored over time. - -# Count the number of occurrences of each error/warning code and print a report: -statistics = true diff --git a/ansible/collections/ansible_collections/ansible/utils/.github/release-drafter.yml b/ansible/collections/ansible_collections/ansible/utils/.github/release-drafter.yml deleted file mode 100644 index e3e5966e..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/.github/release-drafter.yml +++ /dev/null @@ -1,3 +0,0 @@ ---- -# see https://github.com/ansible-community/devtools -_extends: ansible-community/devtools diff --git a/ansible/collections/ansible_collections/ansible/utils/.github/workflows/check_label.yml b/ansible/collections/ansible_collections/ansible/utils/.github/workflows/check_label.yml deleted file mode 100644 index b120bfa3..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/.github/workflows/check_label.yml +++ /dev/null @@ -1,11 +0,0 @@ ---- -name: "Check label" -concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true -on: # yamllint disable-line rule:truthy - pull_request_target: - types: [opened, labeled, unlabeled, synchronize] -jobs: - check_label: - uses: ansible/ansible-content-actions/.github/workflows/check_label.yaml@main diff --git a/ansible/collections/ansible_collections/ansible/utils/.github/workflows/codecoverage.yml b/ansible/collections/ansible_collections/ansible/utils/.github/workflows/codecoverage.yml deleted file mode 100644 index 7ae6b632..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/.github/workflows/codecoverage.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- -name: "Code converage" - -on: # yamllint disable-line rule:truthy - push: - pull_request: - branches: [ main ] - -jobs: - codecoverage: - uses: ansible-network/github_actions/.github/workflows/coverage_network_devices.yml@main - with: - collection_pre_install: >- - git+https://github.com/ansible-collections/ansible.utils.git - git+https://github.com/ansible-collections/ansible.netcommon.git diff --git a/ansible/collections/ansible_collections/ansible/utils/.github/workflows/draft_release.yml b/ansible/collections/ansible_collections/ansible/utils/.github/workflows/draft_release.yml deleted file mode 100644 index 640bf2d1..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/.github/workflows/draft_release.yml +++ /dev/null @@ -1,18 +0,0 @@ ---- -name: "Draft release" -concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true -on: # yamllint disable-line rule:truthy - workflow_dispatch: -env: - NAMESPACE: ${{ github.repository_owner }} - COLLECTION_NAME: utils - ANSIBLE_COLLECTIONS_PATHS: ./ -jobs: - update_release_draft: - uses: ansible/ansible-content-actions/.github/workflows/draft_release.yaml@main - with: - repo: ${{ github.event.pull_request.head.repo.full_name }} - secrets: - BOT_PAT: ${{ secrets.BOT_PAT }} diff --git a/ansible/collections/ansible_collections/ansible/utils/.github/workflows/release.yml b/ansible/collections/ansible_collections/ansible/utils/.github/workflows/release.yml deleted file mode 100644 index 6dbb1aa3..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/.github/workflows/release.yml +++ /dev/null @@ -1,14 +0,0 @@ ---- -name: "Release collection" -on: # yamllint disable-line rule:truthy - release: - types: [published] - -jobs: - release: - uses: ansible/ansible-content-actions/.github/workflows/release.yaml@main - with: - environment: release - secrets: - ah_token: ${{ secrets.AH_TOKEN }} - ansible_galaxy_api_key: ${{ secrets.ANSIBLE_GALAXY_API_KEY }} diff --git a/ansible/collections/ansible_collections/ansible/utils/.github/workflows/tests.yml b/ansible/collections/ansible_collections/ansible/utils/.github/workflows/tests.yml deleted file mode 100644 index 6f075eb1..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/.github/workflows/tests.yml +++ /dev/null @@ -1,45 +0,0 @@ ---- -name: "CI" - -concurrency: - group: ${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -on: # yamllint disable-line rule:truthy - pull_request: - branches: [main] - workflow_dispatch: - schedule: - - cron: '0 0 * * *' - -jobs: - changelog: - uses: ansible/ansible-content-actions/.github/workflows/changelog.yaml@main - if: github.event_name == 'pull_request' - ansible-lint: - uses: ansible/ansible-content-actions/.github/workflows/ansible_lint.yaml@main - sanity: - uses: ansible/ansible-content-actions/.github/workflows/sanity.yaml@main - unit-galaxy: - uses: ansible/ansible-content-actions/.github/workflows/unit.yaml@main - integration: - uses: ansible/ansible-content-actions/.github/workflows/integration.yaml@main - all_green: - if: ${{ always() }} - needs: - - changelog - - sanity - - unit-galaxy - - ansible-lint - - integration - runs-on: ubuntu-latest - steps: - - run: >- - python -c "assert 'failure' not in - set([ - '${{ needs.changelog.result }}', - '${{ needs.integration.result }}', - '${{ needs.sanity.result }}', - '${{ needs.unit-galaxy.result }}', - '${{ needs.ansible-lint.result }}' - ])" diff --git a/ansible/collections/ansible_collections/ansible/utils/.github/workflows/token_refresh.yml b/ansible/collections/ansible_collections/ansible/utils/.github/workflows/token_refresh.yml deleted file mode 100644 index d0a71c0f..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/.github/workflows/token_refresh.yml +++ /dev/null @@ -1,14 +0,0 @@ ---- -name: "Refresh Automation Hub Token" -on: # yamllint disable-line rule:truthy - schedule: - - cron: '0 0 * * *' - workflow_dispatch: - -jobs: - refresh: - uses: ansible/ansible-content-actions/.github/workflows/refresh_ah_token.yaml@main - with: - environment: release - secrets: - ah_token: ${{ secrets.AH_TOKEN }} diff --git a/ansible/collections/ansible_collections/ansible/utils/.gitignore b/ansible/collections/ansible_collections/ansible/utils/.gitignore deleted file mode 100644 index 6ec57cae..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/.gitignore +++ /dev/null @@ -1,138 +0,0 @@ -/tests/output/ -/changelogs/.plugin-cache.yaml - -# In case a collection directory is present, ignore it -/collections/ - -# Byte-compiled / optimized / DLL files -__pycache__/ -*.py[cod] -*$py.class - -# C extensions -*.so - -# Distribution / packaging -.Python -build/ -develop-eggs/ -dist/ -downloads/ -eggs/ -.eggs/ -lib/ -lib64/ -parts/ -sdist/ -var/ -wheels/ -pip-wheel-metadata/ -share/python-wheels/ -*.egg-info/ -.installed.cfg -*.egg -MANIFEST - -# PyInstaller -# Usually these files are written by a python script from a template -# before PyInstaller builds the exe, so as to inject date/other infos into it. -*.manifest -*.spec - -# Installer logs -pip-log.txt -pip-delete-this-directory.txt - -# Unit test / coverage reports -htmlcov/ -.tox/ -.nox/ -.coverage -.coverage.* -.cache -nosetests.xml -coverage.xml -*.cover -*.py,cover -.hypothesis/ -.pytest_cache/ - -# Translations -*.mo -*.pot - -# Django stuff: -*.log -local_settings.py -db.sqlite3 -db.sqlite3-journal - -# Flask stuff: -instance/ -.webassets-cache - -# Scrapy stuff: -.scrapy - -# Sphinx documentation -docs/_build/ - -# PyBuilder -target/ - -# Jupyter Notebook -.ipynb_checkpoints - -# IPython -profile_default/ -ipython_config.py - -# pyenv -.python-version - -# pipenv -# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. -# However, in case of collaboration, if having platform-specific dependencies or dependencies -# having no cross-platform support, pipenv may install dependencies that don't work, or not -# install all needed dependencies. -#Pipfile.lock - -# PEP 582; used by e.g. github.com/David-OConnor/pyflow -__pypackages__/ - -# Celery stuff -celerybeat-schedule -celerybeat.pid - -# SageMath parsed files -*.sage.py - -# Environments -.env -.venv -env/ -venv/ -ENV/ -env.bak/ -venv.bak/ - -# Spyder project settings -.spyderproject -.spyproject - -# Rope project settings -.ropeproject - -# mkdocs documentation -/site - -# mypy -.mypy_cache/ -.dmypy.json -dmypy.json - -# Pyre type checker -.pyre/ - -# ide -.vscode diff --git a/ansible/collections/ansible_collections/ansible/utils/.isort.cfg b/ansible/collections/ansible_collections/ansible/utils/.isort.cfg deleted file mode 100644 index df6b4fd5..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/.isort.cfg +++ /dev/null @@ -1,6 +0,0 @@ -[settings] -known_first_party=ansible_collections.ansible.utils -line_length=100 -lines_after_imports=2 -lines_between_types=1 -profile=black diff --git a/ansible/collections/ansible_collections/ansible/utils/.pre-commit-config.yaml b/ansible/collections/ansible_collections/ansible/utils/.pre-commit-config.yaml deleted file mode 100644 index 16ab3f35..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/.pre-commit-config.yaml +++ /dev/null @@ -1,41 +0,0 @@ ---- -repos: - - repo: https://github.com/ansible-network/collection_prep - rev: 1.1.1 - hooks: - # - id: autoversion # removed as being handled by GHA push and release drafter - - id: update-docs - - - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.5.0 - hooks: - - id: check-merge-conflict - - id: debug-statements - - id: end-of-file-fixer - - id: no-commit-to-branch - - id: trailing-whitespace - - - repo: https://github.com/asottile/add-trailing-comma - rev: v3.1.0 - hooks: - - id: add-trailing-comma - - - repo: https://github.com/pre-commit/mirrors-prettier - rev: "v4.0.0-alpha.8" - hooks: - - id: prettier - additional_dependencies: - - prettier - - prettier-plugin-toml - - - repo: https://github.com/PyCQA/isort - rev: 5.13.2 - hooks: - - id: isort - name: Sort import statements using isort - args: ["--filter-files"] - - - repo: https://github.com/psf/black - rev: 23.12.1 - hooks: - - id: black diff --git a/ansible/collections/ansible_collections/ansible/utils/.prettierignore b/ansible/collections/ansible_collections/ansible/utils/.prettierignore deleted file mode 100644 index 3c756a23..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/.prettierignore +++ /dev/null @@ -1,19 +0,0 @@ -# Stuff we don't want priettier to ever to look into -.*/ -coverage/ - -# Environments -.env -.venv -env/ -venv/ -ENV/ -env.bak/ -venv.bak/ - -# A linked collection directory created by pytest-ansible-units -collections/ - -tests/output/ - -README.md diff --git a/ansible/collections/ansible_collections/ansible/utils/.yamllint b/ansible/collections/ansible_collections/ansible/utils/.yamllint deleted file mode 100644 index 3adaf90c..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/.yamllint +++ /dev/null @@ -1,15 +0,0 @@ ---- -extends: default - -ignore: | - .tox - changelogs/* - -rules: - braces: - max-spaces-inside: 1 - level: error - brackets: - max-spaces-inside: 1 - level: error - line-length: disable diff --git a/ansible/collections/ansible_collections/ansible/utils/CHANGELOG.rst b/ansible/collections/ansible_collections/ansible/utils/CHANGELOG.rst deleted file mode 100644 index 077f7e38..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/CHANGELOG.rst +++ /dev/null @@ -1,367 +0,0 @@ -====================================== -Ansible Utils Collection Release Notes -====================================== - -.. contents:: Topics - - -v3.1.0 -====== - -Minor Changes -------------- - -- Add support in fact_diff filter plugin to show common lines.(https://github.com/ansible-collections/ansible.utils/issues/311) - -Bugfixes --------- - -- Avoid unnecessary use of persistent connection in `cli_parse`, `fact_diff`, `update_fact` and `validate` as this action does not require a connection. - -Documentation Changes ---------------------- - -- ipv6form filter plugin - Fix to be displayed correctly. -- validate lookup plugin - Fix syntax in EXAMPLES. -- validate module - Fix syntax in EXAMPLES. - -v3.0.0 -====== - -Release Summary ---------------- - -Starting from this release, the minimum `ansible-core` version this collection requires is `2.14.0`. That last known version compatible with ansible-core<2.14 is `v2.12.0`. - -Major Changes -------------- - -- Bumping `requires_ansible` to `>=2.14.0`, since previous ansible-core versions are EoL now. - -v2.12.0 -======= - -Minor Changes -------------- - -- Fact_diff filter plugin - Add fact_diff filter plugin. (https://github.com/ansible-collections/ansible.utils/issues/78). - -New Plugins ------------ - -Filter -~~~~~~ - -- fact_diff - Find the difference between currently set facts - -v2.11.0 -======= - -Minor Changes -------------- - -- Add ipcut filter plugin.(https://github.com/ansible-collections/ansible.utils/issues/251) -- Add ipv6form filter plugin.(https://github.com/ansible-collections/ansible.utils/issues/230) - -Bugfixes --------- - -- Validate input for ipv4_hex(https://github.com/ansible-collections/ansible.utils/issues/281) - -New Plugins ------------ - -Filter -~~~~~~ - -- ipcut - This filter is designed to get 1st or last few bits of IP address. -- ipv6form - This filter is designed to convert ipv6 address in different formats. For example expand, compressetc. - -v2.10.4 -======= - -v2.10.3 -======= - -v2.10.2 -======= - -Minor Changes -------------- - -- validate - Add option `check_format` for the jsonschema engine to disable JSON Schema format checking. -- validate - Add support for JSON Schema draft 2019-09 and 2020-12 as well as automatically choosing the draft from the `$schema` field of the criteria. - -v2.10.1 -======= - -v2.10.0 -======= - -v2.9.0 -====== - -Minor Changes -------------- - -- to_xml - Added support to disable xml declartion with full_document flag. - -Bugfixes --------- - -- mac - reorganize regexes to work around 3.11 regex changes. (https://github.com/ansible-collections/ansible.utils/pull/231) - -v2.8.0 -====== - -Minor Changes -------------- - -- to_xml - Added support for using spaces to indent an XML doc via a new `indent` parameter. - -Bugfixes --------- - -- Accept int input for ipaddr filters. - -v2.7.0 -====== - -Minor Changes -------------- - -- Add support for content template parser -- Added new connection base class similar to ansible.netcommon's NetworkConnectionBase without the network-specific option masking (https://github.com/ansible-collections/ansible.utils/pull/213). -- ipsubnet - the index parameter should only ever be an integer if it is provided. this changes the argument type from str to int. - -Bugfixes --------- - -- Fix filters to only raise AnsibleFilterError exceptions (https://github.com/ansible-collections/ansible.utils/issues/209). -- ipsubnet - interacting with large subnets could cause performance constraints. the result would be the system would appear to hang while it built out a list of all possible subnets or stepped through all possible subnets one at a time. when sending a prefix that is a supernet of the passed in network the behavior wasn't consistent. this now returns an AnsibleFilterError in that scenario across all python releases. (https://github.com/ansible-collections/ansible.utils/issues/132) - -v2.6.1 -====== - -Release Summary ---------------- - -Rereleased 2.6.0 with fixes for internal testing. - -v2.6.0 -====== - -Minor Changes -------------- - -- 'consolidate' filter plugin added. - -v2.5.2 -====== - -Bugfixes --------- - -- Fix issue in ipaddr,ipv4,ipv6,ipwrap filters.(https://github.com/ansible-collections/ansible.utils/issues/148). -- ipaddr - Add valid network for link-local (https://github.com/ansible-collections/ansible.netcommon/issues/350). -- ipaddr - Fix issue of breaking ipaddr filter with netcommon 2.6.0(https://github.com/ansible-collections/ansible.netcommon/issues/375). - -v2.5.1 -====== - -Documentation Changes ---------------------- - -- `in_any_network` - plugin doc fix for redundant line. - -v2.5.0 -====== - -Minor Changes -------------- - -- 'keep_keys' filter plugin added. -- 'remove_keys' filter plugin added. -- 'replace_keys' filter plugin added. -- Add cli_merge ipaddr filter plugin. -- Add ip4_hex filter plugin. -- Add ipaddr filter plugin. -- Add ipmath filter plugin. -- Add ipsubnet filter plugin. -- Add ipv4 filter plugin. -- Add ipv6 filter plugin. -- Add ipwrap filter plugin. -- Add network_in_network filter plugin. -- Add network_in_usable filter plugin. -- Add next_nth_usable filter plugin. -- Add nthhost filter plugin. -- Add previous_nth_usable filter plugin. -- Add reduce_on_network filter plugin. -- Add slaac,hwaddr,mac filter plugin. -- New validate sub-plugin "config" to validate device configuration against user-defined rules (https://github.com/ansible-collections/ansible.network/issues/15). - -Documentation Changes ---------------------- - -- Enhancement in documentation and docstring. - -v2.4.3 -====== - -Release Summary ---------------- - -Rereleased 2.4.2 with fix of network ee tests. - -v2.4.2 -====== - -Release Summary ---------------- - -Rereleased 2.4.1 with valid requirement.txt. - -v2.4.1 -====== - -Release Summary ---------------- - -Rereleased 2.4.0 with trivial changes. - -v2.4.0 -====== - -Minor Changes -------------- - -- Add new plugin param_list_compare that generates the final param list after comparing base and provided/target param list. - -Bugfixes --------- - -- Update validate to use 2.11 ArgumentSpecValidator if available. - -v2.3.1 -====== - -Bugfixes --------- - -- Add support for the validation of formats to the jsonschema validator. -- Improve test coverage - -v2.3.0 -====== - -Minor Changes -------------- - -- Add usable_range test plugin - -Bugfixes --------- - -- Also include empty lists and mappings into the output dictionary (https://github.com/ansible-collections/ansible.utils/pull/58). - -Documentation Changes ---------------------- - -- Update doc for usable_range filter plugin - -v2.2.0 -====== - -Minor Changes -------------- - -- Add in_any_network, in_network, in_one_network test plugins -- Add ip, ip_address test plugins -- Add ipv4, ipv4_address, ipv4_hostmask, ipv4_netmask test plugins -- Add ipv6, ipv6_address, ipv6_ipv4_mapped, ipv6_sixtofour, ipv6_teredo test plugins -- Add loopback, mac, multicast test plugins -- Add private, public, reserved test plugins -- Add resolvable test plugins -- Add subnet_of, supernet_of, unspecified test plugins - -v2.1.0 -====== - -Minor Changes -------------- - -- Add from_xml and to_xml fiter plugin (https://github.com/ansible-collections/ansible.utils/pull/56). - -Bugfixes --------- - -- Add missing test requirements (https://github.com/ansible-collections/ansible.utils/pull/57). - -v2.0.2 -====== - -Bugfixes --------- - -- Fix cli_parse template_path read error (https://github.com/ansible-collections/ansible.utils/pull/51). -- Fix jsonschema input data format checking (https://github.com/ansible-collections/ansible.utils/pull/50). - -v2.0.1 -====== - -Bugfixes --------- - -- Fix ansible.utils.cli_parse action plugin to support old cli_parse sub-plugin structure in ansible.netcommon collection. - -v2.0.0 -====== - -Breaking Changes / Porting Guide --------------------------------- - -- If added custom sub plugins in your collection move from old location `plugins/` to the new location `plugins/sub_plugins/` and update the imports as required -- Move sub plugins cli_parsers, fact_diff and validate to `plugins/sub_plugins` folder -- The `cli_parsers` sub plugins folder name is changed to `cli_parse` to have consistent naming convention, that is all the cli_parse subplugins will now be in `plugins/sub_plugins/cli_parse` folder - -v1.0.1 -====== - -Minor Changes -------------- - -- Move CHANGELOG.rst file under changelogs folder as required - -v1.0.0 -====== - -Minor Changes -------------- - -- Add cli_parse module and plugins (https://github.com/ansible-collections/ansible.utils/pull/28) -- Added fact_diff plugin and sub plugin -- Added validate module/lookup/filter/test plugin to validate data based on given criteria - -Bugfixes --------- - -- linting and formatting for CI - -New Plugins ------------ - -Lookup -~~~~~~ - -- get_path - Retrieve the value in a variable using a path -- index_of - Find the indices of items in a list matching some criteria -- to_paths - Flatten a complex object into a dictionary of paths and values -- validate - Validate data with provided criteria - -New Modules ------------ - -- cli_parse - Parse cli output or text using a variety of parsers -- fact_diff - Find the difference between currently set facts -- update_fact - Update currently set facts -- validate - Validate data with provided criteria diff --git a/ansible/collections/ansible_collections/ansible/utils/FILES.json b/ansible/collections/ansible_collections/ansible/utils/FILES.json deleted file mode 100644 index 65bfbfcb..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/FILES.json +++ /dev/null @@ -1,3743 +0,0 @@ -{ - "files": [ - { - "name": ".", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": ".ansible-lint", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "b47f72e159f93a5ff07ea2534752e0fa977b214e9ac05c667fa83ac13be4e50c", - "format": 1 - }, - { - "name": ".flake8", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "c3619890addbe81b337523c7d31461089055b267a3665f5f5c93d47fa0dbee96", - "format": 1 - }, - { - "name": "README.md", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "0c3f32b1ee520bcb76eccc149100ab557dc9c85ee7ac76f653fe5a89fec56e3d", - "format": 1 - }, - { - "name": ".isort.cfg", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "4ca0097b4a09ffae0f6cad7b280f8f7acf1b6cc0c4bfd28a79ddc81d3b840262", - "format": 1 - }, - { - "name": "docs", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "docs/ansible.utils.resolvable_test.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "62013972070a09452a421a061a891e8ceebc94ea610103b6b21e14441328bed1", - "format": 1 - }, - { - "name": "docs/ansible.utils.get_path_lookup.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "0a5b58a4a23622668ac0b1ff8e8279973fba07c285d7621268259eecbcba8177", - "format": 1 - }, - { - "name": "docs/ansible.utils.ipv6_sixtofour_test.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "199d99f772c92d20a560fa5afbba8ac4df74a11eaccffb5c29a2d96c3e6dea02", - "format": 1 - }, - { - "name": "docs/ansible.utils.slaac_filter.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "dc9f60ef24b7ad1e30861adfb02e97efd3db05579c0790cb07e8535db03bc69b", - "format": 1 - }, - { - "name": "docs/ansible.utils.consolidate_filter.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "bf891d59082405b69a8bbc998ede84fac3b908dfb98f06c5eb4081288a8fcc6f", - "format": 1 - }, - { - "name": "docs/ansible.utils.in_any_network_test.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "e9678218618d0bb3f526f0cdfaf3d09f24bbaadd6f7317b02cddc4f2bfc7598b", - "format": 1 - }, - { - "name": "docs/ansible.utils.validate_lookup.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "3cb9f3909679db84ec4e17f102eca4dc16872c39098254fa1dfae976e42136d9", - "format": 1 - }, - { - "name": "docs/ansible.utils.to_xml_filter.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "dcbfe90179444aba2c77f5edb8aa3f2f1e46509b19a3b46ac1ce825c145c88c6", - "format": 1 - }, - { - "name": "docs/ansible.utils.param_list_compare_filter.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "b9a763a3b44b126a7bad44558f4e7b6d861d9a42e4978cfd5bc1f655c03dc5d3", - "format": 1 - }, - { - "name": "docs/ansible.utils.in_network_test.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "6054c4414e7df289acca584d8cde0025fda866f5fd8fd268c1cdba7c1cb7bd9d", - "format": 1 - }, - { - "name": "docs/ansible.utils.cidr_merge_filter.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "d214b5cda14a322db93269a17b361b4d8b56989b29a7808619cc5d177114a4c5", - "format": 1 - }, - { - "name": "docs/ansible.utils.fact_diff_filter.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "0be4cf38c71bd11475f9a4dc73700ae11ec57cd0d27af3d3379c08e94e21de09", - "format": 1 - }, - { - "name": "docs/docsite", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "docs/docsite/rst", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "docs/docsite/rst/filters_ipaddr.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "c9775fb372228245e46eeff7beefdf3cd765ecfccd7e688eda2ec689e2ac2195", - "format": 1 - }, - { - "name": "docs/docsite/extra-docs.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "735531af48baf6de4e933219f147cf4b3187410f111ec9c188a06903675b757d", - "format": 1 - }, - { - "name": "docs/ansible.utils.ip_address_test.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "0f9a4db063314e0acdf3dc69c1c669955a27927bbb6b25ea3fe69322d3a59390", - "format": 1 - }, - { - "name": "docs/ansible.utils.ipv6_ipv4_mapped_test.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "a2f80757dd33fb9253ed11d8de3cb8aa0fb27f880fe3fe193caa1eb13ab5ed9e", - "format": 1 - }, - { - "name": "docs/ansible.utils.to_paths_filter.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "f31c47be2c7013bdf8a52668c84e5b4beed859fe0ad77459138e42a3f0d61425", - "format": 1 - }, - { - "name": "docs/ansible.utils.public_test.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "4cb3046bae484b3de9facc9a12f078a1412af6c42dc729df3b821e8d2075fd46", - "format": 1 - }, - { - "name": "docs/ansible.utils.to_paths_lookup.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "c3c9628ebc9e7ddfd0d478ff5b8dcbb15f86a0b85ce1607bc37e3e5e368421c1", - "format": 1 - }, - { - "name": "docs/ansible.utils.ipv4_address_test.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "4842230a2ce840862d3366ecce677e56ad38600b5b07a27de3afbdc4e5b1759c", - "format": 1 - }, - { - "name": "docs/ansible.utils.reduce_on_network_filter.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "b8a63a854939b7468f04a5d15680840c679c4d080a0b367a61693c3a27995f10", - "format": 1 - }, - { - "name": "docs/ansible.utils.ipv6_teredo_test.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "8019ff32d2d4a4b0796dc1f9a43a391edb75a5c9acc4a73c7b4b2216c54a242f", - "format": 1 - }, - { - "name": "docs/ansible.utils.ipv4_hostmask_test.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "95cdff320db4d31cf5fb9abe6144b39b1cf7f1da47f827341b0c52ba5475911a", - "format": 1 - }, - { - "name": "docs/ansible.utils.get_path_filter.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "d93dd63925b87e4d57470f4cf6436b374a975bd6ee052a8283bfa8031923ed2b", - "format": 1 - }, - { - "name": "docs/ansible.utils.ipaddr_filter.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "b3e3890d2cf44c611439f215c3e9105af9975f72c5bbd4766ddbdec49c4d01b2", - "format": 1 - }, - { - "name": "docs/ansible.utils.previous_nth_usable_filter.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "94e6ce5e91e19ccb7249987bed4d5288f231e31900299698508ce3980f382e71", - "format": 1 - }, - { - "name": "docs/ansible.utils.ipwrap_filter.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "b26276300d797113d036be6eeac6fd76812cd8e3e32d8cae13e4421b4111d233", - "format": 1 - }, - { - "name": "docs/ansible.utils.unspecified_test.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "1eec59f8934a04b53d1615f3b207586fcd8fad2981b85d0665f0f57026a6f29c", - "format": 1 - }, - { - "name": "docs/ansible.utils.update_fact_module.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "9a249c8e78a9da1ccc2f3a3f8532e0a3950652f678a22c232d9785e6adbdab2a", - "format": 1 - }, - { - "name": "docs/ansible.utils.ipv6_test.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "05665d4cc703bf130c7593ad3e0a974e33bf1530318a32caf38bc2b9bd5ec3d0", - "format": 1 - }, - { - "name": "docs/ansible.utils.next_nth_usable_filter.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "0702412f10dce01ad520ef2c44622bdf4b4e7e1eadbdb3f7cecaf17c79cff102", - "format": 1 - }, - { - "name": "docs/ansible.utils.fact_diff_module.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "c27b93299035cc8c6682dda0051e91d1db168007c2c73356808098cad41da3da", - "format": 1 - }, - { - "name": "docs/ansible.utils.supernet_of_test.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "f5a987278d1a641a79c672006b8eeb37b1e937f4f85baaefb600a3a6e4affae4", - "format": 1 - }, - { - "name": "docs/ansible.utils.ipv4_netmask_test.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "b6d22ab2bffd5865608a1cdb0039226c116f4b086a0b15196e66181323acc4c6", - "format": 1 - }, - { - "name": "docs/ansible.utils.ipv6form_filter.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "f5cef46d5cde1a50882f319db18ea8421e11a92cfc51b0f9d25201040bdd4a23", - "format": 1 - }, - { - "name": "docs/ansible.utils.replace_keys_filter.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "c1861c5dccd6e4e9e24c5250c274237d4d5df62bbdcede41b78c1f808d2ddcf8", - "format": 1 - }, - { - "name": "docs/ansible.utils.cli_parse_module.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "d18023f4a52a2bf40a6973bff87a1507abe081e772b98c5ad0a88790fb41d00b", - "format": 1 - }, - { - "name": "docs/ansible.utils.ipmath_filter.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "0ad6e54b6e827dcf8235a8e237d94fd2ed8f7fbe34dd47aff5b5ed6fdd45e33c", - "format": 1 - }, - { - "name": "docs/ansible.utils.ipv4_test.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "495c65997da307de9e446f77e413d0d1ec26d245d855cabc838737a78aceec11", - "format": 1 - }, - { - "name": "docs/ansible.utils.ip4_hex_filter.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "9568ea4894daa231731491939cdfb193bcc631f36580d0cb82e161e692870c15", - "format": 1 - }, - { - "name": "docs/ansible.utils.index_of_lookup.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "9d3492d8a3db1ccc4e8449fc37e05a30449dec8a71cb0801d9056ad93af0cf57", - "format": 1 - }, - { - "name": "docs/ansible.utils.ipcut_filter.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "150ecfe60509b1b0093de7ea4a911eb8ab291cd1b9398586fa96a69b09daa43f", - "format": 1 - }, - { - "name": "docs/ansible.utils.private_test.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "4e36e2bd85c58c001cd29b548979ab23adbcdd02290f375293db88c23ca55ae3", - "format": 1 - }, - { - "name": "docs/ansible.utils.index_of_filter.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "cf5a4c7351a8a43b70c4efbcc6932d0a75f35d1dbb3c040918c470452c6d68ef", - "format": 1 - }, - { - "name": "docs/ansible.utils.keep_keys_filter.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "57b1faf8874e35a682b8ac1f717bc43e3ab4b015bc7ac8bd984a458ab2444262", - "format": 1 - }, - { - "name": "docs/ansible.utils.validate_test.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "81f6e37b6f9275cd8bb1240a7bfa7a8fcefbb744b68c027ab922321d4547d91f", - "format": 1 - }, - { - "name": "docs/ansible.utils.network_in_usable_filter.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "74e58e97636306402fcc697a0478eabc57ecc2df6a02b8a8e00b8cbd23239db6", - "format": 1 - }, - { - "name": "docs/ansible.utils.usable_range_filter.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "1075aa159a55fbe12b3a53076111d509078ed5f08c54327d4f1fc3f85a3a29d8", - "format": 1 - }, - { - "name": "docs/ansible.utils.validate_module.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "b47930c113c23060d1281bade44f65abcfa57be02943ef2652710929fa9d6f27", - "format": 1 - }, - { - "name": "docs/ansible.utils.ipv4_filter.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "58d021685cdafba7cae88b47ae7b996e9cd4df7f4e3e4aa7e8519c06176f52bd", - "format": 1 - }, - { - "name": "docs/ansible.utils.multicast_test.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "55c9f48ea04a80347fe42bc9c25fa0771578924f5afbff64a42feb04bbdb84be", - "format": 1 - }, - { - "name": "docs/ansible.utils.in_one_network_test.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "9fc9e8aa7b1e66065f1fc6fe5d3813eabea32935c9010bd40bc8dd44cad350a7", - "format": 1 - }, - { - "name": "docs/ansible.utils.subnet_of_test.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "bab2b4b9c50f9250332f845ab0d6e5b8d829301fa9c9cd1f168f31d306bfdad2", - "format": 1 - }, - { - "name": "docs/ansible.utils.nthhost_filter.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "4504d31bfe9857b381ab5027d6e8979cce559db48e515ee220b47e9f83ab628d", - "format": 1 - }, - { - "name": "docs/ansible.utils.remove_keys_filter.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "4d8e87cf05341c85a46097cf933e6705ca0de7a189f078165772d21604188f9f", - "format": 1 - }, - { - "name": "docs/ansible.utils.reserved_test.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "abfaea7206a74c57fabcf1116cbd0fc0ad510c1cab57c9da5ac29ce552370263", - "format": 1 - }, - { - "name": "docs/ansible.utils.ip_test.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "423c666b424a893fed77918cd8afbd5acf4b95156ea109e4c1ae9b910333b39d", - "format": 1 - }, - { - "name": "docs/ansible.utils.validate_filter.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "7b3e3f7b9576c04425c56142667cd0ffc8f021e2624fa86e23f9e9f20745c13e", - "format": 1 - }, - { - "name": "docs/ansible.utils.hwaddr_filter.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "06004f98865238ad74c52a67c40b977315200c1dfd5b48e3666681b8a83f53f5", - "format": 1 - }, - { - "name": "docs/ansible.utils.from_xml_filter.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "1a197b87a3c3f47315f279e12775bf5c99f36ee003ff639e3f381e5342f98ed8", - "format": 1 - }, - { - "name": "docs/ansible.utils.network_in_network_filter.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "25caf49346a61296cab62448dec2253f7fe8d1d551de18006cb651b0a962d49d", - "format": 1 - }, - { - "name": "docs/ansible.utils.ipv6_address_test.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "30a2515d6260cfda2181cb101c26063dc5b18529cd60576d39a88160714f5af0", - "format": 1 - }, - { - "name": "docs/ansible.utils.mac_test.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "f0b1e210c490176d84983fca86cb4b83fd346e40176789ffb8d3c66b1dd17921", - "format": 1 - }, - { - "name": "docs/ansible.utils.macaddr_filter.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "549d998af199f3f60df3c87594d015379d4a674e7fa311df1edea8e54f613270", - "format": 1 - }, - { - "name": "docs/ansible.utils.loopback_test.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "68ffc927cd71df145413f9c9dcdee23b940ab394989ddd7ced63a5d75957e19e", - "format": 1 - }, - { - "name": "docs/ansible.utils.ipv6_filter.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "4cbb8f9b4687b1da3daf647c14e19c1d0eb7672f5af3b9387b308da8f2e1e9c1", - "format": 1 - }, - { - "name": "docs/ansible.utils.ipsubnet_filter.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "04d4c6c32fcc688b3e4f226317ade21885628d39101cf797dafc36a0dd86ac3c", - "format": 1 - }, - { - "name": "CHANGELOG.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "2312e12f350504633dd1d0d93aa7801df1f75e3153c70948d306b93ec4423faf", - "format": 1 - }, - { - "name": ".config", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": ".config/dictionary.txt", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "9f02d159a5040696bada5c52a53d96ccccfb6f65d5a7c795f7cb6e188288e8cd", - "format": 1 - }, - { - "name": ".config/ansible-lint.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "e8e320c3f66ceea4d43d9962ef7b136906a5ce378685067eb2febf36cc0bb34a", - "format": 1 - }, - { - "name": "codecov.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "d7119b3a96ece7bcd2df6e851e7e19783049f280918a801344d502c6ada4e582", - "format": 1 - }, - { - "name": "changelogs", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "changelogs/fragments", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "changelogs/fragments/.keep", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", - "format": 1 - }, - { - "name": "changelogs/changelog.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "5ca0c5532d7630c4b42e47ee4f11dd2150a6160eaa82f545f8e3c044b4518182", - "format": 1 - }, - { - "name": "changelogs/config.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "b26fd678b46bf4df984b583a1b452e56a4d128112613982805c02f24dcb30578", - "format": 1 - }, - { - "name": "tox.ini", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "6264f862854740af1e1614fd4df3cbb4b2f3275e30b3c29a8a729643da942fb4", - "format": 1 - }, - { - "name": "cspell.config.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "e1079e6d02ed34033bf83913e7b66ff7bd042e6d8ed4c113aea31123f557deb5", - "format": 1 - }, - { - "name": ".darglint", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "954a7045c6fa17fddfe80995f7f8251efb6df1a2b05eaf479afca6bbc6dfd4f2", - "format": 1 - }, - { - "name": "requirements.txt", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "7803ee5bd437e885d56393b7d624cec69092cf3188b96ea5b9c6a8438c350d7d", - "format": 1 - }, - { - "name": "tests", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/config.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "4129945061440c8d8c281590b8054b194f5958833c722aa40e878b09038c380e", - "format": 1 - }, - { - "name": "tests/integration", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_update_fact", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_update_fact/tasks", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_update_fact/tasks/main.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "8ebea41c6f8a93be2240cd0c45732a3d596cf571cb64547dc113217da56b575b", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_to_paths", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_to_paths/tasks", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_to_paths/tasks/simple.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "aa868cb38568c82458b11d5cfc3af8b45caeea0a87f66cdedd57de808acd8eb1", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_to_paths/tasks/main.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "2512b8be56ef8a8cb314d955a252bbd15f65856975e95294d6855c39c17587c5", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_to_paths/tasks/argspec.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "e49e34f5831d822317ba67cd1c78a0bc7d3c7790fb8458ee17debda2c9b56cfa", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_to_paths/tasks/examples_filter.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "b51d0464be1d5eebb303d003c62a7d549fa97d28b926a2c2d5f105bd888413e4", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_to_paths/tasks/empty_members.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "2fe1cff51babbc914c2fb685bdbbb4a3930ca6914bf9a2b814804f088702cc6a", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_to_paths/tasks/examples_lookup.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "e7effabb7c07aeb379aceac6e0bc1dc79b3866a75af1780184cff1a716fa4a52", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_consolidate", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_consolidate/vars", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_consolidate/vars/main.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "2b9863b06cb4ff53639a027557da3cd5ac6b6b08855a181fa95bbccea94a4568", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_consolidate/tasks", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_consolidate/tasks/simple.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "7105aaee542a860d153d0269d8dcfc07d3630986f2898f2f0c6a8a848df6467d", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_consolidate/tasks/main.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "2512b8be56ef8a8cb314d955a252bbd15f65856975e95294d6855c39c17587c5", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_validate", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_validate/files", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_validate/files/data", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_validate/files/data/test_list_data.json", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "acc07b62f23f458923737c4cd4a66bd05d1e71eb4f384003baaf2dcc760d6349", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_validate/files/data/warn.cfg", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "9a5abf45b025490534361d18b5fd3e8c4ec56c52817d72a9d44c01d33e315d7c", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_validate/files/data/fail.cfg", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "5bc357ee82697a6f8a4920451a0fdfc81f9f6af9522a134d26112abd20b41562", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_validate/files/data/pass.cfg", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "1c97ae3826430fb1d113b8ed534f4609057b61cf2864a79eb1d603cf02281d25", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_validate/files/data/test_format_checker.json", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "5d4327ea944ff2f274a6f4161c9c6f69782202d1455f383a973819e4fbb85f80", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_validate/files/data/show_interface.json", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "e9d872c87bec35f958131f5a57469184dcb8364000a3fd2c764e698b0f7e7148", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_validate/files/criteria", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_validate/files/criteria/rules.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "fff82706f9f040c45e3e8d927968dfb5297e7c99904c4aa5b34f6ad9262619b7", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_validate/files/criteria/check_list_data.json", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "80ed8bbc4b06991acb84b2b8c61bf8a45cfc0091c2b9b4b443f02fd030de16e8", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_validate/files/criteria/enabled_check.json", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "d37e8293e59f15873c54a47542cb0a9190b0f2f615126f276c6177816bb608ed", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_validate/files/criteria/format_checker.json", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "734eab506a730d90e57069d5e1177135ffeb0ac68db61942576e49144b8a5094", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_validate/files/criteria/oper_status_up.json", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "2c1159ec568a023a818953cb77c8e1618af99a8ec217d6a3ac108d972b78790d", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_validate/files/criteria/crc_error_check.json", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "a1ec6bca6330a50b33920472d576acf1d62287a8aadbcf9ee63aed6673a2d784", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_validate/files/criteria/in_rate_check.json", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "eaf0cb45846bc2ebd25ecfbe85308fd7e3358e4900da1ce0d4c9418b42ab7aa7", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_validate/vars", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_validate/vars/main.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "a0a2c468f24a66b8cea391acc05802e57275f212e1d4a467516bafd440f7765e", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_validate/tests", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_validate/tests/config", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_validate/tests/config/lookup.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "ba6482b4ff88840a1520a4a4a4f8ba25052b3fbc6b5e21a8e70abe93688e2728", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_validate/tests/config/test.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "60c4bdf55c5ad5f5adeccc04df75d979f1b9739d6706bdf1e022d05e7e726a97", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_validate/tests/config/module.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "3899feac6b3f90205fed11d72cd13781de4d66f82dcffa497dd18d001d198298", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_validate/tests/config/filter.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "ba908086e5fbc87673dac750de6dd341ddb7da9d9250571b759abd24a83fe35a", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_validate/tests/jsonschema", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_validate/tests/jsonschema/lookup.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "97f702bb945e3a25440077a7f1c1671b63b92be19158b5aeeb7ab697f2488707", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_validate/tests/jsonschema/test.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "407252f2fe336072e3563bcb900454718ec15fcb0342f4298d6133c5f4b66f1b", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_validate/tests/jsonschema/module.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "d1a87d40a955e4045360cb5b5537d4f3b46d925f03a91e00082ef0fba4a85333", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_validate/tests/jsonschema/filter.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "76f0a20334ee425bf11eaaa8a6d1eac22190389887c60f9c25453c960545adaf", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_validate/tasks", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_validate/tasks/main.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "56fa753c51c136c218723eba14767e0da3fa34f0745a9d138791a29df3c91565", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_cli_parse", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_cli_parse/files", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_cli_parse/files/nxos_show_version.txt", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "7f264359b5e09e5093a59c73d9f844f55427b67177f0727ff3223f509d4fda83", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_cli_parse/files/nxos_show_interface.txt", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "85baa8eed232e6d7dd7a470efb6b4f3efce552c847d1f73c80c651d1441000e5", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_cli_parse/files/nxos_show_interface.xml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "363ab311f6ce9d7598f3ec3ce5546b33d634a8f079cd739ec478adc2a08fc9db", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_cli_parse/output", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_cli_parse/output/nxos_show_interface_ttp_parsed.json", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "1470ac4a29d08f6ef1dbf1ec6bc90fcd5cfaf200e8ad1dfee8389478ba522be7", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_cli_parse/output/nxos_show_version_textfsm_parsed.json", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "f397b4e90691b66a63829f2fa42874b5bea7e6558f712ce37582238e789746f7", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_cli_parse/output/nxos_show_interface_json_text.txt", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "6c28e733dc3473f0dd9a1cbe5c29b0f1be25906ddb0ecd9eb3c9cd5ec9cd4f83", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_cli_parse/output/nxos_show_interface_xml_parsed.json", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "278afc0fc6a54b10bec893de1cce2a912fe55ea37993627c9b869451ccfa8523", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_cli_parse/templates", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_cli_parse/templates/nxos_show_interface.ttp", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "7b54c727fb9ab5731dbef7b5c271a41276278b15b7408bd24e25eda28e5c1a09", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_cli_parse/templates/nxos_show_version.textfsm", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "dfd59adde11de6285a62179e45db7b4e20e9ca61f276f6567c86c8455f796887", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_cli_parse/templates/ubuntu_ifconfig.textfsm", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "c1f10f192897c123e3e7fd0823384db59036d0c36b178bad57229e204688c2ba", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_cli_parse/templates/centos_df_-h.ttp", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "83912bee5ca45c074370bf195532ee3172a4b2e687055d5639e933d5522c33d2", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_cli_parse/templates/fedora_ifconfig.textfsm", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "c1f10f192897c123e3e7fd0823384db59036d0c36b178bad57229e204688c2ba", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_cli_parse/templates/fedora_df_-h.ttp", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "83912bee5ca45c074370bf195532ee3172a4b2e687055d5639e933d5522c33d2", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_cli_parse/templates/ubuntu_df_-h.ttp", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "83912bee5ca45c074370bf195532ee3172a4b2e687055d5639e933d5522c33d2", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_cli_parse/templates/nxos_show_interface.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "bcebc3ef1d3e94fd156e655704999ee16837a1c95b90c6d8bbd567e47e4ce272", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_cli_parse/templates/centos_ifconfig.textfsm", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "c1f10f192897c123e3e7fd0823384db59036d0c36b178bad57229e204688c2ba", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_cli_parse/tasks", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_cli_parse/tasks/centos_ttp.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "86028821b368a285f488ff0fed9f417682e8e979810221189d781c6e09554fca", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_cli_parse/tasks/main.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "9254cb4133f860ba7fe60ffa731c6c6c1af94d85f9a94b464523e85d0523b6f5", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_cli_parse/tasks/fedora_ttp.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "86028821b368a285f488ff0fed9f417682e8e979810221189d781c6e09554fca", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_cli_parse/tasks/nxos_json.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "732de9a24704cdad80002b5e469b7b82148ec777bceea0e093aba10548fc0638", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_cli_parse/tasks/argspec.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "77982a1f454b2b6a7243fc01f68e48e1a8309baa510db00dc3f6bd3e0a0b4bdd", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_cli_parse/tasks/ubuntu_ttp.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "86028821b368a285f488ff0fed9f417682e8e979810221189d781c6e09554fca", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_cli_parse/tasks/nxos_ttp.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "ab03e39f60d54339a10c8477ad323223de6508a729ab0d3635f234d15dcb2ec5", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_cli_parse/tasks/nxos_textfsm.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "3136ee047a0c7a86abe2d8b1bfaf6f71108b34836ac3a0784872ead1c4530e79", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_cli_parse/tasks/ubuntu_textfsm.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "dca8446bfde97c3bcfae26d7d157d9600f9c3ca5f84f970b5d2e4aecb38cdfaf", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_cli_parse/tasks/nxos_xml.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "2da27258e5c5b2f59e994347df9c2024c1578366a598bdb9f92b7b6525375fde", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_cli_parse/tasks/fedora_textfsm.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "dca8446bfde97c3bcfae26d7d157d9600f9c3ca5f84f970b5d2e4aecb38cdfaf", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_cli_parse/tasks/centos_textfsm.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "dca8446bfde97c3bcfae26d7d157d9600f9c3ca5f84f970b5d2e4aecb38cdfaf", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_param_list_compare", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_param_list_compare/tasks", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_param_list_compare/tasks/simple.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "e507d9cb6b6a4a4e93e9c7cacacaadeab166f8aae0d1b4372526cc9fc4148829", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_param_list_compare/tasks/main.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "2512b8be56ef8a8cb314d955a252bbd15f65856975e95294d6855c39c17587c5", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_get_path", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_get_path/tasks", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_get_path/tasks/simple.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "04026349ef6f6ef67b4240091acbda13f9f1e4bee2e2d5c0eb78e43e69d0ff63", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_get_path/tasks/main.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "2512b8be56ef8a8cb314d955a252bbd15f65856975e95294d6855c39c17587c5", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_get_path/tasks/argspec.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "11e998ff750cd816aac9742136193a407fed74fa25be42114a9b00fbf7ef4122", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_get_path/tasks/examples_filter.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "f68eb7831768f881ad74e6cabc72c2b831369028c100f5281d51a1a00665edfb", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_get_path/tasks/examples_lookup.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "5633047145361740d866a7078aa2fab73b996ebd94533d1915a4aa287460e3ff", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_replace_keys", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_replace_keys/vars", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_replace_keys/vars/main.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "7bd28edb6a57c74d136d92d4faa678d480d17c8db0239fa294da1ab69cb1437c", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_replace_keys/tasks", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_replace_keys/tasks/simple.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "e9b9656746b1aaf502a733cf8af5350f2c7cd2abbb229c3684ce9e213dc95156", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_replace_keys/tasks/main.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "2512b8be56ef8a8cb314d955a252bbd15f65856975e95294d6855c39c17587c5", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_to_xml", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_to_xml/vars", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_to_xml/vars/main.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "b8405fb4146ef4dbfa941874b93d3c87e02310ddaabf8407f2691da3855f1093", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_to_xml/tasks", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_to_xml/tasks/simple.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "7228288965760ffa35f3630bf7ebfc7a6b1709d5d97550e2a2da863b35648551", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_to_xml/tasks/main.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "2512b8be56ef8a8cb314d955a252bbd15f65856975e95294d6855c39c17587c5", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_from_xml", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_from_xml/tasks", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_from_xml/tasks/simple.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "8cc0c47302d38b9929e0d184b11cc10cf0359d1fc4a732039a4fb6b7ea111efd", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_from_xml/tasks/main.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "2512b8be56ef8a8cb314d955a252bbd15f65856975e95294d6855c39c17587c5", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_netaddr_test", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_netaddr_test/vars", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_netaddr_test/vars/main.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "c00756f4c7d02ea4d04b4237141685543b0c673a354774e61b2acb48f45837bd", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_netaddr_test/tasks", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_netaddr_test/tasks/reserved.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "ffe3ff53d0356e042999d9b0a78e95d27d1fa5d8d0912163eb593f5b5594ecb9", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_netaddr_test/tasks/ipv6_address.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "b288eb0fa02b285827f29fe3cfc07240e41728bdb5cf774d95e47fdb3a1724da", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_netaddr_test/tasks/loopback.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "aad21feb2e6d9130c6d0e61c8babce281670ae4eccac0c9f5bfbebc7a868403d", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_netaddr_test/tasks/main.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "2512b8be56ef8a8cb314d955a252bbd15f65856975e95294d6855c39c17587c5", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_netaddr_test/tasks/multicast.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "d8e39c219e278db46e2486ad411fe474860431184fb5e432fe36e226e26d508c", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_netaddr_test/tasks/ipv4_hostmask.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "97dbcf159a748ca1f99c839d55af01455cf68e005ca30008cd48215d097eb461", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_netaddr_test/tasks/ipv6_teredo.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "c1ff255343b3b1d352575ac914f4268ebca0dbbdb780f6827f75382ef4df536a", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_netaddr_test/tasks/mac.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "4ada1fd18ed85280d8f5bad674d7f5dfecec48ff379a8e707dbf7bbd8ab82111", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_netaddr_test/tasks/ipv4_netmask.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "edbf017def035b5ca082756de8a91fcf4bfbcc4fc3414aa5fc60bd131a98129d", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_netaddr_test/tasks/resolvable.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "66ec974d89255561d81d2a6a62ace155dd6cc4f028b8fd7f1e77ec3dc270fd27", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_netaddr_test/tasks/in_any_network.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "e56f13ad78aba2bb04ffd61f951cba00731bafd2fdaccab7bfdee64f88e2346e", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_netaddr_test/tasks/supernet_of.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "c43c74df672831d7ec50692236de868518702232a9f18655e666cd317182773e", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_netaddr_test/tasks/ipv4_address.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "615dbbb31b07b9482dc6ae37305ab4d5b5c019a59bc10361ac40218d5de79203", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_netaddr_test/tasks/in_one_network.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "14eed91cb6c11783729c61e43077f02a8143a472f7c711d8ec32bb845ea0aa47", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_netaddr_test/tasks/ip.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "93fe8c749063d99f6ee84648c75b90b12453f8144d0a26c145472a2f805ef5dd", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_netaddr_test/tasks/ipv6_ipv4_mapped.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "3bf41c07dfa38283acd03c2d9c837611736dba49158652a919afaeb6f3fafcfa", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_netaddr_test/tasks/in_network.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "179f6a091bc6a3b788e4ab31205bc1de8762f31d5cd134f8910748e8f3f77d17", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_netaddr_test/tasks/public.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "0e004a3450bd9e12583d55af195a3b07307cf91dba57ee7a43ba8717c3e3ff4b", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_netaddr_test/tasks/ip_address.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "21061cd07a8a22833eb928c528ec030c11cd183896a31074bdc83fd1e898a637", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_netaddr_test/tasks/private.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "9a0e6c4c080e3a1e916dbd47a051553d38b485e778d55c20ca85498c4e482376", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_netaddr_test/tasks/subnet_of.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "83ff3bf515253a8a340e7690c88f580f56ec1e8397a1e67d4a34cd7f29ad6ef6", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_netaddr_test/tasks/ipv6.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "17f7a28a9a7796ee29e99b080af194ba1923736bdc1e17cb6afb4bbfae1e3820", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_netaddr_test/tasks/unspecified.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "56dbed00bd55bbf9d35fa877fc0c09f3dc68dec8e0a59303911001ed781c589d", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_netaddr_test/tasks/ipv6_sixtofour.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "0b1534121ecea3709d0fb5b8dd1506c57bc6a6dae5097cd7c90bd52bb9f6d16a", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_netaddr_test/tasks/ipv4.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "afdc9774b465291d36a84a253f6b74b3be52e6534df4c09aed5edfe1702a38a4", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_remove_keys", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_remove_keys/vars", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_remove_keys/vars/main.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "f64c5b12c89da7b8a953d4ee3d58e5ff102206f34cef5092be9aefa45c93d34b", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_remove_keys/tasks", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_remove_keys/tasks/simple.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "ac949eae4a5560d8ab122ea6a6dc2266bca438562a17071bc2339fe2e775dd09", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_remove_keys/tasks/main.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "2512b8be56ef8a8cb314d955a252bbd15f65856975e95294d6855c39c17587c5", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_fact_diff", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_fact_diff/tasks", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_fact_diff/tasks/simple.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "f553cdcfd97be39cf9c0067d12e3b15bb3d783fb9f7d21559a1f3684f8483f2f", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_fact_diff/tasks/main.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "2512b8be56ef8a8cb314d955a252bbd15f65856975e95294d6855c39c17587c5", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_fact_diff/tasks/examples.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "8ca4ff69a313d35d39d1faa6228c03971a9019395d85ab1fec417a331f3c8330", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_fact_diff/tasks/argspec.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "4d2b497c4f889ab78c078d4a267322691abe8a025dfb71a1dc64180167a93f8b", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_fact_diff/tasks/filter.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "c54727ea05083048fe11d3277aca6667dd9687d1e95010b6982ae81defb9bc13", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_index_of", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_index_of/tasks", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_index_of/tasks/simple.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "1835e807efc8882163e2da83587baf64fa1c73611f649af1feba94b246c08a4a", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_index_of/tasks/main.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "2512b8be56ef8a8cb314d955a252bbd15f65856975e95294d6855c39c17587c5", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_index_of/tasks/argspec.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "98d3173c95800792d144508ea1cabdb032d318d1cc77b9f0416a21e6cb732d4a", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_index_of/tasks/examples_filter.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "d430649f6347b6327300fa07b06751508823293284efcb2d85cb0121fba493c5", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_index_of/tasks/examples_lookup.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "3606cec6d01105e1e0116a63ffc6cb3293184abafcf1472a8e473d1a16711f9c", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_keep_keys", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_keep_keys/vars", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_keep_keys/vars/main.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "ef8940b0190398df13528e09eeeb4d70c7033b6dfbd55020d98cb65f87bd49e1", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_keep_keys/tasks", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_keep_keys/tasks/simple.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "dde35ae44213bd57cf8d06af380a0ec047374e13f4b56a8af11c87da95cbd50e", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_keep_keys/tasks/main.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "2512b8be56ef8a8cb314d955a252bbd15f65856975e95294d6855c39c17587c5", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_ipaddr_filter", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_ipaddr_filter/vars", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_ipaddr_filter/vars/main.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "67cd31f077c2e69839d170418f43f920c0c068508c4f6dd9d98f1b322c1bfedf", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_ipaddr_filter/tasks", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_ipaddr_filter/tasks/ipv6form.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "0484829f9afd48bac830f255435c598be0a6dacf9af7ef8244beeebcd9d357ca", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_ipaddr_filter/tasks/ipcut.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "11eca908bac30ceb6d2296a483d2d9ca137f427f34656b435474e7b9b838e1a4", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_ipaddr_filter/tasks/network_in_network.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "e0b9961802edf76f585891f5b1128149be2c48718a337d7a26c3c15dbf0903e5", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_ipaddr_filter/tasks/cidr_merge.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "7424055f53f023017fb31c9f657d4852ab6105645f23f70ecb9ef8d2b8e24594", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_ipaddr_filter/tasks/next_nth_usable.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "6d78051f7821f65a7ec231f6bf4d668fb5547aaf71598fbd5442c36044ca3d25", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_ipaddr_filter/tasks/ipv6.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "e9f05b478b7cad442c6fdc31f6abe887e32a8c205b0acc24c49712d87fccc18c", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_ipaddr_filter/tasks/ip4_hex.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "245f6e53dd8b2f6bcdde2ee8d7d2037de96e3438c8702475a2907423e3a036b3", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_ipaddr_filter/tasks/main.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "2512b8be56ef8a8cb314d955a252bbd15f65856975e95294d6855c39c17587c5", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_ipaddr_filter/tasks/reduce_on_network.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "ce3a3f10c18b53a0e0530002482b206fe94f919afd70c47e553869adf08341f2", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_ipaddr_filter/tasks/slaac.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "104c76112b82ebbff3f9a8edc5d6e4f7403b813fc1ffdc1bed83fc6c1630bc0e", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_ipaddr_filter/tasks/ipv4.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "a8383abffdac0845a506803744ff43aafb6a69c2b748835ea3a5c9e07d73f969", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_ipaddr_filter/tasks/nthhost.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "55b128379a8a764e2d12fb2d8ed54186572eecd15fce2ec9ca80391fdc56cea0", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_ipaddr_filter/tasks/previous_nth_usable.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "dba3b3b6be41729598da9ae343316e666d219e6fcc7c60bec22b163a8a7fc2c0", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_ipaddr_filter/tasks/hwaddr.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "d79ea40b43a1d173c26b0cbf3e86028476fc2ac535984110e9650fdb0cd5de85", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_ipaddr_filter/tasks/ipsubnet.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "d3cfcf47ee32f59441573a19ab73383b433cbbc0788a9b8ffc0bb925cdffdf64", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_ipaddr_filter/tasks/ipmath.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "e4f81b95ab97909d5700ff50ab0c20b93d8f5be9b581a343b880c415243e2e5c", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_ipaddr_filter/tasks/network_in_usable.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "f7a4cc15d93654bfee1af885d8a9d49608219d0aefd42b3207742bcb8e913e3e", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_ipaddr_filter/tasks/macaddr.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "0d9c2c75fdd7dba56d6dad2678ea8189dd3f72fba079b9c64f7327de94a8464d", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_ipaddr_filter/tasks/ipaddr.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "e6275325481abe442067c2681cda3caf7e20efeb31ba8a0cf7e50d62af0e6c4a", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_ipaddr_filter/tasks/ipwrap.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "b340a4d9688caa6c62d57c83a61350ef476be72e956ddc2652be11f83bda9d82", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_usable_range", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_usable_range/vars", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_usable_range/vars/main.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "cb30024867cbb7d7176c4459c7c6f1c798967e788af4b537789305cbf9659ba1", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_usable_range/tasks", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/utils_usable_range/tasks/main.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "2512b8be56ef8a8cb314d955a252bbd15f65856975e95294d6855c39c17587c5", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_usable_range/tasks/argspec.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "e7f5735cd4b1509e1d0b98d4857ede083995365ba6b5bf07639ac516e36e8c04", - "format": 1 - }, - { - "name": "tests/integration/targets/utils_usable_range/tasks/example_filter.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "19a626c2c0fbe4235775b9bf9ae7b13e0c332faf940f6d733512b6f5ed3cb523", - "format": 1 - }, - { - "name": "tests/integration/test_integration.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "ff6a6be37cf9314c1dcdff0004949ef58a027b2a9b1c931ab0548e255a66dd25", - "format": 1 - }, - { - "name": "tests/integration/requirements.txt", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "b75218b504713c1965fd2ade34d0a29db85713adb484dabaac17bc9967bf5a22", - "format": 1 - }, - { - "name": "tests/unit", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/unit/module_utils", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/unit/module_utils/test_dict_merge.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "81ce3d79c154c5803a0411a9f99006a5784435db8df3a53feab84ad6544d0a6e", - "format": 1 - }, - { - "name": "tests/unit/module_utils/test_sort_list.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "5432c26e1d6929676b5fc53974191e160f6e15286ebd819fba3c204a4e55dbef", - "format": 1 - }, - { - "name": "tests/unit/module_utils/test_argspec_validate.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "e8816c68b5b5e482e05c04464e45bffa4b69700ec00090ada1f5c5b74f2f4e58", - "format": 1 - }, - { - "name": "tests/unit/module_utils/fixtures", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/unit/module_utils/fixtures/large.json", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "56dadab818a719846f64c0fcfd7d0c2c1eeb34cdb8cc646033311ef90b0770a1", - "format": 1 - }, - { - "name": "tests/unit/module_utils/fixtures/docstring.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "1f147714958e065abe3622fa3e94ee26f70d06212de8cdbe54210c28a4e71b02", - "format": 1 - }, - { - "name": "tests/unit/module_utils/fixtures/__init__.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", - "format": 1 - }, - { - "name": "tests/unit/module_utils/test_to_paths.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "100e1809df26dfc5c42d02dc8da2f52def4c796558aec59f17a9cb6f7009a937", - "format": 1 - }, - { - "name": "tests/unit/module_utils/test_get_path.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "cc0a94e3064bdf0ae20921fe4480703fe6efc3089ff45180266aefaf1c6d6283", - "format": 1 - }, - { - "name": "tests/unit/module_utils/__init__.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", - "format": 1 - }, - { - "name": "tests/unit/compat", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/unit/compat/mock.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "c61dd34c35669e00f664f7f72416629ef4b7ff52992d7a5f0a7e47eb90a316f5", - "format": 1 - }, - { - "name": "tests/unit/compat/unittest.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "b79b386fc73fbb89a0d865568032096fa0dea0d236e608ad87b55276fe93f119", - "format": 1 - }, - { - "name": "tests/unit/compat/__init__.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", - "format": 1 - }, - { - "name": "tests/unit/requirements.txt", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "fcea5298285c0542897536b02f5c7753645c7fa83abdcac6b0f3e15ec3d27160", - "format": 1 - }, - { - "name": "tests/unit/plugins", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/unit/plugins/lookup", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/unit/plugins/lookup/test_validate.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "3b01bf969b7d6f0a86c322520cae5cddf9b828d43bf664097281ce89871e5323", - "format": 1 - }, - { - "name": "tests/unit/plugins/lookup/__init__.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", - "format": 1 - }, - { - "name": "tests/unit/plugins/plugin_utils", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/unit/plugins/plugin_utils/test_index_of.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "89419052a50570440fb15a637a2b6ca8c620b9529435e8328b9c1898476b6456", - "format": 1 - }, - { - "name": "tests/unit/plugins/sub_plugins", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/unit/plugins/sub_plugins/validate", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/unit/plugins/sub_plugins/validate/test_config.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "7e1806206bbdc7d122851e64a5a8a2962a667e7fb1368891b039ea10d880da80", - "format": 1 - }, - { - "name": "tests/unit/plugins/sub_plugins/validate/__init__.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", - "format": 1 - }, - { - "name": "tests/unit/plugins/sub_plugins/cli_parsers", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/unit/plugins/sub_plugins/cli_parsers/fixtures", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/unit/plugins/sub_plugins/cli_parsers/fixtures/nxos_show_version.textfsm", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "e0ad0e83aca80d858e8c7301094b1c67e260223cf650af013980461928429916", - "format": 1 - }, - { - "name": "tests/unit/plugins/sub_plugins/cli_parsers/fixtures/nxos_show_version.ttp", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "19b19fa15a9d932cf92cb94ecdca1b5b3c64e7961cef2d6574264930e6dfe466", - "format": 1 - }, - { - "name": "tests/unit/plugins/sub_plugins/cli_parsers/fixtures/nxos_show_version.cfg", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "280b9a49752bd9ebddf26798b7df94115c3f3402877d350e60b3236a33fb3f68", - "format": 1 - }, - { - "name": "tests/unit/plugins/sub_plugins/cli_parsers/fixtures/ios_show_ip_interface_brief.cfg", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "cf7860ac3fe8175f2a062881ecc52f977f14fdcf92ae1a60df68edda493f645a", - "format": 1 - }, - { - "name": "tests/unit/plugins/sub_plugins/cli_parsers/fixtures/nxos_show_version_invalid.textfsm", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "70efa127c6437e5a9428fb9701dad0e5bdf1425f0ad87c4d18ff3a4042154bc8", - "format": 1 - }, - { - "name": "tests/unit/plugins/sub_plugins/cli_parsers/test_textfsm_parser.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "d6d72c7155b4455f426a9de4b1f252cad7fa5278a7fffdb84bb4db7bdba1f118", - "format": 1 - }, - { - "name": "tests/unit/plugins/sub_plugins/cli_parsers/test_ttp_parser.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "22e97df559e5c6e071c5cc448a26ab2f1a25d2484a2f8724edc694846533e1a4", - "format": 1 - }, - { - "name": "tests/unit/plugins/sub_plugins/cli_parsers/test_json_parser.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "20013f2a16929892e2e9442d9a44d001b28d0b6f281e2db4c71995443e08ad86", - "format": 1 - }, - { - "name": "tests/unit/plugins/sub_plugins/cli_parsers/__init__.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", - "format": 1 - }, - { - "name": "tests/unit/plugins/sub_plugins/cli_parsers/test_xml_parser.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "d9d3b46bfd8ecbe84c3243254d3812c876e22ada4a52930ea72d3e9044dd4fb7", - "format": 1 - }, - { - "name": "tests/unit/plugins/action", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/unit/plugins/action/test_validate.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "66a45978bdd14da7f4e9125f4626344b926d7a3e25ccdee139f20591042aca5d", - "format": 1 - }, - { - "name": "tests/unit/plugins/action/test_update_fact.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "654dac1e82b9d6cb329d1b056418dd24ac8cfc5e1c3b2812ca06b64f2f614304", - "format": 1 - }, - { - "name": "tests/unit/plugins/action/fixtures", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/unit/plugins/action/fixtures/nxos_show_version.textfsm", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "a43d22b3a39174cdecc292f455723837a6dd4573af671ab7439cce2d362f0f1c", - "format": 1 - }, - { - "name": "tests/unit/plugins/action/fixtures/nxos_show_version.txt", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "dc4ab2b1c2a8c82c81cd1c61338d0d48737f751d4f859da0509168ea4c5d3dfd", - "format": 1 - }, - { - "name": "tests/unit/plugins/action/fixtures/nxos_empty_parser.textfsm", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", - "format": 1 - }, - { - "name": "tests/unit/plugins/action/test_fact_diff.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "3e7cef6292dbd3f121b22aaa3de2c7b7e87ee92045dd8b0166d84a66b1fee30f", - "format": 1 - }, - { - "name": "tests/unit/plugins/action/__init__.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", - "format": 1 - }, - { - "name": "tests/unit/plugins/action/test_cli_parse.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "c33ddd4975918d7493c954bf30824ff98d53cbd82f3c9006111ac4d3e1ce271c", - "format": 1 - }, - { - "name": "tests/unit/plugins/test", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/unit/plugins/test/test_ipv6_sixtofour.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "8fe23ce26dae270d1ff9927b67c3532bf7d19302270ac02cdcfae72f0ce9dcea", - "format": 1 - }, - { - "name": "tests/unit/plugins/test/test_validate.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "0da10d0aec55c3d00f67d193d73a7f53f9fcdf5c28a36c89edf30a31a698f835", - "format": 1 - }, - { - "name": "tests/unit/plugins/test/test_in_any_network.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "f8cb82b265eb75d38d50b45899dee25ff3cdb4377dbdd8959d4ff8c60fd15080", - "format": 1 - }, - { - "name": "tests/unit/plugins/test/test_unspecified.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "e2120f97272e0256c656fe3a135b0410147a3997cc262abc4750b5eb214689ab", - "format": 1 - }, - { - "name": "tests/unit/plugins/test/test_mac.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "5715bdb66e8e61366661f9d308f83aee53dc299184e8665e0519d99849dc94f5", - "format": 1 - }, - { - "name": "tests/unit/plugins/test/test_public.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "33da01193555a9424667f52041af1630e14011300138a742a6cdc8d821950581", - "format": 1 - }, - { - "name": "tests/unit/plugins/test/test_resolvable.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "bb3113549b0ff4bd26df1dde96d26dc447a32de0454891f610f654417ea556ff", - "format": 1 - }, - { - "name": "tests/unit/plugins/test/test_ip.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "1820bbbbf5c279edab27e4b4c8eb6dcbb0637e6ab7ad475740f3e28decb2ea3c", - "format": 1 - }, - { - "name": "tests/unit/plugins/test/test_reserved.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "4193331ebbfc489c367c6ccf0c82e0fa27b55223a63f0580c70c8f8517836abe", - "format": 1 - }, - { - "name": "tests/unit/plugins/test/test_in_one_network.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "eb289246618116f2e2d09bb6d43899449262a3ca9eb53701dad906de6c77ad5f", - "format": 1 - }, - { - "name": "tests/unit/plugins/test/test_multicast.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "4a8673d3d2935aab3e8f32bc214dbf994cbe0b2d5985230b6328211f59df9740", - "format": 1 - }, - { - "name": "tests/unit/plugins/test/test_private.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "e2c265247dd4e5e72b54e4c06a24e0bdaa3dd44d1d2c3f239836367815d3bd45", - "format": 1 - }, - { - "name": "tests/unit/plugins/test/test_ipv6.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "aa1d692fc009c544c82869bf83da79c0f47809449a1b25d61a9fb519d841e3f8", - "format": 1 - }, - { - "name": "tests/unit/plugins/test/test_loopback.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "15f7773d729431790a34f6fe50bcd7e604a231010823fb342493f94e0fb63228", - "format": 1 - }, - { - "name": "tests/unit/plugins/test/test_ipv4_hostmask.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "6171d28f9a84a707665c1c195bed9468620be868cc15ed2cba4a8e41e7ff40c6", - "format": 1 - }, - { - "name": "tests/unit/plugins/test/test_subnet_of.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "06895d47f5b0f5bf5fa24ce99534957be882e7a76f9df245ab8d328cd2a7dbba", - "format": 1 - }, - { - "name": "tests/unit/plugins/test/test_ipv4_netmask.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "0a921af90905cd241e787292fa8338ba710510f6e2a5e7a4e4f641e5a72e116d", - "format": 1 - }, - { - "name": "tests/unit/plugins/test/test_ipv6_address.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "ef1da66dbfc60885ae203a9f928fc4d00871611d199ba0f9d72800dd9ad06784", - "format": 1 - }, - { - "name": "tests/unit/plugins/test/test_ipv4.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "190f866df1ba29371b53cab0e43f624e1ac4494267f47138866fba128370d3a1", - "format": 1 - }, - { - "name": "tests/unit/plugins/test/test_ip_address.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "5ea2c4d0f5beae703798ee0e6d54744ae3b79fc7ca11bffaf8ae1a4275384dbb", - "format": 1 - }, - { - "name": "tests/unit/plugins/test/test_ipv6_ipv4_mapped.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "0cf6377c7e6fdab24f9ff780fead00cacd2c64cf33a2640254f225ba31380b41", - "format": 1 - }, - { - "name": "tests/unit/plugins/test/__init__.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", - "format": 1 - }, - { - "name": "tests/unit/plugins/test/test_supernet_of.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "689e4f486489731d298a2dddccd2eaaa4b9a0c66059fcf6dfeca5b92fdde7a40", - "format": 1 - }, - { - "name": "tests/unit/plugins/test/test_in_network.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "c5dd5bdb61188b34b0fd0134aa20e9f94b11f8e188b82a95ef8aeca2a2879893", - "format": 1 - }, - { - "name": "tests/unit/plugins/test/test_ipv6_teredo.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "d6388005b806410f811c2563f391af8293c092a8bf2c1cc306924d841dc5c259", - "format": 1 - }, - { - "name": "tests/unit/plugins/test/test_ipv4_address.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "2c881b8a384621755b114f8356b9142b46bec64fa90fc984831882c7dc4b7377", - "format": 1 - }, - { - "name": "tests/unit/plugins/filter", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/unit/plugins/filter/test_consolidate.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "24a71575f578c675386bce107af762d580000db6da44dbb2fe038c29e9dfb4f8", - "format": 1 - }, - { - "name": "tests/unit/plugins/filter/test_validate.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "521af1b84fadf53d324b968ab9639c1ad95760f08bd3a72209f4c1e92cc1a356", - "format": 1 - }, - { - "name": "tests/unit/plugins/filter/test_remove_keys.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "f878033dbdb5c50fa74f75fe704f84cb58d1fafdb8a9d9ecefc4c3cb2f768bd9", - "format": 1 - }, - { - "name": "tests/unit/plugins/filter/test_ipcut.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "7e6b03f5937341a36002c2255a16cee62fcb4dcf73ccc1fac596c71f6123a2b9", - "format": 1 - }, - { - "name": "tests/unit/plugins/filter/test_ipmath.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "3a624adc9eb72d71666661250763038fcedd57f7e0b8912c365b304506ab878c", - "format": 1 - }, - { - "name": "tests/unit/plugins/filter/test_ip4_hex.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "996e6a984667369003bf7b465d45ea6f181db074036618e46a4dd59befb020d7", - "format": 1 - }, - { - "name": "tests/unit/plugins/filter/test_param_list_compare.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "25490e51429f7ff2fe9c968ec6a0be58f08f4f919f90c5dbd54234ee84264138", - "format": 1 - }, - { - "name": "tests/unit/plugins/filter/test_usable_range.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "46819582bc63da415392abb987133ab91340b442c8b1c8767ab88f6d4c4792ff", - "format": 1 - }, - { - "name": "tests/unit/plugins/filter/test_reduce_on_network.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "933a3b7185a7222f073bd2e509a9fdd3db38dcf6f20ad7037320c9cb419ca822", - "format": 1 - }, - { - "name": "tests/unit/plugins/filter/test_replace_keys.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "e4e037ed6fe34c11344f13a47c2ef1b9d489ea4318ea5f3ca8920e0b1ca838a8", - "format": 1 - }, - { - "name": "tests/unit/plugins/filter/test_ipv6form.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "ec8cea7146804cc025a2675da007f5656b6faa917cf2fba4bbe78b64a7d14eb6", - "format": 1 - }, - { - "name": "tests/unit/plugins/filter/test_ipsubnet.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "6889529703c2c7335c210856f722b570e26fbf6a29e0b7a0c7b35ee322030511", - "format": 1 - }, - { - "name": "tests/unit/plugins/filter/test_next_nth_usable.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "26ae6a24d9578db4500e83e81955d42e001a5f1090d1a97d1e1703e1702d902b", - "format": 1 - }, - { - "name": "tests/unit/plugins/filter/test_from_xml.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "1a6c4dbafc48c2c649ac3420cdc8cd02c3ed06f576f01110cbacc89315facbbd", - "format": 1 - }, - { - "name": "tests/unit/plugins/filter/test_nthhost.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "3eaa2b499b4ebb32ccc19a0d8cbaed7c36a3d7de187f68445f6bc94a6dcef7c6", - "format": 1 - }, - { - "name": "tests/unit/plugins/filter/test_hwaddr.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "87d0757f9fb9bbecece142e75b59f4a7fd4233e36d6787ed84ffac674ef3ae92", - "format": 1 - }, - { - "name": "tests/unit/plugins/filter/test_ipv6.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "f9814233600ff2a2fb09202c51c4b0baa58f72caa0572328fa22ab089eb19406", - "format": 1 - }, - { - "name": "tests/unit/plugins/filter/test_ipwrap.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "bd17ad7a4601700806fd5cf6697aeec4560518191d11010a7a8bdfe47e72d127", - "format": 1 - }, - { - "name": "tests/unit/plugins/filter/test_ipaddr.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "5779ae2050a79a55760b901fddafdab6dd3612c41cede78d9198791624d28501", - "format": 1 - }, - { - "name": "tests/unit/plugins/filter/test_ipv4.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "497f2b8723716dd2f88c437ad61e77393fc2d1f1560bd86f323ef8376886a1e4", - "format": 1 - }, - { - "name": "tests/unit/plugins/filter/test_to_xml.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "da7dcc11c5b563d09c952cdfdd4ec9965ae72e514535f6c67f23515ef4e7157f", - "format": 1 - }, - { - "name": "tests/unit/plugins/filter/test_fact_diff.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "c943b06327c6941af1107a8dcb3a51ae082bbd516a647470df68def0ef88d1c9", - "format": 1 - }, - { - "name": "tests/unit/plugins/filter/test_network_in_usable.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "84a52a604ccea96bea1328554808af2630c53674fc940f3dd82afb8fc66b4a2a", - "format": 1 - }, - { - "name": "tests/unit/plugins/filter/test_cidr_merge.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "e00bd19c3244b7fdbfcb8f2c99a000d0a1516732a4f38d001d8bdc9df2cc1a09", - "format": 1 - }, - { - "name": "tests/unit/plugins/filter/test_macaddr.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "fdfe72d282d7427a22cddd1a5d26ae8e75c90cd44b4ab7a93c16764ceca8773c", - "format": 1 - }, - { - "name": "tests/unit/plugins/filter/test_previous_nth_usable.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "c5a95a4367d2ade526e7fa9d5c59a049820b2adeba66f6e845d28c7760725730", - "format": 1 - }, - { - "name": "tests/unit/plugins/filter/test_slaac.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "7611332ebc70b87122384832aa726f22b3554c566ad166719e93a6dd66ab9ff4", - "format": 1 - }, - { - "name": "tests/unit/plugins/filter/test_network_in_network.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "19df09a5ffdbeb96dc65b094c4c89fb66bf217477097fb5841f57504d0e6f526", - "format": 1 - }, - { - "name": "tests/unit/plugins/filter/__init__.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", - "format": 1 - }, - { - "name": "tests/unit/plugins/filter/test_keep_keys.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "0c6e0bfb0202c7d441430b91e100b3c062ed67a44682fcd95f44c383aea13573", - "format": 1 - }, - { - "name": "tests/unit/mock", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/unit/mock/yaml_helper.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "fc4f4d5d2968ced8e3a04653354945d720e7c6369aad67ba7724c5981c82b6ea", - "format": 1 - }, - { - "name": "tests/unit/mock/loader.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "2343d1f644250d4b616f0bf0a826fdee8fe306243d8412d44dd0e033352b262b", - "format": 1 - }, - { - "name": "tests/unit/mock/path.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "107c7d9f5dbfcead13356525e2c49743a1149a7d9cc720c1937e0253b7f0b67e", - "format": 1 - }, - { - "name": "tests/unit/mock/vault_helper.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "3bf7834d18bd34473d0f4b898253177229a131f14364874efba584ff985e4a41", - "format": 1 - }, - { - "name": "tests/unit/mock/procenv.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "87bcd1ee9580503da97f9813d00ef9499673b6e859e5b573725df5b340abbaba", - "format": 1 - }, - { - "name": "tests/unit/mock/__init__.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", - "format": 1 - }, - { - "name": "bindep.txt", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "80645079eb025b3a905b4775ac545d080a3d7d35d537c31e04f7197c94315ab5", - "format": 1 - }, - { - "name": ".pre-commit-config.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "6229a47c40bb819db230c79eac443df9a687979ffe3d603740c36377d44e5f3b", - "format": 1 - }, - { - "name": ".yamllint", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "827ef9e031ecdcaf137be239d33ef93fcbbc3611cbb6b30b0e507d0e03373d0e", - "format": 1 - }, - { - "name": "meta", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "meta/runtime.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "211f3feb7161242e79e1eb543dff5881ec95b6153bd488b48fe7869239f153de", - "format": 1 - }, - { - "name": "tox-ansible.ini", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "fd009473385d7a79691dba3f6326b5dce9ded1705cc672917cf80e03317bf38b", - "format": 1 - }, - { - "name": "mypy.ini", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "320b735f9c8018c53e0db9c691b20904284ff80801d30c816c0d33172ff95ff3", - "format": 1 - }, - { - "name": "test-requirements.txt", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "6689ecab772d38bee7669927a1bd3423ff94800130e50cf9b514c58c9a874b70", - "format": 1 - }, - { - "name": "pyproject.toml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "1aec538a80e3fbf00bfd922d2dcd4ffbc831018d75faffea7b4c3cd3a4f44730", - "format": 1 - }, - { - "name": "LICENSE", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986", - "format": 1 - }, - { - "name": ".gitignore", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "c444cf81acd9153b71cd9ff418b980724cac7d29c77b57d453053923dffbdcc3", - "format": 1 - }, - { - "name": ".prettierignore", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "5f34b5c1df98658cfd45b86975b7f782b1e3486ea712f3372d6eba685a3a826c", - "format": 1 - }, - { - "name": "plugins", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "plugins/module_utils", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "plugins/module_utils/common", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "plugins/module_utils/common/to_paths.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "e1ebc611982da989657275368f3e593496405bd13d4a5dcbd611c664cc784f8c", - "format": 1 - }, - { - "name": "plugins/module_utils/common/utils.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "31f365a6ff3ea383c64823f5ea04935b66f1bc7c7ad4372d3dc529cc86e684e2", - "format": 1 - }, - { - "name": "plugins/module_utils/common/argspec_validate.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "39febfd9b1f02fde688c270b85a29693adffa8baa9f1d31128a6b32fd3f64d85", - "format": 1 - }, - { - "name": "plugins/module_utils/common/get_path.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "c4bc8fdf10776ac5f08e6292edcb7f55c4b8485b48616d0c598ba54df289aa77", - "format": 1 - }, - { - "name": "plugins/lookup", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "plugins/lookup/validate.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "409fbc6910bb6d65ff40e6561e5f5ab3ee869ea9f74b9659cd725ad0836dcf1a", - "format": 1 - }, - { - "name": "plugins/lookup/to_paths.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "858cf146b61c8c860bcc3b87f5badc1493dfc20f6d3e48c8bad57b002f532a8c", - "format": 1 - }, - { - "name": "plugins/lookup/index_of.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "287e606a1a3667f5089e4d3c29de436da3b2ce1de821a51ad1e0093fbf7e0490", - "format": 1 - }, - { - "name": "plugins/lookup/get_path.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "9323f1a2a3c0270f1f753d0bd801494ca2cec8cc5a2fcc462884aab2bfd269e1", - "format": 1 - }, - { - "name": "plugins/plugin_utils", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "plugins/plugin_utils/consolidate.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "96320d44fe7c45eb0bd2ae05c85882d57a27da46f8b0af135762bba61d22c8da", - "format": 1 - }, - { - "name": "plugins/plugin_utils/remove_keys.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "17d513c637f1347a49a25aa99b3232a753c94e9507ffdb96c8a79a2eeb4a6f78", - "format": 1 - }, - { - "name": "plugins/plugin_utils/from_xml.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "ad392fe022d3c2ce88daf823e634e2060ca722cd370b1bfe8eccae04b2f9bffb", - "format": 1 - }, - { - "name": "plugins/plugin_utils/fact_diff.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "3889ceb1d3d5616cecdea885d7137aff5dbc6451fc0679576b3c1cdbd5cb00e1", - "format": 1 - }, - { - "name": "plugins/plugin_utils/keep_keys.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "5a9884ffa745d38e76ab1a5e5d4ccf06019dd21eb4004be7a1c73ba55117b216", - "format": 1 - }, - { - "name": "plugins/plugin_utils/to_xml.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "49becc6bfa713f37dbda89285fc0db94f10e7ee767eca674556568e91e0d586b", - "format": 1 - }, - { - "name": "plugins/plugin_utils/index_of.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "54b89a6c481475f213a2233f497b7bd6eec37f2b2b52765a5d8a1e48efb20f52", - "format": 1 - }, - { - "name": "plugins/plugin_utils/connection_base.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "89d3ba294058d651f4a5292bfe1d93d507a7719d303d3e665e069c80f44a9fe0", - "format": 1 - }, - { - "name": "plugins/plugin_utils/base", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "plugins/plugin_utils/base/cli_parser.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "1954b143c93cc8768ecc8f439f44738366ede93244ebcbe12ea4b9a96e028f4c", - "format": 1 - }, - { - "name": "plugins/plugin_utils/base/validate.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "9e19d8da82d0af9891ad14977366193f3eb7caf51819f8b6fc6099eedc7c758e", - "format": 1 - }, - { - "name": "plugins/plugin_utils/base/fact_diff.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "5e7c19600d05863ca5986107de3b259ff0475e7ec163dab2d7d16bfa7ee55ee2", - "format": 1 - }, - { - "name": "plugins/plugin_utils/base/utils.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "6ed1b297442abf5715528e12a9c68f3389d4743ef38d20400efc170737a1b088", - "format": 1 - }, - { - "name": "plugins/plugin_utils/base/ipaddress_utils.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "c5239e0511f46858bd7169e8bbc2262dc1fc86b5ac7f37d96cfd49b5491e250e", - "format": 1 - }, - { - "name": "plugins/plugin_utils/base/ipaddr_utils.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "3e86d4df13513f55934032aa3fc4b61d6dc2de90e0335c6d168cdd1417f4b3ed", - "format": 1 - }, - { - "name": "plugins/plugin_utils/replace_keys.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "99f8242cb941634d3ab6a6c800c0e460344212dd1a9d8a99f700a2bf1c68bc0a", - "format": 1 - }, - { - "name": "plugins/sub_plugins", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "plugins/sub_plugins/validate", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "plugins/sub_plugins/validate/config.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "0a744f7543ec776412dab52857aca2b324bc14526d042f4572dfc8f055d9b8ce", - "format": 1 - }, - { - "name": "plugins/sub_plugins/validate/jsonschema.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "0eb6c18e381fee9531223e593a5baee888933baad3c545ddf0d2c15ddd1160a2", - "format": 1 - }, - { - "name": "plugins/sub_plugins/fact_diff", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "plugins/sub_plugins/fact_diff/native.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "a2479f9e5df195218a205fb173a285473865b0f8e62f7c6031689ede36dcab13", - "format": 1 - }, - { - "name": "plugins/sub_plugins/cli_parser", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "plugins/sub_plugins/cli_parser/ttp_parser.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "25449badac48fb9e6d026238b01ba30484f020618a8afcf1edd6f22cd3dce174", - "format": 1 - }, - { - "name": "plugins/sub_plugins/cli_parser/json_parser.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "7a9ea4a244a755604aac78aad2fd06b1446c6fa8613445d5f397c40db55c1ca6", - "format": 1 - }, - { - "name": "plugins/sub_plugins/cli_parser/textfsm_parser.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "3c0958e6bde7978e06dd4ece8b05748065983af858002fecf0086123609fc7bd", - "format": 1 - }, - { - "name": "plugins/sub_plugins/cli_parser/xml_parser.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "7492d16f9edffd72d42e82e91ef611071bc6f9c20131e1b1b5829814787c6f0d", - "format": 1 - }, - { - "name": "plugins/modules", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "plugins/modules/cli_parse.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "1803b4dc8f525b423a5dacc7ee404c05913c8a7c800b7e6314352c2fcad34cb6", - "format": 1 - }, - { - "name": "plugins/modules/validate.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "15ea93548cf0e748aee135b74cb08cf4046f968dd39a6b4f8046d4782b27c46e", - "format": 1 - }, - { - "name": "plugins/modules/fact_diff.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "fbb01903e17523b7dd8b9ee6a069a5910bc36dc8dda8c5771d4e514f2cefc594", - "format": 1 - }, - { - "name": "plugins/modules/update_fact.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "d8029ea407b66f90c88cbd83676fe340a1232d6896320183457e5502eb514bc3", - "format": 1 - }, - { - "name": "plugins/action", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "plugins/action/cli_parse.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "fe865e94a39039777563b836c4447af4e591aa4c2f660116522cba37ccf2d039", - "format": 1 - }, - { - "name": "plugins/action/validate.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "4418cdfad3126b62051c1c5066a177306a62dc1c88406ba3ef0f3de654113cf5", - "format": 1 - }, - { - "name": "plugins/action/fact_diff.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "944530790166a43d1cc2ad6089d1d1d04b1420b5c3eeed54430a12277581ef99", - "format": 1 - }, - { - "name": "plugins/action/update_fact.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "052ad392a5bce8feb8125133506a45b06603fff0001272fc28dcc30881b615cd", - "format": 1 - }, - { - "name": "plugins/test", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "plugins/test/ipv6_ipv4_mapped.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "f009b340f69e20836ac3f708691928485f65f69e96dc19f70db74c20bada8c05", - "format": 1 - }, - { - "name": "plugins/test/ipv4.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "096eb84875c30d1c00f61f0e8a39ee216432ce8cc83ce8677c17c51039019333", - "format": 1 - }, - { - "name": "plugins/test/resolvable.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "5bd0e507b6cbac09693ad5acd6f4761fdcda8f884c142100276bd0b8eed6a015", - "format": 1 - }, - { - "name": "plugins/test/ip.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "96f1d90050b18b606f076c12a1ce924fd5e1ea479569cab057134b8309ac408f", - "format": 1 - }, - { - "name": "plugins/test/validate.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "5de8085727c146364a5cfdfd9989c3c72936b3f28aed5384aa3d98096d8499f9", - "format": 1 - }, - { - "name": "plugins/test/ipv4_netmask.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "77112181a46287e3c24aeb39143c9d8e148abb741a5c5068b442df0ce27f2bb4", - "format": 1 - }, - { - "name": "plugins/test/ipv6_sixtofour.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "afc48874147e2a79e7af67029cac6c28646f21126473d6819e4261f172bcc544", - "format": 1 - }, - { - "name": "plugins/test/ipv6_address.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "f3a72d0f685d93b8e84b99baa5c3d1db05bfddf4cd985dd53043611c8a0fee9e", - "format": 1 - }, - { - "name": "plugins/test/in_one_network.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "992f70b784ac66f64793ba11700b801a9d9b078f29b7cbea01dc101dfc174e34", - "format": 1 - }, - { - "name": "plugins/test/in_any_network.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "d77f655933ad85fbac201217d15d508f63b303606494afd0d46f5a202b06e847", - "format": 1 - }, - { - "name": "plugins/test/multicast.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "eccf99851826e32841328ccf4969d0f8e883165b43919d9e9c39f11a7de5b9bf", - "format": 1 - }, - { - "name": "plugins/test/in_network.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "4c8fe55367ab444d628034575baa9cccb265fd7cdd86cfaf76a526eca9d09bfb", - "format": 1 - }, - { - "name": "plugins/test/loopback.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "080dab36d15bf9d39b67a2f2e67450a2be46c6e9614fe7a49e7c1e70033efdf8", - "format": 1 - }, - { - "name": "plugins/test/public.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "dadcb1f62a3b8becba746215e97b37a784d0e7e5a856b8a226edbed3fea1d1ba", - "format": 1 - }, - { - "name": "plugins/test/unspecified.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "b38ebc5ddc9100db236807514fea370a363a2896375330ac57ff502e78899786", - "format": 1 - }, - { - "name": "plugins/test/ipv6.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "85a3b8dcdb4d03b29c191533a0cb27108fb31fc767bebb1a8fbd691a38b5a137", - "format": 1 - }, - { - "name": "plugins/test/ipv4_address.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "98748990e716b6666fa9fc5476168f34c16506b35230aa8c1170ab600c5796b9", - "format": 1 - }, - { - "name": "plugins/test/private.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "c9e72a11696482f5568dcaad79940dd7dd8d304a61ce3f942af4221a9ffd11c8", - "format": 1 - }, - { - "name": "plugins/test/ipv4_hostmask.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "19001bc8626d77ac20306bc2a41f8e71a2f277caeb2b3c563c5fbed932fc6fa0", - "format": 1 - }, - { - "name": "plugins/test/reserved.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "a141375f7758aea9daa18dcdb7d83fc9949dc1e9f5061b4fca3434f6b09c878b", - "format": 1 - }, - { - "name": "plugins/test/ip_address.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "cea11319e9678be2f3a3d5a16b30f082f5dad257a8b664e4328d62d57f0c2b49", - "format": 1 - }, - { - "name": "plugins/test/supernet_of.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "2a6b4c721807169bbc864ea4d15c8e039178accc0ec489b2fa849f93ccae2ed4", - "format": 1 - }, - { - "name": "plugins/test/subnet_of.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "4f7566252c1d60e649d1d6a14092cc3e01747c07c5b041c868428b58392cbc36", - "format": 1 - }, - { - "name": "plugins/test/mac.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "62299ae2f27faa59e12edb01e50747245f85a27b5bba995ab79a4c98eaf0b884", - "format": 1 - }, - { - "name": "plugins/test/ipv6_teredo.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "364e1b494bcbc6c2915d57631e89b0be09cb4537b0e593f7956f8e754c600083", - "format": 1 - }, - { - "name": "plugins/filter", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "plugins/filter/network_in_network.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "292e649c71a8981076624d907e2355fdcca5b77d34630a3ba1d94b10e949207f", - "format": 1 - }, - { - "name": "plugins/filter/ipv4.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "3c6de45a25dd966988f545d0daf22af1aad6ff70dae439952b5dc9b04214f308", - "format": 1 - }, - { - "name": "plugins/filter/ipcut.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "68f81128b079b86a4f47a52991609d20405f1f21f17c428671971745aa872994", - "format": 1 - }, - { - "name": "plugins/filter/ipv6form.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "19971cd14e72dd73fb7426a81d406d17d96572ba912e2ae772395756a39259a1", - "format": 1 - }, - { - "name": "plugins/filter/validate.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "29141fcc4d8549d340e48f52b7f55da839a899b15f7d5f2c29c04d65646ab40a", - "format": 1 - }, - { - "name": "plugins/filter/ipaddr.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "12e73edbd14f49ea629e53c8f17d4261f40f87e2c582f599073c69cbe66d0d27", - "format": 1 - }, - { - "name": "plugins/filter/consolidate.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "f1d5948e33206851f8e47c39b0447302d922121a6da921151d04e9e52e15c70a", - "format": 1 - }, - { - "name": "plugins/filter/cidr_merge.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "1696ddbc8006f734b96ca793b0d97b20fd916d5e79689927116b9502e6b39720", - "format": 1 - }, - { - "name": "plugins/filter/to_paths.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "cfe1cb5a118b1d9547c2444d1ef9fd2dd8e0076587d58e724e756724768af228", - "format": 1 - }, - { - "name": "plugins/filter/network_in_usable.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "555d3639de75196fc6d6d4b15000794ede40565f6d87c7515ddc2d96888ecb92", - "format": 1 - }, - { - "name": "plugins/filter/hwaddr.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "537fa774d0c9e930f0bda854f715998a8128768421e9c416d54df187f236be66", - "format": 1 - }, - { - "name": "plugins/filter/slaac.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "93c561c589dc6c5bbe732a4d136616c7d9b5e6b105cb9cec40b26e0ef8a172a4", - "format": 1 - }, - { - "name": "plugins/filter/remove_keys.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "c65716a34c4c6c2687e10317201de892858cfe97733ae423b111c5d318e38e86", - "format": 1 - }, - { - "name": "plugins/filter/from_xml.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "5127b885570571c98046c6184c8366a42ec7b1c494e7e6c4c1046836ef184554", - "format": 1 - }, - { - "name": "plugins/filter/macaddr.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "b702ad98dbbaef44c7d5ceaa8355a317bcb1f0deb5f0224da98f639f789c2b2f", - "format": 1 - }, - { - "name": "plugins/filter/fact_diff.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "dc0f8b28ff75dd863cbd5c6986f176204e204c745a979dc4b78cd89f22d952da", - "format": 1 - }, - { - "name": "plugins/filter/reduce_on_network.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "c55954c5d20e0243f2e3333d011c4021ae4294f29e1a7c4cbf369950dee0eab0", - "format": 1 - }, - { - "name": "plugins/filter/keep_keys.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "b8ad427ca5be903162a49b9b73f437262b7ddc47eec1328c165d42b86b51755f", - "format": 1 - }, - { - "name": "plugins/filter/to_xml.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "1200518068f615530e5e74fa4e1ee82657a5aee1af0e7a105b1b7ebeae3ce0d8", - "format": 1 - }, - { - "name": "plugins/filter/ipwrap.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "9c18c1eac1f64f96be33092541430edb3d5de0b8f47483db09cff2c101c80fc3", - "format": 1 - }, - { - "name": "plugins/filter/usable_range.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "b38fdf0f93feba1be5898bfb0af62144bb591f4dab0f5cc291ce72d70b93b56e", - "format": 1 - }, - { - "name": "plugins/filter/index_of.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "b8f72b0978db5536a546d0652287f6d59111ef6a21c281873fc51bd9345a8ff4", - "format": 1 - }, - { - "name": "plugins/filter/ipsubnet.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "ab7f64ca7b708643f99bac87c642f80549c233d29b2b9433200a33df3bc58ae2", - "format": 1 - }, - { - "name": "plugins/filter/param_list_compare.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "f02eda7836771f03e5ed78f444a67d2cabaf45231a15998b6ebbc77f18227348", - "format": 1 - }, - { - "name": "plugins/filter/ipmath.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "29f0b614d1ad648514eb619f02de360d479759924bbe79aca66a1ec775fdb4a8", - "format": 1 - }, - { - "name": "plugins/filter/previous_nth_usable.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "60b550ba0f9e4afeb0db54e70e2c02fa7d12c14f3388d11fb24d3fefd2a51436", - "format": 1 - }, - { - "name": "plugins/filter/nthhost.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "338ca4a46c62a49b94e4994593a23cc998e2de3284777cbed9367e8de7bf02f9", - "format": 1 - }, - { - "name": "plugins/filter/next_nth_usable.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "ad84e47fcf69f1bab8d390003f0c6bf93df183d532ac68c57252ac8ef4e68fb1", - "format": 1 - }, - { - "name": "plugins/filter/replace_keys.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "3ed3f41aa165e732586a87a436b6b3a620aa4576d272d5dc24b570602d5cf9c3", - "format": 1 - }, - { - "name": "plugins/filter/ipv6.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "b8f517a01193ab2a7d9406971cb31a55488315ac0cde3b167bb6a7eae78caf93", - "format": 1 - }, - { - "name": "plugins/filter/get_path.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "3ec4ffeb16940d5ad6cf7fcf3f6db1eb92eaf222dd30089a03994b072684b040", - "format": 1 - }, - { - "name": "plugins/filter/ip4_hex.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "595a83cef32d8c49c02984cffe23f63eb93a3b7e27121ccf14f5ef52ba4b5909", - "format": 1 - }, - { - "name": ".github", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": ".github/workflows", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": ".github/workflows/check_label.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "9eb6abad2038b10cd6ea70310aa88d163f10c374d1728df29bb553eff2acfaba", - "format": 1 - }, - { - "name": ".github/workflows/draft_release.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "58fcbcfb57321441a102f21522b00acd8fa1346a465f5b46a6f02044962b2e9b", - "format": 1 - }, - { - "name": ".github/workflows/codecoverage.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "28c54e3df500125a471200a1bf1e69b3210a5afc41eb1f7b565ad3f1b57c81e0", - "format": 1 - }, - { - "name": ".github/workflows/release.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "2e3f90a3147d93b97347d8418352f23e201417e05539a466399dd258a65d699c", - "format": 1 - }, - { - "name": ".github/workflows/token_refresh.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "c079a657080c6e31600f25fc7afcb46a843890ef86cb9f3a1a574c08446eeb35", - "format": 1 - }, - { - "name": ".github/workflows/tests.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "7be05f3f2b23dc51a5c8069b6bd3f83e14e523a476f57d7b5f0ac48e4076c691", - "format": 1 - }, - { - "name": ".github/release-drafter.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "7cbc785c8661033cd9dd7a60897484fce731cbe3dc124a689fc3e934b1d974fb", - "format": 1 - } - ], - "format": 1 -} \ No newline at end of file diff --git a/ansible/collections/ansible_collections/ansible/utils/LICENSE b/ansible/collections/ansible_collections/ansible/utils/LICENSE deleted file mode 100644 index f288702d..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/LICENSE +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/ansible/collections/ansible_collections/ansible/utils/MANIFEST.json b/ansible/collections/ansible_collections/ansible/utils/MANIFEST.json deleted file mode 100644 index 61ef64bd..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/MANIFEST.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "collection_info": { - "namespace": "ansible", - "name": "utils", - "version": "3.1.0", - "authors": [ - "Ansible Community" - ], - "readme": "README.md", - "tags": [ - "linux", - "networking", - "security", - "cloud", - "utilities", - "data", - "validation", - "utils" - ], - "description": "Ansible Collection with utilities to ease the management, manipulation, and validation of data within a playbook", - "license": [], - "license_file": "LICENSE", - "dependencies": {}, - "repository": "https://github.com/ansible-collections/ansible.utils", - "documentation": null, - "homepage": null, - "issues": "https://github.com/ansible-collections/ansible.utils/issues" - }, - "file_manifest_file": { - "name": "FILES.json", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "71cb30bf16366e1984736dacd91aadd77a7ba227c43f4f2bbfdb14caab66af3f", - "format": 1 - }, - "format": 1 -} \ No newline at end of file diff --git a/ansible/collections/ansible_collections/ansible/utils/README.md b/ansible/collections/ansible_collections/ansible/utils/README.md deleted file mode 100644 index 91feb0c1..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/README.md +++ /dev/null @@ -1,178 +0,0 @@ -# Ansible Utilities Collection -[![Codecov](https://codecov.io/gh/ansible-collections/ansible.utils/branch/main/graph/badge.svg)](https://codecov.io/gh/ansible-collections/ansible.utils) -[![CI](https://github.com/ansible-collections/ansible.utils/actions/workflows/tests.yml/badge.svg?branch=main&event=schedule)](https://github.com/ansible-collections/ansible.utils/actions/workflows/tests.yml) - -The Ansible ``ansible.utils`` collection includes a variety of plugins that aid in the management, manipulation and visibility of data for the Ansible playbook developer. - - -## Ansible version compatibility - -This collection has been tested against following Ansible versions: **>=2.14.0**. - -For collections that support Ansible 2.9, please ensure you update your `network_os` to use the -fully qualified collection name (for example, `cisco.ios.ios`). -Plugins and modules within a collection may be tested with only specific Ansible versions. -A collection may contain metadata that identifies these versions. -PEP440 is the schema used to describe the versions of Ansible. - - -## Included content - - -### Filter plugins -Name | Description ---- | --- -[ansible.utils.cidr_merge](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.cidr_merge_filter.rst)|This filter can be used to merge subnets or individual addresses. -[ansible.utils.consolidate](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.consolidate_filter.rst)|Consolidate facts together on common attributes. -[ansible.utils.fact_diff](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.fact_diff_filter.rst)|Find the difference between currently set facts -[ansible.utils.from_xml](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.from_xml_filter.rst)|Convert given XML string to native python dictionary. -[ansible.utils.get_path](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.get_path_filter.rst)|Retrieve the value in a variable using a path -[ansible.utils.hwaddr](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.hwaddr_filter.rst)|HWaddr / MAC address filters -[ansible.utils.index_of](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.index_of_filter.rst)|Find the indices of items in a list matching some criteria -[ansible.utils.ip4_hex](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.ip4_hex_filter.rst)|This filter is designed to convert IPv4 address to Hexadecimal notation with optional delimiter. -[ansible.utils.ipaddr](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.ipaddr_filter.rst)|This filter is designed to return the input value if a query is True, else False. -[ansible.utils.ipcut](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.ipcut_filter.rst)|This filter is designed to get 1st or last few bits of IP address. -[ansible.utils.ipmath](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.ipmath_filter.rst)|This filter is designed to do simple IP math/arithmetic. -[ansible.utils.ipsubnet](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.ipsubnet_filter.rst)|This filter can be used to manipulate network subnets in several ways. -[ansible.utils.ipv4](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.ipv4_filter.rst)|To filter only Ipv4 addresses Ipv4 filter is used. -[ansible.utils.ipv6](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.ipv6_filter.rst)|To filter only Ipv6 addresses Ipv6 filter is used. -[ansible.utils.ipv6form](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.ipv6form_filter.rst)|This filter is designed to convert ipv6 address in different formats. For example expand, compressetc. -[ansible.utils.ipwrap](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.ipwrap_filter.rst)|This filter is designed to Wrap IPv6 addresses in [ ] brackets. -[ansible.utils.keep_keys](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.keep_keys_filter.rst)|Keep specific keys from a data recursively. -[ansible.utils.macaddr](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.macaddr_filter.rst)|macaddr / MAC address filters -[ansible.utils.network_in_network](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.network_in_network_filter.rst)|This filter returns whether an address or a network passed as argument is in a network. -[ansible.utils.network_in_usable](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.network_in_usable_filter.rst)|The network_in_usable filter returns whether an address passed as an argument is usable in a network. -[ansible.utils.next_nth_usable](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.next_nth_usable_filter.rst)|This filter returns the next nth usable ip within a network described by value. -[ansible.utils.nthhost](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.nthhost_filter.rst)|This filter returns the nth host within a network described by value. -[ansible.utils.param_list_compare](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.param_list_compare_filter.rst)|Generate the final param list combining/comparing base and provided parameters. -[ansible.utils.previous_nth_usable](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.previous_nth_usable_filter.rst)|This filter returns the previous nth usable ip within a network described by value. -[ansible.utils.reduce_on_network](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.reduce_on_network_filter.rst)|This filter reduces a list of addresses to only the addresses that match a given network. -[ansible.utils.remove_keys](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.remove_keys_filter.rst)|Remove specific keys from a data recursively. -[ansible.utils.replace_keys](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.replace_keys_filter.rst)|Replaces specific keys with their after value from a data recursively. -[ansible.utils.slaac](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.slaac_filter.rst)|This filter returns the SLAAC address within a network for a given HW/MAC address. -[ansible.utils.to_paths](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.to_paths_filter.rst)|Flatten a complex object into a dictionary of paths and values -[ansible.utils.to_xml](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.to_xml_filter.rst)|Convert given JSON string to XML -[ansible.utils.usable_range](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.usable_range_filter.rst)|Expand the usable IP addresses -[ansible.utils.validate](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.validate_filter.rst)|Validate data with provided criteria - -### Lookup plugins -Name | Description ---- | --- -[ansible.utils.get_path](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.get_path_lookup.rst)|Retrieve the value in a variable using a path -[ansible.utils.index_of](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.index_of_lookup.rst)|Find the indices of items in a list matching some criteria -[ansible.utils.to_paths](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.to_paths_lookup.rst)|Flatten a complex object into a dictionary of paths and values -[ansible.utils.validate](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.validate_lookup.rst)|Validate data with provided criteria - -### Modules -Name | Description ---- | --- -[ansible.utils.cli_parse](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.cli_parse_module.rst)|Parse cli output or text using a variety of parsers -[ansible.utils.fact_diff](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.fact_diff_module.rst)|Find the difference between currently set facts -[ansible.utils.update_fact](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.update_fact_module.rst)|Update currently set facts -[ansible.utils.validate](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.validate_module.rst)|Validate data with provided criteria - -### Test plugins -Name | Description ---- | --- -[ansible.utils.in_any_network](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.in_any_network_test.rst)|Test if an IP or network falls in any network -[ansible.utils.in_network](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.in_network_test.rst)|Test if IP address falls in the network -[ansible.utils.in_one_network](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.in_one_network_test.rst)|Test if IP address belongs in any one of the networks in the list -[ansible.utils.ip](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.ip_test.rst)|Test if something in an IP address or network -[ansible.utils.ip_address](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.ip_address_test.rst)|Test if something in an IP address -[ansible.utils.ipv4](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.ipv4_test.rst)|Test if something is an IPv4 address or network -[ansible.utils.ipv4_address](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.ipv4_address_test.rst)|Test if something is an IPv4 address -[ansible.utils.ipv4_hostmask](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.ipv4_hostmask_test.rst)|Test if an address is a valid hostmask -[ansible.utils.ipv4_netmask](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.ipv4_netmask_test.rst)|Test if an address is a valid netmask -[ansible.utils.ipv6](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.ipv6_test.rst)|Test if something is an IPv6 address or network -[ansible.utils.ipv6_address](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.ipv6_address_test.rst)|Test if something is an IPv6 address -[ansible.utils.ipv6_ipv4_mapped](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.ipv6_ipv4_mapped_test.rst)|Test if something appears to be a mapped IPv6 to IPv4 mapped address -[ansible.utils.ipv6_sixtofour](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.ipv6_sixtofour_test.rst)|Test if something appears to be a 6to4 address -[ansible.utils.ipv6_teredo](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.ipv6_teredo_test.rst)|Test if something appears to be an IPv6 teredo address -[ansible.utils.loopback](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.loopback_test.rst)|Test if an IP address is a loopback -[ansible.utils.mac](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.mac_test.rst)|Test if something appears to be a valid MAC address -[ansible.utils.multicast](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.multicast_test.rst)|Test for a multicast IP address -[ansible.utils.private](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.private_test.rst)|Test if an IP address is private -[ansible.utils.public](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.public_test.rst)|Test if an IP address is public -[ansible.utils.reserved](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.reserved_test.rst)|Test for a reserved IP address -[ansible.utils.resolvable](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.resolvable_test.rst)|Test if an IP or name can be resolved via /etc/hosts or DNS -[ansible.utils.subnet_of](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.subnet_of_test.rst)|Test if a network is a subnet of another network -[ansible.utils.supernet_of](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.supernet_of_test.rst)|Test if a network is a supernet of another network -[ansible.utils.unspecified](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.unspecified_test.rst)|Test for an unspecified IP address -[ansible.utils.validate](https://github.com/ansible-collections/ansible.utils/blob/main/docs/ansible.utils.validate_test.rst)|Validate data with provided criteria - - - -## Installing this collection - -You can install the ``ansible.utils`` collection with the Ansible Galaxy CLI: - - ansible-galaxy collection install ansible.utils - -You can also include it in a `requirements.yml` file and install it with `ansible-galaxy collection install -r requirements.yml`, using the format: - -```yaml ---- -collections: - - name: ansible.utils -``` -## Using this collection - -The most common use case for this collection is when you want to work with the complex data structures present in an Ansible playbook, inventory, or returned from modules. See each plugin documentation page for detailed examples for how these utilities can be used in tasks. - - -**NOTE**: For Ansible 2.9, you may not see deprecation warnings when you run your playbooks with this collection. Use this documentation to track when a module is deprecated. - -### See Also: - -* [Using collections](https://docs.ansible.com/ansible/latest/user_guide/collections_using.html) in the Ansible documentation for more details. - -## Contributing to this collection - -This collection is intended for plugins that are not platform or discipline specific. Simple plugin examples should be generic in nature. More complex examples can include real world platform modules to demonstrate the utility of the plugin in a playbook. - -We welcome community contributions to this collection. If you find problems, please open an issue or create a PR against the [ansible.utils collection repository](https://github.com/ansible-collections/ansible.utils). See [Contributing to Ansible-maintained collections](https://docs.ansible.com/ansible/devel/community/contributing_maintained_collections.html#contributing-maintained-collections) for complete details. - -See the [Ansible Community Guide](https://docs.ansible.com/ansible/latest/community/index.html) for details on contributing to Ansible. - -### Developer notes - -- 100% code coverage is the goal, although it's not always possible. Please include unit and integration tests with all PRs. PRs should not cause a decrease in code coverage. -- Filter plugins should be 1 per file, with an included DOCUMENTATION string, or reference a lookup plugin with the same name. -- Action, filter, and lookup plugins should use argspec validation. See [AnsibleArgSpecValidator](https://github.com/ansible-collections/ansible.utils/blob/main/plugins/module_utils/common/argspec_validate.py). -- This collection should not depend on other collections for imported code -- Use of the latest version of black is required for formatting (black -l79) -- The README contains a table of plugins. Use the [collection_prep](https://github.com/ansible-network/collection_prep) utilities to maintain this. - - -### Code of Conduct -This collection follows the Ansible project's -[Code of Conduct](https://docs.ansible.com/ansible/devel/community/code_of_conduct.html). -Please read and familiarize yourself with this document. - - -## Release notes - -Release notes are available [here](https://github.com/ansible-collections/ansible.utils/blob/main/changelogs/CHANGELOG.rst) -For automated release announcements refer [here](https://twitter.com/AnsibleContent). - - -## Roadmap -For information on releasing, versioning and deprecation see the [stratergy document](https://access.redhat.com/articles/4993781). - -In general, major versions can contain breaking changes, while minor versions only contain new features (like new plugin addition) and bugfixes. -The releases will be done on an as-needed basis when new features and/or bugfixes are done. - - - -## More information - -- [Ansible Collection overview](https://github.com/ansible-collections/overview) -- [Ansible User guide](https://docs.ansible.com/ansible/latest/user_guide/index.html) -- [Ansible Developer guide](https://docs.ansible.com/ansible/latest/dev_guide/index.html) -- [Ansible Community code of conduct](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html) - -## Licensing - -GNU General Public License v3.0 or later. - -See [LICENSE](https://www.gnu.org/licenses/gpl-3.0.txt) to see the full text. diff --git a/ansible/collections/ansible_collections/ansible/utils/bindep.txt b/ansible/collections/ansible_collections/ansible/utils/bindep.txt deleted file mode 100644 index ba9c980f..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/bindep.txt +++ /dev/null @@ -1,6 +0,0 @@ -# This is a cross-platform list tracking distribution packages needed by tests; -# see https://docs.openstack.org/infra/bindep/ for additional information. - -gcc-c++ [doc test platform:rpm] -python3-devel [test platform:rpm] -python3 [test platform:rpm] diff --git a/ansible/collections/ansible_collections/ansible/utils/changelogs/changelog.yaml b/ansible/collections/ansible_collections/ansible/utils/changelogs/changelog.yaml deleted file mode 100644 index 39e50672..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/changelogs/changelog.yaml +++ /dev/null @@ -1,409 +0,0 @@ -ancestor: null -releases: - 1.0.0: - changes: - bugfixes: - - linting and formatting for CI - minor_changes: - - Add cli_parse module and plugins (https://github.com/ansible-collections/ansible.utils/pull/28) - - Added fact_diff plugin and sub plugin - - Added validate module/lookup/filter/test plugin to validate data based on - given criteria - fragments: - - 23 linting and formatting.yaml - - 28_cli_parse_plugins_add.yaml - - 29-add_docs_for_Cli_parse.yaml - - add_fact_diff.yaml - - docs_copyedit.yaml - - validate.yaml - modules: - - description: Parse cli output or text using a variety of parsers - name: cli_parse - namespace: "" - - description: Find the difference between currently set facts - name: fact_diff - namespace: "" - - description: Update currently set facts - name: update_fact - namespace: "" - - description: Validate data with provided criteria - name: validate - namespace: "" - plugins: - lookup: - - description: Retrieve the value in a variable using a path - name: get_path - namespace: null - - description: Find the indices of items in a list matching some criteria - name: index_of - namespace: null - - description: Flatten a complex object into a dictionary of paths and values - name: to_paths - namespace: null - - description: Validate data with provided criteria - name: validate - namespace: null - release_date: "2020-12-08" - 1.0.1: - changes: - minor_changes: - - Move CHANGELOG.rst file under changelogs folder as required - fragments: - - fix_changelog_file_location.yaml - release_date: "2020-12-08" - 2.0.0: - changes: - breaking_changes: - - If added custom sub plugins in your collection move from old location `plugins/` - to the new location `plugins/sub_plugins/` and update the - imports as required - - Move sub plugins cli_parsers, fact_diff and validate to `plugins/sub_plugins` - folder - - The `cli_parsers` sub plugins folder name is changed to `cli_parse` to have - consistent naming convention, that is all the cli_parse subplugins will now - be in `plugins/sub_plugins/cli_parse` folder - fragments: - - 32_doc_updates.yaml - - sub_plugins_dir_change.yaml - - upcap_ansible.yaml - release_date: "2021-01-29" - 2.0.1: - changes: - bugfixes: - - Fix ansible.utils.cli_parse action plugin to support old cli_parse sub-plugin - structure in ansible.netcommon collection. - fragments: - - ansible-doc.yaml - - cli_parse_fix.yaml - release_date: "2021-02-25" - 2.0.2: - changes: - bugfixes: - - Fix cli_parse template_path read error (https://github.com/ansible-collections/ansible.utils/pull/51). - - Fix jsonschema input data format checking (https://github.com/ansible-collections/ansible.utils/pull/50). - fragments: - - cli_parse_errors_return.yaml - - jsonschema_data_validation_fix.yaml - release_date: "2021-03-29" - 2.1.0: - changes: - bugfixes: - - Add missing test requirements (https://github.com/ansible-collections/ansible.utils/pull/57). - minor_changes: - - Add from_xml and to_xml fiter plugin (https://github.com/ansible-collections/ansible.utils/pull/56). - fragments: - - 63-add_ignore_txt.yml - - add-xmltojson-and-jsontoxml-filter.yaml - - add_missing_test_requirements.yml - - fix_tests.yaml - release_date: "2021-04-27" - 2.2.0: - changes: - minor_changes: - - Add in_any_network, in_network, in_one_network test plugins - - Add ip, ip_address test plugins - - Add ipv4, ipv4_address, ipv4_hostmask, ipv4_netmask test plugins - - Add ipv6, ipv6_address, ipv6_ipv4_mapped, ipv6_sixtofour, ipv6_teredo test - plugins - - Add loopback, mac, multicast test plugins - - Add private, public, reserved test plugins - - Add resolvable test plugins - - Add subnet_of, supernet_of, unspecified test plugins - fragments: - - add_netaddr_test_plugins_1.yml - - add_netaddr_test_plugins_2.yml - - add_netaddr_test_plugins_3.yml - - add_netaddr_test_plugins_4.yml - - add_netaddr_test_plugins_5.yml - - add_netaddr_test_plugins_6.yml - - add_netaddr_test_plugins_7.yml - - add_netaddr_test_plugins_8.yml - release_date: "2021-05-17" - 2.3.0: - changes: - bugfixes: - - Also include empty lists and mappings into the output dictionary (https://github.com/ansible-collections/ansible.utils/pull/58). - doc_changes: - - Update doc for usable_range filter plugin - minor_changes: - - Add usable_range test plugin - fragments: - - add_usable_range_filter_plugin.yml - - empty_list_mapping.yml - - improve_coverage_for_filter_plugins.yaml - - update_doc_for_usable_range_filter_plugin.yml - release_date: "2021-06-22" - 2.3.1: - changes: - bugfixes: - - Add support for the validation of formats to the jsonschema validator. - - Improve test coverage - fragments: - - 81_add_support_for_format.yaml - release_date: "2021-07-26" - 2.4.0: - changes: - bugfixes: - - Update validate to use 2.11 ArgumentSpecValidator if available. - minor_changes: - - Add new plugin param_list_compare that generates the final param list after - comparing base and provided/target param list. - fragments: - - 85_update_validate_plugin.yaml - - 88_compare_resource_list_filter_plugin.yaml - - param_list_compare_docs_added.yaml - release_date: "2021-08-28" - 2.4.1: - changes: - release_summary: Rereleased 2.4.0 with trivial changes. - fragments: - - 2.4.1.yaml - - fix_network_ee.yaml - release_date: "2021-09-24" - 2.4.2: - changes: - release_summary: Rereleased 2.4.1 with valid requirement.txt. - fragments: - - 2.4.2.yaml - - add_ignore_2.13.yaml - - bugfix_100.yaml - release_date: "2021-10-07" - 2.4.3: - changes: - release_summary: Rereleased 2.4.2 with fix of network ee tests. - fragments: - - 2.4.3.yaml - - fix_network_ee.yaml - release_date: "2021-12-07" - 2.5.0: - changes: - doc_changes: - - Enhancement in documentation and docstring. - minor_changes: - - "'keep_keys' filter plugin added." - - "'remove_keys' filter plugin added." - - "'replace_keys' filter plugin added." - - Add cli_merge ipaddr filter plugin. - - Add ip4_hex filter plugin. - - Add ipaddr filter plugin. - - Add ipmath filter plugin. - - Add ipsubnet filter plugin. - - Add ipv4 filter plugin. - - Add ipv6 filter plugin. - - Add ipwrap filter plugin. - - Add network_in_network filter plugin. - - Add network_in_usable filter plugin. - - Add next_nth_usable filter plugin. - - Add nthhost filter plugin. - - Add previous_nth_usable filter plugin. - - Add reduce_on_network filter plugin. - - Add slaac,hwaddr,mac filter plugin. - - New validate sub-plugin "config" to validate device configuration against - user-defined rules (https://github.com/ansible-collections/ansible.network/issues/15). - fragments: - - 112-validate-config-plugin.yaml - - add_cli_merge_filter_plugin.yaml - - add_ip4_hex_filter.yaml - - add_ipaddr_filter_plugin.yaml - - add_ipmath_filter.yaml - - add_ipsubnet_filter_plugin.yaml - - add_ipv4_filter_plugin.yaml - - add_ipv6_filter_plugin.yaml - - add_ipwrap_filter_plugin.yaml - - add_network_in_network_filter.yaml - - add_network_in_usable_filter.yaml - - add_next_nth_usable_filter.yaml - - add_nthhost_filter.yaml - - add_previous_nth_usable_filter.yaml - - add_reduce_on_network_filter.yaml - - add_slaac_mac_hwaddr_filter.yaml - - docfix_minor_corrections.yaml - - recursive_filter_plugins.yaml - release_date: "2022-01-31" - 2.5.1: - changes: - doc_changes: - - "`in_any_network` - plugin doc fix for redundant line." - fragments: - - Improve_test_covrage.yaml - - minor_doc_update.yaml - - unit_test_container_venv.yaml - release_date: "2022-03-01" - 2.5.2: - changes: - bugfixes: - - Fix issue in ipaddr,ipv4,ipv6,ipwrap filters.(https://github.com/ansible-collections/ansible.utils/issues/148). - - ipaddr - Add valid network for link-local (https://github.com/ansible-collections/ansible.netcommon/issues/350). - - ipaddr - Fix issue of breaking ipaddr filter with netcommon 2.6.0(https://github.com/ansible-collections/ansible.netcommon/issues/375). - fragments: - - bugfix_ipaddr_filter.yaml - release_date: "2022-03-04" - 2.6.0: - changes: - minor_changes: - - "'consolidate' filter plugin added." - fragments: - - 0-ignore.yml - - consolidate_filter_plugin.yml - - enable_upgrade_black.yml - - pre-commit-enable.yml - - pre-commit-skip.yml - release_date: "2022-04-12" - 2.6.1: - changes: - release_summary: Rereleased 2.6.0 with fixes for internal testing. - fragments: - - 2.6.1-notes.yaml - - check_mode.yaml - - pylint-black-flake.yml - - sanity_fix.yaml - - test inits.yml - release_date: "2022-04-25" - 2.7.0: - changes: - bugfixes: - - Fix filters to only raise AnsibleFilterError exceptions (https://github.com/ansible-collections/ansible.utils/issues/209). - - ipsubnet - interacting with large subnets could cause performance constraints. - the result would be the system would appear to hang while it built out a list - of all possible subnets or stepped through all possible subnets one at a time. - when sending a prefix that is a supernet of the passed in network the behavior - wasn't consistent. this now returns an AnsibleFilterError in that scenario - across all python releases. (https://github.com/ansible-collections/ansible.utils/issues/132) - minor_changes: - - Add support for content template parser - - Added new connection base class similar to ansible.netcommon's NetworkConnectionBase - without the network-specific option masking (https://github.com/ansible-collections/ansible.utils/pull/213). - - ipsubnet - the index parameter should only ever be an integer if it is provided. - this changes the argument type from str to int. - fragments: - - 172.yaml - - 179.yaml - - 180.yaml - - 183.yaml - - 184.yaml - - 185.yaml - - 186.yaml - - 187.yaml - - 188.yaml - - 189.yaml - - 190.yaml - - 207-trivial.yaml - - 209.yaml - - 217-test-filter-docs.yaml - - ccontent_template_parser.yaml - - ipsubnet_performance.yaml - - persistent.yaml - - tests.yaml - - use-before.yaml - release_date: "2022-11-03" - 2.8.0: - changes: - bugfixes: - - Accept int input for ipaddr filters. - minor_changes: - - to_xml - Added support for using spaces to indent an XML doc via a new `indent` - parameter. - fragments: - - Ansible_lint_fix1.yaml - - Bugfix_162_accept_int_input.yaml - - pre-commit.yaml - - to_xml_indent_with_spaces.yaml - release_date: "2022-11-30" - 2.9.0: - changes: - bugfixes: - - mac - reorganize regexes to work around 3.11 regex changes. (https://github.com/ansible-collections/ansible.utils/pull/231) - minor_changes: - - to_xml - Added support to disable xml declartion with full_document flag. - fragments: - - 3.11_fixes.yaml - - add_ipfilter_doc_ut.yaml - - fix_ansible_lint.yaml - - fix_pre_commit.yaml - - to_xml_disable_xml_declaration.yaml - release_date: "2023-01-30" - 2.10.0: - release_date: "2023-05-11" - 2.10.1: - release_date: "2023-05-12" - 2.10.2: - changes: - minor_changes: - - validate - Add option `check_format` for the jsonschema engine to disable - JSON Schema format checking. - - validate - Add support for JSON Schema draft 2019-09 and 2020-12 as well as - automatically choosing the draft from the `$schema` field of the criteria. - fragments: - - netaddr_error.yml - - pre-commit.yaml - - validate_jsonschema_update.yaml - release_date: "2023-05-13" - 2.10.3: - fragments: - - fix_workflow_names.yml - release_date: "2023-05-17" - 2.10.4: - release_date: "2023-05-19" - 2.11.0: - changes: - bugfixes: - - Validate input for ipv4_hex(https://github.com/ansible-collections/ansible.utils/issues/281) - minor_changes: - - Add ipcut filter plugin.(https://github.com/ansible-collections/ansible.utils/issues/251) - - Add ipv6form filter plugin.(https://github.com/ansible-collections/ansible.utils/issues/230) - fragments: - - Bugfix_ipv4_hex.yaml - - ipcut.yaml - - ipv6form.yaml - plugins: - filter: - - description: This filter is designed to get 1st or last few bits of IP address. - name: ipcut - namespace: null - - description: - This filter is designed to convert ipv6 address in different - formats. For example expand, compressetc. - name: ipv6form - namespace: null - release_date: "2023-09-07" - 2.12.0: - changes: - minor_changes: - - Fact_diff filter plugin - Add fact_diff filter plugin. (https://github.com/ansible-collections/ansible.utils/issues/78). - fragments: - - fact_diff_filter_plugin.yaml - plugins: - filter: - - description: Find the difference between currently set facts - name: fact_diff - namespace: null - release_date: "2023-11-27" - 3.0.0: - changes: - major_changes: - - Bumping `requires_ansible` to `>=2.14.0`, since previous ansible-core versions - are EoL now. - release_summary: - Starting from this release, the minimum `ansible-core` version - this collection requires is `2.14.0`. That last known version compatible with - ansible-core<2.14 is `v2.12.0`. - fragments: - - update_requires_ansible.yaml - release_date: "2023-11-30" - 3.1.0: - changes: - bugfixes: - - Avoid unnecessary use of persistent connection in `cli_parse`, `fact_diff`, - `update_fact` and `validate` as this action does not require a connection. - doc_changes: - - ipv6form filter plugin - Fix to be displayed correctly. - - validate lookup plugin - Fix syntax in EXAMPLES. - - validate module - Fix syntax in EXAMPLES. - minor_changes: - - Add support in fact_diff filter plugin to show common lines.(https://github.com/ansible-collections/ansible.utils/issues/311) - fragments: - - Fre_fact_diff.yaml - - add_require_Connection.yaml - - ipv6form-doc.yaml - - validate-doc.yaml - release_date: "2024-01-30" diff --git a/ansible/collections/ansible_collections/ansible/utils/changelogs/config.yaml b/ansible/collections/ansible_collections/ansible/utils/changelogs/config.yaml deleted file mode 100644 index 18b915d9..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/changelogs/config.yaml +++ /dev/null @@ -1,31 +0,0 @@ -changelog_filename_template: ../CHANGELOG.rst -changelog_filename_version_depth: 0 -changes_file: changelog.yaml -changes_format: combined -keep_fragments: false -mention_ancestor: true -new_plugins_after_name: removed_features -notesdir: fragments -prelude_section_name: release_summary -prelude_section_title: Release Summary -sections: - - - major_changes - - Major Changes - - - minor_changes - - Minor Changes - - - breaking_changes - - Breaking Changes / Porting Guide - - - deprecated_features - - Deprecated Features - - - removed_features - - Removed Features (previously deprecated) - - - security_fixes - - Security Fixes - - - bugfixes - - Bugfixes - - - known_issues - - Known Issues - - - doc_changes - - Documentation Changes -title: Ansible Utils Collection -trivial_section_name: trivial diff --git a/ansible/collections/ansible_collections/ansible/utils/codecov.yml b/ansible/collections/ansible_collections/ansible/utils/codecov.yml deleted file mode 100644 index 816cb440..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/codecov.yml +++ /dev/null @@ -1,10 +0,0 @@ ---- -codecov: - require_ci_to_pass: true -comment: false -coverage: - status: - patch: false - project: - default: - threshold: 0.3% diff --git a/ansible/collections/ansible_collections/ansible/utils/cspell.config.yaml b/ansible/collections/ansible_collections/ansible/utils/cspell.config.yaml deleted file mode 100644 index 20e7d884..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/cspell.config.yaml +++ /dev/null @@ -1,37 +0,0 @@ ---- -dictionaryDefinitions: - - name: words - path: .config/dictionary.txt - addWords: true -dictionaries: - - bash - - networking-terms - - python - - words - - "!aws" - - "!backwards-compatibility" - - "!cryptocurrencies" - - "!cpp" -ignorePaths: - # All dot files in the root - - \.* - # This file - - cspell.config.yaml - # Generated rst files in the docs directory - - docs/*.rst - # The mypy configuration file - - mypy.ini - # The shared file for tool configuration - - pyproject.toml - # requirements.txt - - requirements.txt - # test-requirements.txt - - test-requirements.txt - # the bindep file - - bindep.txt - # The tox configuration file - - tox.ini - -languageSettings: - - languageId: python - allowCompoundWords: false diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.cidr_merge_filter.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.cidr_merge_filter.rst deleted file mode 100644 index 4afac704..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.cidr_merge_filter.rst +++ /dev/null @@ -1,186 +0,0 @@ -.. _ansible.utils.cidr_merge_filter: - - -************************ -ansible.utils.cidr_merge -************************ - -**This filter can be used to merge subnets or individual addresses.** - - -Version added: 2.5.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This filter can be used to merge subnets or individual addresses into their minimal representation, collapsing -- overlapping subnets and merging adjacent ones wherever possible. - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- action - -
- string -
-
- Default:
"merge"
-
- -
Action to be performed.example merge,span
-
-
- value - -
- list - / elements=string - / required -
-
- - -
list of subnets or individual address to be merged
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - #### examples - - name: cidr_merge with merge action - ansible.builtin.set_fact: - value: - - 192.168.0.0/17 - - 192.168.128.0/17 - - 192.168.128.1 - - debug: - msg: '{{ value|ansible.utils.cidr_merge }}' - - # TASK [cidr_merge with merge action] ********************************************************************************** - # ok: [localhost] => { - # "ansible_facts": { - # "value": [ - # "192.168.0.0/17", - # "192.168.128.0/17", - # "192.168.128.1" - # ] - # }, - # "changed": false - # } - # TASK [debug] ********************************************************************************************************* - # ok: [loalhost] => { - # "msg": [ - # "192.168.0.0/16" - # ] - # } - - - name: Cidr_merge with span. - ansible.builtin.set_fact: - value: - - 192.168.1.1 - - 192.168.1.2 - - 192.168.1.3 - - 192.168.1.4 - - debug: - msg: '{{ value|ansible.utils.cidr_merge(''span'') }}' - - # TASK [Cidr_merge with span.] ******************************************************************** - # ok: [localhost] => { - # "ansible_facts": { - # "value": [ - # "192.168.1.1", - # "192.168.1.2", - # "192.168.1.3", - # "192.168.1.4" - # ] - # }, - # "changed": false - # } - # - # TASK [debug] ************************************************************************************ - # ok: [localhost] => { - # "msg": "192.168.1.0/29" - # } - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this filter: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- raw -
-
-
Returns a minified list of subnets or a single subnet that spans all of the inputs.
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Ashwini Mhatre (@amhatre) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.cli_parse_module.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.cli_parse_module.rst deleted file mode 100644 index e3ada14a..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.cli_parse_module.rst +++ /dev/null @@ -1,461 +0,0 @@ -.. _ansible.utils.cli_parse_module: - - -*********************** -ansible.utils.cli_parse -*********************** - -**Parse cli output or text using a variety of parsers** - - -Version added: 1.0.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- Parse cli output or text using a variety of parsers - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsComments
-
- command - -
- string -
-
- -
The command to run on the host
-
-
- parser - -
- dictionary - / required -
-
- -
Parser specific parameters
-
-
- command - -
- string -
-
- -
The command used to locate the parser's template
-
-
- name - -
- string - / required -
-
- -
The name of the parser to use
-
-
- os - -
- string -
-
- -
Provide an operating system value to the parser
-
For `ntc_templates` parser, this should be in the supported `<vendor>_<os>` format.
-
-
- template_path - -
- string -
-
- -
Path of the parser template on the Ansible controller
-
This can be a relative or an absolute path
-
-
- vars - -
- dictionary -
-
- -
Additional parser specific parameters
-
See the cli_parse user guide for examples of parser specific variables
- -
-
- set_fact - -
- string -
-
- -
Set the resulting parsed data as a fact
-
-
- text - -
- string -
-
- -
Text to be parsed
-
-
- - -Notes ------ - -.. note:: - - The default search path for a parser template is templates/{{ short_os }}_{{ command }}.{{ extension }} - - => short_os derived from ansible_network_os or ansible_distribution and set to lower case - - => command is the command passed to the module with spaces replaced with _ - - => extension is specific to the parser used (native=yaml, textfsm=textfsm, ttp=ttp) - - The default Ansible search path for the templates directory is used for parser templates as well - - Some parsers may have additional configuration options available. See the parsers/vars key and the parser's documentation - - Some parsers require third-party python libraries be installed on the Ansible control node and a specific python version - - example Pyats requires pyats and genie and requires Python 3 - - example ntc_templates requires ntc_templates - - example textfsm requires textfsm - - example ttp requires ttp - - example xml requires xml_to_dict - - Support of 3rd party python libraries is limited to the use of their public APIs as documented - - Additional information and examples can be found in the parsing user guide: - - https://docs.ansible.com/ansible/latest/network/user_guide/cli_parsing.html - - - -Examples --------- - -.. code-block:: yaml - - # Using the native parser - - # ------------- - # templates/nxos_show_interface.yaml - # - example: Ethernet1/1 is up - # getval: '(?P\S+) is (?P\S+)' - # result: - # "{{ name }}": - # name: "{{ name }}" - # state: - # operating: "{{ oper_state }}" - # shared: True - # - # - example: admin state is up, Dedicated Interface - # getval: 'admin state is (?P\S+)' - # result: - # "{{ name }}": - # name: "{{ name }}" - # state: - # admin: "{{ admin_state }}" - # - # - example: " Hardware: Ethernet, address: 0000.5E00.5301 (bia 0000.5E00.5301)" - # getval: '\s+Hardware: (?P.*), address: (?P\S+)' - # result: - # "{{ name }}": - # hardware: "{{ hardware }}" - # mac_address: "{{ mac }}" - - - name: Run command and parse with native - ansible.utils.cli_parse: - command: "show interface" - parser: - name: ansible.netcommon.native - set_fact: interfaces_fact - - - - name: Pass text and template_path - ansible.utils.cli_parse: - text: "{{ previous_command['stdout'] }}" - parser: - name: ansible.netcommon.native - template_path: "{{ role_path }}/templates/nxos_show_interface.yaml" - - - # Using the ntc_templates parser - - # ------------- - # The ntc_templates use 'vendor_platform' for the file name - # it will be derived from ansible_network_os if not provided - # example cisco.ios.ios => cisco_ios - - - name: Run command and parse with ntc_templates - ansible.utils.cli_parse: - command: "show interface" - parser: - name: ansible.netcommon.ntc_templates - register: parser_output - - - name: Pass text and command - ansible.utils.cli_parse: - text: "{{ previous_command['stdout'] }}" - parser: - name: ansible.netcommon.ntc_templates - command: show interface - register: parser_output - - - # Using the pyats parser - - # ------------- - # The pyats parser uses 'os' to locate the appropriate parser - # it will be derived from ansible_network_os if not provided - # in the case of pyats: cisco.ios.ios => iosxe - - - name: Run command and parse with pyats - ansible.utils.cli_parse: - command: "show interface" - parser: - name: ansible.netcommon.pyats - register: parser_output - - - name: Pass text and command - ansible.utils.cli_parse: - text: "{{ previous_command['stdout'] }}" - parser: - name: ansible.netcommon.pyats - command: show interface - register: parser_output - - - name: Provide an OS to pyats to use an ios parser - ansible.utils.cli_parse: - text: "{{ previous_command['stdout'] }}" - parser: - name: ansible.netcommon.pyats - command: show interface - os: ios - register: parser_output - - - # Using the textfsm parser - - # ------------- - # templates/nxos_show_version.textfsm - # - # Value UPTIME ((\d+\s\w+.s.,?\s?){4}) - # Value LAST_REBOOT_REASON (.+) - # Value OS (\d+.\d+(.+)?) - # Value BOOT_IMAGE (.*) - # Value PLATFORM (\w+) - # - # Start - # ^\s+(NXOS: version|system:\s+version)\s+${OS}\s*$$ - # ^\s+(NXOS|kickstart)\s+image\s+file\s+is:\s+${BOOT_IMAGE}\s*$$ - # ^\s+cisco\s+${PLATFORM}\s+[cC]hassis - # ^\s+cisco\s+Nexus\d+\s+${PLATFORM} - # # Cisco N5K platform - # ^\s+cisco\s+Nexus\s+${PLATFORM}\s+[cC]hassis - # ^\s+cisco\s+.+-${PLATFORM}\s* - # ^Kernel\s+uptime\s+is\s+${UPTIME} - # ^\s+Reason:\s${LAST_REBOOT_REASON} -> Record - - - name: Run command and parse with textfsm - ansible.utils.cli_parse: - command: "show version" - parser: - name: ansible.utils.textfsm - register: parser_output - - - name: Pass text and command - ansible.utils.cli_parse: - text: "{{ previous_command['stdout'] }}" - parser: - name: ansible.utils.textfsm - command: show version - register: parser_output - - # Using the ttp parser - - # ------------- - # templates/nxos_show_interface.ttp - # - # {{ interface }} is {{ state }} - # admin state is {{ admin_state }}{{ ignore(".*") }} - - - name: Run command and parse with ttp - ansible.utils.cli_parse: - command: "show interface" - parser: - name: ansible.utils.ttp - set_fact: new_fact_key - - - name: Pass text and template_path - ansible.utils.cli_parse: - text: "{{ previous_command['stdout'] }}" - parser: - name: ansible.utils.ttp - template_path: "{{ role_path }}/templates/nxos_show_interface.ttp" - register: parser_output - - # Using the XML parser - - # ------------- - - name: Run command and parse with xml - ansible.utils.cli_parse: - command: "show interface | xml" - parser: - name: ansible.utils.xml - register: parser_output - - - name: Pass text and parse with xml - ansible.utils.cli_parse: - text: "{{ previous_command['stdout'] }}" - parser: - name: ansible.utils.xml - register: parser_output - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this module: - -.. raw:: html - - - - - - - - - - - - - - - - - - - - - - -
KeyReturnedDescription
-
- parsed - -
- dictionary -
-
always -
The structured data resulting from the parsing of the text
-
-
-
- stdout - -
- string -
-
when provided a command -
The output from the command run
-
-
-
- stdout_lines - -
- list - / elements=string -
-
when provided a command -
The output of the command run split into lines
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Bradley Thornton (@cidrblock) diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.consolidate_filter.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.consolidate_filter.rst deleted file mode 100644 index d51e5c71..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.consolidate_filter.rst +++ /dev/null @@ -1,1574 +0,0 @@ -.. _ansible.utils.consolidate_filter: - - -************************* -ansible.utils.consolidate -************************* - -**Consolidate facts together on common attributes.** - - -Version added: 2.6.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This plugin presents collective structured data including all supplied facts grouping on common attributes mentioned. -- All other boolean parameter defaults to False unless parameters is explicitly mentioned. -- Using the parameters below- ``data_sources|ansible.utils.consolidate(fail_missing_match_key=False``)) - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- data_sources - -
- list - / elements=dictionary - / required -
-
- - -
This option represents a list of dictionaries to perform the operation on.
-
For example facts_source|ansible.utils.consolidate(fail_missing_match_key=False)), in this case facts_source represents this option.
-
-
- data - -
- raw - / required -
-
- - -
Specify facts data that gets consolidated.
-
-
- match_key - -
- string - / required -
-
- - -
Specify key to match on.
-
-
- name - -
- string - / required -
-
- - -
Specify the name with which the result set be created.
-
-
- fail_duplicate - -
- boolean -
-
-
    Choices: -
  • no
  • -
  • yes ←
  • -
-
- -
Fail if the match key's value exists more than once in a given data set.
-
-
- fail_missing_match_key - -
- boolean -
-
-
    Choices: -
  • no
  • -
  • yes ←
  • -
-
- -
Fail if match_key is not found in a specific data set.
-
-
- fail_missing_match_value - -
- boolean -
-
-
    Choices: -
  • no
  • -
  • yes ←
  • -
-
- -
Fail if the match key's value is not found in every data source.
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - # Consolidated filter plugin example - # ---------------------------------- - - # play.yml - - name: Define some test data - ansible.builtin.set_fact: - values: - - name: a - value: 1 - - name: b - value: 2 - - name: c - value: 3 - colors: - - name: a - color: red - - name: b - color: green - - name: c - color: blue - - name: Define some test data - ansible.builtin.set_fact: - base_data: - - data: '{{ values }}' - match_key: name - name: values - - data: '{{ colors }}' - match_key: name - name: colors - - name: Consolidate the data source using the name key - ansible.builtin.set_fact: - consolidated: '{{ data_sources|ansible.utils.consolidate }}' - vars: - sizes: - - name: a - size: small - - name: b - size: medium - - name: c - size: large - additional_data_source: - - data: '{{ sizes }}' - match_key: name - name: sizes - data_sources: '{{ base_data + additional_data_source }}' - - - # Output - - # ok: [localhost] => { - # "ansible_facts": { - # "consolidated": { - # "a": { - # "colors": { - # "color": "red", - # "name": "a" - # }, - # "sizes": { - # "name": "a", - # "size": "small" - # }, - # "values": { - # "name": "a", - # "value": 1 - # } - # }, - # "b": { - # "colors": { - # "color": "green", - # "name": "b" - # }, - # "sizes": { - # "name": "b", - # "size": "medium" - # }, - # "values": { - # "name": "b", - # "value": 2 - # } - # }, - # "c": { - # "colors": { - # "color": "blue", - # "name": "c" - # }, - # "sizes": { - # "name": "c", - # "size": "large" - # }, - # "values": { - # "name": "c", - # "value": 3 - # } - # } - # } - # }, - # "changed": false - # } - - - name: Consolidate the data source using different keys - ansible.builtin.set_fact: null - consolidated: '{{ data_sources|ansible.utils.consolidate }}' - vars: - sizes: - - title: a - size: small - - title: b - size: medium - - title: c - size: large - additional_data_source: - - data: '{{ sizes }}' - match_key: title - name: sizes - data_sources: '{{ base_data + additional_data_source }}' - - - # Output - - # ok: [localhost] => { - # "ansible_facts": { - # "consolidated": { - # "a": { - # "colors": { - # "color": "red", - # "name": "a" - # }, - # "sizes": { - # "size": "small", - # "title": "a" - # }, - # "values": { - # "name": "a", - # "value": 1 - # } - # }, - # "b": { - # "colors": { - # "color": "green", - # "name": "b" - # }, - # "sizes": { - # "size": "medium", - # "title": "b" - # }, - # "values": { - # "name": "b", - # "value": 2 - # } - # }, - # "c": { - # "colors": { - # "color": "blue", - # "name": "c" - # }, - # "sizes": { - # "size": "large", - # "title": "c" - # }, - # "values": { - # "name": "c", - # "value": 3 - # } - # } - # } - # }, - # "changed": false - # } - - - name: Consolidate the data source using the name key (fail_missing_match_key) - ansible.builtin.set_fact: null - consolidated: '{{ data_sources|ansible.utils.consolidate(fail_missing_match_key=True) }}' - ignore_errors: true - vars: - sizes: - - size: small - - size: medium - - size: large - additional_data_source: - - data: '{{ sizes }}' - match_key: name - name: sizes - data_sources: '{{ base_data + additional_data_source }}' - - # Output - - # fatal: [localhost]: FAILED! => { - # "msg": "Error when using plugin 'consolidate': 'fail_missing_match_key' - # reported missing match key 'name' in data source 3 in list entry 1, - # missing match key 'name' in data source 3 in list entry 2, - # missing match key 'name' in data source 3 in list entry 3" - # } - - - name: Consolidate the data source using the name key (fail_missing_match_value) - ansible.builtin.set_fact: - consolidated: "{{ data_sources|ansible.utils.consolidate(fail_missing_match_value=True) }}" - ignore_errors: true - vars: - sizes: - - name: a - size: small - - name: b - size: medium - additional_data_source: - - data: "{{ sizes }}" - match_key: name - name: sizes - data_sources: "{{ base_data + additional_data_source }}" - - # fatal: [localhost]: FAILED! => { - # "msg": "Error when using plugin 'consolidate': 'fail_missing_match_value' - # reported missing match value c in data source 3" - # } - - - name: Consolidate the data source using the name key (fail_duplicate) - ansible.builtin.set_fact: - consolidated: "{{ data_sources|ansible.utils.consolidate(fail_duplicate=True) }}" - ignore_errors: true - vars: - sizes: - - name: a - size: small - - name: a - size: small - additional_data_source: - - data: "{{ sizes }}" - match_key: name - name: sizes - data_sources: "{{ base_data + additional_data_source }}" - - # fatal: [localhost]: FAILED! => { - # "msg": "Error when using plugin 'consolidate': 'fail_duplicate' - # reported duplicate values in data source 3" - # } - - # facts.yml - - # interfaces: - # - name: GigabitEthernet0/0 - # enabled: true - # duplex: auto - # speed: auto - # note: - # - Connected green wire - # - name: GigabitEthernet0/1 - # description: Configured by Ansible - Interface 1 - # mtu: 1500 - # speed: auto - # duplex: auto - # enabled: true - # note: - # - Connected blue wire - # - Configured by Paul - # vifs: - # - vlan_id: 100 - # description: Eth1 - VIF 100 - # mtu: 400 - # enabled: true - # comment: Needs reconfiguration - # - vlan_id: 101 - # description: Eth1 - VIF 101 - # enabled: true - # - name: GigabitEthernet0/2 - # description: Configured by Ansible - Interface 2 (ADMIN DOWN) - # mtu: 600 - # enabled: false - # l2_interfaces: - # - name: GigabitEthernet0/0 - # - mode: access - # name: GigabitEthernet0/1 - # trunk: - # allowed_vlans: - # - "11" - # - "12" - # - "59" - # - "67" - # - "75" - # - "77" - # - "81" - # - "100" - # - 400-408 - # - 411-413 - # - "415" - # - "418" - # - "982" - # - "986" - # - "988" - # - "993" - # - mode: trunk - # name: GigabitEthernet0/2 - # trunk: - # allowed_vlans: - # - "11" - # - "12" - # - "59" - # - "67" - # - "75" - # - "77" - # - "81" - # - "100" - # - 400-408 - # - 411-413 - # - "415" - # - "418" - # - "982" - # - "986" - # - "988" - # - "993" - # encapsulation: dot1q - # l3_interfaces: - # - ipv4: - # - address: 192.168.0.2/24 - # name: GigabitEthernet0/0 - # - name: GigabitEthernet0/1 - # - name: GigabitEthernet0/2 - # - name: Loopback888 - # - name: Loopback999 - - # Playbook - - name: Build the facts collection - set_fact: - data_sources: - - data: '{{ interfaces }}' - match_key: name - name: interfaces - - data: '{{ l2_interfaces }}' - match_key: name - name: l2_interfaces - - data: '{{ l3_interfaces }}' - match_key: name - name: l3_interfaces - - name: Combine all the facts based on match_keys - set_fact: - combined: >- - {{ data_sources|ansible.utils.consolidate(fail_missing_match_value=False) - }} - - # Output - # ok: [localhost] => { - # "ansible_facts": { - # "data_sources": [ - # { - # "data": [ - # { - # "duplex": "auto", - # "enabled": true, - # "name": "GigabitEthernet0/0", - # "note": [ - # "Connected green wire" - # ], - # "speed": "auto" - # }, - # { - # "description": "Configured by Ansible - Interface 1", - # "duplex": "auto", - # "enabled": true, - # "mtu": 1500, - # "name": "GigabitEthernet0/1", - # "note": [ - # "Connected blue wire", - # "Configured by Paul" - # ], - # "speed": "auto", - # "vifs": [ - # { - # "comment": "Needs reconfiguration", - # "description": "Eth1 - VIF 100", - # "enabled": true, - # "mtu": 400, - # "vlan_id": 100 - # }, - # { - # "description": "Eth1 - VIF 101", - # "enabled": true, - # "vlan_id": 101 - # } - # ] - # }, - # { - # "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", - # "enabled": false, - # "mtu": 600, - # "name": "GigabitEthernet0/2" - # } - # ], - # "match_key": "name", - # "name": "interfaces" - # }, - # { - # "data": [ - # { - # "name": "GigabitEthernet0/0" - # }, - # { - # "mode": "access", - # "name": "GigabitEthernet0/1", - # "trunk": { - # "allowed_vlans": [ - # "11", - # "12", - # "59", - # "67", - # "75", - # "77", - # "81", - # "100", - # "400-408", - # "411-413", - # "415", - # "418", - # "982", - # "986", - # "988", - # "993" - # ] - # } - # }, - # { - # "mode": "trunk", - # "name": "GigabitEthernet0/2", - # "trunk": { - # "allowed_vlans": [ - # "11", - # "12", - # "59", - # "67", - # "75", - # "77", - # "81", - # "100", - # "400-408", - # "411-413", - # "415", - # "418", - # "982", - # "986", - # "988", - # "993" - # ], - # "encapsulation": "dot1q" - # } - # } - # ], - # "match_key": "name", - # "name": "l2_interfaces" - # }, - # { - # "data": [ - # { - # "ipv4": [ - # { - # "address": "192.168.0.2/24" - # } - # ], - # "name": "GigabitEthernet0/0" - # }, - # { - # "name": "GigabitEthernet0/1" - # }, - # { - # "name": "GigabitEthernet0/2" - # }, - # { - # "name": "Loopback888" - # }, - # { - # "name": "Loopback999" - # } - # ], - # "match_key": "name", - # "name": "l3_interfaces" - # } - # ] - # }, - # "changed": false - # } - # Read vars_file 'facts.yml' - - # TASK [Combine all the facts based on match_keys] - # ok: [localhost] => { - # "ansible_facts": { - # "combined": { - # "GigabitEthernet0/0": { - # "interfaces": { - # "duplex": "auto", - # "enabled": true, - # "name": "GigabitEthernet0/0", - # "note": [ - # "Connected green wire" - # ], - # "speed": "auto" - # }, - # "l2_interfaces": { - # "name": "GigabitEthernet0/0" - # }, - # "l3_interfaces": { - # "ipv4": [ - # { - # "address": "192.168.0.2/24" - # } - # ], - # "name": "GigabitEthernet0/0" - # } - # }, - # "GigabitEthernet0/1": { - # "interfaces": { - # "description": "Configured by Ansible - Interface 1", - # "duplex": "auto", - # "enabled": true, - # "mtu": 1500, - # "name": "GigabitEthernet0/1", - # "note": [ - # "Connected blue wire", - # "Configured by Paul" - # ], - # "speed": "auto", - # "vifs": [ - # { - # "comment": "Needs reconfiguration", - # "description": "Eth1 - VIF 100", - # "enabled": true, - # "mtu": 400, - # "vlan_id": 100 - # }, - # { - # "description": "Eth1 - VIF 101", - # "enabled": true, - # "vlan_id": 101 - # } - # ] - # }, - # "l2_interfaces": { - # "mode": "access", - # "name": "GigabitEthernet0/1", - # "trunk": { - # "allowed_vlans": [ - # "11", - # "12", - # "59", - # "67", - # "75", - # "77", - # "81", - # "100", - # "400-408", - # "411-413", - # "415", - # "418", - # "982", - # "986", - # "988", - # "993" - # ] - # } - # }, - # "l3_interfaces": { - # "name": "GigabitEthernet0/1" - # } - # }, - # "GigabitEthernet0/2": { - # "interfaces": { - # "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", - # "enabled": false, - # "mtu": 600, - # "name": "GigabitEthernet0/2" - # }, - # "l2_interfaces": { - # "mode": "trunk", - # "name": "GigabitEthernet0/2", - # "trunk": { - # "allowed_vlans": [ - # "11", - # "12", - # "59", - # "67", - # "75", - # "77", - # "81", - # "100", - # "400-408", - # "411-413", - # "415", - # "418", - # "982", - # "986", - # "988", - # "993" - # ], - # "encapsulation": "dot1q" - # } - # }, - # "l3_interfaces": { - # "name": "GigabitEthernet0/2" - # } - # }, - # "Loopback888": { - # "interfaces": {}, - # "l2_interfaces": {}, - # "l3_interfaces": { - # "name": "Loopback888" - # } - # }, - # "Loopback999": { - # "interfaces": {}, - # "l2_interfaces": {}, - # "l3_interfaces": { - # "name": "Loopback999" - # } - # } - # } - # }, - # "changed": false - # } - - # Failing on missing match values - # ------------------------------- - - # facts.yaml - # interfaces: - # - name: GigabitEthernet0/0 - # enabled: true - # duplex: auto - # speed: auto - # note: - # - Connected green wire - # - name: GigabitEthernet0/1 - # description: Configured by Ansible - Interface 1 - # mtu: 1500 - # speed: auto - # duplex: auto - # enabled: true - # note: - # - Connected blue wire - # - Configured by Paul - # vifs: - # - vlan_id: 100 - # description: Eth1 - VIF 100 - # mtu: 400 - # enabled: true - # comment: Needs reconfiguration - # - vlan_id: 101 - # description: Eth1 - VIF 101 - # enabled: true - # - name: GigabitEthernet0/2 - # description: Configured by Ansible - Interface 2 (ADMIN DOWN) - # mtu: 600 - # enabled: false - # l2_interfaces: - # - name: GigabitEthernet0/0 - # - mode: access - # name: GigabitEthernet0/1 - # trunk: - # allowed_vlans: - # - "11" - # - "12" - # - "59" - # - "67" - # - "75" - # - "77" - # - "81" - # - "100" - # - 400-408 - # - 411-413 - # - "415" - # - "418" - # - "982" - # - "986" - # - "988" - # - "993" - # - mode: trunk - # name: GigabitEthernet0/2 - # trunk: - # allowed_vlans: - # - "11" - # - "12" - # - "59" - # - "67" - # - "75" - # - "77" - # - "81" - # - "100" - # - 400-408 - # - 411-413 - # - "415" - # - "418" - # - "982" - # - "986" - # - "988" - # - "993" - # encapsulation: dot1q - # l3_interfaces: - # - ipv4: - # - address: 192.168.0.2/24 - # name: GigabitEthernet0/0 - # - name: GigabitEthernet0/1 - # - name: GigabitEthernet0/2 - # - name: Loopback888 - # - name: Loopback999 - - # Playbook - - name: Build the facts collection - set_fact: - data_sources: - - data: '{{ interfaces }}' - match_key: name - name: interfaces - - data: '{{ l2_interfaces }}' - match_key: name - name: l2_interfaces - - data: '{{ l3_interfaces }}' - match_key: name - name: l3_interfaces - - name: Combine all the facts based on match_keys - set_fact: - combined: >- - {{ data_sources|ansible.utils.consolidate(fail_missing_match_value=True) - }} - - # Output - # ok: [localhost] => { - # "ansible_facts": { - # "data_sources": [ - # { - # "data": [ - # { - # "duplex": "auto", - # "enabled": true, - # "name": "GigabitEthernet0/0", - # "note": [ - # "Connected green wire" - # ], - # "speed": "auto" - # }, - # { - # "description": "Configured by Ansible - Interface 1", - # "duplex": "auto", - # "enabled": true, - # "mtu": 1500, - # "name": "GigabitEthernet0/1", - # "note": [ - # "Connected blue wire", - # "Configured by Paul" - # ], - # "speed": "auto", - # "vifs": [ - # { - # "comment": "Needs reconfiguration", - # "description": "Eth1 - VIF 100", - # "enabled": true, - # "mtu": 400, - # "vlan_id": 100 - # }, - # { - # "description": "Eth1 - VIF 101", - # "enabled": true, - # "vlan_id": 101 - # } - # ] - # }, - # { - # "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", - # "enabled": false, - # "mtu": 600, - # "name": "GigabitEthernet0/2" - # } - # ], - # "match_key": "name", - # "name": "interfaces" - # }, - # { - # "data": [ - # { - # "name": "GigabitEthernet0/0" - # }, - # { - # "mode": "access", - # "name": "GigabitEthernet0/1", - # "trunk": { - # "allowed_vlans": [ - # "11", - # "12", - # "59", - # "67", - # "75", - # "77", - # "81", - # "100", - # "400-408", - # "411-413", - # "415", - # "418", - # "982", - # "986", - # "988", - # "993" - # ] - # } - # }, - # { - # "mode": "trunk", - # "name": "GigabitEthernet0/2", - # "trunk": { - # "allowed_vlans": [ - # "11", - # "12", - # "59", - # "67", - # "75", - # "77", - # "81", - # "100", - # "400-408", - # "411-413", - # "415", - # "418", - # "982", - # "986", - # "988", - # "993" - # ], - # "encapsulation": "dot1q" - # } - # } - # ], - # "match_key": "name", - # "name": "l2_interfaces" - # }, - # { - # "data": [ - # { - # "ipv4": [ - # { - # "address": "192.168.0.2/24" - # } - # ], - # "name": "GigabitEthernet0/0" - # }, - # { - # "name": "GigabitEthernet0/1" - # }, - # { - # "name": "GigabitEthernet0/2" - # }, - # { - # "name": "Loopback888" - # }, - # { - # "name": "Loopback999" - # } - # ], - # "match_key": "name", - # "name": "l3_interfaces" - # } - # ] - # }, - # "changed": false - # } - # Read vars_file 'facts.yml' - - # TASK [Combine all the facts based on match_keys] - # fatal: [localhost]: FAILED! => { - # "msg": "Error when using plugin 'consolidate': 'fail_missing_match_value' reported Missing match value Loopback999, - # Loopback888 in data source 0, Missing match value Loopback999, Loopback888 in data source 1" - # } - - # Failing on missing match keys - # ----------------------------- - - # facts.yaml - # interfaces: - # - name: GigabitEthernet0/0 - # enabled: true - # duplex: auto - # speed: auto - # note: - # - Connected green wire - # - name: GigabitEthernet0/1 - # description: Configured by Ansible - Interface 1 - # mtu: 1500 - # speed: auto - # duplex: auto - # enabled: true - # note: - # - Connected blue wire - # - Configured by Paul - # vifs: - # - vlan_id: 100 - # description: Eth1 - VIF 100 - # mtu: 400 - # enabled: true - # comment: Needs reconfiguration - # - vlan_id: 101 - # description: Eth1 - VIF 101 - # enabled: true - # - name: GigabitEthernet0/2 - # description: Configured by Ansible - Interface 2 (ADMIN DOWN) - # mtu: 600 - # enabled: false - # l2_interfaces: - # - name: GigabitEthernet0/0 - # - mode: access - # name: GigabitEthernet0/1 - # trunk: - # allowed_vlans: - # - "11" - # - "12" - # - "59" - # - "67" - # - "75" - # - "77" - # - "81" - # - "100" - # - 400-408 - # - 411-413 - # - "415" - # - "418" - # - "982" - # - "986" - # - "988" - # - "993" - # - mode: trunk - # name: GigabitEthernet0/2 - # trunk: - # allowed_vlans: - # - "11" - # - "12" - # - "59" - # - "67" - # - "75" - # - "77" - # - "81" - # - "100" - # - 400-408 - # - 411-413 - # - "415" - # - "418" - # - "982" - # - "986" - # - "988" - # - "993" - # encapsulation: dot1q - # l3_interfaces: - # - ipv4: - # - address: 192.168.0.2/24 - # inft_name: GigabitEthernet0/0 - # - inft_name: GigabitEthernet0/1 - # - inft_name: GigabitEthernet0/2 - # - inft_name: Loopback888 - # - inft_name: Loopback999 - - # Playbook - - name: Build the facts collection - set_fact: - data_sources: - - data: '{{ interfaces }}' - match_key: name - name: interfaces - - data: '{{ l2_interfaces }}' - match_key: name - name: l2_interfaces - - data: '{{ l3_interfaces }}' - match_key: name - name: l3_interfaces - - name: Combine all the facts based on match_keys - set_fact: - combined: '{{ data_sources|ansible.utils.consolidate(fail_missing_match_key=True) }}' - - # Output - # ok: [localhost] => { - # "ansible_facts": { - # "data_sources": [ - # { - # "data": [ - # { - # "duplex": "auto", - # "enabled": true, - # "name": "GigabitEthernet0/0", - # "note": [ - # "Connected green wire" - # ], - # "speed": "auto" - # }, - # { - # "description": "Configured by Ansible - Interface 1", - # "duplex": "auto", - # "enabled": true, - # "mtu": 1500, - # "name": "GigabitEthernet0/1", - # "note": [ - # "Connected blue wire", - # "Configured by Paul" - # ], - # "speed": "auto", - # "vifs": [ - # { - # "comment": "Needs reconfiguration", - # "description": "Eth1 - VIF 100", - # "enabled": true, - # "mtu": 400, - # "vlan_id": 100 - # }, - # { - # "description": "Eth1 - VIF 101", - # "enabled": true, - # "vlan_id": 101 - # } - # ] - # }, - # { - # "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", - # "enabled": false, - # "mtu": 600, - # "name": "GigabitEthernet0/2" - # } - # ], - # "match_key": "name", - # "name": "interfaces" - # }, - # { - # "data": [ - # { - # "name": "GigabitEthernet0/0" - # }, - # { - # "mode": "access", - # "name": "GigabitEthernet0/1", - # "trunk": { - # "allowed_vlans": [ - # "11", - # "12", - # "59", - # "67", - # "75", - # "77", - # "81", - # "100", - # "400-408", - # "411-413", - # "415", - # "418", - # "982", - # "986", - # "988", - # "993" - # ] - # } - # }, - # { - # "mode": "trunk", - # "name": "GigabitEthernet0/2", - # "trunk": { - # "allowed_vlans": [ - # "11", - # "12", - # "59", - # "67", - # "75", - # "77", - # "81", - # "100", - # "400-408", - # "411-413", - # "415", - # "418", - # "982", - # "986", - # "988", - # "993" - # ], - # "encapsulation": "dot1q" - # } - # } - # ], - # "match_key": "name", - # "name": "l2_interfaces" - # }, - # { - # "data": [ - # { - # "inft_name": "GigabitEthernet0/0", - # "ipv4": [ - # { - # "address": "192.168.0.2/24" - # } - # ] - # }, - # { - # "inft_name": "GigabitEthernet0/1" - # }, - # { - # "inft_name": "GigabitEthernet0/2" - # }, - # { - # "inft_name": "Loopback888" - # }, - # { - # "inft_name": "Loopback999" - # } - # ], - # "match_key": "name", - # "name": "l3_interfaces" - # } - # ] - # }, - # "changed": false - # } - # Read vars_file 'facts.yml' - - # TASK [Combine all the facts based on match_keys] - # fatal: [localhost]: FAILED! => { - # "msg": "Error when using plugin 'consolidate': 'fail_missing_match_key' reported Missing match - # key 'name' in data source 2 in list entry 0, Missing match key 'name' in data - # source 2 in list entry 1, Missing match key 'name' in data source 2 in list - # entry 2, Missing match key 'name' in data source 2 in list entry 3, Missing - # match key 'name' in data source 2 in list entry 4" - # } - - # Failing on duplicate values in facts - # ------------------------------------ - - # facts.yaml - # interfaces: - # - name: GigabitEthernet0/0 - # enabled: true - # duplex: auto - # speed: auto - # note: - # - Connected green wire - # - name: GigabitEthernet0/1 - # description: Configured by Ansible - Interface 1 - # mtu: 1500 - # speed: auto - # duplex: auto - # enabled: true - # note: - # - Connected blue wire - # - Configured by Paul - # vifs: - # - vlan_id: 100 - # description: Eth1 - VIF 100 - # mtu: 400 - # enabled: true - # comment: Needs reconfiguration - # - vlan_id: 101 - # description: Eth1 - VIF 101 - # enabled: true - # - name: GigabitEthernet0/2 - # description: Configured by Ansible - Interface 2 (ADMIN DOWN) - # mtu: 600 - # enabled: false - # l2_interfaces: - # - name: GigabitEthernet0/0 - # - name: GigabitEthernet0/0 - # - mode: access - # name: GigabitEthernet0/1 - # trunk: - # allowed_vlans: - # - "11" - # - "12" - # - "59" - # - "67" - # - "75" - # - "77" - # - "81" - # - "100" - # - 400-408 - # - 411-413 - # - "415" - # - "418" - # - "982" - # - "986" - # - "988" - # - "993" - # - mode: trunk - # name: GigabitEthernet0/2 - # trunk: - # allowed_vlans: - # - "11" - # - "12" - # - "59" - # - "67" - # - "75" - # - "77" - # - "81" - # - "100" - # - 400-408 - # - 411-413 - # - "415" - # - "418" - # - "982" - # - "986" - # - "988" - # - "993" - # encapsulation: dot1q - # l3_interfaces: - # - ipv4: - # - address: 192.168.0.2/24 - # name: GigabitEthernet0/0 - # - name: GigabitEthernet0/1 - # - name: GigabitEthernet0/2 - # - name: Loopback888 - # - name: Loopback999 - - # Playbook - - name: Build the facts collection - set_fact: - data_sources: - - data: '{{ interfaces }}' - match_key: name - name: interfaces - - data: '{{ l2_interfaces }}' - match_key: name - name: l2_interfaces - - data: '{{ l3_interfaces }}' - match_key: name - name: l3_interfaces - - name: Combine all the facts based on match_keys - set_fact: - combined: '{{ data_sources|ansible.utils.consolidate(fail_duplicate=True) }}' - - # Output - # ok: [localhost] => { - # "ansible_facts": { - # "data_sources": [ - # { - # "data": [ - # { - # "duplex": "auto", - # "enabled": true, - # "name": "GigabitEthernet0/0", - # "note": [ - # "Connected green wire" - # ], - # "speed": "auto" - # }, - # { - # "description": "Configured by Ansible - Interface 1", - # "duplex": "auto", - # "enabled": true, - # "mtu": 1500, - # "name": "GigabitEthernet0/1", - # "note": [ - # "Connected blue wire", - # "Configured by Paul" - # ], - # "speed": "auto", - # "vifs": [ - # { - # "comment": "Needs reconfiguration", - # "description": "Eth1 - VIF 100", - # "enabled": true, - # "mtu": 400, - # "vlan_id": 100 - # }, - # { - # "description": "Eth1 - VIF 101", - # "enabled": true, - # "vlan_id": 101 - # } - # ] - # }, - # { - # "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", - # "enabled": false, - # "mtu": 600, - # "name": "GigabitEthernet0/2" - # } - # ], - # "match_key": "name", - # "name": "interfaces" - # }, - # { - # "data": [ - # { - # "name": "GigabitEthernet0/0" - # }, - # { - # "name": "GigabitEthernet0/0" - # }, - # { - # "mode": "access", - # "name": "GigabitEthernet0/1", - # "trunk": { - # "allowed_vlans": [ - # "11", - # "12", - # "59", - # "67", - # "75", - # "77", - # "81", - # "100", - # "400-408", - # "411-413", - # "415", - # "418", - # "982", - # "986", - # "988", - # "993" - # ] - # } - # }, - # { - # "mode": "trunk", - # "name": "GigabitEthernet0/2", - # "trunk": { - # "allowed_vlans": [ - # "11", - # "12", - # "59", - # "67", - # "75", - # "77", - # "81", - # "100", - # "400-408", - # "411-413", - # "415", - # "418", - # "982", - # "986", - # "988", - # "993" - # ], - # "encapsulation": "dot1q" - # } - # } - # ], - # "match_key": "name", - # "name": "l2_interfaces" - # }, - # { - # "data": [ - # { - # "ipv4": [ - # { - # "address": "192.168.0.2/24" - # } - # ], - # "name": "GigabitEthernet0/0" - # }, - # { - # "name": "GigabitEthernet0/1" - # }, - # { - # "name": "GigabitEthernet0/2" - # }, - # { - # "name": "Loopback888" - # }, - # { - # "name": "Loopback999" - # } - # ], - # "match_key": "name", - # "name": "l3_interfaces" - # } - # ] - # }, - # "changed": false - # } - # Read vars_file 'facts.yml' - - # TASK [Combine all the facts based on match_keys] - # fatal: [localhost]: FAILED! => { - # "msg": "Error when using plugin 'consolidate': 'fail_duplicate' reported Duplicate values in data source 1" - # } - - - - -Status ------- - - -Authors -~~~~~~~ - -- Sagar Paul (@KB-perByte) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.fact_diff_filter.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.fact_diff_filter.rst deleted file mode 100644 index 2241c4fe..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.fact_diff_filter.rst +++ /dev/null @@ -1,328 +0,0 @@ -.. _ansible.utils.fact_diff_filter: - - -*********************** -ansible.utils.fact_diff -*********************** - -**Find the difference between currently set facts** - - -Version added: 2.12.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- Compare two facts or variables and get a diff. - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- after - -
- raw - / required -
-
- - -
The second fact to be used in the comparison.
-
-
- before - -
- raw - / required -
-
- - -
The first fact to be used in the comparison.
-
-
- common - -
- boolean -
-
-
    Choices: -
  • no ←
  • -
  • yes
  • -
-
- -
Show all common lines.
-
-
- plugin - -
- dictionary -
-
- Default:
{}
-
- -
Configure and specify the diff plugin to use
-
-
- name - -
- string -
-
- Default:
"ansible.utils.native"
-
- -
The diff plugin to use, in fully qualified collection name format.
-
-
- vars - -
- dictionary -
-
- Default:
{}
-
- -
Parameters passed to the diff plugin.
-
-
- skip_lines - -
- list - / elements=string -
-
- - -
Skip lines matching these regular expressions.
-
Matches will be removed prior to the diff.
-
If the provided before and after are a string, they will be split.
-
Each entry in each list will be cast to a string for the comparison
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - - name: Set fact - ansible.builtin.set_fact: - before: - a: - b: - c: - d: - - 0 - - 1 - after: - a: - b: - c: - d: - - 2 - - 3 - - - name: Show the difference in json format - ansible.builtin.set_fact: - result: "{{before | ansible.utils.fact_diff(after)}}" - - # TASK [Show the difference in json format] ********************************************************************************************** - # ok: [localhost] => { - # "ansible_facts": { - # "result": [ - # "--- before", - # "+++ after", - # "@@ -3,8 +3,8 @@", - # " "b": {", - # " "c": {", - # " "d": [", - # "- 0,", - # "- 1", - # "+ 2,", - # "+ 3", - # " ]", - # " }", - # " }", - # "" - # ] - # }, - # "changed": false - # } - - - name: Set fact - ansible.builtin.set_fact: - before: "{{ before|ansible.utils.to_paths }}" - after: "{{ after|ansible.utils.to_paths }}" - - - name: Show the difference in path format - ansible.builtin.set_fact: - result: "{{before | ansible.utils.fact_diff(after)}}" - - # TASK [Show the difference in path format] ********************************************************************************************** - # ok: [localhost] => { - # "ansible_facts": { - # "result": [ - # "--- before", - # "+++ after", - # "@@ -1,4 +1,4 @@", - # " {", - # "- "a.b.c.d[0]": 0,", - # "- "a.b.c.d[1]": 1", - # "+ "a.b.c.d[0]": 2,", - # "+ "a.b.c.d[1]": 3", - # " }", - # "" - # ] - # }, - # "changed": false - # } - - - name: Set fact - ansible.builtin.set_fact: - before: "{{ before|to_nice_yaml }}" - after: "{{ after|to_nice_yaml }}" - - - name: Show the difference in yaml format - ansible.builtin.set_fact: - result: "{{before | ansible.utils.fact_diff(after)}}" - - # TASK [Show the difference in yaml format] ********************************************************************************************** - # ok: [localhost] => { - # "ansible_facts": { - # "result": [ - # "--- before", - # "+++ after", - # "@@ -1,2 +1,2 @@", - # "-a.b.c.d[0]: 0", - # "-a.b.c.d[1]: 1", - # "+a.b.c.d[0]: 2", - # "+a.b.c.d[1]: 3", - # "" - # ] - # }, - # "changed": false - # } - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this filter: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- result - -
- list -
-
-
Returns diff between before and after facts.
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Ashwini Mhatre ((@amhatre)) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.fact_diff_module.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.fact_diff_module.rst deleted file mode 100644 index 6f0c8ae5..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.fact_diff_module.rst +++ /dev/null @@ -1,337 +0,0 @@ -.. _ansible.utils.fact_diff_module: - - -*********************** -ansible.utils.fact_diff -*********************** - -**Find the difference between currently set facts** - - -Version added: 1.0.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- Compare two facts or variables and get a diff. - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsComments
-
- after - -
- raw - / required -
-
- -
The second fact to be used in the comparison.
-
-
- before - -
- raw - / required -
-
- -
The first fact to be used in the comparison.
-
-
- plugin - -
- dictionary -
-
- Default:
{}
-
-
Configure and specify the diff plugin to use
-
-
- name - -
- string -
-
- Default:
"ansible.utils.native"
-
-
The diff plugin to use, in fully qualified collection name format.
-
-
- vars - -
- dictionary -
-
- Default:
{}
-
-
Parameters passed to the diff plugin.
-
-
- skip_lines - -
- list - / elements=string -
-
- -
Skip lines matching these regular expressions.
-
Matches will be removed prior to the diff.
-
If the provided before and after are a string, they will be split.
-
Each entry in each list will be cast to a string for the comparison
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - - ansible.builtin.set_fact: - before: - a: - b: - c: - d: - - 0 - - 1 - after: - a: - b: - c: - d: - - 2 - - 3 - - - name: Show the difference in json format - ansible.utils.fact_diff: - before: "{{ before }}" - after: "{{ after }}" - - # TASK [ansible.utils.fact_diff] ************************************** - # --- before - # +++ after - # @@ -3,8 +3,8 @@ - # "b": { - # "c": { - # "d": [ - # - 0, - # - 1 - # + 2, - # + 3 - # ] - # } - # } - # - # changed: [localhost] - - - name: Show the difference in path format - ansible.utils.fact_diff: - before: "{{ before | ansible.utils.to_paths }}" - after: "{{ after | ansible.utils.to_paths }}" - - # TASK [ansible.utils.fact_diff] ************************************** - # --- before - # +++ after - # @@ -1,4 +1,4 @@ - # { - # - "a.b.c.d[0]": 0, - # - "a.b.c.d[1]": 1 - # + "a.b.c.d[0]": 2, - # + "a.b.c.d[1]": 3 - # } - # - # changed: [localhost] - - - name: Show the difference in yaml format - ansible.utils.fact_diff: - before: "{{ before | to_nice_yaml }}" - after: "{{ after | to_nice_yaml }}" - - # TASK [ansible.utils.fact_diff] ************************************** - # --- before - # +++ after - # @@ -2,5 +2,5 @@ - # b: - # c: - # d: - # - - 0 - # - - 1 - # + - 2 - # + - 3 - - # changed: [localhost] - - - #### Show the difference between complex object using restconf - # ansible_connection: ansible.netcommon.httpapi - # ansible_httpapi_use_ssl: True - # ansible_httpapi_validate_certs: False - # ansible_network_os: ansible.netcommon.restconf - - - name: Get the current interface config prior to changes - ansible.netcommon.restconf_get: - content: config - path: /data/Cisco-NX-OS-device:System/intf-items/phys-items - register: pre - - - name: Update the description of eth1/100 - ansible.utils.update_fact: - updates: - - path: "pre['response']['phys-items']['PhysIf-list'][{{ index }}]['descr']" - value: "Configured by ansible {{ 100 | random }}" - vars: - index: "{{ pre['response']['phys-items']['PhysIf-list'] | ansible.utils.index_of('eq', 'eth1/100', 'id') }}" - register: updated - - - name: Apply the configuration - ansible.netcommon.restconf_config: - path: 'data/Cisco-NX-OS-device:System/intf-items/' - content: "{{ updated.pre.response}}" - method: patch - - - name: Get the current interface config after changes - ansible.netcommon.restconf_get: - content: config - path: /data/Cisco-NX-OS-device:System/intf-items/phys-items - register: post - - - name: Show the difference - ansible.utils.fact_diff: - before: "{{ pre.response | ansible.utils.to_paths }}" - after: "{{ post.response | ansible.utils.to_paths }}" - - # TASK [ansible.utils.fact_diff] ********************************************* - # --- before - # +++ after - # @@ -3604,7 +3604,7 @@ - # "phys-items['PhysIf-list'][37].bw": "0", - # "phys-items['PhysIf-list'][37].controllerId": "", - # "phys-items['PhysIf-list'][37].delay": "1", - # - "phys-items['PhysIf-list'][37].descr": "Configured by ansible 95", - # + "phys-items['PhysIf-list'][37].descr": "Configured by ansible 20", - # "phys-items['PhysIf-list'][37].dot1qEtherType": "0x8100", - # "phys-items['PhysIf-list'][37].duplex": "auto", - # "phys-items['PhysIf-list'][37].id": "eth1/100", - - # changed: [nxos101] - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this module: - -.. raw:: html - - - - - - - - - - - - - - - - - -
KeyReturnedDescription
-
- diff_lines - -
- list - / elements=string -
-
always -
The diff_text split into lines.
-
-
-
- diff_text - -
- string -
-
always -
The diff in text format.
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Bradley Thornton (@cidrblock) diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.from_xml_filter.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.from_xml_filter.rst deleted file mode 100644 index e489700f..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.from_xml_filter.rst +++ /dev/null @@ -1,166 +0,0 @@ -.. _ansible.utils.from_xml_filter: - - -********************** -ansible.utils.from_xml -********************** - -**Convert given XML string to native python dictionary.** - - -Version added: 2.0.2 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This plugin converts the XML string to a native python dictionary. -- Using the parameters below- ``data|ansible.utils.from_xml`` - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- data - -
- string - / required -
-
- - -
The input XML string.
-
This option represents the XML value that is passed to the filter plugin in pipe format.
-
For example config_data|ansible.utils.from_xml, in this case config_data represents this option.
-
-
- engine - -
- string -
-
- Default:
"xmltodict"
-
- -
Conversion library to use within the filter plugin.
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - #### Simple examples with out any engine. plugin will use default value as xmltodict - - - - name: convert given XML to native python dictionary - ansible.builtin.set_fact: - data: ' ' - - debug: - msg: '{{ data|ansible.utils.from_xml }}' - - # TASK###### - # TASK [convert given XML to native python dictionary] ***************************************************************************************************** - # task path: /Users/amhatre/ansible-collections/playbooks/test_utils.yaml:5 - # ok: [localhost] => { - # "ansible_facts": { - # "data": " " - # }, - # "changed": false - # } - # - # TASK [debug] ************************************************************************************************************************* - # task path: /Users/amhatre/ansible-collections/playbooks/test_utils.yaml:13 - # Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils - # ok: [localhost] => { - # "msg": { - # "netconf-state": { - # "@xmlns": "urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring", - # "schemas": { - # "schema": null - # } - # } - # } - # } - - #### example2 with engine=xmltodict - - - name: convert given XML to native python dictionary - ansible.builtin.set_fact: - data: ' ' - - debug: - msg: '{{ data|ansible.utils.from_xml(''xmltodict'') }}' - - # TASK###### - # TASK [convert given XML to native python dictionary] ***************************************************************************************************** - # task path: /Users/amhatre/ansible-collections/playbooks/test_utils.yaml:5 - # ok: [localhost] => { - # "ansible_facts": { - # "data": " " - # }, - # "changed": false - # } - # - # TASK [debug] ************************************************************************************************************************* - # task path: /Users/amhatre/ansible-collections/playbooks/test_utils.yaml:13 - # Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils - # ok: [localhost] => { - # "msg": { - # "netconf-state": { - # "@xmlns": "urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring", - # "schemas": { - # "schema": null - # } - # } - # } - # } - - - - -Status ------- - - -Authors -~~~~~~~ - -- Ashwini Mhatre (@amhatre) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.get_path_filter.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.get_path_filter.rst deleted file mode 100644 index ab746c31..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.get_path_filter.rst +++ /dev/null @@ -1,226 +0,0 @@ -.. _ansible.utils.get_path_filter: - - -********************** -ansible.utils.get_path -********************** - -**Retrieve the value in a variable using a path** - - -Version added: 1.0.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- Use a *path* to retrieve a nested value from a *var*. -- **get_path** is also available as a **lookup plugin** for convenience. -- Using the parameters below- ``var|ansible.utils.get_path(path, wantlist``) - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- path - -
- string - / required -
-
- - -
The path in the var to retrieve the value of.
-
The path needs to be a valid jinja path.
-
-
- var - -
- raw - / required -
-
- - -
The variable from which the value should be extracted.
-
This option represents the value that is passed to the filter plugin in pipe format.
-
For example config_data|ansible.utils.get_path(), in this case config_data represents this option.
-
-
- wantlist - -
- boolean -
-
-
    Choices: -
  • no
  • -
  • yes
  • -
-
- -
If set to True, the return value will always be a list.
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - - ansible.builtin.set_fact: - a: - b: - c: - d: - - 0 - - 1 - e: - - true - - false - - - name: Retrieve a value deep inside a using a path - ansible.builtin.set_fact: - value: "{{ a|ansible.utils.get_path(path) }}" - vars: - path: b.c.d[0] - - # TASK [Retrieve a value deep inside a using a path] ****************** - # ok: [localhost] => changed=false - # ansible_facts: - # value: '0' - - - #### Working with hostvars - - - name: Retrieve a value deep inside all of the host's vars - ansible.builtin.set_fact: - value: "{{ look_in|ansible.utils.get_path(look_for) }}" - vars: - look_in: "{{ hostvars[inventory_hostname] }}" - look_for: a.b.c.d[0] - - # TASK [Retrieve a value deep inside all of the host's vars] ******** - # ok: [nxos101] => changed=false - # ansible_facts: - # as_filter: '0' - # as_lookup: '0' - - - #### Used alongside ansible.utils.to_paths - - - name: Get the paths for the object - ansible.builtin.set_fact: - paths: "{{ a|ansible.utils.to_paths(prepend='a') }}" - - - name: Retrieve the value of each path from vars - ansible.builtin.debug: - msg: "The value of path {{ path }} in vars is {{ value }}" - loop: "{{ paths.keys()|list }}" - loop_control: - label: "{{ item }}" - vars: - path: "{{ item }}" - value: "{{ vars|ansible.utils.get_path(item) }}" - - # TASK [Get the paths for the object] ******************************* - # ok: [nxos101] => changed=false - # ansible_facts: - # paths: - # a.b.c.d[0]: 0 - # a.b.c.d[1]: 1 - # a.b.c.e[0]: True - # a.b.c.e[1]: False - - # TASK [Retrieve the value of each path from vars] ****************** - # ok: [nxos101] => (item=a.b.c.d[0]) => - # msg: The value of path a.b.c.d[0] in vars is 0 - # ok: [nxos101] => (item=a.b.c.d[1]) => - # msg: The value of path a.b.c.d[1] in vars is 1 - # ok: [nxos101] => (item=a.b.c.e[0]) => - # msg: The value of path a.b.c.e[0] in vars is True - # ok: [nxos101] => (item=a.b.c.e[1]) => - # msg: The value of path a.b.c.e[1] in vars is False - - - #### Working with complex structures and transforming results - - - name: Retrieve the current interface config - cisco.nxos.nxos_interfaces: - state: gathered - register: interfaces - - - name: Get the description of several interfaces - ansible.builtin.debug: - msg: "{{ rekeyed|ansible.utils.get_path(item) }}" - vars: - rekeyed: - by_name: "{{ interfaces.gathered|ansible.builtin.rekey_on_member('name') }}" - loop: - - by_name['Ethernet1/1'].description - - by_name['Ethernet1/2'].description|upper - - by_name['Ethernet1/3'].description|default('') - - - # TASK [Get the description of several interfaces] ****************** - # ok: [nxos101] => (item=by_name['Ethernet1/1'].description) => changed=false - # msg: Configured by ansible - # ok: [nxos101] => (item=by_name['Ethernet1/2'].description|upper) => changed=false - # msg: CONFIGURED BY ANSIBLE - # ok: [nxos101] => (item=by_name['Ethernet1/3'].description|default('')) => changed=false - # msg: '' - - - - -Status ------- - - -Authors -~~~~~~~ - -- Bradley Thornton (@cidrblock) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.get_path_lookup.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.get_path_lookup.rst deleted file mode 100644 index 5bf26039..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.get_path_lookup.rst +++ /dev/null @@ -1,257 +0,0 @@ -.. _ansible.utils.get_path_lookup: - - -********************** -ansible.utils.get_path -********************** - -**Retrieve the value in a variable using a path** - - -Version added: 1.0.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- Use a *path* to retrieve a nested value from a *var* -- **get_path** is also available as a **filter plugin** for convenience -- Using the parameters below- ``lookup('ansible.utils.get_path', var, path, wantlist``) - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- path - -
- string - / required -
-
- - -
The path in the var to retrieve the value of.
-
The path needs to a be a valid jinja path.
-
-
- var - -
- raw - / required -
-
- - -
The variable from which the value should be extracted.
-
-
- wantlist - -
- boolean -
-
-
    Choices: -
  • no
  • -
  • yes
  • -
-
- -
If set to True, the return value will always be a list.
-
This can also be accomplished using query or q instead of lookup.
- -
-
- - - - -Examples --------- - -.. code-block:: yaml - - - ansible.builtin.set_fact: - a: - b: - c: - d: - - 0 - - 1 - e: - - true - - false - - - name: Retrieve a value deep inside a using a path - ansible.builtin.set_fact: - value: "{{ lookup('ansible.utils.get_path', a, path) }}" - vars: - path: b.c.d[0] - - # TASK [Retrieve a value deep inside a using a path] ****************** - # ok: [localhost] => changed=false - # ansible_facts: - # value: '0' - - - #### Working with hostvars - - - name: Retrieve a value deep inside all of the host's vars - ansible.builtin.set_fact: - value: "{{ lookup('ansible.utils.get_path', look_in, look_for) }}" - vars: - look_in: "{{ hostvars[inventory_hostname] }}" - look_for: a.b.c.d[0] - - # TASK [Retrieve a value deep inside all of the host's vars] ******** - # ok: [nxos101] => changed=false - # ansible_facts: - # as_filter: '0' - # as_lookup: '0' - - - #### Used alongside ansible.utils.to_paths - - - name: Get the paths for the object - ansible.builtin.set_fact: - paths: "{{ lookup('ansible.utils.to_paths', a, prepend='a') }}" - - - name: Retrieve the value of each path from vars - ansible.builtin.debug: - msg: "The value of path {{ path }} in vars is {{ value }}" - loop: "{{ paths.keys()|list }}" - loop_control: - label: "{{ item }}" - vars: - path: "{{ item }}" - value: "{{ lookup('ansible.utils.get_path', hostvars[inventory_hostname], item) }}" - - # TASK [Get the paths for the object] ******************************* - # ok: [nxos101] => changed=false - # ansible_facts: - # paths: - # a.b.c.d[0]: 0 - # a.b.c.d[1]: 1 - # a.b.c.e[0]: True - # a.b.c.e[1]: False - - # TASK [Retrieve the value of each path from vars] ****************** - # ok: [nxos101] => (item=a.b.c.d[0]) => - # msg: The value of path a.b.c.d[0] in vars is 0 - # ok: [nxos101] => (item=a.b.c.d[1]) => - # msg: The value of path a.b.c.d[1] in vars is 1 - # ok: [nxos101] => (item=a.b.c.e[0]) => - # msg: The value of path a.b.c.e[0] in vars is True - # ok: [nxos101] => (item=a.b.c.e[1]) => - # msg: The value of path a.b.c.e[1] in vars is False - - - #### Working with complex structures and transforming results - - - name: Retrieve the current interface config - cisco.nxos.nxos_interfaces: - state: gathered - register: interfaces - - - name: Get the description of several interfaces - ansible.builtin.debug: - msg: "{{ lookup('ansible.utils.get_path', rekeyed, item) }}" - vars: - rekeyed: - by_name: "{{ interfaces.gathered|ansible.builtin.rekey_on_member('name') }}" - loop: - - by_name['Ethernet1/1'].description - - by_name['Ethernet1/2'].description|upper - - by_name['Ethernet1/3'].description|default('') - - - # TASK [Get the description of several interfaces] ****************** - # ok: [nxos101] => (item=by_name['Ethernet1/1'].description) => changed=false - # msg: Configured by ansible - # ok: [nxos101] => (item=by_name['Ethernet1/2'].description|upper) => changed=false - # msg: CONFIGURED BY ANSIBLE - # ok: [nxos101] => (item=by_name['Ethernet1/3'].description|default('')) => changed=false - # msg: '' - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this lookup: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- _raw - -
- - -
-
-
One or more zero-based indices of the matching list items.
-
See wantlist if a list is always required.
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Bradley Thornton (@cidrblock) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.hwaddr_filter.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.hwaddr_filter.rst deleted file mode 100644 index d1fb4c02..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.hwaddr_filter.rst +++ /dev/null @@ -1,166 +0,0 @@ -.. _ansible.utils.hwaddr_filter: - - -******************** -ansible.utils.hwaddr -******************** - -**HWaddr / MAC address filters** - - -Version added: 2.5.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This filter check if string is a HW/MAC address and filter it -- You can use the hwaddr() filter to check if a given string is a MAC address or convert it between various formats. - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- alias - -
- string -
-
- Default:
"hwaddr"
-
- -
alias
-
-
- query - -
- string -
-
- Default:
""
-
- -
query string. Example. cisco,linux,unix etc
-
-
- value - -
- string - / required -
-
- - -
HW/MAC address.
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - #### examples - - name: Check if given string is a MAC address - debug: - msg: "{{ '1a:2b:3c:4d:5e:6f' | ansible.utils.hwaddr }}" - - - name: Convert HW address to Cisco format - debug: - msg: "{{ '1a:2b:3c:4d:5e:6f' | ansible.utils.hwaddr('cisco') }}" - - # TASK [Check if given string is a MAC address] *************************************************************** - # ok: [localhost] => { - # "msg": "1a:2b:3c:4d:5e:6f" - # } - # - # TASK [Convert HW address to Cisco format] ****************************************************************** - # ok: [localhost] => { - # "msg": "1a2b.3c4d.5e6f" - # } - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this filter: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- string -
-
-
mac/Hw address
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Ashwini Mhatre (@amhatre) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.in_any_network_test.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.in_any_network_test.rst deleted file mode 100644 index ba5f51e3..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.in_any_network_test.rst +++ /dev/null @@ -1,170 +0,0 @@ -.. _ansible.utils.in_any_network_test: - - -**************************** -ansible.utils.in_any_network -**************************** - -**Test if an IP or network falls in any network** - - -Version added: 2.2.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This plugin checks if the provided IP or network address belongs to the provided list network addresses - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- ip - -
- string - / required -
-
- - -
A string that represents an IP address of a host or network
-
For example: 10.1.1.1
-
-
- networks - -
- list - / required -
-
- - -
A list of string and each string represents a network address in CIDR form
-
For example: ['10.0.0.0/8', '192.168.1.0/24']
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - #### Simple examples - - - name: Set network list - ansible.builtin.set_fact: - networks: - - "10.0.0.0/8" - - "192.168.1.0/24" - - - name: Check if 10.1.1.1 is in the provided network list - ansible.builtin.set_fact: - data: "{{ '10.1.1.1' is ansible.utils.in_any_network networks }}" - - # TASK [Check if 10.1.1.1 is in the provided network list] ************************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Set network list - ansible.builtin.set_fact: - networks: - - "10.0.0.0/8" - - "192.168.1.0/24" - - "172.16.0.0/16" - - - name: Check if 8.8.8.8 is not in the provided network list - ansible.builtin.set_fact: - data: "{{ '8.8.8.8' is not ansible.utils.in_any_network networks }}" - - # TASK [Check if 8.8.8.8 is not in the provided network list] ************************ - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this test: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- - -
-
-
If jinja test satisfies plugin expression true
-
If jinja test does not satisfy plugin expression false
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Priyam Sahoo (@priyamsahoo) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.in_network_test.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.in_network_test.rst deleted file mode 100644 index db19b30b..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.in_network_test.rst +++ /dev/null @@ -1,183 +0,0 @@ -.. _ansible.utils.in_network_test: - - -************************ -ansible.utils.in_network -************************ - -**Test if IP address falls in the network** - - -Version added: 2.2.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This plugin checks if the provided IP address belongs to the provided network - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- ip - -
- string - / required -
-
- - -
A string that represents an IP address
-
For example: 10.1.1.1
-
-
- network - -
- string - / required -
-
- - -
A string that represents the network address in CIDR form
-
For example: 10.0.0.0/8
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - #### Simple examples - - - name: Check if 10.1.1.1 is in 10.0.0.0/8 - ansible.builtin.set_fact: - data: "{{ '10.1.1.1' is ansible.utils.in_network '10.0.0.0/8' }}" - - # TASK [Check if 10.1.1.1 is in 10.0.0.0/8] *********************************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Check if 10.1.1.1 is not in 192.168.1.0/24 - ansible.builtin.set_fact: - data: "{{ '10.1.1.1' is not ansible.utils.in_network '192.168.1.0/24' }}" - - # TASK [Check if 10.1.1.1 is not in 192.168.1.0/24] **************************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Check if 2001:db8:a::123 is in 2001:db8:a::/64 - ansible.builtin.set_fact: - data: "{{ '2001:db8:a::123' is ansible.utils.in_network '2001:db8:a::/64' }}" - - # TASK [Check if 2001:db8:a::123 is in 2001:db8:a::/64] **************************** - # task path: /home/prsahoo/playbooks/collections/localhost_test/utils_in_network.yml:16 - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Check if 2001:db8:a::123 is not in 10.0.0.0/8 - ansible.builtin.set_fact: - data: "{{ '2001:db8:a::123' is not ansible.utils.in_network '10.0.0.0/8' }}" - - # TASK [Check if 2001:db8:a::123 is not in 10.0.0.0/8] ********************************* - # task path: /home/prsahoo/playbooks/collections/localhost_test/utils_in_network.yml:20 - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this test: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- - -
-
-
If jinja test satisfies plugin expression true
-
If jinja test does not satisfy plugin expression false
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Priyam Sahoo (@priyamsahoo) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.in_one_network_test.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.in_one_network_test.rst deleted file mode 100644 index 1a1e8022..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.in_one_network_test.rst +++ /dev/null @@ -1,168 +0,0 @@ -.. _ansible.utils.in_one_network_test: - - -**************************** -ansible.utils.in_one_network -**************************** - -**Test if IP address belongs in any one of the networks in the list** - - -Version added: 2.2.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This plugin checks if the provided IP address belongs to the provided list network addresses - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- ip - -
- string - / required -
-
- - -
A string that represents an IP address
-
For example: 10.1.1.1
-
-
- networks - -
- list - / required -
-
- - -
A list of string and each string represents a network address in CIDR form
-
For example: ['10.0.0.0/8', '192.168.1.0/24']
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - #### Simple examples - - - name: Set network list - ansible.builtin.set_fact: - networks: - - "10.0.0.0/8" - - "192.168.1.0/24" - - - name: Check if 10.1.1.1 is in the provided network list - ansible.builtin.set_fact: - data: "{{ '10.1.1.1' is ansible.utils.in_one_network networks }}" - - # TASK [Check if 10.1.1.1 is in the provided network list] ********************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - - - name: Set network list - ansible.builtin.set_fact: - networks: - - "10.0.0.0/8" - - "10.1.1.0/24" - - - name: Check if 10.1.1.1 is not in the provided network list - ansible.builtin.set_fact: - data: "{{ '10.1.1.1' is not ansible.utils.in_one_network networks }}" - - # TASK [Check if 10.1.1.1 is in not the provided network list] ************************ - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this test: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- - -
-
-
If jinja test satisfies plugin expression true
-
If jinja test does not satisfy plugin expression false
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Priyam Sahoo (@priyamsahoo) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.index_of_filter.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.index_of_filter.rst deleted file mode 100644 index f216550c..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.index_of_filter.rst +++ /dev/null @@ -1,419 +0,0 @@ -.. _ansible.utils.index_of_filter: - - -********************** -ansible.utils.index_of -********************** - -**Find the indices of items in a list matching some criteria** - - -Version added: 1.0.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This plugin returns the indices of items matching some criteria in a list. -- When working with a list of dictionaries, the key to evaluate can be specified. -- **index_of** is also available as a **lookup plugin** for convenience. -- Using the parameters below- ``data|ansible.utils.index_of(test, value, key, fail_on_missing, wantlist``) - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- data - -
- list - / required -
-
- - -
A list of items to enumerate and test against.
-
This option represents the value that is passed to the filter plugin in pipe format.
-
For example config_data|ansible.utils.index_of('x'), in this case config_data represents this option.
-
-
- fail_on_missing - -
- boolean -
-
-
    Choices: -
  • no
  • -
  • yes
  • -
-
- -
When provided a list of dictionaries, fail if the key is missing from one or more of the dictionaries.
-
-
- key - -
- string -
-
- - -
When the data provided is a list of dictionaries, run the test against this dictionary key.
-
When using a key, the data must only contain dictionaries.
-
See fail_on_missing below to determine the behavior when the key is missing from a dictionary in the data.
-
-
- test - -
- string - / required -
-
- - -
The name of the test to run against the list, a valid jinja2 test or ansible test plugin.
- - -
-
- value - -
- raw -
-
- - -
The value used to test each list item against.
-
Not required for simple tests (eg: true, false, even, odd)
-
May be a string, boolean, number, regular expression dict and so on, depending on the test used
-
-
- wantlist - -
- boolean -
-
-
    Choices: -
  • no
  • -
  • yes
  • -
-
- -
When only a single entry in the data is matched, the index of that entry is returned as an integer.
-
If set to True, the return value will always be a list, even if only a single entry is matched.
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - #### Simple examples - - - name: Define a list - ansible.builtin.set_fact: - data: - - 1 - - 2 - - 3 - - - name: Find the index of 2 - ansible.builtin.set_fact: - indices: "{{ data|ansible.utils.index_of('eq', 2) }}" - - # TASK [Find the index of 2] ************************************************* - # ok: [nxos101] => changed=false - # ansible_facts: - # indices: '1' - - - - name: Find the index of 2, ensure list is returned - ansible.builtin.set_fact: - indices: "{{ data|ansible.utils.index_of('eq', 2, wantlist=True) }}" - - # TASK [Find the index of 2, ensure list is returned] ************************ - # ok: [nxos101] => changed=false - # ansible_facts: - # indices: - # - 1 - - - - name: Find the index of 3 using the long format - ansible.builtin.set_fact: - indices: "{{ data|ansible.utils.index_of(test='eq', value=value, wantlist=True) }}" - vars: - value: 3 - - # TASK [Find the index of 3 using the long format] *************************** - # ok: [nxos101] => changed=false - # ansible_facts: - # indices: - # - 2 - - - - name: Find numbers greater than 1, using loop - debug: - msg: "{{ data[item] }} is {{ test }} than {{ value }}" - loop: "{{ data|ansible.utils.index_of(test, value) }}" - vars: - test: '>' - value: 1 - - # TASK [Find numbers great than 1, using loop] ******************************* - # ok: [sw01] => (item=1) => - # msg: 2 is > than 1 - # ok: [sw01] => (item=2) => - # msg: 3 is > than 1 - - - #### Working with lists of dictionaries - - - name: Define a list with hostname and type - ansible.builtin.set_fact: - data: - - name: sw01.example.lan - type: switch - - name: rtr01.example.lan - type: router - - name: fw01.example.corp - type: firewall - - name: fw02.example.corp - type: firewall - - - name: Find the index of all firewalls using the type key - ansible.builtin.set_fact: - firewalls: "{{ data|ansible.utils.index_of('eq', 'firewall', 'type') }}" - - # TASK [Find the index of all firewalls using the type key] ****************** - # ok: [nxos101] => changed=false - # ansible_facts: - # firewalls: - # - 2 - # - 3 - - - name: Find the index of all firewalls, use in a loop - debug: - msg: "The type of {{ device_type }} at index {{ item }} has name {{ data[item].name }}." - loop: "{{ data|ansible.utils.index_of('eq', device_type, 'type') }}" - vars: - device_type: firewall - - # TASK [Find the index of all firewalls, use in a loop, as a filter] ********* - # ok: [nxos101] => (item=2) => - # msg: The type of firewall at index 2 has name fw01.example.corp. - # ok: [nxos101] => (item=3) => - # msg: The type of firewall at index 3 has name fw02.example.corp. - - - name: Find the index of all devices with a .corp name - debug: - msg: "The device named {{ data[item].name }} is a {{ data[item].type }}" - loop: "{{ data|ansible.utils.index_of('regex', expression, 'name') }}" - vars: - expression: '\.corp$' - - # TASK [Find the index of all devices with a .corp name] ********************* - # ok: [nxos101] => (item=2) => - # msg: The device named fw01.example.corp is a firewall - # ok: [nxos101] => (item=3) => - # msg: The device named fw02.example.corp is a firewall - - - #### Working with complex structures from resource modules - - - name: Retrieve the current L3 interface configuration - cisco.nxos.nxos_l3_interfaces: - state: gathered - register: current_l3 - - # TASK [Retrieve the current L3 interface configuration] ********************* - # ok: [sw01] => changed=false - # gathered: - # - name: Ethernet1/1 - # - name: Ethernet1/2 - # <...> - # - name: Ethernet1/128 - # - ipv4: - # - address: 192.168.101.14/24 - # name: mgmt0 - - - name: Find the indices interfaces with a 192.168.101.xx ip address - ansible.builtin.set_fact: - found: "{{ found + entry }}" - with_indexed_items: "{{ current_l3.gathered }}" - vars: - found: [] - ip: '192.168.101.' - address: "{{ item.1.ipv4|d([])|ansible.utils.index_of('search', ip, 'address', wantlist=True) }}" - entry: - - interface_idx: "{{ item.0 }}" - address_idxs: "{{ address }}" - when: address - - # TASK [debug] *************************************************************** - # ok: [sw01] => - # found: - # - address_idxs: - # - 0 - # interface_idx: '128' - - - name: Show all interfaces and their address - debug: - msg: "{{ interface.name }} has ip {{ address }}" - loop: "{{ found|subelements('address_idxs') }}" - vars: - interface: "{{ current_l3.gathered[item.0.interface_idx|int] }}" - address: "{{ interface.ipv4[item.1].address }}" - - # TASK [Show all interfaces and their address] ******************************* - # ok: [nxos101] => (item=[{'interface_idx': '128', 'address_idxs': [0]}, 0]) => - # msg: mgmt0 has ip 192.168.101.14/24 - - - #### Working with deeply nested data - - - name: Define interface configuration facts - ansible.builtin.set_fact: - data: - interfaces: - interface: - - config: - description: configured by Ansible - 1 - enabled: true - loopback-mode: false - mtu: 1024 - name: loopback0000 - type: eth - name: loopback0000 - subinterfaces: - subinterface: - - config: - description: subinterface configured by Ansible - 1 - enabled: true - index: 5 - index: 5 - - config: - description: subinterface configured by Ansible - 2 - enabled: false - index: 2 - index: 2 - - config: - description: configured by Ansible - 2 - enabled: false - loopback-mode: false - mtu: 2048 - name: loopback1111 - type: virt - name: loopback1111 - subinterfaces: - subinterface: - - config: - description: subinterface configured by Ansible - 3 - enabled: true - index: 10 - index: 10 - - config: - description: subinterface configured by Ansible - 4 - enabled: false - index: 3 - index: 3 - - - - name: Find the description of loopback111, subinterface index 10 - debug: - msg: |- - {{ data.interfaces.interface[int_idx|int] - .subinterfaces.subinterface[subint_idx|int] - .config.description }} - vars: - # the values to search for - int_name: loopback1111 - sub_index: 10 - # retrieve the index in each nested list - int_idx: | - {{ data.interfaces.interface| - ansible.utils.index_of('eq', int_name, 'name') }} - subint_idx: | - {{ data.interfaces.interface[int_idx|int] - .subinterfaces.subinterface| - ansible.utils.index_of('eq', sub_index, 'index') }} - - # TASK [Find the description of loopback111, subinterface index 10] ************ - # ok: [sw01] => - # msg: subinterface configured by Ansible - 3 - - - - -Status ------- - - -Authors -~~~~~~~ - -- Bradley Thornton (@cidrblock) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.index_of_lookup.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.index_of_lookup.rst deleted file mode 100644 index e487c0fc..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.index_of_lookup.rst +++ /dev/null @@ -1,462 +0,0 @@ -.. _ansible.utils.index_of_lookup: - - -********************** -ansible.utils.index_of -********************** - -**Find the indices of items in a list matching some criteria** - - -Version added: 1.0.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This plugin returns the indices of items matching some criteria in a list. -- When working with a list of dictionaries, the key to evaluate can be specified. -- **index_of** is also available as a **filter plugin** for convenience. -- Using the parameters below- ``lookup('ansible.utils.index_of', data, test, value, key, fail_on_missing, wantlist``). - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- data - -
- list - / elements=raw - / required -
-
- - -
A list of items to enumerate and test against.
-
-
- fail_on_missing - -
- boolean -
-
-
    Choices: -
  • no
  • -
  • yes
  • -
-
- -
When provided a list of dictionaries, fail if the key is missing from one or more of the dictionaries.
-
-
- key - -
- string -
-
- - -
When the data provided is a list of dictionaries, run the test against this dictionary key.
-
When using a key, the data must only contain dictionaries.
-
See fail_on_missing below to determine the behaviour when the key is missing from a dictionary in the data.
-
-
- test - -
- string - / required -
-
- - -
The name of the test to run against the list, a valid jinja2 test or ansible test plugin.
- - -
-
- value - -
- raw -
-
- - -
The value used to test each list item against.
-
Not required for simple tests (e.g. true, false, even, odd)
-
May be a string, boolean, number, regular expression dict and so on, depending on the test used.
-
-
- wantlist - -
- boolean -
-
-
    Choices: -
  • no
  • -
  • yes
  • -
-
- -
When only a single entry in the data is matched, the index of that entry is returned as an integer.
-
If set to True, the return value will always be a list, even if only a single entry is matched.
-
This can also be accomplished using query or q instead of lookup.
- -
-
- - - - -Examples --------- - -.. code-block:: yaml - - #### Simple examples - - - ansible.builtin.set_fact: - data: - - 1 - - 2 - - 3 - - - name: Find the index of 2 - ansible.builtin.set_fact: - indices: "{{ lookup('ansible.utils.index_of', data, 'eq', 2) }}" - - # TASK [Find the index of 2] ************************************************* - # ok: [nxos101] => changed=false - # ansible_facts: - # indices: '1' - - - name: Find the index of 2, ensure list is returned - ansible.builtin.set_fact: - indices: "{{ lookup('ansible.utils.index_of', data, 'eq', 2, wantlist=True) }}" - - # TASK [Find the index of 2, ensure list is returned] ************************ - # ok: [nxos101] => changed=false - # ansible_facts: - # indices: - # - 1 - - - name: Find the index of 3 using the long format - ansible.builtin.set_fact: - indices: "{{ lookup('ansible.utils.index_of', data=data, test='eq', value=value, wantlist=True) }}" - vars: - value: 3 - - # TASK [Find the index of 3 using the long format] *************************** - # ok: [nxos101] => changed=false - # ansible_facts: - # indices: - # - 2 - - - name: Find numbers greater than 1, using loop - debug: - msg: "{{ data[item] }} is {{ test }} than {{ value }}" - loop: "{{ lookup('ansible.utils.index_of', data, test, value) }}" - vars: - test: '>' - value: 1 - - # TASK [Find numbers great than 1, using loop] ******************************* - # ok: [sw01] => (item=1) => - # msg: 2 is > than 1 - # ok: [sw01] => (item=2) => - # msg: 3 is > than 1 - - - name: Find numbers greater than 1, using with - debug: - msg: "{{ data[item] }} is {{ params.test }} than {{ params.value }}" - with_ansible.utils.index_of: "{{ params }}" - vars: - params: - data: "{{ data }}" - test: '>' - value: 1 - - # TASK [Find numbers greater than 1, using with] ***************************** - # ok: [nxos101] => (item=1) => - # msg: 2 is > than 1 - # ok: [nxos101] => (item=2) => - # msg: 3 is > than 1 - - - #### Working with lists of dictionaries - - - ansible.builtin.set_fact: - data: - - name: sw01.example.lan - type: switch - - name: rtr01.example.lan - type: router - - name: fw01.example.corp - type: firewall - - name: fw02.example.corp - type: firewall - - - name: Find the index of all firewalls using the type key - ansible.builtin.set_fact: - firewalls: "{{ lookup('ansible.utils.index_of', data, 'eq', 'firewall', 'type') }}" - - # TASK [Find the index of all firewalls using the type key] ****************** - # ok: [nxos101] => changed=false - # ansible_facts: - # firewalls: - # - 2 - # - 3 - - - name: Find the index of all firewalls, use in a loop - debug: - msg: "The type of {{ device_type }} at index {{ item }} has name {{ data[item].name }}." - loop: "{{ lookup('ansible.utils.index_of', data, 'eq', device_type, 'type') }}" - vars: - device_type: firewall - - # TASK [Find the index of all firewalls, use in a loop, as a filter] ********* - # ok: [nxos101] => (item=2) => - # msg: The type of firewall at index 2 has name fw01.example.corp. - # ok: [nxos101] => (item=3) => - # msg: The type of firewall at index 3 has name fw02.example.corp. - - - name: Find the index of all devices with a .corp name - debug: - msg: "The device named {{ data[item].name }} is a {{ data[item].type }}" - loop: "{{ lookup('ansible.utils.index_of', data, 'regex', expression, 'name') }}" - vars: - expression: '\.corp$' - - # TASK [Find the index of all devices with a .corp name] ********************* - # ok: [nxos101] => (item=2) => - # msg: The device named fw01.example.corp is a firewall - # ok: [nxos101] => (item=3) => - # msg: The device named fw02.example.corp is a firewall - - - #### Working with complex structures from resource modules - - - name: Retrieve the current L3 interface configuration - cisco.nxos.nxos_l3_interfaces: - state: gathered - register: current_l3 - - # TASK [Retrieve the current L3 interface configuration] ********************* - # ok: [sw01] => changed=false - # gathered: - # - name: Ethernet1/1 - # - name: Ethernet1/2 - # <...> - # - name: Ethernet1/128 - # - ipv4: - # - address: 192.168.101.14/24 - # name: mgmt0 - - - name: Find the indices interfaces with a 192.168.101.xx ip address - ansible.builtin.set_fact: - found: "{{ found + entry }}" - with_indexed_items: "{{ current_l3.gathered }}" - vars: - found: [] - ip: '192.168.101.' - address: "{{ lookup('ansible.utils.index_of', item.1.ipv4 | d([]), 'search', ip, 'address', wantlist=True) }}" - entry: - - interface_idx: "{{ item.0 }}" - address_idxs: "{{ address }}" - when: address - - # TASK [debug] *************************************************************** - # ok: [sw01] => - # found: - # - address_idxs: - # - 0 - # interface_idx: '128' - - - name: Show all interfaces and their address - debug: - msg: "{{ interface.name }} has ip {{ address }}" - loop: "{{ found|subelements('address_idxs') }}" - vars: - interface: "{{ current_l3.gathered[item.0.interface_idx|int] }}" - address: "{{ interface.ipv4[item.1].address }}" - - # TASK [Show all interfaces and their address] ******************************* - # ok: [nxos101] => (item=[{'interface_idx': '128', 'address_idxs': [0]}, 0]) => - # msg: mgmt0 has ip 192.168.101.14/24 - - - #### Working with deeply nested data - - - ansible.builtin.set_fact: - data: - interfaces: - interface: - - config: - description: configured by Ansible - 1 - enabled: true - loopback-mode: false - mtu: 1024 - name: loopback0000 - type: eth - name: loopback0000 - subinterfaces: - subinterface: - - config: - description: subinterface configured by Ansible - 1 - enabled: true - index: 5 - index: 5 - - config: - description: subinterface configured by Ansible - 2 - enabled: false - index: 2 - index: 2 - - config: - description: configured by Ansible - 2 - enabled: false - loopback-mode: false - mtu: 2048 - name: loopback1111 - type: virt - name: loopback1111 - subinterfaces: - subinterface: - - config: - description: subinterface configured by Ansible - 3 - enabled: true - index: 10 - index: 10 - - config: - description: subinterface configured by Ansible - 4 - enabled: false - index: 3 - index: 3 - - - - name: Find the description of loopback111, subinterface index 10 - debug: - msg: |- - {{ data.interfaces.interface[int_idx|int] - .subinterfaces.subinterface[subint_idx|int] - .config.description }} - vars: - # the values to search for - int_name: loopback1111 - sub_index: 10 - # retrieve the index in each nested list - int_idx: | - {{ lookup('ansible.utils.index_of', - data.interfaces.interface, - 'eq', int_name, 'name') }} - subint_idx: | - {{ lookup('ansible.utils.index_of', - data.interfaces.interface[int_idx|int].subinterfaces.subinterface, - 'eq', sub_index, 'index') }} - - # TASK [Find the description of loopback111, subinterface index 10] ************ - # ok: [sw01] => - # msg: subinterface configured by Ansible - 3 - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this lookup: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- _raw - -
- - -
-
-
One or more zero-based indicies of the matching list items.
-
See wantlist if a list is always required.
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Bradley Thornton (@cidrblock) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ip4_hex_filter.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ip4_hex_filter.rst deleted file mode 100644 index 8ba4094c..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ip4_hex_filter.rst +++ /dev/null @@ -1,151 +0,0 @@ -.. _ansible.utils.ip4_hex_filter: - - -********************* -ansible.utils.ip4_hex -********************* - -**This filter is designed to convert IPv4 address to Hexadecimal notation with optional delimiter.** - - -Version added: 2.5.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This filter convert IPv4 address to Hexadecimal notation with optional delimiter - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- arg - -
- string - / required -
-
- - -
IPv4 address.
-
-
- delimiter - -
- string -
-
- Default:
""
-
- -
You can provide a single argument to each ip4_hex() filter as delimiter.
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - #### examples - # ip4_hex convert IPv4 address to Hexadecimal notation with optional delimiter - - debug: - msg: "{{ '192.168.1.5' | ansible.utils.ip4_hex }}" - - # ip4_hex with delimiter - - debug: - msg: "{{ '192.168.1.5' | ansible.utils.ip4_hex(':') }}" - - # TASK [debug] ************************************************************************************************ - # task path: /Users/amhatre/ansible-collections/playbooks/test_ip4_hex.yaml:7 - # Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils - # ok: [localhost] => { - # "msg": "c0a80105" - # } - # - # TASK [debug] ************************************************************************************************ - # task path: /Users/amhatre/ansible-collections/playbooks/test_ip4_hex.yaml:11 - # Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils - # ok: [localhost] => { - # "msg": "c0:a8:01:05" - # } - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this filter: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- string -
-
-
Returns IPv4 address to Hexadecimal notation.
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Ashwini Mhatre (@amhatre) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ip_address_test.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ip_address_test.rst deleted file mode 100644 index 8d8eb64c..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ip_address_test.rst +++ /dev/null @@ -1,150 +0,0 @@ -.. _ansible.utils.ip_address_test: - - -************************ -ansible.utils.ip_address -************************ - -**Test if something in an IP address** - - -Version added: 2.2.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This plugin checks if the provided value is a valid host IP address - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- ip - -
- string - / required -
-
- - -
A string that represents the value against which the test is going to be performed
-
For example: 10.1.1.1 or "hello-world"
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - #### Simple examples - - - name: Check if 10.1.1.1 is a valid IP address - ansible.builtin.set_fact: - data: "{{ '10.1.1.1' is ansible.utils.ip_address }}" - - # TASK [Check if 10.1.1.1 is a valid IP address] ************************************* - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Check if "hello-world" is not a valid IP address - ansible.builtin.set_fact: - data: "{{ 'hello-world' is not ansible.utils.ip_address }}" - - # TASK [Check if "hello-world" is not a valid IP address] **************************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Check if 10.0.0.0/8 is a valid IP address - ansible.builtin.set_fact: - data: "{{ '10.0.0.0/8' is ansible.utils.ip_address }}" - - # TASK [Check if 10.0.0.0/8 is a valid IP address] *********************************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": false - # }, - # "changed": false - # } - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this test: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- - -
-
-
If jinja test satisfies plugin expression true
-
If jinja test does not satisfy plugin expression false
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Priyam Sahoo (@priyamsahoo) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ip_test.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ip_test.rst deleted file mode 100644 index b2e2e520..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ip_test.rst +++ /dev/null @@ -1,174 +0,0 @@ -.. _ansible.utils.ip_test: - - -**************** -ansible.utils.ip -**************** - -**Test if something in an IP address or network** - - -Version added: 2.2.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This plugin checks if the provided value is a valid host or network IP address - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- ip - -
- string - / required -
-
- - -
A string that represents the value against which the test is going to be performed
-
For example: 10.1.1.1, 2001:db8:a::123, or "hello-world"
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - #### Simple examples - - - name: Check if 10.1.1.1 is a valid IP address - ansible.builtin.set_fact: - data: "{{ '10.1.1.1' is ansible.utils.ip }}" - - # TASK [Check if 10.1.1.1 is a valid IP address] ***************************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Check if 2001:db8:a::123 is a valid IP address - ansible.builtin.set_fact: - data: "{{ '2001:db8:a::123' is ansible.utils.ip }}" - - # TASK [Check if 2001:db8:a::123 is a valid IP address] ********************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Check if "hello-world" is not a valid IP address - ansible.builtin.set_fact: - data: "{{ 'hello-world' is not ansible.utils.ip }}" - - # TASK [Check if "hello-world" is not a valid IP address] ******************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Check if 300.1.1.1 is a valid IP address - ansible.builtin.set_fact: - data: "{{ '300.1.1.1' is ansible.utils.ip }}" - - # TASK [Check if 300.1.1.1 is a valid IP address] **************************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": false - # }, - # "changed": false - # } - - - name: Check if 10.0.0.0/8 is a valid IP address - ansible.builtin.set_fact: - data: "{{ '10.0.0.0/8' is ansible.utils.ip }}" - - # TASK [Check if 10.0.0.0/8 is a valid IP address] *************************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this test: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- - -
-
-
If jinja test satisfies plugin expression true
-
If jinja test does not satisfy plugin expression false
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Priyam Sahoo (@priyamsahoo) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipaddr_filter.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipaddr_filter.rst deleted file mode 100644 index 006f078e..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipaddr_filter.rst +++ /dev/null @@ -1,328 +0,0 @@ -.. _ansible.utils.ipaddr_filter: - - -******************** -ansible.utils.ipaddr -******************** - -**This filter is designed to return the input value if a query is True, else False.** - - -Version added: 2.5.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This filter is designed to return the input value if a query is True, and False if a query is False -- This way it can be easily used in chained filters - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- alias - -
- string -
-
- - -
type of filter. example ipaddr, ipv4, ipv6, ipwrap
-
-
- query - -
- string -
-
- Default:
""
-
- -
You can provide a single argument to each ipaddr() filter.
-
The filter will then treat it as a query and return values modified by that query.
-
Types of queries include: 1. query by name: ansible.utils.ipaddr('address'), ansible.utils.ipv4('network'); 2. query by CIDR range: ansible.utils.ipaddr('192.168.0.0/24'), ansible.utils.ipv6('2001:db8::/32'); 3. query by index number: ansible.utils.ipaddr('1'), ansible.utils.ipaddr('-1');
-
-
- value - -
- raw - / required -
-
- - -
list of subnets or individual address or any other values input for ipaddr plugin
-
-
- version - -
- integer -
-
- - -
Ip version 4 or 6
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - #### examples - # Ipaddr filter plugin with different queries. - - name: Set value as input list - ansible.builtin.set_fact: - value: - - 192.24.2.1 - - host.fqdn - - ::1 - - '' - - 192.168.32.0/24 - - fe80::100/10 - - 42540766412265424405338506004571095040/64 - - true - - debug: - msg: "{{ value|ansible.utils.ipaddr }}" - - - name: Fetch only those elements that are host IP addresses and not network ranges - debug: - msg: "{{ value|ansible.utils.ipaddr('address') }}" - - - name: | - Fetch only host IP addresses with their correct CIDR prefixes (as is common with IPv6 addressing), you can use - the ipaddr('host') filter. - debug: - msg: "{{ value|ansible.utils.ipaddr('host') }}" - - - name: check if IP addresses or network ranges are accessible on a public Internet and return it. - debug: - msg: "{{ value|ansible.utils.ipaddr('public') }}" - - - name: check if IP addresses or network ranges are accessible on a private Internet and return it. - debug: - msg: "{{ value|ansible.utils.ipaddr('private') }}" - - - name: check which values are values are specifically network ranges and return it. - debug: - msg: "{{ value|ansible.utils.ipaddr('net') }}" - - - name: check how many IP addresses can be in a certain range. - debug: - msg: "{{ value| ansible.utils.ipaddr('net') | ansible.utils.ipaddr('size') }}" - - - name: By specifying a network range as a query, you can check if a given value is in that range. - debug: - msg: "{{ value|ansible.utils.ipaddr('192.0.0.0/8') }}" - - # First IP address (network address) - - name: | - If you specify a positive or negative integer as a query, ipaddr() will treat this as an index and will return - the specific IP address from a network range, in the "host/prefix" format. - debug: - msg: "{{ value| ansible.utils.ipaddr('net') | ansible.utils.ipaddr('0') }}" - - # Second IP address (usually the gateway host) - - debug: - msg: "{{ value| ansible.utils.ipaddr('net') | ansible.utils.ipaddr('1') }}" - - # Last IP address (the broadcast address in IPv4 networks) - - debug: - msg: "{{ value| ansible.utils.ipaddr('net') | ansible.utils.ipaddr('-1') }}" - - - # PLAY [Ipaddr filter plugin with different queries.] ****************************************************************** - # TASK [Set value as input list] *************************************************************************************** - # ok: [localhost] => {"ansible_facts": {"value": ["192.24.2.1", "host.fqdn", "::1", "", "192.168.32.0/24", - # "fe80::100/10", "42540766412265424405338506004571095040/64", true]}, "changed": false} - # - # TASK [debug] ******************************************************************************************************** - # ok: [localhost] => { - # "msg": [ - # "192.24.2.1", - # "::1", - # "192.168.32.0/24", - # "fe80::100/10", - # "2001:db8:32c:faad::/64" - # ] - # } - # - # TASK [Fetch only those elements that are host IP addresses and not network ranges] *********************************** - # ok: [localhost] => { - # "msg": [ - # "192.24.2.1", - # "::1", - # "fe80::100", - # "2001:db8:32c:faad::" - # ] - # } - # - # TASK [Fetch only host IP addresses with their correct CIDR prefixes (as is common with IPv6 addressing), you can use - # the ipaddr('host') filter.] ***************** - # ok: [localhost] => { - # "msg": [ - # "192.24.2.1/32", - # "::1/128", - # "fe80::100/10" - # ] - # } - # - # TASK [check if IP addresses or network ranges are accessible on a public Internet and return it.] ******************** - # ok: [localhost] => { - # "msg": [ - # "192.24.2.1", - # "2001:db8:32c:faad::/64" - # ] - # } - # - # TASK [check if IP addresses or network ranges are accessible on a private Internet and return it.] ******************* - # ok: [localhost] => { - # "msg": [ - # "192.168.32.0/24", - # "fe80::100/10" - # ] - # } - # - # TASK [check which values are values are specifically network ranges and return it.] ********************************** - # ok: [localhost] => { - # "msg": [ - # "192.168.32.0/24", - # "2001:db8:32c:faad::/64" - # ] - # } - # - # TASK [check how many IP addresses can be in a certain range.] ********************************************************* - # ok: [localhost] => { - # "msg": [ - # 256, - # 18446744073709551616 - # ] - # } - # - # TASK [By specifying a network range as a query, you can check if a given value is in that range.] ******************** - # ok: [localhost] => { - # "msg": [ - # "192.24.2.1", - # "192.168.32.0/24" - # ] - # } - # - # TASK [If you specify a positive or negative integer as a query, ipaddr() will treat this as an index and will - # return the specific IP address from a network range, in the "host/prefix" format.] *** - # ok: [localhost] => { - # "msg": [ - # "192.168.32.0/24", - # "2001:db8:32c:faad::/64" - # ] - # } - # - # TASK [debug] ********************************************************************************************************* - # ok: [localhost] => { - # "msg": [ - # "192.168.32.1/24", - # "2001:db8:32c:faad::1/64" - # ] - # } - # - # TASK [debug] ******************************************************************************************************** - # ok: [localhost] => { - # "msg": [ - # "192.168.32.255/24", - # "2001:db8:32c:faad:ffff:ffff:ffff:ffff/64" - # ] - # } - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this filter: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- raw -
-
-
Returns values valid for a particular query.
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Ashwini Mhatre (@amhatre) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipcut_filter.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipcut_filter.rst deleted file mode 100644 index 19aa57d3..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipcut_filter.rst +++ /dev/null @@ -1,150 +0,0 @@ -.. _ansible.utils.ipcut_filter: - - -******************* -ansible.utils.ipcut -******************* - -**This filter is designed to get 1st or last few bits of IP address.** - - -Version added: 2.11.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This filter is designed to fetch 1st or last few bits of Ip address. - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- amount - -
- integer -
-
- - -
integer for arithmetic. Example -1,2,3
-
-
- value - -
- string - / required -
-
- - -
list of subnets or individual address or any other values input for ip_cut plugin
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - #### examples - - name: Get first 64 bits of Ipv6 address - debug: - msg: "{{ '1234:4321:abcd:dcba::17' | ansible.utils.ipcut(64) }}" - - - name: Get last 80 bits of Ipv6 address - debug: - msg: "{{ '1234:4321:abcd:dcba::17' | ansible.utils.ipcut(-80) }}" - # PLAY [IPCUT filter plugin examples] ************************************************************************************************ - - # TASK [Get first X bits of Ipv6 address] ******************************************************************************************** - # ok: [localhost] => { - # "msg": "1234:4321:abcd:dcba" - # } - - # TASK [Get last X bits of Ipv6 address] ********************************************************************************************* - # ok: [localhost] => { - # "msg": "dcba:0:0:0:17" - # } - - # PLAY RECAP ************************************************************************************************************************* - # localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this filter: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- string -
-
-
Returns result of portion of IP.
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Ashwini Mhatre (@amhatre) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipmath_filter.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipmath_filter.rst deleted file mode 100644 index 3bc10dfe..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipmath_filter.rst +++ /dev/null @@ -1,193 +0,0 @@ -.. _ansible.utils.ipmath_filter: - - -******************** -ansible.utils.ipmath -******************** - -**This filter is designed to do simple IP math/arithmetic.** - - -Version added: 2.5.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This filter is designed to do simple IP math/arithmetic. - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- amount - -
- integer -
-
- - -
integer for arithmetic. Example -1,2,3
-
-
- value - -
- string - / required -
-
- - -
list of subnets or individual address or any other values input for ipaddr plugin
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - #### examples - # Ipmath filter plugin with different arthmetic. - # Get the next fifth address based on an IP address - - debug: - msg: "{{ '192.168.1.5' | ansible.netcommon.ipmath(5) }}" - - # Get the tenth previous address based on an IP address - - debug: - msg: "{{ '192.168.1.5' | ansible.netcommon.ipmath(-10) }}" - - # Get the next fifth address using CIDR notation - - debug: - msg: "{{ '192.168.1.1/24' | ansible.netcommon.ipmath(5) }}" - - # Get the previous fifth address using CIDR notation - - debug: - msg: "{{ '192.168.1.6/24' | ansible.netcommon.ipmath(-5) }}" - - # Get the previous tenth address using cidr notation - # It returns a address of the previous network range - - debug: - msg: "{{ '192.168.2.6/24' | ansible.netcommon.ipmath(-10) }}" - - # Get the next tenth address in IPv6 - - debug: - msg: "{{ '2001::1' | ansible.netcommon.ipmath(10) }}" - - # Get the previous tenth address in IPv6 - - debug: - msg: "{{ '2001::5' | ansible.netcommon.ipmath(-10) }}" - - # TASK [debug] ********************************************************************************************************** - # ok: [localhost] => { - # "msg": "192.168.1.10" - # } - # - # TASK [debug] ********************************************************************************************************** - # ok: [localhost] => { - # "msg": "192.168.0.251" - # } - # - # TASK [debug] ********************************************************************************************************** - # ok: [localhost] => { - # "msg": "192.168.1.6" - # } - # - # TASK [debug] ********************************************************************************************************** - # ok: [localhost] => { - # "msg": "192.168.1.1" - # } - # - # TASK [debug] ********************************************************************************************************** - # ok: [localhost] => { - # "msg": "192.168.1.252" - # } - # - # TASK [debug] ********************************************************************************************************** - # ok: [localhost] => { - # "msg": "2001::b" - # } - # - # TASK [debug] ********************************************************************************************************** - # ok: [localhost] => { - # "msg": "2000:ffff:ffff:ffff:ffff:ffff:ffff:fffb" - # } - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this filter: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- string -
-
-
Returns result of IP math/arithmetic.
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Ashwini Mhatre (@amhatre) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipsubnet_filter.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipsubnet_filter.rst deleted file mode 100644 index 81a943f6..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipsubnet_filter.rst +++ /dev/null @@ -1,289 +0,0 @@ -.. _ansible.utils.ipsubnet_filter: - - -********************** -ansible.utils.ipsubnet -********************** - -**This filter can be used to manipulate network subnets in several ways.** - - -Version added: 2.5.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This filter can be used to manipulate network subnets in several ways. - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- index - -
- integer -
-
- - -
The second argument of the ipsubnet() filter is an index number; by specifying it you can get a new subnet - with the specified index.
-
-
- query - -
- string -
-
- Default:
""
-
- -
You can provide query as 1st argument. - To check if a given string is a subnet, pass it through the filter without any arguments. If the given - string is an IP address, it will be converted into a subnet. - If you specify a subnet size as the first parameter of the ipsubnet() filter, and the subnet size is - smaller than the current one, you will get the number of subnets a given subnet can be split into.
-
-
- value - -
- string - / required -
-
- - -
subnets or individual address or any other values input for ipsubnet plugin
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - #### examples - # Ipsubnet filter plugin with different queries. - vars: - address: 192.168.144.5 - subnet: 192.168.0.0/16 - ipv6_address: '2001:4860:4860::8888' - ipv6_subnet: '2600:1f1c:1b3:8f00::/56' - tasks: - - name: convert IP address to subnet - debug: - msg: '{{ address | ansible.utils.ipsubnet }}' - - name: check if a given string is a subnet - debug: - msg: '{{ subnet | ansible.utils.ipsubnet }}' - - name: Get the number of subnets a given subnet can be split into. - debug: - msg: '{{ subnet | ansible.utils.ipsubnet(20) }}' - - name: Get a 1st subnet - debug: - msg: '{{ subnet | ansible.utils.ipsubnet(20, 0) }}' - - name: Get a last subnet - debug: - msg: '{{ subnet | ansible.utils.ipsubnet(20, -1) }}' - - name: Get first IPv6 subnet that has prefix length /120 - debug: - msg: '{{ ipv6_subnet | ansible.utils.ipsubnet(120, 0) }}' - - name: Get last subnet that has prefix length /120 - debug: - msg: '{{ ipv6_subnet | ansible.utils.ipsubnet(120, -1) }}' - - name: Get biggest subnet that contains that given IP address. - debug: - msg: '{{ address | ansible.utils.ipsubnet(20) }}' - - name: Get 1st smaller subnet by specifying 0 as index number - debug: - msg: '{{ address | ansible.utils.ipsubnet(18, 0) }}' - - name: Get last subnet - debug: - msg: '{{ address | ansible.utils.ipsubnet(18, -1) }}' - - name: >- - The rank of the IP in the subnet (the IP is the 36870nth /32 of the - subnet) - debug: - msg: '{{ address | ansible.utils.ipsubnet(subnet) }}' - - name: The rank in the /24 that contain the address - debug: - msg: '{{ address | ansible.utils.ipsubnet(''192.168.144.0/24'') }}' - - name: An IP with the subnet in the first /30 in a /24 - debug: - msg: '{{ ''192.168.144.1/30'' | ansible.utils.ipsubnet(''192.168.144.0/24'') }}' - - name: The fifth subnet /30 in a /24 - debug: - msg: '{{ ''192.168.144.16/30'' | ansible.utils.ipsubnet(''192.168.144.0/24'') }}' - - - # PLAY [Ipsubnet filter plugin with different queries.] **************************************************************** - # TASK [convert IP address to subnet] ************************************************************************* - # task path: /Users/amhatre/ansible-collections/playbooks/test_ipsubnet.yaml:10 - # Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils - # ok: [localhost] => { - # "msg": "192.168.144.5/32" - # } - # - # TASK [check if a given string is a subnet] ****************************************************************** - # task path: /Users/amhatre/ansible-collections/playbooks/test_ipsubnet.yaml:15 - # Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils - # ok: [localhost] => { - # "msg": "192.168.0.0/16" - # } - # - # TASK [Get the number of subnets a given subnet can be split into.] ****************************************** - # task path: /Users/amhatre/ansible-collections/playbooks/test_ipsubnet.yaml:20 - # Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils - # ok: [localhost] => { - # "msg": "16" - # } - # - # TASK [Get a 1st subnet] ************************************************************************************* - # task path: /Users/amhatre/ansible-collections/playbooks/test_ipsubnet.yaml:25 - # Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils - # ok: [localhost] => { - # "msg": "192.168.0.0/20" - # } - # - # TASK [Get a last subnet] ************************************************************************************ - # task path: /Users/amhatre/ansible-collections/playbooks/test_ipsubnet.yaml:30 - # Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils - # ok: [localhost] => { - # "msg": "192.168.240.0/20" - # } - # - # TASK [Get biggest subnet that contains that given IP address.] ********************************************** - # task path: /Users/amhatre/ansible-collections/playbooks/test_ipsubnet.yaml:35 - # Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils - # ok: [localhost] => { - # "msg": "192.168.144.0/20" - # } - # - # TASK [Get 1st smaller subnet by specifying 0 as index number] *********************************************** - # task path: /Users/amhatre/ansible-collections/playbooks/test_ipsubnet.yaml:40 - # Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils - # ok: [localhost] => { - # "msg": "192.168.128.0/18" - # } - # - # TASK [Get last subnet] ************************************************************************************** - # task path: /Users/amhatre/ansible-collections/playbooks/test_ipsubnet.yaml:45 - # Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils - # ok: [localhost] => { - # "msg": "192.168.144.4/31" - # } - # - # TASK [The rank of the IP in the subnet (the IP is the 36870nth /32 of the subnet)] ************************** - # task path: /Users/amhatre/ansible-collections/playbooks/test_ipsubnet.yaml:50 - # Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils - # ok: [localhost] => { - # "msg": "36870" - # } - # - # TASK [The rank in the /24 that contain the address] ********************************************************* - # task path: /Users/amhatre/ansible-collections/playbooks/test_ipsubnet.yaml:55 - # Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils - # ok: [localhost] => { - # "msg": "6" - # } - # - # TASK [An IP with the subnet in the first /30 in a /24] ****************************************************** - # task path: /Users/amhatre/ansible-collections/playbooks/test_ipsubnet.yaml:60 - # Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils - # ok: [localhost] => { - # "msg": "1" - # } - # - # TASK [he fifth subnet /30 in a /24] ************************************************************************* - # task path: /Users/amhatre/ansible-collections/playbooks/test_ipsubnet.yaml:65 - # Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils - # ok: [localhost] => { - # "msg": "5" - # } - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this filter: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- raw -
-
-
Returns values valid for a particular query.
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Ashwini Mhatre (@amhatre) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipv4_address_test.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipv4_address_test.rst deleted file mode 100644 index 3370c391..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipv4_address_test.rst +++ /dev/null @@ -1,150 +0,0 @@ -.. _ansible.utils.ipv4_address_test: - - -************************** -ansible.utils.ipv4_address -************************** - -**Test if something is an IPv4 address** - - -Version added: 2.2.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This plugin checks if the provided value is a valid host IP address with IPv4 addressing scheme - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- ip - -
- string - / required -
-
- - -
A string that represents the value against which the test is going to be performed
-
For example: 10.1.1.1, 10.0.0.0/8, or fe80::216:3eff:fee4:16f3
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - #### Simple examples - - - name: Check if 10.1.1.1 is a valid IPv4 address - ansible.builtin.set_fact: - data: "{{ '10.1.1.1' is ansible.utils.ipv4_address }}" - - # TASK [Check if 10.1.1.1 is a valid IPv4 address] ************************************* - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Check if 10.1.1.1/31 is not a valid IPv4 address - ansible.builtin.set_fact: - data: "{{ '10.1.1.1/31' is not ansible.utils.ipv4_address }}" - - # TASK [Check if 10.1.1.1/31 is a valid IPv4 address] ********************************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Check if fe80::216:3eff:fee4:16f3 is not a valid IPv4 address - ansible.builtin.set_fact: - data: "{{ 'fe80::216:3eff:fee4:16f3' is not ansible.utils.ipv4_address }}" - - # TASK [Check if fe80::216:3eff:fee4:16f3 is not a valid IPv4 address] ********* - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this test: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- - -
-
-
If jinja test satisfies plugin expression true
-
If jinja test does not satisfy plugin expression false
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Priyam Sahoo (@priyamsahoo) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipv4_filter.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipv4_filter.rst deleted file mode 100644 index 48547b8e..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipv4_filter.rst +++ /dev/null @@ -1,182 +0,0 @@ -.. _ansible.utils.ipv4_filter: - - -****************** -ansible.utils.ipv4 -****************** - -**To filter only Ipv4 addresses Ipv4 filter is used.** - - -Version added: 2.5.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- Sometimes you need only IPv4 addresses. To filter only Ipv4 addresses Ipv4 filter is used. - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- query - -
- string -
-
- Default:
""
-
- -
You can provide a single argument to each ipv4() filter.
-
Example. query type 'ipv6' to convert ipv4 into ipv6
-
-
- value - -
- raw - / required -
-
- - -
list of subnets or individual address or any other values input for ipv4 plugin
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - #### examples - # Ipv4 filter plugin with different queries. - - name: Set value as input list - ansible.builtin.set_fact: - value: - - 192.24.2.1 - - host.fqdn - - ::1 - - '' - - 192.168.32.0/24 - - fe80::100/10 - - 42540766412265424405338506004571095040/64 - - true - - name: IPv4 filter to filter Ipv4 Address - debug: - msg: "{{ value|ansible.utils.ipv4 }}" - - - name: convert IPv4 addresses into IPv6 addresses. - debug: - msg: "{{ value|ansible.utils.ipv4('ipv6') }}" - - - name: convert IPv4 addresses into IPv6 addresses. - debug: - msg: "{{ value|ansible.utils.ipv4('address') }}" - - - # PLAY [Ipv4 filter plugin with different queries.] ****************************************************************** - # TASK [Set value as input list] *************************************************************************************** - # ok: [localhost] => {"ansible_facts": {"value": ["192.24.2.1", "host.fqdn", "::1", "", "192.168.32.0/24", - # "fe80::100/10", "42540766412265424405338506004571095040/64", true]}, "changed": false} - # TASK [IPv4 filter to filter Ipv4 Address] ******************************************************************* - # ok: [localhost] => { - # "msg": [ - # "192.24.2.1", - # "192.168.32.0/24" - # ] - # } - # - # TASK [convert IPv4 addresses into IPv6 addresses.] ********************************************************** - # ok: [localhost] => { - # "msg": [ - # "::ffff:192.24.2.1/128", - # "::ffff:192.168.32.0/120" - # ] - # } - # - # TASK [convert IPv4 addresses into IPv6 addresses.] ********************************************************** - # ok: [localhost] => { - # "msg": [ - # "192.24.2.1" - # ] - # } - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this filter: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- raw -
-
-
Returns values valid for a particular query.
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Ashwini Mhatre (@amhatre) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipv4_hostmask_test.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipv4_hostmask_test.rst deleted file mode 100644 index 271e667e..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipv4_hostmask_test.rst +++ /dev/null @@ -1,138 +0,0 @@ -.. _ansible.utils.ipv4_hostmask_test: - - -*************************** -ansible.utils.ipv4_hostmask -*************************** - -**Test if an address is a valid hostmask** - - -Version added: 2.2.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This plugin checks if the provided ip address is a IPv4 hostmask or not - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- ip - -
- string - / required -
-
- - -
A string that represents the value against which the test is going to be performed
-
For example: 0.1.255.255 or 255.255.255.0
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - #### Simple examples - - - name: Check if 0.0.0.255 is a hostmask - ansible.builtin.set_fact: - data: "{{ '0.0.0.255' is ansible.utils.ipv4_hostmask }}" - - # TASK [Check if 0.0.0.255 is a hostmask] *********************************************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Check if 255.255.255.0 is not a hostmask - ansible.builtin.set_fact: - data: "{{ '255.255.255.0' is not ansible.utils.ipv4_hostmask }}" - - # TASK [Check if 255.255.255.0 is a hostmask] ********************************* - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this test: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- - -
-
-
If jinja test satisfies plugin expression true
-
If jinja test does not satisfy plugin expression false
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Priyam Sahoo (@priyamsahoo) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipv4_netmask_test.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipv4_netmask_test.rst deleted file mode 100644 index dbed4ce9..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipv4_netmask_test.rst +++ /dev/null @@ -1,150 +0,0 @@ -.. _ansible.utils.ipv4_netmask_test: - - -************************** -ansible.utils.ipv4_netmask -************************** - -**Test if an address is a valid netmask** - - -Version added: 2.2.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This plugin checks if the provided ip address is a valid IPv4 netmask or not - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- mask - -
- string - / required -
-
- - -
A string that represents the value against which the test is going to be performed
-
For example: 0.1.255.255 or 255.255.255.0
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - #### Simple examples - - - name: Check if 255.255.255.0 is a netmask - ansible.builtin.set_fact: - data: "{{ '255.255.255.0' is ansible.utils.ipv4_netmask }}" - - # TASK [Check if 255.255.255.0 is a netmask] ******************************************* - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Check if 255.255.255.128 is a netmask - ansible.builtin.set_fact: - data: "{{ '255.255.255.128' is ansible.utils.ipv4_netmask }}" - - # TASK [Check if 255.255.255.128 is a netmask] ***************************************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Check if 255.255.255.127 is not a netmask - ansible.builtin.set_fact: - data: "{{ '255.255.255.127' is not ansible.utils.ipv4_netmask }}" - - # TASK [Check if 255.255.255.127 is not a netmask] ************************************* - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this test: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- - -
-
-
If jinja test satisfies plugin expression true
-
If jinja test does not satisfy plugin expression false
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Priyam Sahoo (@priyamsahoo) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipv4_test.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipv4_test.rst deleted file mode 100644 index 51320eff..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipv4_test.rst +++ /dev/null @@ -1,150 +0,0 @@ -.. _ansible.utils.ipv4_test: - - -****************** -ansible.utils.ipv4 -****************** - -**Test if something is an IPv4 address or network** - - -Version added: 2.2.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This plugin checks if the provided value is a valid host or network IP address with IPv4 addressing scheme - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- ip - -
- string - / required -
-
- - -
A string that represents the value against which the test is going to be performed
-
For example: 10.1.1.1, 10.0.0.0/8, or fe80::216:3eff:fee4:16f3
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - #### Simple examples - - - name: Check if 10.0.0.0/8 is a valid IPv4 address - ansible.builtin.set_fact: - data: "{{ '10.0.0.0/8' is ansible.utils.ipv4 }}" - - # TASK [Check if 10.0.0.0/8 is a valid IPv4 address] *************************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Check if 192.168.1.250 is a valid IPv4 address - ansible.builtin.set_fact: - data: "{{ '192.168.1.250' is ansible.utils.ipv4 }}" - - # TASK [Check if 192.168.1.250 is a valid IPv4 address] ******************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Check if fe80::216:3eff:fee4:16f3 is not a valid IPv4 address - ansible.builtin.set_fact: - data: "{{ 'fe80::216:3eff:fee4:16f3' is not ansible.utils.ipv4 }}" - - # TASK [Check if fe80::216:3eff:fee4:16f3 is not a valid IPv4 address] ********* - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this test: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- - -
-
-
If jinja test satisfies plugin expression true
-
If jinja test does not satisfy plugin expression false
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Priyam Sahoo (@priyamsahoo) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipv6_address_test.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipv6_address_test.rst deleted file mode 100644 index 81c4438d..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipv6_address_test.rst +++ /dev/null @@ -1,150 +0,0 @@ -.. _ansible.utils.ipv6_address_test: - - -************************** -ansible.utils.ipv6_address -************************** - -**Test if something is an IPv6 address** - - -Version added: 2.2.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This plugin checks if the provided value is a valid host IP address with IPv6 addressing scheme - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- ip - -
- string - / required -
-
- - -
A string that represents the value against which the test is going to be performed
-
For example: 10.1.1.1, 10.0.0.0/8, or fe80::216:3eff:fee4:16f3
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - #### Simple examples - - - name: Check if fe80::216:3eff:fee4:16f3 is a valid IPv6 address - ansible.builtin.set_fact: - data: "{{ 'fe80::216:3eff:fee4:16f3' is ansible.utils.ipv6_address }}" - - # TASK [Check if fe80::216:3eff:fee4:16f3 is a valid IPv6 address] ********************* - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Check if 2001:db8:a::123/64 is not a valid IPv6 address - ansible.builtin.set_fact: - data: "{{ '2001:db8:a::123/64' is not ansible.utils.ipv6_address }}" - - # TASK [Check if 2001:db8:a::123/64 is not a valid IPv6 address] *********************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Check if 192.169.1.250 is not a valid IPv6 address - ansible.builtin.set_fact: - data: "{{ '192.169.1.250' is not ansible.utils.ipv6_address }}" - - # TASK [Check if 192.169.1.250 is not a valid IPv6 address] **************************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this test: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- - -
-
-
If jinja test satisfies plugin expression true
-
If jinja test does not satisfy plugin expression false
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Priyam Sahoo (@priyamsahoo) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipv6_filter.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipv6_filter.rst deleted file mode 100644 index 0d6d96d1..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipv6_filter.rst +++ /dev/null @@ -1,198 +0,0 @@ -.. _ansible.utils.ipv6_filter: - - -****************** -ansible.utils.ipv6 -****************** - -**To filter only Ipv6 addresses Ipv6 filter is used.** - - -Version added: 2.5.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- Sometimes you need only IPv6 addresses. To filter only Ipv6 addresses Ipv6 filter is used. - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- query - -
- string -
-
- Default:
""
-
- -
You can provide a single argument to each ipv6() filter.
-
Example. query type 'ipv4' to convert ipv6 into ipv4
-
-
- value - -
- raw - / required -
-
- - -
list of subnets or individual address or any other values input for ipv6 plugin
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - #### examples - # Ipv6 filter plugin with different queries. - - name: Set value as input list - ansible.builtin.set_fact: - value: - - 192.24.2.1 - - ::ffff:192.168.32.0/120 - - '' - - ::ffff:192.24.2.1/128 - - 192.168.32.0/24 - - fe80::100/10 - - true - - name: IPv6 filter to filter Ipv6 Address - debug: - msg: "{{ value|ansible.utils.ipv6 }}" - - - name: convert IPv6 addresses into IPv4 addresses. - debug: - msg: "{{ value|ansible.utils.ipv6('ipv4') }}" - - - name: filter only IPv6 addresses. - debug: - msg: "{{ value|ansible.utils.ipv6('address') }}" - - - # PLAY [Ipv6 filter plugin with different queries.] ****************************************************************** - # TASK [Set value as input list] *************************************************************************************** - # ok: [localhost] => { - # "ansible_facts": { - # "value": [ - # "192.24.2.1", - # "::ffff:192.168.32.0/120", - # "", - # "::ffff:192.24.2.1/128", - # "192.168.32.0/24", - # "fe80::100/10", - # true - # ] - # }, - # "changed": false - # } - # - # TASK [IPv6 filter to filter Ipv6 Address] **************************************************************************** - # ok: [localhost] => { - # "msg": [ - # "::ffff:192.168.32.0/120", - # "::ffff:192.24.2.1/128", - # "fe80::100/10" - # ] - # } - # - # TASK [convert IPv6 addresses into IPv4 addresses.] ******************************************************************* - # ok: [localhost] => { - # "msg": [ - # "192.168.32.0/24", - # "192.24.2.1/32" - # ] - # } - # - # TASK [filter only IPv6 addresses] ******************************************************************* - # ok: [localhost] => { - # "msg": [ - # "::ffff:192.168.32.0", - # "::ffff:192.24.2.1", - # "fe80::100" - # ] - # } - # - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this filter: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- raw -
-
-
Returns values valid for a particular query.
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Ashwini Mhatre (@amhatre) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipv6_ipv4_mapped_test.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipv6_ipv4_mapped_test.rst deleted file mode 100644 index 42141a97..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipv6_ipv4_mapped_test.rst +++ /dev/null @@ -1,150 +0,0 @@ -.. _ansible.utils.ipv6_ipv4_mapped_test: - - -****************************** -ansible.utils.ipv6_ipv4_mapped -****************************** - -**Test if something appears to be a mapped IPv6 to IPv4 mapped address** - - -Version added: 2.2.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This plugin checks if the provided value is a valid IPv4-mapped IPv6 address - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- ip - -
- string - / required -
-
- - -
A string that represents the value against which the test is going to be performed
-
For example: ::FFFF:10.1.1.1, ::AAAA:10.1.1.1, or "helloworld"
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - #### Simple examples - - - name: Check if ::FFFF:10.1.1.1 is a valid IPv4-mapped IPv6 address - ansible.builtin.set_fact: - data: "{{ '::FFFF:10.1.1.1' is ansible.utils.ipv6_ipv4_mapped }}" - - # TASK [Check if ::FFFF:10.1.1.1 is a valid IPv4-mapped IPv6 address] ************* - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Check if ::AAAA:10.1.1.1 is not a valid IPv4-mapped IPv6 address - ansible.builtin.set_fact: - data: "{{ '::AAAA:10.1.1.1' is not ansible.utils.ipv6_ipv4_mapped }}" - - # TASK [Check if ::AAAA:10.1.1.1 is not a valid IPv4-mapped IPv6 address] ****************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Check if helloworld is not a valid IPv4-mapped IPv6 address - ansible.builtin.set_fact: - data: "{{ 'helloworld' is not ansible.utils.ipv6_ipv4_mapped }}" - - # TASK [Check if helloworld is not a valid IPv4-mapped IPv6 address] *********************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this test: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- - -
-
-
If jinja test satisfies plugin expression true
-
If jinja test does not satisfy plugin expression false
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Priyam Sahoo (@priyamsahoo) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipv6_sixtofour_test.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipv6_sixtofour_test.rst deleted file mode 100644 index 67707411..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipv6_sixtofour_test.rst +++ /dev/null @@ -1,150 +0,0 @@ -.. _ansible.utils.ipv6_sixtofour_test: - - -**************************** -ansible.utils.ipv6_sixtofour -**************************** - -**Test if something appears to be a 6to4 address** - - -Version added: 2.2.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This plugin checks if the provided value is a valid 6to4 address - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- ip - -
- string - / required -
-
- - -
A string that represents the value against which the test is going to be performed
-
For example: 2002:c0a8:6301:1::1, ::AAAA:10.1.1.1, or "hello_world"
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - #### Simple examples - - - name: Check if 2002:c0a8:6301:1::1 is a valid 6to4 address - ansible.builtin.set_fact: - data: "{{ '2002:c0a8:6301:1::1' is ansible.utils.ipv6_sixtofour }}" - - # TASK [Check if 2002:c0a8:6301:1::1 is a valid 6to4 address] **************************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Check if 2001:c0a8:6301:1::1 is not a valid 6to4 address - ansible.builtin.set_fact: - data: "{{ '2001:c0a8:6301:1::1' is not ansible.utils.ipv6_sixtofour }}" - - # TASK [Check if 2001:c0a8:6301:1::1 is not a valid 6to4 address] ************************ - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Check if helloworld is not a valid 6to4 address - ansible.builtin.set_fact: - data: "{{ 'helloworld' is not ansible.utils.ipv6_sixtofour }}" - - # TASK [Check if helloworld is not a valid 6to4 address] ********************************* - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this test: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- - -
-
-
If jinja test satisfies plugin expression true
-
If jinja test does not satisfy plugin expression false
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Priyam Sahoo (@priyamsahoo) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipv6_teredo_test.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipv6_teredo_test.rst deleted file mode 100644 index 87457edd..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipv6_teredo_test.rst +++ /dev/null @@ -1,150 +0,0 @@ -.. _ansible.utils.ipv6_teredo_test: - - -************************* -ansible.utils.ipv6_teredo -************************* - -**Test if something appears to be an IPv6 teredo address** - - -Version added: 2.2.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This plugin checks if the provided value is a valid IPv6 teredo address - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- ip - -
- string - / required -
-
- - -
A string that represents the value against which the test is going to be performed
-
For example: 2001::c0a8:6301:1, 2002::c0a8:6301:1, or "hello_world"
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - #### Simple examples - - - name: Check if 2001::c0a8:6301:1 is a valid IPv6 teredo address - ansible.builtin.set_fact: - data: "{{ '2001::c0a8:6301:1' is ansible.utils.ipv6_teredo }}" - - # TASK [Check if 2001::c0a8:6301:1 is a valid IPv6 teredo address] ******************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Check if 2002::c0a8:6301:1 is not a valid IPv6 teredo address - ansible.builtin.set_fact: - data: "{{ '2002::c0a8:6301:1' is not ansible.utils.ipv6_teredo }}" - - # TASK [Check if 2002::c0a8:6301:1 is not a valid IPv6 teredo address] **************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Check if hello_world is not a valid IPv6 teredo address - ansible.builtin.set_fact: - data: "{{ 'hello_world' is not ansible.utils.ipv6_teredo }}" - - # TASK [Check if hello_world is not a valid IPv6 teredo address] ********************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this test: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- - -
-
-
If jinja test satisfies plugin expression true
-
If jinja test does not satisfy plugin expression false
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Priyam Sahoo (@priyamsahoo) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipv6_test.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipv6_test.rst deleted file mode 100644 index 41fa5030..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipv6_test.rst +++ /dev/null @@ -1,150 +0,0 @@ -.. _ansible.utils.ipv6_test: - - -****************** -ansible.utils.ipv6 -****************** - -**Test if something is an IPv6 address or network** - - -Version added: 2.2.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This plugin checks if the provided value is a valid host or network IP address with IPv6 addressing scheme - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- ip - -
- string - / required -
-
- - -
A string that represents the value against which the test is going to be performed
-
For example: 10.1.1.1, 10.0.0.0/8, or fe80::216:3eff:fee4:16f3
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - #### Simple examples - - - name: Check if fe80::216:3eff:fee4:16f3 is a valid IPv6 address - ansible.builtin.set_fact: - data: "{{ 'fe80::216:3eff:fee4:16f3' is ansible.utils.ipv6 }}" - - # TASK [Check if fe80::216:3eff:fee4:16f3 is a valid IPv6 address] ************* - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Check if 2001:db8:a::/64 is a valid IPv6 address - ansible.builtin.set_fact: - data: "{{ '2001:db8:a::/64' is ansible.utils.ipv6 }}" - - # TASK [Check if 2001:db8:a::/64 is a valid IPv6 address] ********************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Check if 192.169.1.250 is not a valid IPv6 address - ansible.builtin.set_fact: - data: "{{ '192.169.1.250' is not ansible.utils.ipv6 }}" - - # TASK [Check if 192.169.1.250 is not a valid IPv6 address] ******************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this test: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- - -
-
-
If jinja test satisfies plugin expression true
-
If jinja test does not satisfy plugin expression false
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Priyam Sahoo (@priyamsahoo) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipv6form_filter.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipv6form_filter.rst deleted file mode 100644 index 6ac965d6..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipv6form_filter.rst +++ /dev/null @@ -1,170 +0,0 @@ -.. _ansible.utils.ipv6form_filter: - - -********************** -ansible.utils.ipv6form -********************** - -**This filter is designed to convert ipv6 address in different formats. For example expand, compressetc.** - - -Version added: 2.11.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This filter is designed to convert ipv6 addresses in different formats. - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- format - -
- string -
-
-
    Choices: -
  • compress
  • -
  • expand
  • -
  • x509
  • -
-
- -
Different formats example. compress, expand, x509
-
-
- value - -
- string - / required -
-
- - -
individual ipv6 address input for ipv6_format plugin.
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - #### examples - # Ipv6form filter plugin with different format. - - name: Expand given Ipv6 address - debug: - msg: "{{ '1234:4321:abcd:dcba::17' | ansible.utils.ipv6form('expand') }}" - - - name: Compress given Ipv6 address - debug: - msg: "{{ '1234:4321:abcd:dcba:0000:0000:0000:0017' | ansible.utils.ipv6form('compress') }}" - - - name: Covert given Ipv6 address in x509 - debug: - msg: "{{ '1234:4321:abcd:dcba::17' | ansible.utils.ipv6form('x509') }}" - - # TASK [Expand given Ipv6 address] ************************************************************************************ - # task path: /home/amhatre/dev/playbook/test_ipform.yaml:7 - # Loading collection ansible.utils from /home/amhatre/dev/collections/ansible_collections/ansible/utils - # ok: [localhost] => { - # "msg": "1234:4321:abcd:dcba:0000:0000:0000:0017" - # } - - # TASK [Compress given Ipv6 address] ********************************************************************************* - # task path: /home/amhatre/dev/playbook/test_ipform.yaml:11 - # Loading collection ansible.utils from /home/amhatre/dev/collections/ansible_collections/ansible/utils - # ok: [localhost] => { - # "msg": "1234:4321:abcd:dcba::17" - # } - - # TASK [Covert given Ipv6 address in x509] **************************************************************************** - # task path: /home/amhatre/dev/playbook/test_ipform.yaml:15 - # Loading collection ansible.utils from /home/amhatre/dev/collections/ansible_collections/ansible/utils - # ok: [localhost] => { - # "msg": "1234:4321:abcd:dcba:0:0:0:17" - # } - - # PLAY RECAP ********************************************************************************************************** - # localhost : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this filter: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- string -
-
-
Returns result ipv6 address in expected format.
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Ashwini Mhatre (@amhatre) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipwrap_filter.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipwrap_filter.rst deleted file mode 100644 index 02eb0852..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.ipwrap_filter.rst +++ /dev/null @@ -1,196 +0,0 @@ -.. _ansible.utils.ipwrap_filter: - - -******************** -ansible.utils.ipwrap -******************** - -**This filter is designed to Wrap IPv6 addresses in [ ] brackets.** - - -Version added: 2.5.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- Some configuration files require IPv6 addresses to be "wrapped" in square brackets ([ ]).To accomplish that, -- you can use the ipwrap() filter.It will wrap all IPv6 addresses and leave any other strings intact. - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- query - -
- string -
-
- Default:
""
-
- -
You can provide a single argument to each ipwrap() filter.
-
The filter will then treat it as a query and return values modified by that query.
-
-
- value - -
- raw - / required -
-
- - -
list of subnets or individual address or any other values input. Example. ['192.24.2.1', 'host.fqdn', '::1', '192.168.32.0/24', 'fe80::100/10', True, '', '42540766412265424405338506004571095040/64']
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - #### examples - # Ipwrap filter plugin o Wrap IPv6 addresses in [ ] brackets. - - name: Set value as input list - ansible.builtin.set_fact: - value: - - 192.24.2.1 - - host.fqdn - - ::1 - - '' - - 192.168.32.0/24 - - fe80::100/10 - - 42540766412265424405338506004571095040/64 - - true - - debug: - msg: "{{ value|ansible.utils.ipwrap }}" - - - name: | - ipwrap() did not filter out non-IP address values, which is usually what you want when for example - you are mixing IP addresses with hostnames. If you still want to filter out all non-IP address values, - you can chain both filters together. - debug: - msg: "{{ value|ansible.utils.ipaddr|ansible.utils.ipwrap }}" - - # PLAY [Ipwrap filter plugin o Wrap IPv6 addresses in [ ] brackets.] *************************************************** - # TASK [Set value as input list] *************************************************************************************** - # ok: [localhost] => {"ansible_facts": {"value": ["192.24.2.1", "host.fqdn", "::1", "", "192.168.32.0/24", - # "fe80::100/10", "42540766412265424405338506004571095040/64", true]}, "changed": false} - # - # TASK [debug] ******************************************************************************************************** - # ok: [localhost] => { - # "msg": [ - # "192.24.2.1", - # "::1", - # "192.168.32.0/24", - # "fe80::100/10", - # "2001:db8:32c:faad::/64" - # ] - # } - # - # TASK [debug] ************************************************************************************************ - # ok: [localhost] => { - # "msg": [ - # "192.24.2.1", - # "host.fqdn", - # "[::1]", - # "", - # "192.168.32.0/24", - # "[fe80::100]/10", - # "[2001:db8:32c:faad::]/64", - # "True" - # ] - # } - # - # TASK [ipwrap() did not filter out non-IP address values, which is usually what you want when for example - # you are mixing IP addresses with hostnames. If you still want to filter out all non-IP address values, - # you can chain both filters together.] *** - # ok: [localhost] => { - # "msg": [ - # "192.24.2.1", - # "[::1]", - # "192.168.32.0/24", - # "[fe80::100]/10", - # "[2001:db8:32c:faad::]/64" - # ] - # } - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this filter: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- raw -
-
-
Returns values valid for a particular query.
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Ashwini Mhatre (@amhatre) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.keep_keys_filter.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.keep_keys_filter.rst deleted file mode 100644 index 6a41f894..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.keep_keys_filter.rst +++ /dev/null @@ -1,339 +0,0 @@ -.. _ansible.utils.keep_keys_filter: - - -*********************** -ansible.utils.keep_keys -*********************** - -**Keep specific keys from a data recursively.** - - -Version added: 2.5.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This plugin keep only specified keys from a provided data recursively. -- Matching parameter defaults to equals unless ``matching_parameter`` is explicitly mentioned. -- Using the parameters below- ``data|ansible.utils.keep_keys(target([....]``)) - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- data - -
- raw - / required -
-
- - -
This option represents a list of dictionaries or a dictionary with any level of nesting data.
-
For example config_data|ansible.utils.keep_keys(target([....])), in this case config_data represents this option.
-
-
- matching_parameter - -
- string -
-
-
    Choices: -
  • starts_with
  • -
  • ends_with
  • -
  • regex
  • -
-
- -
Specify the matching configuration of target keys and data attributes.
-
-
- target - -
- list - / elements=string - / required -
-
- - -
Specify the target keys to keep in list format.
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - # example.yaml - # interfaces: - # - name: eth0 - # enabled: true - # duplex: auto - # speed: auto - # note: - # - Connected green wire - # - name: eth1 - # description: Configured by Ansible - Interface 1 - # mtu: 1500 - # speed: auto - # duplex: auto - # enabled: true - # note: - # - Connected blue wire - # - Configured by Paul - # vifs: - # - vlan_id: 100 - # description: Eth1 - VIF 100 - # mtu: 400 - # enabled: true - # comment: Needs reconfiguration - # - vlan_id: 101 - # description: Eth1 - VIF 101 - # enabled: true - # - name: eth2 - # description: Configured by Ansible - Interface 2 (ADMIN DOWN) - # mtu: 600 - # enabled: false - - # Playbook - - name: keep selective keys from dict/list of dict data - ansible.builtin.set_fact: - data: '{{ interfaces }}' - - debug: - msg: >- - {{ data|ansible.utils.keep_keys(target=['description', 'name', 'mtu', - 'duplex', 'enabled', 'vifs', 'vlan_id']) }} - - # Output - # TASK [keep selective keys from python dict/list of dict] **************************************************************************************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": [ - # { - # "duplex": "auto", - # "enabled": true, - # "name": "eth0", - # "note": [ - # "Connected green wire" - # ], - # "speed": "auto" - # }, - # { - # "description": "Configured by Ansible - Interface 1", - # "duplex": "auto", - # "enabled": true, - # "mtu": 1500, - # "name": "eth1", - # "note": [ - # "Connected blue wire", - # "Configured by Paul" - # ], - # "speed": "auto", - # "vifs": [ - # { - # "comment": "Needs reconfiguration", - # "description": "Eth1 - VIF 100", - # "enabled": true, - # "mtu": 400, - # "vlan_id": 100 - # }, - # { - # "description": "Eth1 - VIF 101", - # "enabled": true, - # "vlan_id": 101 - # } - # ] - # }, - # { - # "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", - # "enabled": false, - # "mtu": 600, - # "name": "eth2" - # } - # ] - # }, - # "changed": false - # } - # Read vars_file 'example.yaml' - - # TASK [debug] ************************************************************************************************************* - # ok: [localhost] => { - # "msg": [ - # { - # "duplex": "auto", - # "enabled": true, - # "name": "eth0" - # }, - # { - # "description": "Configured by Ansible - Interface 1", - # "duplex": "auto", - # "enabled": true, - # "mtu": 1500, - # "name": "eth1", - # "vifs": [ - # { - # "description": "Eth1 - VIF 100", - # "enabled": true, - # "mtu": 400, - # "vlan_id": 100 - # }, - # { - # "description": "Eth1 - VIF 101", - # "enabled": true, - # "vlan_id": 101 - # } - # ] - # }, - # { - # "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", - # "enabled": false, - # "mtu": 600, - # "name": "eth2" - # } - # ] - # } - - # Playbook - - - name: keep selective keys from dict/list of dict data - ansible.builtin.set_fact: - data: "{{ interfaces }}" - - - debug: - msg: "{{ data|ansible.utils.keep_keys(target=['desc', 'name'], matching_parameter= 'starts_with') }}" - - # Output - # TASK [keep selective keys from python dict/list of dict] ************************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": [ - # { - # "duplex": "auto", - # "enabled": true, - # "name": "eth0", - # "note": [ - # "Connected green wire" - # ], - # "speed": "auto" - # }, - # { - # "description": "Configured by Ansible - Interface 1", - # "duplex": "auto", - # "enabled": true, - # "mtu": 1500, - # "name": "eth1", - # "note": [ - # "Connected blue wire", - # "Configured by Paul" - # ], - # "speed": "auto", - # "vifs": [ - # { - # "comment": "Needs reconfiguration", - # "description": "Eth1 - VIF 100", - # "enabled": true, - # "mtu": 400, - # "vlan_id": 100 - # }, - # { - # "description": "Eth1 - VIF 101", - # "enabled": true, - # "vlan_id": 101 - # } - # ] - # }, - # { - # "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", - # "enabled": false, - # "mtu": 600, - # "name": "eth2" - # } - # ] - # }, - # "changed": false - # } - # Read vars_file 'example.yaml' - - # TASK [debug] ********************************************************************************** - # ok: [localhost] => { - # "msg": [ - # { - # "name": "eth0" - # }, - # { - # "description": "Configured by Ansible - Interface 1", - # "name": "eth1", - # "vifs": [ - # { - # "description": "Eth1 - VIF 100" - # }, - # { - # "description": "Eth1 - VIF 101" - # } - # ] - # }, - # { - # "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", - # "name": "eth2" - # } - # ] - # } - - - - -Status ------- - - -Authors -~~~~~~~ - -- Sagar Paul (@KB-perByte) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.loopback_test.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.loopback_test.rst deleted file mode 100644 index e1167241..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.loopback_test.rst +++ /dev/null @@ -1,148 +0,0 @@ -.. _ansible.utils.loopback_test: - - -********************** -ansible.utils.loopback -********************** - -**Test if an IP address is a loopback** - - -Version added: 2.2.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This plugin checks if the provided value is a valid loopback IP address - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- ip - -
- string - / required -
-
- - -
A string that represents the value against which the test is going to be performed
-
For example: 127.0.0.1 or 2002::c0a8:6301:1
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - - name: Check if 127.10.10.10 is a valid loopback address - ansible.builtin.set_fact: - data: "{{ '127.10.10.10' is ansible.utils.loopback }}" - - # TASK [Check if 127.10.10.10 is a valid loopback address] ************************* - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Check if 10.1.1.1 is not a valid loopback address - ansible.builtin.set_fact: - data: "{{ '10.1.1.1' is not ansible.utils.loopback }}" - - # TASK [Check if 10.1.1.1 is not a valid loopback address] ************************* - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Check if ::1 is a valid loopback address - ansible.builtin.set_fact: - data: "{{ '::1' is ansible.utils.loopback }}" - - # TASK [Check if ::1 is a valid loopback address] ********************************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this test: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- - -
-
-
If jinja test satisfies plugin expression true
-
If jinja test does not satisfy plugin expression false
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Priyam Sahoo (@priyamsahoo) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.mac_test.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.mac_test.rst deleted file mode 100644 index 227ea4ed..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.mac_test.rst +++ /dev/null @@ -1,172 +0,0 @@ -.. _ansible.utils.mac_test: - - -***************** -ansible.utils.mac -***************** - -**Test if something appears to be a valid MAC address** - - -Version added: 2.2.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This plugin checks if the provided value is a valid MAC address that follows the industry level standards - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- mac - -
- string - / required -
-
- - -
A string that represents the value against which the test is going to be performed
-
For example: 02:16:3e:e4:16:f3, 02-16-3e-e4-16-f3, 0216.3ee4.16f3, or 02163ee416f3
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - - name: Check if 02:16:3e:e4:16:f3 is a valid MAC address - ansible.builtin.set_fact: - data: "{{ '02:16:3e:e4:16:f3' is ansible.utils.mac }}" - - # TASK [Check if 02:16:3e:e4:16:f3 is a valid MAC address] ******************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Check if 02-16-3e-e4-16-f3 is a valid MAC address - ansible.builtin.set_fact: - data: "{{ '02-16-3e-e4-16-f3' is ansible.utils.mac }}" - - # TASK [Check if 02-16-3e-e4-16-f3 is a valid MAC address] ******************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Check if 0216.3ee4.16f3 is a valid MAC address - ansible.builtin.set_fact: - data: "{{ '0216.3ee4.16f3' is ansible.utils.mac }}" - - # TASK [Check if 0216.3ee4.16f3 is a valid MAC address] *********************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Check if 02163ee416f3 is a valid MAC address - ansible.builtin.set_fact: - data: "{{ '02163ee416f3' is ansible.utils.mac }}" - - # TASK [Check if 02163ee416f3 is a valid MAC address] ************************* - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Check if helloworld is not a valid MAC address - ansible.builtin.set_fact: - data: "{{ 'helloworld' is not ansible.utils.mac }}" - - # TASK [Check if helloworld is not a valid MAC address] *********************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this test: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- - -
-
-
If jinja test satisfies plugin expression true
-
If jinja test does not satisfy plugin expression false
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Priyam Sahoo (@priyamsahoo) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.macaddr_filter.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.macaddr_filter.rst deleted file mode 100644 index 4102be8d..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.macaddr_filter.rst +++ /dev/null @@ -1,148 +0,0 @@ -.. _ansible.utils.macaddr_filter: - - -********************* -ansible.utils.macaddr -********************* - -**macaddr / MAC address filters** - - -Version added: 2.5.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This filter check if string is a MAC address and filter it -- You can use the macaddr() filter to check if a given string is a MAC address or convert it between various formats. - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- query - -
- string -
-
- Default:
""
-
- -
query string. Example. cisco,linux,unix etc
-
-
- value - -
- string - / required -
-
- - -
HW/MAC address.
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - #### examples - - name: Check if given string is a MAC address - debug: - msg: "{{ '1a:2b:3c:4d:5e:6f' | ansible.utils.macaddr }}" - - - name: Convert MAC address to Cisco format - debug: - msg: "{{ '1a:2b:3c:4d:5e:6f' | ansible.utils.macaddr('cisco') }}" - - # TASK [Check if given string is a MAC address] *************************************************************** - # ok: [localhost] => { - # "msg": "1a:2b:3c:4d:5e:6f" - # } - # - # TASK [Convert MAC address to Cisco format] ****************************************************************** - # ok: [localhost] => { - # "msg": "1a2b.3c4d.5e6f" - # } - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this filter: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- string -
-
-
mac/Hw address
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Ashwini Mhatre (@amhatre) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.multicast_test.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.multicast_test.rst deleted file mode 100644 index 696f3b47..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.multicast_test.rst +++ /dev/null @@ -1,160 +0,0 @@ -.. _ansible.utils.multicast_test: - - -*********************** -ansible.utils.multicast -*********************** - -**Test for a multicast IP address** - - -Version added: 2.2.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This plugin checks if the provided value is a valid multicast IP address - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- ip - -
- string - / required -
-
- - -
A string that represents the value against which the test is going to be performed
-
For example: 224.0.0.1 or 127.0.0.1
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - - name: Check if 224.0.0.1 is a valid multicast IP address - ansible.builtin.set_fact: - data: "{{ '224.0.0.1' is ansible.utils.multicast }}" - - # TASK [Check if 224.0.0.1 is a valid multicast IP address] ********************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Check if ff02::1 is a valid multicast IP address - ansible.builtin.set_fact: - data: "{{ 'ff02::1' is ansible.utils.multicast }}" - - # TASK [Check if ff02::1 is a valid multicast IP address] *************************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Check if 127.0.0.1 is not a valid multicast IP address - ansible.builtin.set_fact: - data: "{{ '127.0.0.1' is not ansible.utils.multicast }}" - - # TASK [Check if 127.0.0.1 is not a valid multicast IP address] ********************* - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Check if helloworld is not a valid multicast IP address - ansible.builtin.set_fact: - data: "{{ 'helloworld' is not ansible.utils.multicast }}" - - # TASK [Check if helloworld is not a valid multicast IP address] ******************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this test: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- - -
-
-
If jinja test satisfies plugin expression true
-
If jinja test does not satisfy plugin expression false
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Priyam Sahoo (@priyamsahoo) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.network_in_network_filter.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.network_in_network_filter.rst deleted file mode 100644 index f7f72a01..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.network_in_network_filter.rst +++ /dev/null @@ -1,161 +0,0 @@ -.. _ansible.utils.network_in_network_filter: - - -******************************** -ansible.utils.network_in_network -******************************** - -**This filter returns whether an address or a network passed as argument is in a network.** - - -Version added: 2.5.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This filter returns whether an address or a network passed as argument is in a network. - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- test - -
- string -
-
- - -
The address or network to validate if it is within the range of 'value'.
-
-
- value - -
- string - / required -
-
- - -
The network address or range to test against.
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - #### examples - - name: Check ip address 1 is part of another network - debug: - msg: "{{ '192.168.0.0/24' | ansible.utils.network_in_network( '192.168.0.1' ) }}" - - - name: Check ip address 2 is part of another network - debug: - msg: "{{ '192.168.0.0/24' | ansible.utils.network_in_network( '10.0.0.1' ) }}" - - - name: Check in a network is part of another network. - debug: - msg: "{{ '192.168.0.0/16' | ansible.utils.network_in_network( '192.168.0.0/24' ) }}" - - # TASK [Check ip address 1 is part of another network] ******************************************************** - # task path: /Users/amhatre/ansible-collections/playbooks/test_network_in_network.yaml:7 - # Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils - # ok: [localhost] => { - # "msg": true - # } - # - # TASK [Check ip address 2 is part of another network] ******************************************************** - # task path: /Users/amhatre/ansible-collections/playbooks/test_network_in_network.yaml:11 - # Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils - # ok: [localhost] => { - # "msg": false - # } - # - # TASK [Check in a network is part of another network.] ******************************************************* - # task path: /Users/amhatre/ansible-collections/playbooks/test_network_in_network.yaml:15 - # Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils - # ok: [localhost] => { - # "msg": true - # } - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this filter: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- boolean -
-
-
Returns whether an address or a network passed as argument is in a network.
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Ashwini Mhatre (@amhatre) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.network_in_usable_filter.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.network_in_usable_filter.rst deleted file mode 100644 index 9844f07e..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.network_in_usable_filter.rst +++ /dev/null @@ -1,162 +0,0 @@ -.. _ansible.utils.network_in_usable_filter: - - -******************************* -ansible.utils.network_in_usable -******************************* - -**The network_in_usable filter returns whether an address passed as an argument is usable in a network.** - - -Version added: 2.5.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- The network_in_usable filter returns whether an address passed as an argument is usable in a network Usable addresses are addresses that can be assigned to a host. -- The network ID and the broadcast address are not usable addresses. - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- test - -
- string -
-
- - -
The address or network is usable or not.
-
-
- value - -
- string - / required -
-
- - -
The network address or range to test against.
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - #### examples - - name: Check ip address is usable in a network - debug: - msg: "{{ '192.168.0.0/24' | ansible.utils.network_in_usable( '192.168.0.1' ) }}" - - - name: Check broadcast address is usable in a network - debug: - msg: "{{ '192.168.0.0/24' | ansible.utils.network_in_usable( '192.168.0.255' ) }}" - - - name: Check in a network is part of another network. - debug: - msg: "{{ '192.168.0.0/16' | ansible.utils.network_in_usable( '192.168.0.255' ) }}" - - # TASK [Check ip address is usable in a network] ************************************************************** - # task path: /Users/amhatre/ansible-collections/playbooks/test_network_in_usable.yaml:7 - # Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils - # ok: [localhost] => { - # "msg": true - # } - # - # TASK [Check broadcast address is usable in a network] ******************************************************* - # task path: /Users/amhatre/ansible-collections/playbooks/test_network_in_usable.yaml:11 - # Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils - # ok: [localhost] => { - # "msg": false - # } - # - # TASK [Check in a network is part of another network.] ******************************************************* - # task path: /Users/amhatre/ansible-collections/playbooks/test_network_in_usable.yaml:15 - # Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils - # ok: [localhost] => { - # "msg": true - # } - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this filter: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- boolean -
-
-
Returns whether an address or a network passed as argument is in a network.
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Ashwini Mhatre (@amhatre) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.next_nth_usable_filter.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.next_nth_usable_filter.rst deleted file mode 100644 index 5e7616ff4..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.next_nth_usable_filter.rst +++ /dev/null @@ -1,153 +0,0 @@ -.. _ansible.utils.next_nth_usable_filter: - - -***************************** -ansible.utils.next_nth_usable -***************************** - -**This filter returns the next nth usable ip within a network described by value.** - - -Version added: 2.5.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This filter returns the next nth usable ip within a network described by value. -- Use next_nth_usable to find the next nth usable IP address in relation to another within a range - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- offset - -
- integer -
-
- - -
index value
-
next nth usable IP address
-
-
- value - -
- string - / required -
-
- - -
subnets or individual address input for next_nth_usable plugin
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - #### examples - # Ipv4 filter plugin with different queries. - - name: next_nth_usable returns the second usable IP address for the given IP range - debug: - msg: "{{ '192.168.122.1/24' | ansible.utils.next_nth_usable(2) }}" - - - name: If there is no usable address, it returns an empty string. - debug: - msg: "{{ '192.168.122.254/24' | ansible.utils.next_nth_usable(2) }}" - - # TASK [next_nth_usable returns the second usable IP address for the given IP range] ************************** - # task path: /Users/amhatre/ansible-collections/playbooks/test_next_nth_usable.yaml:9 - # Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils - # ok: [localhost] => { - # "msg": "192.168.122.3" - # } - # - # TASK [If there is no usable address, it returns an empty string.] ******************************************* - # task path: /Users/amhatre/ansible-collections/playbooks/test_next_nth_usable.yaml:14 - # Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils - # ok: [localhost] => { - # "msg": "" - # } - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this filter: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- string -
-
-
Returns the next nth usable ip within a network described by value.
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Ashwini Mhatre (@amhatre) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.nthhost_filter.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.nthhost_filter.rst deleted file mode 100644 index 50f034b1..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.nthhost_filter.rst +++ /dev/null @@ -1,151 +0,0 @@ -.. _ansible.utils.nthhost_filter: - - -********************* -ansible.utils.nthhost -********************* - -**This filter returns the nth host within a network described by value.** - - -Version added: 2.5.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This filter returns the nth host within a network described by value. To return the nth ip from a network, use the filter nthhost. -- Nthhost also supports a negative value. - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- query - -
- string -
-
- - -
nth host
-
-
- value - -
- string - / required -
-
- - -
The network address or range to test against.
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - #### examples - - name: To return the nth ip from a network, use the filter nthhost. - debug: - msg: "{{ '10.0.0.0/8' | ansible.utils.nthhost(305) }}" - - - name: nthhost also supports a negative value. - debug: - msg: "{{ '10.0.0.0/8' | ansible.utils.nthhost(-1) }}" - - # TASK [To return the nth ip from a network, use the filter nthhost.] ***************************************** - # task path: /Users/amhatre/ansible-collections/playbooks/test_nthhost.yaml:7 - # Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils - # ok: [localhost] => { - # "msg": "10.0.1.49" - # } - # - # TASK [nthhost also supports a negative value.] ************************************************************** - # task path: /Users/amhatre/ansible-collections/playbooks/test_nthhost.yaml:11 - # Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils - # ok: [localhost] => { - # "msg": "10.255.255.255" - # } - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this filter: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- string -
-
-
Returns nth host from network
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Ashwini Mhatre (@amhatre) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.param_list_compare_filter.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.param_list_compare_filter.rst deleted file mode 100644 index 339fccf9..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.param_list_compare_filter.rst +++ /dev/null @@ -1,262 +0,0 @@ -.. _ansible.utils.param_list_compare_filter: - - -******************************** -ansible.utils.param_list_compare -******************************** - -**Generate the final param list combining/comparing base and provided parameters.** - - -Version added: 2.4.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- Generate the final list of parameters after comparing with base list and provided/target list of params/bangs. - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- base - -
- list - / elements=string -
-
- - -
Specify the base list.
-
-
- target - -
- list - / elements=string -
-
- - -
Specify the target list.
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - - set_fact: - base: ['1', '2', '3', '4', ' 5'] - - - set_fact: - target: ['!all', '2', '4'] - - - name: Get final list of parameters - register: result - set_fact: - final_params: "{{ base | param_list_compare(target) }}" - - # TASK [Target list] ********************************************************** - # ok: [localhost] => { - # "msg": { - # "actionable": [ - # "2", - # "4" - # ], - # "unsupported": [] - # } - # } - - - set_fact: - base: ['1', '2', '3', '4', '5'] - - - name: Get final list of parameters - register: result - set_fact: - final_params: "{{ base|param_list_compare(target=['2', '7', '8']) }}" - - # TASK [Get final list of parameters] ******************************************** - # ok: [localhost] => { - # "ansible_facts": { - # "final_params": { - # "actionable": [ - # "2" - # ], - # "unsupported": [ - # "7", - # "8" - # ] - # } - # }, - # "changed": false - # } - - # Network Specific Example - # ----------- - - set_fact: - ios_resources: - - "acl_interfaces" - - "acls" - - "bgp_address_family" - - "bgp_global" - - "interfaces" - - "l2_interfaces" - - "l3_interfaces" - - "lacp" - - "lacp_interfaces" - - "lag_interfaces" - - "lldp_global" - - "lldp_interfaces" - - "logging_global" - - "ospf_interfaces" - - "ospfv2" - - "ospfv3" - - "prefix_lists" - - "route_maps" - - "static_routes" - - "vlans" - - - set_fact: - target_resources: - - '!all' - - 'vlan' - - 'bgp_global' - - - name: Get final list of target resources/params - register: result - set_fact: - network_resources: "{{ ios_resources|param_list_compare(target_resources) }}" - - - name: Target list of network resources - debug: - msg: "{{ network_resources }}" - - # TASK [Target list of network resources] ******************************************************************************************************************* - # ok: [localhost] => { - # "msg": { - # "actionable": [ - # "bgp_global", - # "vlans" - # ], - # "unsupported": [] - # } - # } - - - name: Get final list of target resources/params - register: result - set_fact: - network_resources: "{{ ios_resources|param_list_compare(target=['vla', 'ntp_global', 'logging_global']) }}" - - - name: Target list of network resources - debug: - msg: "{{ network_resources }}" - - # TASK [Target list of network resources] ************************************************ - # ok: [localhost] => { - # "msg": { - # "actionable": [ - # "logging_global" - # ], - # "unsupported": [ - # "vla", - # "ntp_global" - # ] - # } - # } - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this filter: - -.. raw:: html - - - - - - - - - - - - - - - - - -
KeyReturnedDescription
-
- actionable - -
- list -
-
-
list of combined params
-
-
-
- unsupported - -
- list -
-
-
list of unsupported params
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Rohit Thakur (@rohitthakur2590) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.previous_nth_usable_filter.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.previous_nth_usable_filter.rst deleted file mode 100644 index 3de1af9c..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.previous_nth_usable_filter.rst +++ /dev/null @@ -1,152 +0,0 @@ -.. _ansible.utils.previous_nth_usable_filter: - - -********************************* -ansible.utils.previous_nth_usable -********************************* - -**This filter returns the previous nth usable ip within a network described by value.** - - -Version added: 2.5.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This filter returns the previous nth usable ip within a network described by value. -- Use previous_nth_usable to find the previous nth usable IP address in relation to another within a range - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- offset - -
- integer -
-
- - -
index value
-
previous nth usable IP address
-
-
- value - -
- string - / required -
-
- - -
subnets or individual address input for previous_nth_usable plugin
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - #### examples - - name: previous_nth_usable returns the second usable IP address for the given IP range - debug: - msg: "{{ '192.168.122.10/24' | ansible.utils.previous_nth_usable(2) }}" - - - name: If there is no usable address, it returns an empty string. - debug: - msg: "{{ '192.168.122.1/24' | ansible.utils.previous_nth_usable(2) }}" - - # TASK [previous_nth_usable returns the second usable IP address for the given IP range] ************************** - # task path: /Users/amhatre/ansible-collections/playbooks/test_previous_nth_usable.yaml:9 - # Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils - # ok: [localhost] => { - # "msg": "192.168.122.8" - # } - # - # TASK [If there is no usable address, it returns an empty string.] ******************************************* - # task path: /Users/amhatre/ansible-collections/playbooks/test_previous_nth_usable.yaml:14 - # Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils - # ok: [localhost] => { - # "msg": "" - # } - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this filter: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- string -
-
-
Returns the previous nth usable ip within a network described by value.
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Ashwini Mhatre (@amhatre) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.private_test.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.private_test.rst deleted file mode 100644 index 345adba6..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.private_test.rst +++ /dev/null @@ -1,136 +0,0 @@ -.. _ansible.utils.private_test: - - -********************* -ansible.utils.private -********************* - -**Test if an IP address is private** - - -Version added: 2.2.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This plugin checks if the provided value is a private IP address - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- ip - -
- string - / required -
-
- - -
A string that represents the value against which the test is going to be performed
-
For example: 10.1.1.1, 8.8.8.8, or 192.168.1.250
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - - name: Check if 10.1.1.1 is a private IP address - ansible.builtin.set_fact: - data: "{{ '10.1.1.1' is ansible.utils.private }}" - - # TASK [Check if 10.1.1.1 is a private IP address] ******************************* - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Check if 8.8.8.8 is not a private IP address - ansible.builtin.set_fact: - data: "{{ '8.8.8.8' is not ansible.utils.private }}" - - # TASK [Check if 8.8.8.8 is not a private IP address] ****************************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this test: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- - -
-
-
If jinja test satisfies plugin expression true
-
If jinja test does not satisfy plugin expression false
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Priyam Sahoo (@priyamsahoo) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.public_test.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.public_test.rst deleted file mode 100644 index c895df6b..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.public_test.rst +++ /dev/null @@ -1,136 +0,0 @@ -.. _ansible.utils.public_test: - - -******************** -ansible.utils.public -******************** - -**Test if an IP address is public** - - -Version added: 2.2.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This plugin checks if the provided value is a public IP address - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- ip - -
- string - / required -
-
- - -
A string that represents the value against which the test is going to be performed
-
For example: 8.8.8.8, 10.1.1.1, or 192.168.1.250
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - - name: Check if 8.8.8.8 is a public IP address - ansible.builtin.set_fact: - data: "{{ '8.8.8.8' is ansible.utils.public }}" - - # TASK [Check if 8.8.8.8 is a public IP address] ********************************* - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Check if 10.1.1.1 is not a public IP address - ansible.builtin.set_fact: - data: "{{ '10.1.1.1' is not ansible.utils.public }}" - - # TASK [Check if 10.1.1.1 is not a public IP address] ****************************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this test: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- - -
-
-
If jinja test satisfies plugin expression true
-
If jinja test does not satisfy plugin expression false
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Priyam Sahoo (@priyamsahoo) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.reduce_on_network_filter.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.reduce_on_network_filter.rst deleted file mode 100644 index 8d1a4816..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.reduce_on_network_filter.rst +++ /dev/null @@ -1,142 +0,0 @@ -.. _ansible.utils.reduce_on_network_filter: - - -******************************* -ansible.utils.reduce_on_network -******************************* - -**This filter reduces a list of addresses to only the addresses that match a given network.** - - -Version added: 2.5.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This filter reduces a list of addresses to only the addresses that match a given network. -- To check whether multiple addresses belong to a network, use the reduce_on_network filter. - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- network - -
- string -
-
- - -
The network to validate against.
-
-
- value - -
- list - / elements=string - / required -
-
- - -
the list of addresses to filter on.
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - - name: To check whether multiple addresses belong to a network, use the reduce_on_network filter. - debug: - msg: "{{ ['192.168.0.34', '10.3.0.3', '192.168.2.34'] | ansible.utils.reduce_on_network( '192.168.0.0/24' ) }}" - - # TASK [To check whether multiple addresses belong to a network, use the reduce_on_network filter.] *********** - # task path: /Users/amhatre/ansible-collections/playbooks/test_reduce_on_network.yaml:7 - # Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils - # ok: [localhost] => { - # "msg": [ - # "192.168.0.34" - # ] - # } - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this filter: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- boolean -
-
-
Returns whether an address or a network passed as argument is in a network.
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Ashwini Mhatre (@amhatre) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.remove_keys_filter.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.remove_keys_filter.rst deleted file mode 100644 index 18028fb8..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.remove_keys_filter.rst +++ /dev/null @@ -1,385 +0,0 @@ -.. _ansible.utils.remove_keys_filter: - - -************************* -ansible.utils.remove_keys -************************* - -**Remove specific keys from a data recursively.** - - -Version added: 2.5.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This plugin removes specific keys from a provided data recursively. -- Matching parameter defaults to equals unless ``matching_parameter`` is explicitly mentioned. -- Using the parameters below- ``data|ansible.utils.remove_keys(target([....]``)) - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- data - -
- raw - / required -
-
- - -
This option represents a list of dictionaries or a dictionary with any level of nesting data.
-
For example config_data|ansible.utils.remove_keys(target([....])), in this case config_data represents this option.
-
-
- matching_parameter - -
- string -
-
-
    Choices: -
  • starts_with
  • -
  • ends_with
  • -
  • regex
  • -
-
- -
Specify the matching configuration of target keys and data attributes.
-
-
- target - -
- list - / elements=string - / required -
-
- - -
Specify the target keys to remove in list format.
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - # example.yaml - # interfaces: - # - name: eth0 - # enabled: true - # duplex: auto - # speed: auto - # note: - # - Connected green wire - # - name: eth1 - # description: Configured by Ansible - Interface 1 - # mtu: 1500 - # speed: auto - # duplex: auto - # enabled: true - # note: - # - Connected blue wire - # - Configured by Paul - # vifs: - # - vlan_id: 100 - # description: Eth1 - VIF 100 - # mtu: 400 - # enabled: true - # comment: Needs reconfiguration - # - vlan_id: 101 - # description: Eth1 - VIF 101 - # enabled: true - # - name: eth2 - # description: Configured by Ansible - Interface 2 (ADMIN DOWN) - # mtu: 600 - # enabled: false - - # Playbook - - - name: remove multiple keys from a provided data - ansible.builtin.set_fact: - data: '{{ interfaces }}' - - debug: - msg: '{{ data|ansible.utils.remove_keys(target=[''note'', ''comment'']) }}' - - # Output - # TASK [remove multiple keys from a provided data] *************************************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": [ - # { - # "duplex": "auto", - # "enabled": true, - # "name": "eth0", - # "note": [ - # "Connected green wire" - # ], - # "speed": "auto" - # }, - # { - # "description": "Configured by Ansible - Interface 1", - # "duplex": "auto", - # "enabled": true, - # "mtu": 1500, - # "name": "eth1", - # "note": [ - # "Connected blue wire", - # "Configured by Paul" - # ], - # "speed": "auto", - # "vifs": [ - # { - # "comment": "Needs reconfiguration", - # "description": "Eth1 - VIF 100", - # "enabled": true, - # "mtu": 400, - # "vlan_id": 100 - # }, - # { - # "description": "Eth1 - VIF 101", - # "enabled": true, - # "vlan_id": 101 - # } - # ] - # }, - # { - # "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", - # "enabled": false, - # "mtu": 600, - # "name": "eth2" - # } - # ] - # }, - # "changed": false - # } - # Read vars_file 'example.yaml' - - # TASK [debug] ******************************************** - # ok: [localhost] => { - # "msg": [ - # { - # "duplex": "auto", - # "enabled": true, - # "name": "eth0", - # "speed": "auto" - # }, - # { - # "description": "Configured by Ansible - Interface 1", - # "duplex": "auto", - # "enabled": true, - # "mtu": 1500, - # "name": "eth1", - # "speed": "auto", - # "vifs": [ - # { - # "description": "Eth1 - VIF 100", - # "enabled": true, - # "mtu": 400, - # "vlan_id": 100 - # }, - # { - # "description": "Eth1 - VIF 101", - # "enabled": true, - # "vlan_id": 101 - # } - # ] - # }, - # { - # "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", - # "enabled": false, - # "mtu": 600, - # "name": "eth2" - # } - # ] - # } - - # example.yaml - # interfaces: - # - name: eth0 - # enabled: true - # duplex: auto - # speed: auto - # note: - # - Connected green wire - # - name: eth1 - # description: Configured by Ansible - Interface 1 - # mtu: 1500 - # speed: auto - # duplex: auto - # enabled: true - # note: - # - Connected blue wire - # - Configured by Paul - # vifs: - # - vlan_id: 100 - # description: Eth1 - VIF 100 - # mtu: 400 - # enabled: true - # comment: Needs reconfiguration - # - vlan_id: 101 - # description: Eth1 - VIF 101 - # enabled: true - # - name: eth2 - # description: Configured by Ansible - Interface 2 (ADMIN DOWN) - # mtu: 600 - # enabled: false - - # Playbook - - name: remove multiple keys from a provided data - ansible.builtin.set_fact: - data: '{{ interfaces }}' - - debug: - msg: >- - {{ data|ansible.utils.remove_keys(target=['^note$', '^comment'], - matching_parameter= 'regex') }} - - # Output - # TASK [remove multiple keys from a provided data] *********************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": [ - # { - # "duplex": "auto", - # "enabled": true, - # "name": "eth0", - # "note": [ - # "Connected green wire" - # ], - # "speed": "auto" - # }, - # { - # "description": "Configured by Ansible - Interface 1", - # "duplex": "auto", - # "enabled": true, - # "mtu": 1500, - # "name": "eth1", - # "note": [ - # "Connected blue wire", - # "Configured by Paul" - # ], - # "speed": "auto", - # "vifs": [ - # { - # "comment": "Needs reconfiguration", - # "description": "Eth1 - VIF 100", - # "enabled": true, - # "mtu": 400, - # "vlan_id": 100 - # }, - # { - # "description": "Eth1 - VIF 101", - # "enabled": true, - # "vlan_id": 101 - # } - # ] - # }, - # { - # "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", - # "enabled": false, - # "mtu": 600, - # "name": "eth2" - # } - # ] - # }, - # "changed": false - # } - # Read vars_file 'example.yaml' - - # TASK [debug] ***************************************** - # ok: [localhost] => { - # "msg": [ - # { - # "duplex": "auto", - # "enabled": true, - # "name": "eth0", - # "speed": "auto" - # }, - # { - # "description": "Configured by Ansible - Interface 1", - # "duplex": "auto", - # "enabled": true, - # "mtu": 1500, - # "name": "eth1", - # "speed": "auto", - # "vifs": [ - # { - # "description": "Eth1 - VIF 100", - # "enabled": true, - # "mtu": 400, - # "vlan_id": 100 - # }, - # { - # "description": "Eth1 - VIF 101", - # "enabled": true, - # "vlan_id": 101 - # } - # ] - # }, - # { - # "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", - # "enabled": false, - # "mtu": 600, - # "name": "eth2" - # } - # ] - # } - - - - -Status ------- - - -Authors -~~~~~~~ - -- Sagar Paul (@KB-perByte) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.replace_keys_filter.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.replace_keys_filter.rst deleted file mode 100644 index dc73ae1e..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.replace_keys_filter.rst +++ /dev/null @@ -1,394 +0,0 @@ -.. _ansible.utils.replace_keys_filter: - - -************************** -ansible.utils.replace_keys -************************** - -**Replaces specific keys with their after value from a data recursively.** - - -Version added: 2.5.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This plugin replaces specific keys with their after value from a data recursively. -- Matching parameter defaults to equals unless ``matching_parameter`` is explicitly mentioned. -- Using the parameters below- ``data|ansible.utils.replace_keys(target([....]``)) - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- data - -
- raw - / required -
-
- - -
This option represents a list of dictionaries or a dictionary with any level of nesting data.
-
For example config_data|ansible.utils.replace_keys(target([....])), in this case config_data represents this option.
-
-
- matching_parameter - -
- string -
-
-
    Choices: -
  • starts_with
  • -
  • ends_with
  • -
  • regex
  • -
-
- -
Specify the matching configuration of target keys and data attributes.
-
-
- target - -
- list - / elements=dictionary - / required -
-
- - -
Specify the target keys to replace in list of dictionaries format containing before and after key value.
-
-
- after - -
- string -
-
- - -
after attribute key [change to]
-
-
- before - -
- string -
-
- - -
before attribute key [to change]
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - # example.yaml - # interfaces: - # - interface_name: eth0 - # enabled: true - # duplex: auto - # speed: auto - # - interface_name: eth1 - # description: Configured by Ansible - Interface 1 - # mtu: 1500 - # speed: auto - # duplex: auto - # is_enabled: true - # vifs: - # - vlan_id: 100 - # description: Eth1 - VIF 100 - # mtu: 400 - # is_enabled: true - # - vlan_id: 101 - # description: Eth1 - VIF 101 - # is_enabled: true - # - interface_name: eth2 - # description: Configured by Ansible - Interface 2 (ADMIN DOWN) - # mtu: 600 - # is_enabled: false - - # Playbook - - name: replace keys with specified keys dict/list to dict - ansible.builtin.set_fact: - data: '{{ interfaces }}' - - debug: - msg: >- - {{ data|ansible.utils.replace_keys(target=[{'before':'interface_name', - 'after':'name'}, {'before':'is_enabled', 'after':'enabled'}]) }} - - # Output - # TASK [replace keys with specified keys dict/list to dict] ************************* - # ok: [localhost] => { - # "ansible_facts": { - # "data": [ - # { - # "duplex": "auto", - # "enabled": true, - # "interface_name": "eth0", - # "speed": "auto" - # }, - # { - # "description": "Configured by Ansible - Interface 1", - # "duplex": "auto", - # "interface_name": "eth1", - # "is_enabled": true, - # "mtu": 1500, - # "speed": "auto", - # "vifs": [ - # { - # "description": "Eth1 - VIF 100", - # "is_enabled": true, - # "mtu": 400, - # "vlan_id": 100 - # }, - # { - # "description": "Eth1 - VIF 101", - # "is_enabled": true, - # "vlan_id": 101 - # } - # ] - # }, - # { - # "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", - # "interface_name": "eth2", - # "is_enabled": false, - # "mtu": 600 - # } - # ] - # }, - # "changed": false - # } - - # TASK [debug] ********************************************************************** - # ok: [localhost] => { - # "msg": [ - # { - # "duplex": "auto", - # "enabled": true, - # "name": "eth0", - # "speed": "auto" - # }, - # { - # "description": "Configured by Ansible - Interface 1", - # "duplex": "auto", - # "enabled": true, - # "mtu": 1500, - # "name": "eth1", - # "speed": "auto", - # "vifs": [ - # { - # "description": "Eth1 - VIF 100", - # "enabled": true, - # "mtu": 400, - # "vlan_id": 100 - # }, - # { - # "description": "Eth1 - VIF 101", - # "enabled": true, - # "vlan_id": 101 - # } - # ] - # }, - # { - # "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", - # "enabled": false, - # "mtu": 600, - # "name": "eth2" - # } - # ] - # } - - # example.yaml - # interfaces: - # - interface_name: eth0 - # enabled: true - # duplex: auto - # speed: auto - # - interface_name: eth1 - # description: Configured by Ansible - Interface 1 - # mtu: 1500 - # speed: auto - # duplex: auto - # is_enabled: true - # vifs: - # - vlan_id: 100 - # description: Eth1 - VIF 100 - # mtu: 400 - # is_enabled: true - # - vlan_id: 101 - # description: Eth1 - VIF 101 - # is_enabled: true - # - interface_name: eth2 - # description: Configured by Ansible - Interface 2 (ADMIN DOWN) - # mtu: 600 - # is_enabled: false - - # Playbook - - name: replace keys with specified keys dict/list to dict - ansible.builtin.set_fact: - data: '{{ interfaces }}' - - debug: - msg: >- - {{ data|ansible.utils.replace_keys(target=[{'before':'name', - 'after':'name'}, {'before':'enabled', 'after':'enabled'}], - matching_parameter= 'ends_with') }} - - # Output - # TASK [replace keys with specified keys dict/list to dict] ********************************* - # ok: [localhost] => { - # "ansible_facts": { - # "data": [ - # { - # "duplex": "auto", - # "enabled": true, - # "interface_name": "eth0", - # "speed": "auto" - # }, - # { - # "description": "Configured by Ansible - Interface 1", - # "duplex": "auto", - # "interface_name": "eth1", - # "is_enabled": true, - # "mtu": 1500, - # "speed": "auto", - # "vifs": [ - # { - # "description": "Eth1 - VIF 100", - # "is_enabled": true, - # "mtu": 400, - # "vlan_id": 100 - # }, - # { - # "description": "Eth1 - VIF 101", - # "is_enabled": true, - # "vlan_id": 101 - # } - # ] - # }, - # { - # "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", - # "interface_name": "eth2", - # "is_enabled": false, - # "mtu": 600 - # } - # ] - # }, - # "changed": false - # } - - # TASK [debug] *************************************************************************** - # ok: [localhost] => { - # "msg": [ - # { - # "duplex": "auto", - # "enabled": true, - # "name": "eth0", - # "speed": "auto" - # }, - # { - # "description": "Configured by Ansible - Interface 1", - # "duplex": "auto", - # "enabled": true, - # "mtu": 1500, - # "name": "eth1", - # "speed": "auto", - # "vifs": [ - # { - # "description": "Eth1 - VIF 100", - # "enabled": true, - # "mtu": 400, - # "vlan_id": 100 - # }, - # { - # "description": "Eth1 - VIF 101", - # "enabled": true, - # "vlan_id": 101 - # } - # ] - # }, - # { - # "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", - # "enabled": false, - # "mtu": 600, - # "name": "eth2" - # } - # ] - # } - - - - -Status ------- - - -Authors -~~~~~~~ - -- Sagar Paul (@KB-perByte) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.reserved_test.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.reserved_test.rst deleted file mode 100644 index cefd743b..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.reserved_test.rst +++ /dev/null @@ -1,136 +0,0 @@ -.. _ansible.utils.reserved_test: - - -********************** -ansible.utils.reserved -********************** - -**Test for a reserved IP address** - - -Version added: 2.2.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This plugin checks if the provided value is a reserved IP address - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- ip - -
- string - / required -
-
- - -
A string that represents the value against which the test is going to be performed
-
For example: 253.0.0.1 or 128.146.1.7
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - - name: Check if 253.0.0.1 is a reserved IP address - ansible.builtin.set_fact: - data: "{{ '253.0.0.1' is ansible.utils.reserved }}" - - # TASK [Check if 253.0.0.1 is a reserved IP address] ***************************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Check if 128.146.1.7 is not a reserved IP address - ansible.builtin.set_fact: - data: "{{ '128.146.1.7' is not ansible.utils.reserved }}" - - # TASK [Check if 128.146.1.7 is not a reserved IP address] *********************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this test: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- - -
-
-
If jinja test satisfies plugin expression true
-
If jinja test does not satisfy plugin expression false
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Priyam Sahoo (@priyamsahoo) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.resolvable_test.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.resolvable_test.rst deleted file mode 100644 index a1fe6ef1..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.resolvable_test.rst +++ /dev/null @@ -1,176 +0,0 @@ -.. _ansible.utils.resolvable_test: - - -************************ -ansible.utils.resolvable -************************ - -**Test if an IP or name can be resolved via /etc/hosts or DNS** - - -Version added: 2.2.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This plugin checks if the provided IP address of host name can be resolved using /etc/hosts or DNS - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- host - -
- string - / required -
-
- - -
A string that represents the IP address or the host name
-
For example: "docs.ansible.com", 127.0.0.1, or ::1
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - #### Simple examples - - - name: Check if docs.ansible.com is resolvable or not - ansible.builtin.set_fact: - data: "{{ 'docs.ansible.com' is ansible.utils.resolvable }}" - - # TASK [Check if docs.ansible.com is resolvable or not] ********************************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Set host name variables - ansible.builtin.set_fact: - good_name: www.google.com - bad_name: foo.google.com - - - name: Assert good_name's resolvability - assert: - that: "{{ 'www.google.com' is ansible.utils.resolvable }}" - - - name: Assert bad_name's resolvability - assert: - that: "{{ 'foo.google.com' is not ansible.utils.resolvable }}" - - # TASK [Assert good_name's resolvability] ************************************************ - # ok: [localhost] => { - # "changed": false, - # "msg": "All assertions passed" - # } - - # TASK [Assert bad_name's resolvability] ************************************************* - # ok: [localhost] => { - # "changed": false, - # "msg": "All assertions passed" - # } - - - name: Set ip variables - ansible.builtin.set_fact: - ipv4_localhost: "127.0.0.1" - ipv6_localhost: "::1" - - - name: Assert ipv4_localhost's resolvability - assert: - that: "{{ ipv4_localhost is ansible.utils.resolvable }}" - - - name: Assert ipv6_localhost's resolvability - assert: - that: "{{ ipv6_localhost is ansible.utils.resolvable }}" - - # TASK [Assert ipv4_localhost's resolvability] ******************************************* - # ok: [localhost] => { - # "changed": false, - # "msg": "All assertions passed" - # } - - # TASK [Assert ipv6_localhost's resolvability] ******************************************* - # ok: [localhost] => { - # "changed": false, - # "msg": "All assertions passed" - # } - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this test: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- - -
-
-
If jinja test satisfies plugin expression true
-
If jinja test does not satisfy plugin expression false
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Priyam Sahoo (@priyamsahoo) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.slaac_filter.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.slaac_filter.rst deleted file mode 100644 index b5a05745..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.slaac_filter.rst +++ /dev/null @@ -1,140 +0,0 @@ -.. _ansible.utils.slaac_filter: - - -******************* -ansible.utils.slaac -******************* - -**This filter returns the SLAAC address within a network for a given HW/MAC address.** - - -Version added: 2.5.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This filter returns the SLAAC address within a network for a given HW/MAC address. -- The filter slaac() generates an IPv6 address for a given network and a MAC Address in Stateless Configuration. - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- query - -
- string -
-
- - -
nth host
-
-
- value - -
- string - / required -
-
- - -
The network address or range to test against.
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - #### examples - - name: The filter slaac() generates an IPv6 address for a given network and a MAC Address in Stateless Configuration. - debug: - msg: "{{ 'fdcf:1894:23b5:d38c:0000:0000:0000:0000' | slaac('c2:31:b3:83:bf:2b') }}" - - # TASK [The filter slaac() generates an IPv6 address for a given network and a MAC Address in Stateless Configuration.] *** - # task path: /Users/amhatre/ansible-collections/playbooks/test_slaac.yaml:7 - # Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils - # ok: [localhost] => { - # "msg": "fdcf:1894:23b5:d38c:c031:b3ff:fe83:bf2b" - # } - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this filter: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- string -
-
-
Returns the SLAAC address within a network for a given HW/MAC address.
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Ashwini Mhatre (@amhatre) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.subnet_of_test.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.subnet_of_test.rst deleted file mode 100644 index 3248b49e..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.subnet_of_test.rst +++ /dev/null @@ -1,155 +0,0 @@ -.. _ansible.utils.subnet_of_test: - - -*********************** -ansible.utils.subnet_of -*********************** - -**Test if a network is a subnet of another network** - - -Version added: 2.2.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This plugin checks if the first network is a subnet of the second network amongst the provided network addresses - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- network_a - -
- string - / required -
-
- - -
A string that represents the first network address
-
For example: 10.1.1.0/24
-
-
- network_b - -
- string - / required -
-
- - -
A string that represents the second network address
-
For example: 10.0.0.0/8
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - - name: Check if 10.1.1.0/24 is a subnet of 10.0.0.0/8 - ansible.builtin.set_fact: - data: "{{ '10.1.1.0/24' is ansible.utils.subnet_of '10.0.0.0/8' }}" - - # TASK [Check if 10.1.1.0/24 is a subnet of 10.0.0.0/8] ************************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Check if 192.168.1.0/24 is not a subnet of 10.0.0.0/8 - ansible.builtin.set_fact: - data: "{{ '192.168.1.0/24' is not ansible.utils.subnet_of '10.0.0.0/8' }}" - - # TASK [Check if 192.168.1.0/24 is not a subnet of 10.0.0.0/8] ******************* - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this test: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- - -
-
-
If jinja test satisfies plugin expression true
-
If jinja test does not satisfy plugin expression false
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Priyam Sahoo (@priyamsahoo) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.supernet_of_test.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.supernet_of_test.rst deleted file mode 100644 index b6aac515..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.supernet_of_test.rst +++ /dev/null @@ -1,155 +0,0 @@ -.. _ansible.utils.supernet_of_test: - - -************************* -ansible.utils.supernet_of -************************* - -**Test if a network is a supernet of another network** - - -Version added: 2.2.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This plugin checks if the first network is a supernet of the second network amongst the provided network addresses - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- network_a - -
- string - / required -
-
- - -
A string that represents the first network address
-
For example: 10.1.1.0/24
-
-
- network_b - -
- string - / required -
-
- - -
A string that represents the second network address
-
For example: 10.0.0.0/8
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - - name: Check if 10.0.0.0/8 is a supernet of 10.1.1.0/24 - ansible.builtin.set_fact: - data: "{{ '10.0.0.0/8' is ansible.utils.supernet_of '10.1.1.0/24' }}" - - # TASK [Check if 10.0.0.0/8 is a supernet of 10.1.1.0/24] ************************ - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Check if 10.0.0.0/8 is not a supernet of 192.168.1.0/24 - ansible.builtin.set_fact: - data: "{{ '10.0.0.0/8' is not ansible.utils.supernet_of '192.168.1.0/24' }}" - - # TASK [Check if 10.0.0.0/8 is not a supernet of 192.168.1.0/24] ***************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this test: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- - -
-
-
If jinja test satisfies plugin expression true
-
If jinja test does not satisfy plugin expression false
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Priyam Sahoo (@priyamsahoo) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.to_paths_filter.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.to_paths_filter.rst deleted file mode 100644 index 49869c15..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.to_paths_filter.rst +++ /dev/null @@ -1,195 +0,0 @@ -.. _ansible.utils.to_paths_filter: - - -********************** -ansible.utils.to_paths -********************** - -**Flatten a complex object into a dictionary of paths and values** - - -Version added: 1.0.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- Flatten a complex object into a dictionary of paths and values. -- Paths are dot delimited whenever possible. -- Brackets are used for list indices and keys that contain special characters. -- **to_paths** is also available as a **lookup plugin** for convenience. -- Using the parameters below- ``var|ansible.utils.to_paths(prepend, wantlist``) - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- prepend - -
- string -
-
- - -
Prepend each path entry. Useful to add the initial var name.
-
-
- var - -
- raw - / required -
-
- - -
The value of var will be will be used.
-
This option represents the value that is passed to the filter plugin in pipe format.
-
For example config_data|ansible.utils.to_paths(), in this case config_data represents this option.
-
-
- wantlist - -
- boolean -
-
-
    Choices: -
  • no
  • -
  • yes
  • -
-
- -
If set to True, the return value will always be a list.
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - #### Simple examples - - - ansible.builtin.set_fact: - a: - b: - c: - d: - - 0 - - 1 - e: - - true - - false - - - ansible.builtin.set_fact: - paths: "{{ a|ansible.utils.to_paths }}" - - # TASK [ansible.builtin.set_fact] ******************************************** - # ok: [nxos101] => changed=false - # ansible_facts: - # paths: - # b.c.d[0]: 0 - # b.c.d[1]: 1 - # b.c.e[0]: True - # b.c.e[1]: False - - - name: Use prepend to add the initial variable name - ansible.builtin.set_fact: - paths: "{{ a|ansible.utils.to_paths(prepend='a') }}" - - # TASK [Use prepend to add the initial variable name] ************************** - # ok: [nxos101] => changed=false - # ansible_facts: - # paths: - # a.b.c.d[0]: 0 - # a.b.c.d[1]: 1 - # a.b.c.e[0]: True - # a.b.c.e[1]: False - - - #### Using a complex object - - - name: Make an API call - uri: - url: "https://nxos101/restconf/data/openconfig-interfaces:interfaces" - headers: - accept: "application/yang.data+json" - url_password: password - url_username: admin - validate_certs: false - register: result - delegate_to: localhost - - - name: Flatten the complex object - ansible.builtin.set_fact: - paths: "{{ result.json|ansible.utils.to_paths }}" - - # TASK [Flatten the complex object] ****************************************** - # ok: [nxos101] => changed=false - # ansible_facts: - # paths: - # interfaces.interface[0].config.enabled: 'true' - # interfaces.interface[0].config.mtu: '1500' - # interfaces.interface[0].config.name: eth1/71 - # interfaces.interface[0].config.type: ethernetCsmacd - # interfaces.interface[0].ethernet.config['auto-negotiate']: 'true' - # interfaces.interface[0].ethernet.state.counters['in-crc-errors']: '0' - # interfaces.interface[0].ethernet.state.counters['in-fragment-frames']: '0' - # interfaces.interface[0].ethernet.state.counters['in-jabber-frames']: '0' - # interfaces.interface[0].ethernet.state.counters['in-mac-control-frames']: '0' - # <...> - - - - -Status ------- - - -Authors -~~~~~~~ - -- Bradley Thornton (@cidrblock) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.to_paths_lookup.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.to_paths_lookup.rst deleted file mode 100644 index 361a1480..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.to_paths_lookup.rst +++ /dev/null @@ -1,227 +0,0 @@ -.. _ansible.utils.to_paths_lookup: - - -********************** -ansible.utils.to_paths -********************** - -**Flatten a complex object into a dictionary of paths and values** - - -Version added: 1.0.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- Flatten a complex object into a dictionary of paths and values. -- Paths are dot delimited whenever possible. -- Brackets are used for list indices and keys that contain special characters. -- **to_paths** is also available as a filter plugin. -- Using the parameters below- ``lookup('ansible.utils.to_paths', var, prepend, wantlist``) - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- prepend - -
- string -
-
- - -
Prepend each path entry. Useful to add the initial var name.
-
-
- var - -
- raw - / required -
-
- - -
The value of var will be used.
-
-
- wantlist - -
- boolean -
-
-
    Choices: -
  • no
  • -
  • yes
  • -
-
- -
If set to True, the return value will always be a list.
-
This can also be accomplished using query or q instead of lookup.
- -
-
- - - - -Examples --------- - -.. code-block:: yaml - - #### Simple examples - - - ansible.builtin.set_fact: - a: - b: - c: - d: - - 0 - - 1 - e: - - true - - false - - - ansible.builtin.set_fact: - paths: "{{ lookup('ansible.utils.to_paths', a) }}" - - # TASK [ansible.builtin.set_fact] ******************************************** - # ok: [nxos101] => changed=false - # ansible_facts: - # paths: - # b.c.d[0]: 0 - # b.c.d[1]: 1 - # b.c.e[0]: True - # b.c.e[1]: False - - - name: Use prepend to add the initial variable name - ansible.builtin.set_fact: - paths: "{{ lookup('ansible.utils.to_paths', a, prepend='a') }}" - - # TASK [Use prepend to add the initial variable name] ************************** - # ok: [nxos101] => changed=false - # ansible_facts: - # paths: - # a.b.c.d[0]: 0 - # a.b.c.d[1]: 1 - # a.b.c.e[0]: True - # a.b.c.e[1]: False - - - #### Using a complex object - - - name: Make an API call - ansible.builtin.uri: - url: "https://nxos101/restconf/data/openconfig-interfaces:interfaces" - headers: - accept: "application/yang.data+json" - url_password: password - url_username: admin - validate_certs: false - register: result - delegate_to: localhost - - - name: Flatten the complex object - ansible.builtin.set_fact: - paths: "{{ lookup('ansible.utils.to_paths', result.json) }}" - - # TASK [Flatten the complex object] ****************************************** - # ok: [nxos101] => changed=false - # ansible_facts: - # paths: - # interfaces.interface[0].config.enabled: 'true' - # interfaces.interface[0].config.mtu: '1500' - # interfaces.interface[0].config.name: eth1/71 - # interfaces.interface[0].config.type: ethernetCsmacd - # interfaces.interface[0].ethernet.config['auto-negotiate']: 'true' - # interfaces.interface[0].ethernet.state.counters['in-crc-errors']: '0' - # interfaces.interface[0].ethernet.state.counters['in-fragment-frames']: '0' - # interfaces.interface[0].ethernet.state.counters['in-jabber-frames']: '0' - # interfaces.interface[0].ethernet.state.counters['in-mac-control-frames']: '0' - # <...> - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this lookup: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- _raw - -
- - -
-
-
A dictionary of key value pairs.
-
The key is the path.
-
The value is the value.
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Bradley Thornton (@cidrblock) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.to_xml_filter.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.to_xml_filter.rst deleted file mode 100644 index d29fd051..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.to_xml_filter.rst +++ /dev/null @@ -1,260 +0,0 @@ -.. _ansible.utils.to_xml_filter: - - -******************** -ansible.utils.to_xml -******************** - -**Convert given JSON string to XML** - - -Version added: 2.0.2 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This plugin converts the JSON string to XML. -- Using the parameters below- ``data|ansible.utils.to_xml`` - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- data - -
- dictionary - / required -
-
- - -
The input JSON string .
-
This option represents the JSON value that is passed to the filter plugin in pipe format.
-
For example config_data|ansible.utils.to_xml, in this case config_data represents this option.
-
-
- engine - -
- string -
-
- Default:
"xmltodict"
-
- -
Conversion library to use within the filter plugin.
-
-
- full_document - -
- boolean -
-
-
    Choices: -
  • no
  • -
  • yes ←
  • -
-
- -
The option to disable xml declaration(defaults to True).
-
-
- indent - -
- string -
-
-
    Choices: -
  • tabs ←
  • -
  • spaces
  • -
-
- -
The character used for indentation (defaults to tabs).
-
-
- indent_width - -
- integer -
-
- Default:
4
-
- -
The number of spaces to use to indent output data.
-
This option is only used when indent="spaces", otherwise it is ignored.
-
When indent="tabs", a single tab is always used for indentation.
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - #### Simple examples with out any engine. plugin will use default value as xmltodict - - - name: Define JSON data - ansible.builtin.set_fact: - data: - "interface-configurations": - "@xmlns": "http://cisco.com/ns/yang/Cisco-IOS-XR-ifmgr-cfg" - "interface-configuration": - - debug: - msg: "{{ data | ansible.utils.to_xml }}" - - # TASK [Define JSON data ] ************************************************************************* - # task path: /Users/amhatre/ansible-collections/playbooks/test_utils_json_to_xml.yaml:5 - # ok: [localhost] => { - # "ansible_facts": { - # "data": { - # "interface-configurations": { - # "@xmlns": "http://cisco.com/ns/yang/Cisco-IOS-XR-ifmgr-cfg", - # "interface-configuration": null - # } - # } - # }, - # "changed": false - # } - # - # TASK [debug] *********************************************************************************************************** - # task path: /Users/amhatre/ansible-collections/playbooks/test_utils_json_to_xml.yaml:13 - # Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils - # ok: [localhost] => { - # "msg": "\n\n\t\n" - # } - - #### example2 with engine=xmltodict - - - name: Define JSON data - ansible.builtin.set_fact: - data: - "interface-configurations": - "@xmlns": "http://cisco.com/ns/yang/Cisco-IOS-XR-ifmgr-cfg" - "interface-configuration": - - debug: - msg: "{{ data | ansible.utils.to_xml('xmltodict') }}" - - # TASK [Define JSON data ] ************************************************************************* - # task path: /Users/amhatre/ansible-collections/playbooks/test_utils_json_to_xml.yaml:5 - # ok: [localhost] => { - # "ansible_facts": { - # "data": { - # "interface-configurations": { - # "@xmlns": "http://cisco.com/ns/yang/Cisco-IOS-XR-ifmgr-cfg", - # "interface-configuration": null - # } - # } - # }, - # "changed": false - # } - # TASK [debug] *********************************************************************************************************** - # task path: /Users/amhatre/ansible-collections/playbooks/test_utils_json_to_xml.yaml:13 - # Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils - # ok: [localhost] => { - # "msg": "\n\n\t\n" - # } - - #### example3 with indent='spaces' and indent_width=2 - - - name: Define JSON data - ansible.builtin.set_fact: - data: - "interface-configurations": - "@xmlns": "http://cisco.com/ns/yang/Cisco-IOS-XR-ifmgr-cfg" - "interface-configuration": - - debug: - msg: "{{ data | ansible.utils.to_xml(indent='spaces', indent_width=2) }}" - - # TASK [Define JSON data ] ************************************************************************* - # task path: /Users/amhatre/ansible-collections/playbooks/test_utils_json_to_xml.yaml:5 - # ok: [localhost] => { - # "ansible_facts": { - # "data": { - # "interface-configurations": { - # "@xmlns": "http://cisco.com/ns/yang/Cisco-IOS-XR-ifmgr-cfg", - # "interface-configuration": null - # } - # } - # }, - # "changed": false - # } - # TASK [debug] *********************************************************************************************************** - # task path: /Users/amhatre/ansible-collections/playbooks/test_utils_json_to_xml.yaml:13 - # Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils - # ok: [localhost] => { - # "\n\n \n" - # } - - - - -Status ------- - - -Authors -~~~~~~~ - -- Ashwini Mhatre (@amhatre) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.unspecified_test.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.unspecified_test.rst deleted file mode 100644 index 02adbf80..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.unspecified_test.rst +++ /dev/null @@ -1,162 +0,0 @@ -.. _ansible.utils.unspecified_test: - - -************************* -ansible.utils.unspecified -************************* - -**Test for an unspecified IP address** - - -Version added: 2.2.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This plugin checks if the provided value is an unspecified IP address - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- ip - -
- string - / required -
-
- - -
A string that represents the value against which the test is going to be performed
-
For example: 0.0.0.0, 0:0:0:0:0:0:0:0, ::, or ::1
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - #### Simple examples - - - name: Check if 0.0.0.0 is an unspecified IP address - ansible.builtin.set_fact: - data: "{{ '0.0.0.0' is ansible.utils.unspecified }}" - - # TASK [Check if 0.0.0.0 is an unspecified IP address] *************************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Check if 0:0:0:0:0:0:0:0 is an unspecified IP address - ansible.builtin.set_fact: - data: "{{ '0:0:0:0:0:0:0:0' is ansible.utils.unspecified }}" - - # TASK [Check if 0:0:0:0:0:0:0:0 is an unspecified IP address] ******************* - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Check if "::" is an unspecified IP address - ansible.builtin.set_fact: - data: "{{ '::' is ansible.utils.unspecified }}" - - # TASK [Check if "::" is an unspecified IP address] ****************************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - name: Check if ::1 is not an unspecified IP address - ansible.builtin.set_fact: - data: "{{ '::1' is not ansible.utils.unspecified }}" - - # TASK [Check if ::1 is not an unspecified IP address] *************************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": true - # }, - # "changed": false - # } - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this test: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- - -
-
-
If jinja test satisfies plugin expression true
-
If jinja test does not satisfy plugin expression false
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Priyam Sahoo (@priyamsahoo) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.update_fact_module.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.update_fact_module.rst deleted file mode 100644 index c134edd4..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.update_fact_module.rst +++ /dev/null @@ -1,405 +0,0 @@ -.. _ansible.utils.update_fact_module: - - -************************* -ansible.utils.update_fact -************************* - -**Update currently set facts** - - -Version added: 1.0.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- This module allows updating existing variables. -- Variables are updated on a host-by-host basis. -- Variables are not modified in place, instead they are returned by the module. - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsComments
-
- updates - -
- list - / elements=dictionary - / required -
-
- -
A list of dictionaries, each a desired update to make.
-
-
- path - -
- string - / required -
-
- -
The path in a currently set variable to update.
-
The path can be in dot or bracket notation.
-
It should be a valid jinja reference.
-
-
- value - -
- raw - / required -
-
- -
The value to be set at the path.
-
Can be a simple or complex data structure.
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - # Update an existing fact, dot or bracket notation - - name: Set a fact - ansible.builtin.set_fact: - a: - b: - c: - - 1 - - 2 - - - name: Update the fact - ansible.utils.update_fact: - updates: - - path: a.b.c.0 - value: 10 - - path: "a['b']['c'][1]" - value: 20 - register: updated - - - debug: - var: updated.a - - # updated: - # a: - # b: - # c: - # - 10 - # - 20 - # changed: true - - - # Lists can be appended, new keys added to dictionaries - - - name: Set a fact - ansible.builtin.set_fact: - a: - b: - b1: - - 1 - - 2 - - - name: Update, add to list, add new key - ansible.utils.update_fact: - updates: - - path: a.b.b1.2 - value: 3 - - path: a.b.b2 - value: - - 10 - - 20 - - 30 - register: updated - - - debug: - var: updated.a - - # updated: - # a: - # b: - # b1: - # - 1 - # - 2 - # - 3 - # b2: - # - 10 - # - 20 - # - 30 - # changed: true - - ##################################################################### - # Update every item in a list of dictionaries - # build the update list ahead of time using a loop - # and then apply the changes to the fact - ##################################################################### - - - name: Set fact - ansible.builtin.set_fact: - addresses: - - raw: 10.1.1.0/255.255.255.0 - name: servers - - raw: 192.168.1.0/255.255.255.0 - name: printers - - raw: 8.8.8.8 - name: dns - - - name: Build a list of updates - ansible.builtin.set_fact: - update_list: "{{ update_list + update }}" - loop: "{{ addresses }}" - loop_control: - index_var: idx - vars: - update_list: [] - update: - - path: addresses[{{ idx }}].network - value: "{{ item['raw'] | ansible.netcommon.ipaddr('network') }}" - - path: addresses[{{ idx }}].prefix - value: "{{ item['raw'] | ansible.netcommon.ipaddr('prefix') }}" - - - debug: - var: update_list - - # TASK [debug] ******************* - # ok: [localhost] => - # update_list: - # - path: addresses[0].network - # value: 10.1.1.0 - # - path: addresses[0].prefix - # value: '24' - # - path: addresses[1].network - # value: 192.168.1.0 - # - path: addresses[1].prefix - # value: '24' - # - path: addresses[2].network - # value: 8.8.8.8 - # - path: addresses[2].prefix - # value: '32' - - - name: Make the updates - ansible.utils.update_fact: - updates: "{{ update_list }}" - register: updated - - - debug: - var: updated - - # TASK [debug] *********************** - # ok: [localhost] => - # updated: - # addresses: - # - name: servers - # network: 10.1.1.0 - # prefix: '24' - # raw: 10.1.1.0/255.255.255.0 - # - name: printers - # network: 192.168.1.0 - # prefix: '24' - # raw: 192.168.1.0/255.255.255.0 - # - name: dns - # network: 8.8.8.8 - # prefix: '32' - # raw: 8.8.8.8 - # changed: true - # failed: false - - - ##################################################################### - # Retrieve, update, and apply interface description change - # use index_of to locate Etherent1/1 - ##################################################################### - - - name: Get the current interface config - cisco.nxos.nxos_interfaces: - state: gathered - register: interfaces - - - name: Update the description of Ethernet1/1 - ansible.utils.update_fact: - updates: - - path: "interfaces.gathered[{{ index }}].description" - value: "Configured by ansible" - vars: - index: "{{ interfaces.gathered|ansible.utils.index_of('eq', 'Ethernet1/1', 'name') }}" - register: updated - - - name: Update the configuration - cisco.nxos.nxos_interfaces: - config: "{{ updated.interfaces.gathered }}" - state: overridden - register: result - - - name: Show the commands issued - debug: - msg: "{{ result['commands'] }}" - - # TASK [Show the commands issued] ************************************* - # ok: [nxos101] => { - # "msg": [ - # "interface Ethernet1/1", - # "description Configured by ansible" - # ] - # } - - - ##################################################################### - # Retrieve, update, and apply an ipv4 ACL change - # finding the index of AFI ipv4 acls - # finding the index of the ACL named 'test1' - # finding the index of sequence 10 - ##################################################################### - - - name: Retrieve the current acls - arista.eos.eos_acls: - state: gathered - register: current - - - name: Update the source of sequence 10 in the IPv4 ACL named test1 - ansible.utils.update_fact: - updates: - - path: current.gathered[{{ afi }}].acls[{{ acl }}].aces[{{ ace }}].source - value: - subnet_address: "192.168.2.0/24" - vars: - afi: "{{ current.gathered|ansible.utils.index_of('eq', 'ipv4', 'afi') }}" - acl: "{{ current.gathered[afi|int].acls|ansible.utils.index_of('eq', 'test1', 'name') }}" - ace: "{{ current.gathered[afi|int].acls[acl|int].aces|ansible.utils.index_of('eq', 10, 'sequence') }}" - register: updated - - - name: Apply the changes - arista.eos.eos_acls: - config: "{{ updated.current.gathered }}" - state: overridden - register: changes - - - name: Show the commands issued - debug: - msg: "{{ changes['commands'] }}" - - # TASK [Show the commands issued] ************************************* - # ok: [eos101] => { - # "msg": [ - # "ip access-list test1", - # "no 10", - # "10 permit ip 192.168.2.0/24 host 10.1.1.2" - # ] - # } - - - ##################################################################### - # Disable ip redirects on any layer3 interface - # find the layer 3 interfaces - # use each name to find their index in l3 interface - # build an 'update' list and apply the updates - ##################################################################### - - - name: Get the current interface and L3 interface configuration - cisco.nxos.nxos_facts: - gather_subset: min - gather_network_resources: - - interfaces - - l3_interfaces - - - name: Build the list of updates to make - ansible.builtin.set_fact: - updates: "{{ updates + [entry] }}" - vars: - updates: [] - entry: - path: "ansible_network_resources.l3_interfaces[{{ item }}].redirects" - value: false - w_mode: "{{ ansible_network_resources.interfaces|selectattr('mode', 'defined') }}" - m_l3: "{{ w_mode|selectattr('mode', 'eq', 'layer3') }}" - names: "{{ m_l3|map(attribute='name')|list }}" - l3_indicies: "{{ ansible_network_resources.l3_interfaces|ansible.utils.index_of('in', names, 'name', wantlist=True) }}" - loop: "{{ l3_indicies }}" - - # TASK [Build the list of updates to make] **************************** - # ok: [nxos101] => (item=99) => changed=false - # ansible_facts: - # updates: - # - path: ansible_network_resources.l3_interfaces[99].redirects - # value: false - # ansible_loop_var: item - # item: 99 - - - name: Update the l3 interfaces - ansible.utils.update_fact: - updates: "{{ updates }}" - register: updated - - # TASK [Update the l3 interfaces] ************************************* - # changed: [nxos101] => changed=true - # ansible_network_resources: - # l3_interfaces: - # <...> - # - ipv4: - # - address: 10.1.1.1/24 - # name: Ethernet1/100 - # redirects: false - - - name: Apply the configuration changes - cisco.nxos.l3_interfaces: - config: "{{ updated.ansible_network_resources.l3_interfaces }}" - state: overridden - register: changes - - # TASK [Apply the configuration changes] ****************************** - # changed: [nxos101] => changed=true - # commands: - # - interface Ethernet1/100 - # - no ip redirects - - - - -Status ------- - - -Authors -~~~~~~~ - -- Bradley Thornton (@cidrblock) diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.usable_range_filter.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.usable_range_filter.rst deleted file mode 100644 index 664ba006..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.usable_range_filter.rst +++ /dev/null @@ -1,213 +0,0 @@ -.. _ansible.utils.usable_range_filter: - - -************************** -ansible.utils.usable_range -************************** - -**Expand the usable IP addresses** - - -Version added: 2.3.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- For a given IP address (IPv4 or IPv6) in CIDR form, the plugin generates a list of usable IP addresses belonging to the network. - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- ip - -
- string - / required -
-
- - -
A string that represents an IP address of network in CIDR form
-
For example: 10.0.0.0/24 or 2001:db8:abcd:0012::0/124
-
-
- - - - -Examples --------- - -.. code-block:: yaml - - #### Simple examples - - - name: Expand and produce list of usable IP addresses in 10.0.0.0/28 - ansible.builtin.set_fact: - data: "{{ '10.0.0.0/28' | ansible.utils.usable_range }}" - - # TASK [Expand and produce list of usable IP addresses in 10.0.0.0/28] ************************ - # ok: [localhost] => { - # "ansible_facts": { - # "data": { - # "number_of_ips": 16, - # "usable_ips": [ - # "10.0.0.0", - # "10.0.0.1", - # "10.0.0.2", - # "10.0.0.3", - # "10.0.0.4", - # "10.0.0.5", - # "10.0.0.6", - # "10.0.0.7", - # "10.0.0.8", - # "10.0.0.9", - # "10.0.0.10", - # "10.0.0.11", - # "10.0.0.12", - # "10.0.0.13", - # "10.0.0.14", - # "10.0.0.15" - # ] - # } - # }, - # "changed": false - # } - - - name: Expand and produce list of usable IP addresses in 2001:db8:abcd:0012::0/126 - ansible.builtin.set_fact: - data1: "{{ '2001:db8:abcd:0012::0/126' | ansible.utils.usable_range }}" - - # TASK [Expand and produce list of usable IP addresses in 2001:db8:abcd:0012::0/126] *** - # ok: [localhost] => { - # "ansible_facts": { - # "data1": { - # "number_of_ips": 4, - # "usable_ips": [ - # "2001:db8:abcd:12::", - # "2001:db8:abcd:12::1", - # "2001:db8:abcd:12::2", - # "2001:db8:abcd:12::3" - # ] - # } - # }, - # "changed": false - # } - - - name: Expand and produce list of usable IP addresses in 10.1.1.1 - ansible.builtin.set_fact: - data: "{{ '10.1.1.1' | ansible.utils.usable_range }}" - - # TASK [Expand and produce list of usable IP addresses in 10.1.1.1] *************************** - # ok: [localhost] => { - # "ansible_facts": { - # "data": { - # "number_of_ips": 1, - # "usable_ips": [ - # "10.1.1.1" - # ] - # } - # }, - # "changed": false - # } - - #### Simple Use-case (looping through the list result) - - - name: Expand and produce list of usable IP addresses in 127.0.0.0/28 - ansible.builtin.set_fact: - data1: "{{ '127.0.0.0/28' | ansible.utils.usable_range }}" - - - name: Ping all but first IP addresses from the generated list - shell: "ping -c 1 {{ item }}" - loop: "{{ data1.usable_ips[1:] }}" - - # TASK [Expand and produce list of usable IP addresses in 127.0.0.0/28] ****************************** - # ok: [localhost] - - # TASK [Ping all but first IP addresses from the generated list] ************************************* - # changed: [localhost] => (item=127.0.0.1) - # changed: [localhost] => (item=127.0.0.2) - # changed: [localhost] => (item=127.0.0.3) - # changed: [localhost] => (item=127.0.0.4) - # changed: [localhost] => (item=127.0.0.5) - # changed: [localhost] => (item=127.0.0.6) - # changed: [localhost] => (item=127.0.0.7) - # changed: [localhost] => (item=127.0.0.8) - # changed: [localhost] => (item=127.0.0.9) - # changed: [localhost] => (item=127.0.0.10) - # changed: [localhost] => (item=127.0.0.11) - # changed: [localhost] => (item=127.0.0.12) - # changed: [localhost] => (item=127.0.0.13) - # changed: [localhost] => (item=127.0.0.14) - # changed: [localhost] => (item=127.0.0.15) - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this filter: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- data - -
- - -
-
-
Total number of usable IP addresses under the key number_of_ips
-
List of usable IP addresses under the key usable_ips
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Priyam Sahoo (@priyamsahoo) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.validate_filter.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.validate_filter.rst deleted file mode 100644 index 7e1a8404..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.validate_filter.rst +++ /dev/null @@ -1,171 +0,0 @@ -.. _ansible.utils.validate_filter: - - -********************** -ansible.utils.validate -********************** - -**Validate data with provided criteria** - - -Version added: 1.0.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- Validate *data* with provided *criteria* based on the validation *engine*. - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- criteria - -
- raw - / required -
-
- - -
The criteria used for validation of value that represents data options.
-
This option represents the first argument passed in the filter plugin. For example config_data|ansible.utils.validate(config_criteria), in this case the value of config_criteria represents this option.
-
For the type of criteria that represents this value refer to the documentation of individual validator plugins.
-
-
- data - -
- raw - / required -
-
- - -
Data that will be validated against criteria.
-
This option represents the value that is passed to the filter plugin in pipe format. For example config_data|ansible.utils.validate(), in this case config_data represents this option.
-
For the type of data that represents this value refer to the documentation of individual validator plugins.
-
-
- engine - -
- string -
-
- Default:
"ansible.utils.jsonschema"
-
- -
The name of the validator plugin to use.
-
This option can be passed in lookup plugin as a key, value pair. For example config_data|ansible.utils.validate(config_criteria, engine='ansible.utils.jsonschema'), in this case the value ansible.utils.jsonschema represents the engine to be use for data validation. If the value is not provided the default value that is ansible.utils.jsonschema will be used.
-
The value should be in fully qualified collection name format that is <org-name>.<collection-name>.<validator-plugin-name>.
-
-
- - -Notes ------ - -.. note:: - - For the type of options *data* and *criteria* refer to the individual validate plugin documentation that is represented in the value of *engine* option. - - For additional plugin configuration options refer to the individual validate plugin documentation that is represented by the value of *engine* option. - - The plugin configuration option can be either passed as ``key=value`` pairs within filter plugin or environment variables. - - The precedence of the *validate* plugin configurable option is the variable passed within filter plugin as ``key=value`` pairs followed by the environment variables. - - - -Examples --------- - -.. code-block:: yaml - - - name: set facts for data and criteria - ansible.builtin.set_fact: - data: "{{ lookup('ansible.builtin.file', './validate/data/show_interfaces_iosxr.json')}}" - criteria: "{{ lookup('ansible.builtin.file', './validate/criteria/jsonschema/show_interfaces_iosxr.json')}}" - - - name: validate data in json format using jsonschema by passing plugin configuration variable as key/value pairs - ansible.builtin.set_fact: - data_validity: "{{ data|ansible.utils.validate(criteria, engine='ansible.utils.jsonschema', draft='draft7') }}" - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this filter: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- _raw - -
- - -
-
-
If data is valid returns empty list
-
If data is invalid returns list of errors in data
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Ganesh Nalawade (@ganeshrn) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.validate_lookup.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.validate_lookup.rst deleted file mode 100644 index b9fa3045..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.validate_lookup.rst +++ /dev/null @@ -1,177 +0,0 @@ -.. _ansible.utils.validate_lookup: - - -********************** -ansible.utils.validate -********************** - -**Validate data with provided criteria** - - -Version added: 1.0.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- Validate *data* with provided *criteria* based on the validation *engine*. - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- criteria - -
- raw - / required -
-
- - -
The criteria used for validation of value that represents data options.
-
This option represents the second argument passed in the lookup plugin For example lookup(config_data, config_criteria, engine='ansible.utils.jsonschema'), in this case the value of config_criteria represents this option.
-
For the type of criteria that represents this value refer to the documentation of individual validate plugins.
-
-
- data - -
- raw - / required -
-
- - -
Data that will be validated against criteria.
-
This option represents the value that is passed to the lookup plugin as the first argument. For example lookup(config_data, config_criteria, engine='ansible.utils.jsonschema'), in this case config_data represents this option.
-
For the type of data that represents this value refer to the documentation of individual validate plugins.
-
-
- engine - -
- string -
-
- Default:
"ansible.utils.jsonschema"
-
- -
The name of the validate plugin to use.
-
This option can be passed in lookup plugin as a key, value pair. For example lookup(config_data, config_criteria, engine='ansible.utils.jsonschema'), in this case the value ansible.utils.jsonschema represents the engine to be use for data validation. If the value is not provided the default value that is ansible.utils.jsonschema will be used.
-
The value should be in fully qualified collection name format that is <org-name>.<collection-name>.<validate-plugin-name>.
-
-
- - -Notes ------ - -.. note:: - - For the type of options *data* and *criteria* refer to the individual validate plugin documentation that is represented in the value of *engine* option. - - For additional plugin configuration options refer to the individual validate plugin documentation that is represented by the value of *engine* option. - - The plugin configuration option can be either passed as ``key=value`` pairs within lookup plugin or task or environment variables. - - The precedence the validate plugin configurable option is the variable passed within lookup plugin as ``key=value`` pairs followed by task variables followed by environment variables. - - - -Examples --------- - -.. code-block:: yaml - - - name: set facts for data and criteria - ansible.builtin.set_fact: - data: "{{ lookup('ansible.builtin.file', './validate/data/show_interfaces_iosxr.json') }}" - criteria: "{{ lookup('ansible.builtin.file', './validate/criteria/jsonschema/show_interfaces_iosxr.json') }}" - - - name: validate data in json format using jsonschema with lookup plugin by passing plugin configuration variable as key/value pairs - ansible.builtin.set_fact: - data_criteria_checks: "{{ lookup('ansible.utils.validate', data, criteria, engine='ansible.utils.jsonschema', draft='draft7') }}" - - - name: validate data in json format using jsonschema with lookup plugin by passing plugin configuration variable as task variable - ansible.builtin.set_fact: - data_criteria_checks: "{{ lookup('ansible.utils.validate', data, criteria, engine='ansible.utils.jsonschema', draft='draft7') }}" - vars: - ansible_validate_jsonschema_draft: draft3 - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this lookup: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- _raw - -
- - -
-
-
If data is valid returns empty list.
-
If data is invalid returns list of errors in data.
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Ganesh Nalawade (@ganeshrn) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.validate_module.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.validate_module.rst deleted file mode 100644 index 6948e39e..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.validate_module.rst +++ /dev/null @@ -1,182 +0,0 @@ -.. _ansible.utils.validate_module: - - -********************** -ansible.utils.validate -********************** - -**Validate data with provided criteria** - - -Version added: 1.0.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- Validate data with provided criteria based on the validation engine. - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsComments
-
- criteria - -
- raw - / required -
-
- -
The criteria used for validation of data. For the type of criteria refer to the documentation of individual validate plugins.
-
-
- data - -
- raw - / required -
-
- -
Data that will be validated against criteria. For the type of data refer to the documentation of individual validate plugins.
-
-
- engine - -
- string -
-
- Default:
"ansible.utils.jsonschema"
-
-
The name of the validate plugin to use. The engine value should follow the fully qualified collection name format, that is <org-name>.<collection-name>.<validate-plugin-name>.
-
-
- - -Notes ------ - -.. note:: - - For the type of options *data* and *criteria* refer to the individual validate plugin documentation that is represented in the value of *engine* option. - - For additional plugin configuration options refer to the individual validate plugin documentation that is represented by the value of *engine* option. - - The plugin configuration option can be either passed as task or environment variables. - - The precedence of the validate plugin configurable option is task variables followed by the environment variables. - - - -Examples --------- - -.. code-block:: yaml - - - name: set facts for data and criteria - ansible.builtin.set_fact: - data: "{{ lookup('ansible.builtin.file', './validate/data/show_interfaces_iosxr.json') }}" - criteria: "{{ lookup('ansible.builtin.file', './validate/criteria/jsonschema/show_interfaces_iosxr.json') }}" - - - name: validate data in with jsonschema engine (by passing task vars as configurable plugin options) - ansible.utils.validate: - data: "{{ data }}" - criteria: "{{ criteria }}" - engine: ansible.utils.jsonschema - vars: - ansible_jsonschema_draft: draft7 - - - name: validate configuration with config plugin (see config plugin for criteria examples) - ansible.utils.validate: - data: "{{ lookup('ansible.builtin.file', './backup/eos.config') }}" - criteria: "{{ lookup('ansible.builtin.file', './validate/criteria/config/eos_config_rules.yaml') }}" - engine: ansible.utils.config - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this module: - -.. raw:: html - - - - - - - - - - - - - - - - - -
KeyReturnedDescription
-
- errors - -
- list - / elements=string -
-
when data value is invalid -
The list of errors in data based on the criteria.
-
-
-
- msg - -
- string -
-
always -
The msg indicates if the data is valid as per the criteria.
-
In case data is valid return success message all checks passed.
-
In case data is invalid return error message Validation errors were found along with more information on error is available.
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Bradley Thornton (@cidrblock) -- Ganesh Nalawade (@ganeshrn) diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.validate_test.rst b/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.validate_test.rst deleted file mode 100644 index c218b43c..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/ansible.utils.validate_test.rst +++ /dev/null @@ -1,171 +0,0 @@ -.. _ansible.utils.validate_test: - - -********************** -ansible.utils.validate -********************** - -**Validate data with provided criteria** - - -Version added: 1.0.0 - -.. contents:: - :local: - :depth: 1 - - -Synopsis --------- -- Validate *data* with provided *criteria* based on the validation *engine*. - - - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsConfigurationComments
-
- criteria - -
- raw - / required -
-
- - -
The criteria used for validation of value that represents data options.
-
This option is passed to the test plugin as key, value pair For example config_data is ansible.utils.validate(criteria=criteria), in this case the value of criteria key represents this criteria for data validation.
-
For the type of criteria that represents this value refer documentation of individual validate plugins.
-
-
- data - -
- raw - / required -
-
- - -
A data that will be validated against criteria.
-
This option represents the value that is passed to test plugin as check. For example config_data is ansible.utils.validate(criteria=criteria, in this case config_data represents this option.
-
For the type of data that represents this value refer documentation of individual validate plugins.
-
-
- engine - -
- string -
-
- Default:
"ansible.utils.jsonschema"
-
- -
The name of the validate plugin to use.
-
This option can be passed in test plugin as a key, value pair For example config_data is ansible.utils.validate(engine='ansible.utils.jsonschema', criteria=criteria), in this case the value of engine key represents the engine to be use for data validation. If the value is not provided the default value that is ansible.utils.jsonschema will be used.
-
The value should be in fully qualified collection name format that is <org-name>.<collection-name>.<validate-plugin-name>.
-
-
- - -Notes ------ - -.. note:: - - For the type of options *data* and *criteria* refer the individual validate plugin documentation that is represented in the value of *engine* option. - - For additional plugin configuration options refer the individual validate plugin documentation that is represented by the value of *engine* option. - - The plugin configuration option can be either passed as ``key=value`` pairs within test plugin or set as environment variables. - - The precedence the validate plugin configurable option is the variable passed within test plugin as ``key=value`` pairs followed by task variables followed by environment variables. - - - -Examples --------- - -.. code-block:: yaml - - - name: set facts for data and criteria - ansible.builtin.set_fact: - data: "{{ lookup('ansible.builtin.file', './validate/data/show_interfaces_iosxr.json')}}" - criteria: "{{ lookup('ansible.builtin.file', './validate/criteria/jsonschema/show_interfaces_iosxr.json')}}" - - - name: validate data in json format using jsonschema with test plugin - ansible.builtin.set_fact: - is_data_valid: "{{ data is ansible.utils.validate(engine='ansible.utils.jsonschema', criteria=criteria, draft='draft7') }}" - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this test: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- _raw - -
- - -
-
-
If data is valid return true
-
If data is invalid return false
-
-
-

- - -Status ------- - - -Authors -~~~~~~~ - -- Ganesh Nalawade (@ganeshrn) - - -.. hint:: - Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/docsite/extra-docs.yml b/ansible/collections/ansible_collections/ansible/utils/docs/docsite/extra-docs.yml deleted file mode 100644 index 6e4d8a41..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/docsite/extra-docs.yml +++ /dev/null @@ -1,5 +0,0 @@ ---- -sections: - - title: ansible.utils Scenario Guide - toctree: - - filters_ipaddr diff --git a/ansible/collections/ansible_collections/ansible/utils/docs/docsite/rst/filters_ipaddr.rst b/ansible/collections/ansible_collections/ansible/utils/docs/docsite/rst/filters_ipaddr.rst deleted file mode 100644 index 79ede7a9..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/docs/docsite/rst/filters_ipaddr.rst +++ /dev/null @@ -1,854 +0,0 @@ - - -Using the ipaddr filter -======================== - - -``ipaddr()`` is a Jinja2 filter designed to provide an interface to the `netaddr `_ -Python package from within Ansible. It can operate on strings or lists of -items, test various data to check if they are valid IP addresses, and manipulate -the input data to extract requested information. ``ipaddr()`` works with both -IPv4 and IPv6 addresses in various forms. There are also additional functions -available to manipulate IP subnets and MAC addresses. - -.. note:: - - The ``ipaddr()`` filter migrated to the `ansible.utils `_ collection. Follow the installation instructions to install that collection. - -To use this filter in Ansible, you need to install the ``netaddr`` Python library on -a computer on which you use Ansible (it is not required on remote hosts). -It can usually be installed with either your system package manager or using -``pip``: - -.. code-block:: bash - - pip install netaddr - -.. contents:: Topics - :local: - :depth: 2 - :backlinks: top - - -Basic tests -^^^^^^^^^^^ - -``ipaddr()`` is designed to return the input value if a query is True, and -``False`` if a query is False. This way it can be easily used in chained -filters. To use the filter, pass a string to it: - -.. code-block:: none - - {{ '192.0.2.0' | ansible.utils.ipaddr }} - -You can also pass the values as variables: - -.. code-block:: yaml+jinja - - {{ myvar | ansible.utils.ipaddr }} - -Here are some example test results of various input strings: - -.. code-block:: none - - # These values are valid IP addresses or network ranges - '192.168.0.1' -> 192.168.0.1 - '192.168.32.0/24' -> 192.168.32.0/24 - 'fe80::100/10' -> fe80::100/10 - 45443646733 -> ::a:94a7:50d - '523454/24' -> 0.7.252.190/24 - - # Values that are not valid IP addresses or network ranges - 'localhost' -> False - True -> False - 'space bar' -> False - False -> False - '' -> False - ':' -> False - 'fe80:/10' -> False - -Sometimes you need either IPv4 or IPv6 addresses. To filter only for a particular -type, ``ipaddr()`` filter has two "aliases", ``ipv4()`` and ``ipv6()``. - -Example use of an IPv4 filter: - -.. code-block:: yaml+jinja - - {{ myvar | ansible.utils.ipv4 }} - -A similar example of an IPv6 filter: - -.. code-block:: yaml+jinja - - {{ myvar | ansible.utils.ipv6 }} - -Here's some example test results to look for IPv4 addresses: - -.. code-block:: none - - '192.168.0.1' -> 192.168.0.1 - '192.168.32.0/24' -> 192.168.32.0/24 - 'fe80::100/10' -> False - 45443646733 -> False - '523454/24' -> 0.7.252.190/24 - -And the same data filtered for IPv6 addresses: - -.. code-block:: none - - '192.168.0.1' -> False - '192.168.32.0/24' -> False - 'fe80::100/10' -> fe80::100/10 - 45443646733 -> ::a:94a7:50d - '523454/24' -> False - - -Filtering lists -^^^^^^^^^^^^^^^ - -You can filter entire lists - ``ipaddr()`` will return a list with values -valid for a particular query. - -.. code-block:: yaml+jinja - - # Example list of values - test_list: ['192.24.2.1', 'host.fqdn', '::1', '192.168.32.0/24', 'fe80::100/10', True, '', '42540766412265424405338506004571095040/64'] - - # {{ test_list | ansible.utils.ipaddr }} - ['192.24.2.1', '::1', '192.168.32.0/24', 'fe80::100/10', '2001:db8:32c:faad::/64'] - - # {{ test_list | ansible.utils.ipv4 }} - ['192.24.2.1', '192.168.32.0/24'] - - # {{ test_list | ansible.utils.ipv6 }} - ['::1', 'fe80::100/10', '2001:db8:32c:faad::/64'] - - -Wrapping IPv6 addresses in [ ] brackets -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -Some configuration files require IPv6 addresses to be "wrapped" in square -brackets (``[ ]``). To accomplish that, you can use the ``ipwrap()`` filter. It -will wrap all IPv6 addresses and leave any other strings intact. - -.. code-block:: yaml+jinja - - # {{ test_list | ansible.utils.ipwrap }} - ['192.24.2.1', 'host.fqdn', '[::1]', '192.168.32.0/24', '[fe80::100]/10', True, '', '[2001:db8:32c:faad::]/64'] - -As you can see, ``ipwrap()`` did not filter out non-IP address values, which is -usually what you want when for example you are mixing IP addresses with -hostnames. If you still want to filter out all non-IP address values, you can -chain both filters together. - -.. code-block:: yaml+jinja - - # {{ test_list | ansible.utils.ipaddr | ansible.utils.ipwrap }} - ['192.24.2.1', '[::1]', '192.168.32.0/24', '[fe80::100]/10', '[2001:db8:32c:faad::]/64'] - - -Basic queries -^^^^^^^^^^^^^ - -You can provide a single argument to each ``ipaddr()`` filter. The filter will then -treat it as a query and return values modified by that query. Lists will -contain only values that you are querying for. - -Types of queries include: - -- query by name: ``ansible.utils.ipaddr('address')``, ``ansible.utils.ipv4('network')``; -- query by CIDR range: ``ansible.utils.ipaddr('192.168.0.0/24')``, ``ansible.utils.ipv6('2001:db8::/32')``; -- query by index number: ``ansible.utils.ipaddr('1')``, ``ansible.utils.ipaddr('-1')``; - -If a query type is not recognized, Ansible will raise an error. - - -Getting information about hosts and networks -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -Here's our test list again: - -.. code-block:: yaml+jinja - - # Example list of values - test_list: ['192.24.2.1', 'host.fqdn', '::1', '192.168.32.0/24', 'fe80::100/10', True, '', '42540766412265424405338506004571095040/64'] - -Let's take the list above and get only those elements that are host IP addresses -and not network ranges: - -.. code-block:: yaml+jinja - - # {{ test_list | ansible.utils.ipaddr('address') }} - ['192.24.2.1', '::1', 'fe80::100'] - -As you can see, even though some values had a host address with a CIDR prefix, -they were dropped by the filter. If you want host IP addresses with their correct -CIDR prefixes (as is common with IPv6 addressing), you can use the -``ipaddr('host')`` filter. - -.. code-block:: yaml+jinja - - # {{ test_list | ansible.utils.ipaddr('host') }} - ['192.24.2.1/32', '::1/128', 'fe80::100/10'] - -Filtering by IP address type also works. - -.. code-block:: yaml+jinja - - # {{ test_list | ansible.utils.ipv4('address') }} - ['192.24.2.1'] - - # {{ test_list | ansible.utils.ipv6('address') }} - ['::1', 'fe80::100'] - -You can check if IP addresses or network ranges are accessible on a public -Internet, or if they are in private networks: - -.. code-block:: yaml+jinja - - # {{ test_list | ansible.utils.ipaddr('public') }} - ['192.24.2.1', '2001:db8:32c:faad::/64'] - - # {{ test_list | ansible.utils.ipaddr('private') }} - ['192.168.32.0/24', 'fe80::100/10'] - -You can check which values are specifically network ranges: - -.. code-block:: yaml+jinja - - # {{ test_list | ansible.utils.ipaddr('net') }} - ['192.168.32.0/24', '2001:db8:32c:faad::/64'] - -You can also check how many IP addresses can be in a certain range. - -.. code-block:: yaml+jinja - - # {{ test_list | ansible.utils.ipaddr('net') | ansible.utils.ipaddr('size') }} - [256, 18446744073709551616L] - -By specifying a network range as a query, you can check if a given value is in -that range. - -.. code-block:: yaml+jinja - - # {{ test_list | ansible.utils.ipaddr('192.0.0.0/8') }} - ['192.24.2.1', '192.168.32.0/24'] - -If you specify a positive or negative integer as a query, ``ipaddr()`` will -treat this as an index and will return the specific IP address from a network -range, in the 'host/prefix' format. - -.. code-block:: yaml+jinja - - # First IP address (network address) - # {{ test_list | ansible.utils.ipaddr('net') | ansible.utils.ipaddr('0') }} - ['192.168.32.0/24', '2001:db8:32c:faad::/64'] - - # Second IP address (usually the gateway host) - # {{ test_list | ansible.utils.ipaddr('net') | ansible.utils.ipaddr('1') }} - ['192.168.32.1/24', '2001:db8:32c:faad::1/64'] - - # Last IP address (the broadcast address in IPv4 networks) - # {{ test_list | ansible.utils.ipaddr('net') | ansible.utils.ipaddr('-1') }} - ['192.168.32.255/24', '2001:db8:32c:faad:ffff:ffff:ffff:ffff/64'] - -You can also select IP addresses from a range by their index, from the start or -end of the range. - -.. code-block:: yaml+jinja - - # Returns from the start of the range - # {{ test_list | ansible.utils.ipaddr('net') | ansible.utils.ipaddr('200') }} - ['192.168.32.200/24', '2001:db8:32c:faad::c8/64'] - - # Returns from the end of the range - # {{ test_list | ansible.utils.ipaddr('net') | ansible.utils.ipaddr('-200') }} - ['192.168.32.56/24', '2001:db8:32c:faad:ffff:ffff:ffff:ff38/64'] - - # {{ test_list | ansible.utils.ipaddr('net') | ansible.utils.ipaddr('400') }} - ['2001:db8:32c:faad::190/64'] - -Getting information from host/prefix values -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -You frequently use a combination of IP addresses and subnet prefixes -("CIDR"), this is even more common with IPv6. The ``ansible.utils.ipaddr()`` filter can extract -useful data from these prefixes. - -Here's an example set of two host prefixes (with some "control" values): - -.. code-block:: yaml+jinja - - host_prefix: ['2001:db8:deaf:be11::ef3/64', '192.0.2.48/24', '127.0.0.1', '192.168.0.0/16'] - -First, let's make sure that we only work with correct host/prefix values, not -just subnets or single IP addresses. - -.. code-block:: yaml+jinja - - # {{ host_prefix | ansible.utils.ipaddr('host/prefix') }} - ['2001:db8:deaf:be11::ef3/64', '192.0.2.48/24'] - -In Debian-based systems, the network configuration stored in the ``/etc/network/interfaces`` file uses a combination of IP address, network address, netmask and broadcast address to configure an IPv4 network interface. We can get these values from a single 'host/prefix' combination: - -.. code-block:: jinja - - # Jinja2 template - {% set ipv4_host = host_prefix | unique | ansible.utils.ipv4('host/prefix') | first %} - iface eth0 inet static - address {{ ipv4_host | ansible.utils.ipaddr('address') }} - network {{ ipv4_host | ansible.utils.ipaddr('network') }} - netmask {{ ipv4_host | ansible.utils.ipaddr('netmask') }} - broadcast {{ ipv4_host | ansible.utils.ipaddr('broadcast') }} - - # Generated configuration file - iface eth0 inet static - address 192.0.2.48 - network 192.0.2.0 - netmask 255.255.255.0 - broadcast 192.0.2.255 - -In the above example, we needed to handle the fact that values were stored in -a list, which is unusual in IPv4 networks, where only a single IP address can be -set on an interface. However, IPv6 networks can have multiple IP addresses set -on an interface: - -.. code-block:: jinja - - # Jinja2 template - iface eth0 inet6 static - {% set ipv6_list = host_prefix | unique | ansible.utils.ipv6('host/prefix') %} - address {{ ipv6_list[0] }} - {% if ipv6_list | length > 1 %} - {% for subnet in ipv6_list[1:] %} - up /sbin/ip address add {{ subnet }} dev eth0 - down /sbin/ip address del {{ subnet }} dev eth0 - {% endfor %} - {% endif %} - - # Generated configuration file - iface eth0 inet6 static - address 2001:db8:deaf:be11::ef3/64 - -If needed, you can extract subnet and prefix information from the 'host/prefix' value: - -.. code-block:: jinja - - # {{ host_prefix | ansible.utils.ipaddr('host/prefix') | ansible.utils.ipaddr('subnet') }} - ['2001:db8:deaf:be11::/64', '192.0.2.0/24'] - - # {{ host_prefix | ansible.utils.ipaddr('host/prefix') | ansible.utils.ipaddr('prefix') }} - [64, 24] - -Converting subnet masks to CIDR notation -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -Given a subnet in the form of network address and subnet mask, the ``ipaddr()`` filter can convert it into CIDR notation. This can be useful for converting Ansible facts gathered about network configuration from subnet masks into CIDR format. - -.. code-block:: yaml+jinja - - ansible_default_ipv4: { - address: "192.168.0.11", - alias: "eth0", - broadcast: "192.168.0.255", - gateway: "192.168.0.1", - interface: "eth0", - macaddress: "fa:16:3e:c4:bd:89", - mtu: 1500, - netmask: "255.255.255.0", - network: "192.168.0.0", - type: "ether" - } - -First concatenate the network and netmask: - -.. code-block:: yaml+jinja - - net_mask: "{{ ansible_default_ipv4.network }}/{{ ansible_default_ipv4.netmask }}" - '192.168.0.0/255.255.255.0' - -This result can be converted to canonical form with ``ipaddr()`` to produce a subnet in CIDR format. - -.. code-block:: yaml+jinja - - # {{ net_mask | ansible.utils.ipaddr('prefix') }} - '24' - - # {{ net_mask | ansible.utils.ipaddr('net') }} - '192.168.0.0/24' - -Getting information about the network in CIDR notation -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -Given an IP address, the ``ipaddr()`` filter can produce the network address in CIDR notation. -This can be useful when you want to obtain the network address from the IP address in CIDR format. - -Here's an example of IP address: - -.. code-block:: yaml+jinja - - ip_address: "{{ ansible_default_ipv4.address }}/{{ ansible_default_ipv4.netmask }}" - '192.168.0.11/255.255.255.0' - -This can be used to obtain the network address in CIDR notation format. - -.. code-block:: yaml+jinja - - # {{ ip_address | ansible.utils.ipaddr('network/prefix') }} - '192.168.0.0/24' - - -IP address conversion -^^^^^^^^^^^^^^^^^^^^^ - -Here's our test list again: - -.. code-block:: yaml+jinja - - # Example list of values - test_list: ['192.24.2.1', 'host.fqdn', '::1', '192.168.32.0/24', 'fe80::100/10', True, '', '42540766412265424405338506004571095040/64'] - -You can convert IPv4 addresses into IPv6 addresses. - -.. code-block:: yaml+jinja - - # {{ test_list | ansible.utils.ipv4('ipv6') }} - ['::ffff:192.24.2.1/128', '::ffff:192.168.32.0/120'] - -Converting from IPv6 to IPv4 works very rarely - -.. code-block:: yaml+jinja - - # {{ test_list | ansible.utils.ipv6('ipv4') }} - ['0.0.0.1/32'] - -But we can make a double conversion if needed: - -.. code-block:: yaml+jinja - - # {{ test_list | ansible.utils.ipaddr('ipv6') | ansible.utils.ipaddr('ipv4') }} - ['192.24.2.1/32', '0.0.0.1/32', '192.168.32.0/24'] - -You can convert IP addresses to integers, the same way that you can convert -integers into IP addresses. - -.. code-block:: yaml+jinja - - # {{ test_list | ansible.utils.ipaddr('address') | ansible.utils.ipaddr('int') }} - [3222798849, 1, '3232243712/24', '338288524927261089654018896841347694848/10', '42540766412265424405338506004571095040/64'] - -You can convert IPv4 address to `Hexadecimal notation `_ with optional delimiter: - -.. code-block:: yaml+jinja - - # {{ '192.168.1.5' | ansible.utils.ip4_hex }} - c0a80105 - # {{ '192.168.1.5' | ansible.utils.ip4_hex(':') }} - c0:a8:01:05 - -You can convert IP addresses to PTR records: - -.. code-block:: yaml+jinja - - # {% for address in test_list | ansible.utils.ipaddr %} - # {{ address | ansible.utils.ipaddr('revdns') }} - # {% endfor %} - 1.2.24.192.in-addr.arpa. - 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa. - 0.32.168.192.in-addr.arpa. - 0.0.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.e.f.ip6.arpa. - 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d.a.a.f.c.2.3.0.8.b.d.0.1.0.0.2.ip6.arpa. - - -Converting IPv4 address to a 6to4 address -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -A `6to4 `_ tunnel is a way to access the IPv6 Internet from an IPv4-only network. If you -have a public IPv4 address, you can automatically configure its IPv6 -equivalent in the ``2002::/16`` network range. After conversion you will gain -access to a ``2002:xxxx:xxxx::/48`` subnet which could be split into 65535 -``/64`` subnets if needed. - -To convert your IPv4 address, just send it through the ``'6to4'`` filter. It will -be automatically converted to a router address (with a ``::1/48`` host address). - -.. code-block:: yaml+jinja - - # {{ '193.0.2.0' | ansible.utils.ipaddr('6to4') }} - 2002:c100:0200::1/48 - - -Finding IP addresses within a range -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -To find usable IP addresses within an IP range, try these ``ipaddr`` filters: - -To find the next usable IP address in a range, use ``next_usable``: - -.. code-block:: yaml+jinja - - # {{ '192.168.122.1/24' | ansible.utils.ipaddr('next_usable') }} - 192.168.122.2 - -To find the last usable IP address from a range, use ``last_usable``. - -.. code-block:: yaml+jinja - - # {{ '192.168.122.1/24' | ansible.utils.ipaddr('last_usable') }} - 192.168.122.254 - -To find the available range of IP addresses from the given network address, use ``range_usable``. - -.. code-block:: yaml+jinja - - # {{ '192.168.122.1/24' | ansible.utils.ipaddr('range_usable') }} - 192.168.122.1-192.168.122.254 - -To find the peer IP address for a point to point link, use ``peer``. - -.. code-block:: yaml+jinja - - # {{ '192.168.122.1/31' | ansible.utils.ipaddr('peer') }} - 192.168.122.0 - # {{ '192.168.122.1/30' | ansible.utils.ipaddr('peer') }} - 192.168.122.2 - -To return the nth ip from a network, use the filter ``nthhost``. - -.. code-block:: yaml+jinja - - # {{ '10.0.0.0/8' | ansible.utils.nthhost(305) }} - 10.0.1.49 - -``nthhost`` also supports a negative value. - -.. code-block:: yaml+jinja - - # {{ '10.0.0.0/8' | ansible.utils.nthhost(-1) }} - 10.255.255.255 - -To find the next nth usable IP address in relation to another within a range, use ``next_nth_usable`` -In the example, ``next_nth_usable`` returns the second usable IP address for the given IP range: - -.. code-block:: yaml+jinja - - # {{ '192.168.122.1/24' | ansible.utils.next_nth_usable(2) }} - 192.168.122.3 - -If there is no usable address, it returns an empty string. - -.. code-block:: yaml+jinja - - # {{ '192.168.122.254/24' | ansible.utils.next_nth_usable(2) }} - "" - -Just like ``next_nth_ansible``, you have ``previous_nth_usable`` to find the previous usable address: - -.. code-block:: yaml+jinja - - # {{ '192.168.122.10/24' | ansible.utils.previous_nth_usable(2) }} - 192.168.122.8 - - -Testing if a address belong to a network range -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -The ``network_in_usable`` filter returns whether an address passed as an argument is usable in a network. -Usable addresses are addresses that can be assigned to a host. The network ID and the broadcast address -are not usable addresses. - -.. code-block:: yaml+jinja - - # {{ '192.168.0.0/24' | ansible.utils.network_in_usable( '192.168.0.1' ) }} - True - - # {{ '192.168.0.0/24' | ansible.utils.network_in_usable( '192.168.0.255' ) }} - False - - # {{ '192.168.0.0/16' | ansible.utils.network_in_usable( '192.168.0.255' ) }} - True - -The ``network_in_network`` filter returns whether an address or a network passed as argument is in a network. - -.. code-block:: yaml+jinja - - # {{ '192.168.0.0/24' | ansible.utils.network_in_network( '192.168.0.1' ) }} - True - - # {{ '192.168.0.0/24' | ansible.utils.network_in_network( '192.168.0.0/24' ) }} - True - - # {{ '192.168.0.0/24' | ansible.utils.network_in_network( '192.168.0.255' ) }} - True - - # Check in a network is part of another network - # {{ '192.168.0.0/16' | ansible.utils.network_in_network( '192.168.0.0/24' ) }} - True - -To check whether multiple addresses belong to a network, use the ``reduce_on_network`` filter. - -.. code-block:: yaml+jinja - - # {{ ['192.168.0.34', '10.3.0.3', '192.168.2.34'] | ansible.utils.reduce_on_network( '192.168.0.0/24' ) }} - ['192.168.0.34'] - - -IP Math -^^^^^^^ - -.. versionadded:: 2.7 - -The ``ipmath()`` filter can be used to do simple IP math/arithmetic. - -Here are a few simple examples: - -.. code-block:: yaml+jinja - - # Get the next five addresses based on an IP address - # {{ '192.168.1.5' | ansible.utils.ipmath(5) }} - 192.168.1.10 - - # Get the ten previous addresses based on an IP address - # {{ '192.168.0.5' | ansible.utils.ipmath(-10) }} - 192.167.255.251 - - # Get the next five addresses using CIDR notation - # {{ '192.168.1.1/24' | ansible.utils.ipmath(5) }} - 192.168.1.6 - - # Get the previous five addresses using CIDR notation - # {{ '192.168.1.6/24' | ansible.utils.ipmath(-5) }} - 192.168.1.1 - - # Get the previous ten address using cidr notation - # It returns a address of the previous network range - # {{ '192.168.2.6/24' | ansible.utils.ipmath(-10) }} - 192.168.1.252 - - # Get the next ten addresses in IPv6 - # {{ '2001::1' | ansible.utils.ipmath(10) }} - 2001::b - - # Get the previous ten address in IPv6 - # {{ '2001::5' | ansible.utils.ipmath(-10) }} - 2000:ffff:ffff:ffff:ffff:ffff:ffff:fffb - - -Subnet manipulation -^^^^^^^^^^^^^^^^^^^ - -The ``ipsubnet()`` filter can be used to manipulate network subnets in several ways. - -Here is an example IP address and subnet: - -.. code-block:: yaml+jinja - - address: '192.168.144.5' - subnet: '192.168.0.0/16' - -To check if a given string is a subnet, pass it through the filter without any -arguments. If the given string is an IP address, it will be converted into -a subnet. - -.. code-block:: yaml+jinja - - # {{ address | ansible.utils.ipsubnet }} - 192.168.144.5/32 - - # {{ subnet | ansible.utils.ipsubnet }} - 192.168.0.0/16 - -If you specify a subnet size as the first parameter of the ``ipsubnet()`` filter, and -the subnet size is **smaller than the current one**, you will get the number of subnets -a given subnet can be split into. - -.. code-block:: yaml+jinja - - # {{ subnet | ansible.utils.ipsubnet(20) }} - 16 - -The second argument of the ``ipsubnet()`` filter is an index number; by specifying it -you can get a new subnet with the specified size. - -.. code-block:: yaml+jinja - - # First subnet - # {{ subnet | ansible.utils.ipsubnet(20, 0) }} - 192.168.0.0/20 - - # Last subnet - # {{ subnet | ansible.utils.ipsubnet(20, -1) }} - 192.168.240.0/20 - - # Fifth subnet - # {{ subnet | ansible.utils.ipsubnet(20, 5) }} - 192.168.80.0/20 - - # Fifth to last subnet - # {{ subnet | ansible.utils.ipsubnet(20, -5) }} - 192.168.176.0/20 - -If you specify an IP address instead of a subnet, and give a subnet size as -the first argument, the ``ipsubnet()`` filter will instead return the biggest subnet that -contains that given IP address. - -.. code-block:: yaml+jinja - - # {{ address | ansible.utils.ipsubnet(20) }} - 192.168.144.0/20 - -By specifying an index number as a second argument, you can select smaller and -smaller subnets. - -.. code-block:: yaml+jinja - - # First subnet - # {{ address | ansible.utils.ipsubnet(18, 0) }} - 192.168.128.0/18 - - # Last subnet - # {{ address | ansible.utils.ipsubnet(18, -1) }} - 192.168.144.4/31 - - # Fifth subnet - # {{ address | ansible.utils.ipsubnet(18, 5) }} - 192.168.144.0/23 - - # Fifth to last subnet - # {{ address | ansible.utils.ipsubnet(18, -5) }} - 192.168.144.0/27 - -By specifying another subnet as a second argument, if the second subnet includes -the first, you can determine the rank of the first subnet in the second. - -.. code-block:: yaml+jinja - - # The rank of the IP in the subnet (the IP is the 36870nth /32 of the subnet) - # {{ address | ansible.utils.ipsubnet(subnet) }} - 36870 - - # The rank in the /24 that contain the address - # {{ address | ansible.utils.ipsubnet('192.168.144.0/24') }} - 6 - - # An IP with the subnet in the first /30 in a /24 - # {{ '192.168.144.1/30' | ansible.utils.ipsubnet('192.168.144.0/24') }} - 1 - - # The fifth subnet /30 in a /24 - # {{ '192.168.144.16/30' | ansible.utils.ipsubnet('192.168.144.0/24') }} - 5 - -If the second subnet doesn't include the first subnet, the ``ipsubnet()`` filter raises an error. - - -You can use the ``ipsubnet()`` filter with the ``ipaddr()`` filter to, for example, split -a given ``/48`` prefix into smaller ``/64`` subnets: - -.. code-block:: yaml+jinja - - # {{ '193.0.2.0' | ansible.utils.ipaddr('6to4') | ipsubnet(64, 58820) | ansible.utils.ipaddr('1') }} - 2002:c100:200:e5c4::1/64 - -Because of the size of IPv6 subnets, iteration over all of them to find the -correct one may take some time on slower computers, depending on the size -difference between the subnets. - -Subnet Merging -^^^^^^^^^^^^^^ - -.. versionadded:: 2.6 - -The ``cidr_merge()`` filter can be used to merge subnets or individual addresses -into their minimal representation, collapsing overlapping subnets and merging -adjacent ones wherever possible. - -.. code-block:: yaml+jinja - - {{ ['192.168.0.0/17', '192.168.128.0/17', '192.168.128.1' ] | cidr_merge }} - # => ['192.168.0.0/16'] - - {{ ['192.168.0.0/24', '192.168.1.0/24', '192.168.3.0/24'] | cidr_merge }} - # => ['192.168.0.0/23', '192.168.3.0/24'] - -Changing the action from 'merge' to 'span' will instead return the smallest -subnet which contains all of the inputs. - -.. code-block:: yaml+jinja - - {{ ['192.168.0.0/24', '192.168.3.0/24'] | ansible.utils.cidr_merge('span') }} - # => '192.168.0.0/22' - - {{ ['192.168.1.42', '192.168.42.1'] | ansible.utils.cidr_merge('span') }} - # => '192.168.0.0/18' - - -MAC address filter -^^^^^^^^^^^^^^^^^^ - -You can use the ``hwaddr()`` filter to check if a given string is a MAC address or -convert it between various formats. Examples: - -.. code-block:: yaml+jinja - - # Example MAC address - macaddress: '1a:2b:3c:4d:5e:6f' - - # Check if given string is a MAC address - # {{ macaddress | ansible.utils.hwaddr }} - 1a:2b:3c:4d:5e:6f - - # Convert MAC address to PostgreSQL format - # {{ macaddress | ansible.utils.hwaddr('pgsql') }} - 1a2b3c:4d5e6f - - # Convert MAC address to Cisco format - # {{ macaddress | ansible.utils.hwaddr('cisco') }} - 1a2b.3c4d.5e6f - -The supported formats result in the following conversions for the ``1a:2b:3c:4d:5e:6f`` MAC address: - -.. code-block:: yaml+jinja - - bare: 1A2B3C4D5E6F - bool: True - int: 28772997619311 - cisco: 1a2b.3c4d.5e6f - eui48 or win: 1A-2B-3C-4D-5E-6F - linux or unix: 1a:2b:3c:4d:5e:6f: - pgsql, postgresql, or psql: 1a2b3c:4d5e6f - - -Generate an IPv6 address in Stateless Configuration (SLAAC) -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -the filter ``slaac()`` generates an IPv6 address for a given network and a MAC Address in Stateless Configuration. - -.. code-block:: yaml+jinja - - # {{ 'fdcf:1894:23b5:d38c:0000:0000:0000:0000' | slaac('c2:31:b3:83:bf:2b') }} - fdcf:1894:23b5:d38c:c031:b3ff:fe83:bf2b - - -.. seealso:: - - `ansible.utils `_ - Ansible network collection for common code - :ref:`about_playbooks` - An introduction to playbooks - :ref:`playbooks_filters` - Introduction to Jinja2 filters and their uses - :ref:`playbooks_conditionals` - Conditional statements in playbooks - :ref:`playbooks_variables` - All about variables - :ref:`playbooks_loops` - Looping in playbooks - :ref:`playbooks_reuse_roles` - Playbook organization by roles - :ref:`playbooks_best_practices` - Tips and tricks for playbooks - `User Mailing List `_ - Have a question? Stop by the google group! - :ref:`communication_irc` - How to join Ansible chat channels diff --git a/ansible/collections/ansible_collections/ansible/utils/meta/runtime.yml b/ansible/collections/ansible_collections/ansible/utils/meta/runtime.yml deleted file mode 100644 index ce6befd7..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/meta/runtime.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -requires_ansible: ">=2.14.0" diff --git a/ansible/collections/ansible_collections/ansible/utils/mypy.ini b/ansible/collections/ansible_collections/ansible/utils/mypy.ini deleted file mode 100644 index cd56a58f..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/mypy.ini +++ /dev/null @@ -1,30 +0,0 @@ -[mypy] -files = - plugins/, - tests/ -install_types = true -namespace_packages = true -no_implicit_optional = true -non_interactive = true -pretty = true -show_column_numbers = true -show_error_codes = true -show_error_context = true -strict = true -strict_optional = true - -[mypy-ansible.*] -# No type hints as of version 2.12 -ignore_missing_imports = true - -[mypy-ansible_collections.ansible.utils.*] -# No type hints as of version 2.6.1 -ignore_missing_imports = true - -[mypy-pytest_ansible_network_integration] -# No type hints as of 6/8/2022 -ignore_missing_imports = true - -[mypy-ansible_collections.*] -# Collections are not python package -ignore_missing_imports = true diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/action/cli_parse.py b/ansible/collections/ansible_collections/ansible/utils/plugins/action/cli_parse.py deleted file mode 100644 index de8b418d..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/action/cli_parse.py +++ /dev/null @@ -1,344 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2020 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -The action plugin file for cli_parse -""" -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import json - -from importlib import import_module - -from ansible.errors import AnsibleActionFail -from ansible.module_utils._text import to_native, to_text -from ansible.module_utils.connection import Connection -from ansible.module_utils.connection import ConnectionError as AnsibleConnectionError -from ansible.plugins.action import ActionBase - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - check_argspec, -) -from ansible_collections.ansible.utils.plugins.modules.cli_parse import DOCUMENTATION - - -ARGSPEC_CONDITIONALS = { - "argument_spec": {"parser": {"mutually_exclusive": [["command", "template_path"]]}}, - "required_one_of": [["command", "text"]], - "mutually_exclusive": [["command", "text"]], -} - - -class ActionModule(ActionBase): - """action module""" - - _requires_connection = False - - PARSER_CLS_NAME = "CliParser" - - def __init__(self, *args, **kwargs): - super(ActionModule, self).__init__(*args, **kwargs) - self._playhost = None - self._parser_name = None - self._result = {} - self._task_vars = None - - def _debug(self, msg): - """Output text using ansible's display - - :param msg: The message - :type msg: str - """ - msg = "<{phost}> [cli_parse] {msg}".format(phost=self._playhost, msg=msg) - self._display.vvvv(msg) - - def _fail_json(self, msg): - """Replace the AnsibleModule fai_json here - - :param msg: The message for the failure - :type msg: str - """ - msg = msg.replace("(basic.py)", self._task.action) - raise AnsibleActionFail(msg) - - def _extended_check_argspec(self): - """Check additional requirements for the argspec - that cannot be covered using stnd techniques - """ - errors = [] - requested_parser = self._task.args.get("parser").get("name") - if len(requested_parser.split(".")) != 3: - msg = "Parser name should be provided as a full name including collection" - errors.append(msg) - - if self._task.args.get("text") and requested_parser not in [ - "ansible.utils.json", - "ansible.utils.xml", - ]: - if not ( - self._task.args.get("parser").get("command") - or self._task.args.get("parser").get("template_path") - ): - msg = "Either parser/command or parser/template_path needs to be provided when parsing text." - errors.append(msg) - if errors: - self._result["failed"] = True - self._result["msg"] = " ".join(errors) - - def _load_parser(self, task_vars): - """Load a parser from the fs - - :param task_vars: The vars provided when the task was run - :type task_vars: dict - :return: An instance of class CliParser - :rtype: CliParser - """ - requested_parser = self._task.args.get("parser").get("name") - cref = dict(zip(["corg", "cname", "plugin"], requested_parser.split("."))) - if cref["cname"] == "netcommon" and cref["plugin"] in [ - "json", - "textfsm", - "ttp", - "xml", - ]: - cref["cname"] = "utils" - msg = ( - "Use 'ansible.utils.{plugin}' for parser name instead of '{requested_parser}'." - " This feature will be removed from 'ansible.netcommon' collection in a release" - " after 2022-11-01".format(plugin=cref["plugin"], requested_parser=requested_parser) - ) - self._display.warning(msg) - - parserlib = "ansible_collections.{corg}.{cname}.plugins.sub_plugins.cli_parser.{plugin}_parser".format( - **cref, - ) - try: - parsercls = getattr(import_module(parserlib), self.PARSER_CLS_NAME) - parser = parsercls( - task_args=self._task.args, - task_vars=task_vars, - debug=self._debug, - ) - return parser - except Exception as exc: - # TODO: The condition is added to support old sub-plugin structure. - # Remove the if condition after ansible.netcommon.cli_parse module is removed - # from ansible.netcommon collection - if cref["cname"] == "netcommon" and cref["plugin"] in [ - "native", - "content_templates", - "ntc", - "pyats", - ]: - parserlib = ( - "ansible_collections.{corg}.{cname}.plugins.cli_parsers.{plugin}_parser".format( - **cref, - ) - ) - try: - parsercls = getattr(import_module(parserlib), self.PARSER_CLS_NAME) - parser = parsercls( - task_args=self._task.args, - task_vars=task_vars, - debug=self._debug, - ) - return parser - except Exception as exc: - self._result["failed"] = True - self._result["msg"] = "Error loading parser: {err}".format(err=to_native(exc)) - return None - - self._result["failed"] = True - self._result["msg"] = "Error loading parser: {err}".format(err=to_native(exc)) - return None - - def _set_parser_command(self): - """Set the /parser/command in the task args based on /command if needed""" - if self._task.args.get("command"): - if not self._task.args.get("parser").get("command"): - self._task.args.get("parser")["command"] = self._task.args.get("command") - - def _set_text(self): - """Set the /text in the task_args based on the command run""" - if self._result.get("stdout"): - self._task.args["text"] = self._result["stdout"] - - def _os_from_task_vars(self): - """Extract an os str from the task's vars - - :return: A short OS name - :rtype: str - """ - os_vars = ["ansible_distribution", "ansible_network_os"] - oper_sys = "" - for hvar in os_vars: - if self._task_vars.get(hvar): - if hvar == "ansible_network_os": - oper_sys = self._task_vars.get(hvar, "").split(".")[-1] - self._debug( - "OS set to {os}, derived from ansible_network_os".format( - os=oper_sys.lower(), - ), - ) - else: - oper_sys = self._task_vars.get(hvar) - self._debug("OS set to {os}, using {key}".format(os=oper_sys.lower(), key=hvar)) - return oper_sys.lower() - - def _update_template_path(self, template_extension): - """Update the template_path in the task args - If not provided, generate template name using os and command - - :param template_extension: The parser specific template extension - :type template extension: str - """ - if not self._task.args.get("parser").get("template_path"): - if self._task.args.get("parser").get("os"): - oper_sys = self._task.args.get("parser").get("os") - else: - oper_sys = self._os_from_task_vars() - cmd_as_fname = self._task.args.get("parser").get("command").replace(" ", "_") - fname = "{os}_{cmd}.{ext}".format(os=oper_sys, cmd=cmd_as_fname, ext=template_extension) - source = self._find_needle("templates", fname) - self._debug("template_path in task args updated to {source}".format(source=source)) - self._task.args["parser"]["template_path"] = source - - def _get_template_contents(self): - """Retrieve the contents of the parser template - - :return: The parser's contents - :rtype: str - """ - template_contents = None - template_path = self._task.args.get("parser").get("template_path") - if template_path: - try: - with open(template_path, "rb") as file_handler: - try: - template_contents = to_text( - file_handler.read(), - errors="surrogate_or_strict", - ) - except UnicodeError: - raise AnsibleActionFail("Template source files must be utf-8 encoded") - except FileNotFoundError as exc: - raise AnsibleActionFail( - "Failed to open template '{tpath}'. Error: {err}".format( - tpath=template_path, - err=to_native(exc), - ), - ) - return template_contents - - def _prune_result(self): - """In the case of an error, remove stdout and stdout_lines - this allows for easier visibility of the error message. - In the case of an actual command error, it will be thrown - in the module - """ - self._result.pop("stdout", None) - self._result.pop("stdout_lines", None) - - def _run_command(self): - """Run a command on the host - If socket_path exists, assume it's a network device - else, run a low level command - """ - command = self._task.args.get("command") - if command: - socket_path = self._connection.socket_path - if socket_path: - connection = Connection(socket_path) - try: - response = connection.get(command=command) - self._result["stdout"] = response - self._result["stdout_lines"] = response.splitlines() - except AnsibleConnectionError as exc: - self._result["failed"] = True - self._result["msg"] = [to_text(exc)] - else: - result = self._low_level_execute_command(cmd=command) - if result["rc"]: - self._result["failed"] = True - self._result["msg"] = result["stderr"] - self._result["stdout"] = result["stdout"] - self._result["stdout_lines"] = result["stdout_lines"] - - def run(self, tmp=None, task_vars=None): - """The std execution entry pt for an action plugin - - :param tmp: no longer used - :type tmp: none - :param task_vars: The vars provided when the task is run - :type task_vars: dict - :return: The results from the parser - :rtype: dict - """ - valid, argspec_result, updated_params = check_argspec( - DOCUMENTATION, - "cli_parse module", - schema_conditionals=ARGSPEC_CONDITIONALS, - **self._task.args, - ) - if not valid: - return argspec_result - - self._extended_check_argspec() - if self._result.get("failed"): - return self._result - - self._task_vars = task_vars - self._playhost = task_vars.get("inventory_hostname") - self._parser_name = self._task.args.get("parser").get("name") - - self._run_command() - if self._result.get("failed"): - return self._result - - self._set_parser_command() - self._set_text() - - parser = self._load_parser(task_vars) - if self._result.get("failed"): - self._prune_result() - return self._result - - # Not all parsers use a template, in the case a parser provides - # an extension, provide it the template path - if getattr(parser, "DEFAULT_TEMPLATE_EXTENSION", False): - self._update_template_path(parser.DEFAULT_TEMPLATE_EXTENSION) - - # Not all parsers require the template contents - # when true, provide the template contents - if getattr(parser, "PROVIDE_TEMPLATE_CONTENTS", False) is True: - template_contents = self._get_template_contents() - else: - template_contents = None - - try: - result = parser.parse(template_contents=template_contents) - # ensure the response returned to the controller - # contains only native types, nothing unique to the parser - result = json.loads(json.dumps(result)) - except Exception as exc: - raise AnsibleActionFail( - "Unhandled exception from parser '{parser}'. Error: {err}".format( - parser=self._parser_name, - err=to_native(exc), - ), - ) - - if result.get("errors"): - self._prune_result() - self._result.update({"failed": True, "msg": " ".join(result["errors"])}) - else: - self._result["parsed"] = result["parsed"] - set_fact = self._task.args.get("set_fact") - if set_fact: - self._result["ansible_facts"] = {set_fact: result["parsed"]} - return self._result diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/action/fact_diff.py b/ansible/collections/ansible_collections/ansible/utils/plugins/action/fact_diff.py deleted file mode 100644 index d9bab665..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/action/fact_diff.py +++ /dev/null @@ -1,145 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2020 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import re - -from importlib import import_module - -from ansible.module_utils._text import to_native -from ansible.plugins.action import ActionBase - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - AnsibleArgSpecValidator, -) -from ansible_collections.ansible.utils.plugins.modules.fact_diff import DOCUMENTATION - - -class ActionModule(ActionBase): - """action module""" - - _requires_connection = False - - def __init__(self, *args, **kwargs): - super(ActionModule, self).__init__(*args, **kwargs) - self._supports_async = True - self._task_vars = None - - def _check_argspec(self): - aav = AnsibleArgSpecValidator( - data=self._task.args, - schema=DOCUMENTATION, - schema_format="doc", - name=self._task.action, - ) - valid, errors, self._task.args = aav.validate() - if not valid: - self._result["failed"] = True - self._result["msg"] = errors - - def _debug(self, msg): - """Output text using ansible's display - - :param msg: The message - :type msg: str - """ - msg = "<{phost}> [fact_diff][{plugin}] {msg}".format( - phost=self._playhost, - plugin=self._plugin, - msg=msg, - ) - self._display.vvvv(msg) - - def _load_plugin(self, plugin, directory, class_name): - """Load a plugin from the fs - - :param plugin: The name of the plugin in collection format - :type plugin: string - :param directory: The name of the plugin directory to use - :type directory: string - :param class_name: The name of the class to load from the plugin - :type class_name: string - :return: An instance of class class_name - :rtype: class_name - """ - if len(plugin.split(".")) != 3: - msg = "Plugin name should be provided as a full name including collection" - self._result["failed"] = True - self._result["msg"] = msg - return None - cref = dict(zip(["corg", "cname", "plugin"], plugin.split("."))) - cref.update(directory=directory) - parserlib = ( - "ansible_collections.{corg}.{cname}.plugins.sub_plugins.{directory}.{plugin}".format( - **cref, - ) - ) - try: - class_obj = getattr(import_module(parserlib), class_name) - class_instance = class_obj( - task_args=self._task.args, - task_vars=self._task_vars, - debug=self._debug, - ) - return class_instance - except Exception as exc: - self._result["failed"] = True - self._result["msg"] = "Error loading plugin '{plugin}': {err}".format( - plugin=plugin, - err=to_native(exc), - ) - return None - - def _run_diff(self, plugin_instance): - try: - result = plugin_instance.diff() - if "errors" in result: - self._result["failed"] = True - self._result["msg"] = result["errors"] - return result - - except Exception as exc: - msg = "Unhandled exception from plugin '{plugin}'. Error: {err}".format( - plugin=self._task.args["plugin"]["name"], - err=to_native(exc), - ) - self._result["failed"] = True - self._result["msg"] = msg - return None - - def run(self, tmp=None, task_vars=None): - self._task.diff = True - self._result = super(ActionModule, self).run(tmp, task_vars) - self._task_vars = task_vars - self._playhost = task_vars.get("inventory_hostname") - - self._check_argspec() - if self._result.get("failed"): - return self._result - - self._plugin = self._task.args["plugin"]["name"] - plugin_instance = self._load_plugin(self._plugin, "fact_diff", "FactDiff") - if self._result.get("failed"): - return self._result - - result = self._run_diff(plugin_instance) - if self._result.get("failed"): - return self._result - - ansi_escape = re.compile(r"\x1B[@-_][0-?]*[ -/]*[@-~]") - diff_text = ansi_escape.sub("", result["diff"]) - self._result.update( - { - "diff": {"prepared": result["diff"]}, - "changed": bool(result["diff"]), - "diff_lines": diff_text.splitlines(), - "diff_text": diff_text, - }, - ) - return self._result diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/action/update_fact.py b/ansible/collections/ansible_collections/ansible/utils/plugins/action/update_fact.py deleted file mode 100644 index 32393ed4..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/action/update_fact.py +++ /dev/null @@ -1,184 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2020 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import ast -import re - -from ansible.errors import AnsibleActionFail -from ansible.module_utils._text import to_native -from ansible.module_utils.common._collections_compat import MutableMapping, MutableSequence -from ansible.plugins.action import ActionBase -from jinja2 import Template, TemplateSyntaxError - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - AnsibleArgSpecValidator, -) -from ansible_collections.ansible.utils.plugins.modules.update_fact import DOCUMENTATION - - -class ActionModule(ActionBase): - """action module""" - - _requires_connection = False - - def __init__(self, *args, **kwargs): - """Start here""" - super(ActionModule, self).__init__(*args, **kwargs) - self._supports_async = True - self._updates = None - self._result = None - - def _check_argspec(self): - aav = AnsibleArgSpecValidator( - data=self._task.args, - schema=DOCUMENTATION, - name=self._task.action, - ) - valid, errors, self._task.args = aav.validate() - if not valid: - raise AnsibleActionFail(errors) - - def _ensure_valid_jinja(self): - """Ensure each path is jinja valid""" - errors = [] - for entry in self._task.args["updates"]: - try: - Template("{{" + entry["path"] + "}}") - except TemplateSyntaxError as exc: - error = ( - "While processing '{path}' found malformed path." - " Ensure syntax follows valid jinja format. The error was:" - " {error}" - ).format(path=entry["path"], error=to_native(exc)) - errors.append(error) - if errors: - raise AnsibleActionFail(" ".join(errors)) - - @staticmethod - def _field_split(path): - """Split the path into it's parts - - :param path: The user provided path - :type path: str - :return: the individual parts of the path - :rtype: list - """ - que = list(path) - val = que.pop(0) - fields = [] - try: - while True: - field = "" - # found a '.', move to the next character - if val == ".": - val = que.pop(0) - # found a '[', pop until ']' and then get the next - if val == "[": - val = que.pop(0) - while val != "]": - field += val - val = que.pop(0) - val = que.pop(0) - else: - while val not in [".", "["]: - field += val - val = que.pop(0) - try: - # make numbers numbers - fields.append(ast.literal_eval(field)) - except Exception: - # or strip the quotes - fields.append(re.sub("['\"]", "", field)) - except IndexError: - # pop'ed past the end of the que - # so add the final field - try: - fields.append(ast.literal_eval(field)) - except Exception: - fields.append(re.sub("['\"]", "", field)) - return fields - - def set_value(self, obj, path, val): - """Set a value - - :param obj: The object to modify - :type obj: mutable object - :param path: The path to where the update should be made - :type path: list - :param val: The new value to place at path - :type val: string, dict, list, bool, etc - """ - first, rest = path[0], path[1:] - if rest: - try: - new_obj = obj[first] - except (KeyError, TypeError): - msg = "Error: the key '{first}' was not found " "in {obj}.".format( - obj=obj, - first=first, - ) - raise AnsibleActionFail(msg) - self.set_value(new_obj, rest, val) - else: - if isinstance(obj, MutableMapping): - if obj.get(first) != val: - self._result["changed"] = True - obj[first] = val - elif isinstance(obj, MutableSequence): - if not isinstance(first, int): - msg = ( - "Error: {obj} is a list, " - "but index provided was not an integer: '{first}'" - ).format(obj=obj, first=first) - raise AnsibleActionFail(msg) - if first > len(obj): - msg = "Error: {obj} not long enough for item #{first} to be set.".format( - obj=obj, - first=first, - ) - raise AnsibleActionFail(msg) - if first == len(obj): - obj.append(val) - self._result["changed"] = True - else: - if obj[first] != val: - obj[first] = val - self._result["changed"] = True - else: - msg = "update_fact can only modify mutable objects." - raise AnsibleActionFail(msg) - - def run(self, tmp=None, task_vars=None): - """action entry point""" - self._task.diff = False - self._result = super(ActionModule, self).run(tmp, task_vars) - self._result["changed"] = False - self._check_argspec() - results = set() - self._ensure_valid_jinja() - for entry in self._task.args["updates"]: - parts = self._field_split(entry["path"]) - obj, path = parts[0], parts[1:] - results.add(obj) - if obj not in task_vars["vars"]: - msg = "'{obj}' was not found in the current facts.".format(obj=obj) - raise AnsibleActionFail(msg) - retrieved = task_vars["vars"].get(obj) - if path: - self.set_value(retrieved, path, entry["value"]) - else: - if task_vars["vars"][obj] != entry["value"]: - task_vars["vars"][obj] = entry["value"] - self._result["changed"] = True - - for key in results: - value = task_vars["vars"].get(key) - self._result[key] = value - return self._result diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/action/validate.py b/ansible/collections/ansible_collections/ansible/utils/plugins/action/validate.py deleted file mode 100644 index 8b4868dd..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/action/validate.py +++ /dev/null @@ -1,108 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2020 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -The action plugin file for validate -""" -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -from ansible.errors import AnsibleActionFail, AnsibleError -from ansible.module_utils._text import to_text -from ansible.plugins.action import ActionBase - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - check_argspec, -) -from ansible_collections.ansible.utils.plugins.modules.validate import DOCUMENTATION -from ansible_collections.ansible.utils.plugins.plugin_utils.base.validate import _load_validator - - -ARGSPEC_CONDITIONALS = {} - - -class ActionModule(ActionBase): - """action module""" - - VALIDATE_CLS_NAME = "Validate" - _requires_connection = False - - def __init__(self, *args, **kwargs): - super(ActionModule, self).__init__(*args, **kwargs) - self._validator_name = None - self._result = {} - - def _debug(self, name, msg): - """Output text using ansible's display - - :param msg: The message - :type msg: str - """ - msg = "<{phost}> {name} {msg}".format(phost=self._playhost, name=name, msg=msg) - self._display.vvvv(msg) - - def run(self, tmp=None, task_vars=None): - """The std execution entry pt for an action plugin - - :param tmp: no longer used - :type tmp: none - :param task_vars: The vars provided when the task is run - :type task_vars: dict - :return: The results from the parser - :rtype: dict - """ - valid, argspec_result, updated_params = check_argspec( - DOCUMENTATION, - "validate module", - schema_conditionals=ARGSPEC_CONDITIONALS, - **self._task.args, - ) - if not valid: - return argspec_result - - self._task_vars = task_vars - self._playhost = task_vars.get("inventory_hostname") if task_vars else None - - self._validator_engine, validator_result = _load_validator( - engine=updated_params["engine"], - data=updated_params["data"], - criteria=updated_params["criteria"], - plugin_vars=task_vars, - ) - if validator_result.get("failed"): - return validator_result - - try: - result = self._validator_engine.validate() - except AnsibleError as exc: - raise AnsibleActionFail(to_text(exc, errors="surrogate_then_replace")) - except Exception as exc: - raise AnsibleActionFail( - "Unhandled exception from validator '{validator}'. Error: {err}".format( - validator=self._validator_engine, - err=to_text(exc, errors="surrogate_then_replace"), - ), - ) - - self._result["msg"] = "" - if result.get("errors"): - self._result["errors"] = result["errors"] - self._result.update({"failed": True}) - if "msg" in result: - self._result["msg"] = "Validation errors were found.\n" + result["msg"] - else: - self._result["msg"] = "Validation errors were found." - - if result.get("warnings", []): - self._result["warnings"] = result["warnings"] - if not self._result["msg"]: - self._result["msg"] = "Non-fatal validation errors were found." - - if not self._result["msg"]: - self._result["msg"] = "All checks passed." - - return self._result diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/cidr_merge.py b/ansible/collections/ansible_collections/ansible/utils/plugins/filter/cidr_merge.py deleted file mode 100644 index cf5bf441..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/cidr_merge.py +++ /dev/null @@ -1,187 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -filter plugin file for ipaddr filters: cidr_merge -""" -from __future__ import absolute_import, division, print_function - -from functools import partial - -from ansible.errors import AnsibleFilterError - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - AnsibleArgSpecValidator, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddress_utils import ( - _need_netaddr, -) - - -__metaclass__ = type - -try: - import netaddr - - HAS_NETADDR = True -except ImportError: - HAS_NETADDR = False -else: - - class mac_linux(netaddr.mac_unix): - pass - - mac_linux.word_fmt = "%.2x" - -try: - from jinja2.filters import pass_environment -except ImportError: - from jinja2.filters import environmentfilter as pass_environment - -DOCUMENTATION = """ - name: cidr_merge - author: Ashwini Mhatre (@amhatre) - version_added: "2.5.0" - short_description: This filter can be used to merge subnets or individual addresses. - description: - - This filter can be used to merge subnets or individual addresses into their minimal representation, collapsing - - overlapping subnets and merging adjacent ones wherever possible. - options: - value: - description: - - list of subnets or individual address to be merged - type: list - elements: str - required: True - action: - description: - - Action to be performed.example merge,span - default: merge - type: str - notes: -""" - -EXAMPLES = r""" -#### examples -- name: cidr_merge with merge action - ansible.builtin.set_fact: - value: - - 192.168.0.0/17 - - 192.168.128.0/17 - - 192.168.128.1 -- debug: - msg: '{{ value|ansible.utils.cidr_merge }}' - -# TASK [cidr_merge with merge action] ********************************************************************************** -# ok: [localhost] => { -# "ansible_facts": { -# "value": [ -# "192.168.0.0/17", -# "192.168.128.0/17", -# "192.168.128.1" -# ] -# }, -# "changed": false -# } -# TASK [debug] ********************************************************************************************************* -# ok: [loalhost] => { -# "msg": [ -# "192.168.0.0/16" -# ] -# } - -- name: Cidr_merge with span. - ansible.builtin.set_fact: - value: - - 192.168.1.1 - - 192.168.1.2 - - 192.168.1.3 - - 192.168.1.4 -- debug: - msg: '{{ value|ansible.utils.cidr_merge(''span'') }}' - -# TASK [Cidr_merge with span.] ******************************************************************** -# ok: [localhost] => { -# "ansible_facts": { -# "value": [ -# "192.168.1.1", -# "192.168.1.2", -# "192.168.1.3", -# "192.168.1.4" -# ] -# }, -# "changed": false -# } -# -# TASK [debug] ************************************************************************************ -# ok: [localhost] => { -# "msg": "192.168.1.0/29" -# } -""" - -RETURN = """ - data: - type: raw - description: - - Returns a minified list of subnets or a single subnet that spans all of the inputs. -""" - - -@pass_environment -def _cidr_merge(*args, **kwargs): - """Convert the given data from json to xml.""" - keys = ["value", "action"] - data = dict(zip(keys, args[1:])) - data.update(kwargs) - aav = AnsibleArgSpecValidator(data=data, schema=DOCUMENTATION, name="cidr_merge") - valid, errors, updated_data = aav.validate() - if not valid: - raise AnsibleFilterError(errors) - return cidr_merge(**updated_data) - - -def cidr_merge(value, action="merge"): - if not hasattr(value, "__iter__"): - raise AnsibleFilterError("cidr_merge: expected iterable, got " + repr(value)) - - if action == "merge": - try: - return [str(ip) for ip in netaddr.cidr_merge(value)] - except Exception as e: - raise AnsibleFilterError("cidr_merge: error in netaddr:\n%s" % e) - - elif action == "span": - # spanning_cidr needs at least two values - if len(value) == 0: - return None - elif len(value) == 1: - try: - return str(netaddr.IPNetwork(value[0])) - except Exception as e: - raise AnsibleFilterError("cidr_merge: error in netaddr:\n%s" % e) - else: - try: - return str(netaddr.spanning_cidr(value)) - except Exception as e: - raise AnsibleFilterError("cidr_merge: error in netaddr:\n%s" % e) - - else: - raise AnsibleFilterError("cidr_merge: invalid action '%s'" % action) - - -class FilterModule(object): - """IP address and network manipulation filters""" - - filter_map = { - # IP addresses and networks - "cidr_merge": _cidr_merge, - } - - def filters(self): - if HAS_NETADDR: - return self.filter_map - else: - # Need to install python's netaddr for these filters to work - return dict((f, partial(_need_netaddr, f)) for f in self.filter_map) diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/consolidate.py b/ansible/collections/ansible_collections/ansible/utils/plugins/filter/consolidate.py deleted file mode 100644 index 33eae009..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/consolidate.py +++ /dev/null @@ -1,1470 +0,0 @@ -# -# -*- coding: utf-8 -*- -# Copyright 2022 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -# - -""" -The consolidate filter plugin -""" -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -DOCUMENTATION = """ - name: consolidate - author: Sagar Paul (@KB-perByte) - version_added: "2.6.0" - short_description: Consolidate facts together on common attributes. - description: - - This plugin presents collective structured data including all supplied facts grouping on common attributes mentioned. - - All other boolean parameter defaults to False unless parameters is explicitly mentioned. - - Using the parameters below- C(data_sources|ansible.utils.consolidate(fail_missing_match_key=False))) - options: - data_sources: - description: - - This option represents a list of dictionaries to perform the operation on. - - For example C(facts_source|ansible.utils.consolidate(fail_missing_match_key=False))), in this case C(facts_source) represents this option. - type: list - elements: dict - required: True - suboptions: - data: - description: Specify facts data that gets consolidated. - type: raw - required: True - match_key: - description: Specify key to match on. - type: str - required: True - name: - description: Specify the name with which the result set be created. - type: str - required: True - fail_missing_match_key: - description: Fail if match_key is not found in a specific data set. - type: bool - default: True - fail_missing_match_value: - description: Fail if the match key's value is not found in every data source. - type: bool - default: True - fail_duplicate: - description: Fail if the match key's value exists more than once in a given data set. - type: bool - default: True -""" - -EXAMPLES = r""" - -# Consolidated filter plugin example -# ---------------------------------- - -# play.yml -- name: Define some test data - ansible.builtin.set_fact: - values: - - name: a - value: 1 - - name: b - value: 2 - - name: c - value: 3 - colors: - - name: a - color: red - - name: b - color: green - - name: c - color: blue -- name: Define some test data - ansible.builtin.set_fact: - base_data: - - data: '{{ values }}' - match_key: name - name: values - - data: '{{ colors }}' - match_key: name - name: colors -- name: Consolidate the data source using the name key - ansible.builtin.set_fact: - consolidated: '{{ data_sources|ansible.utils.consolidate }}' - vars: - sizes: - - name: a - size: small - - name: b - size: medium - - name: c - size: large - additional_data_source: - - data: '{{ sizes }}' - match_key: name - name: sizes - data_sources: '{{ base_data + additional_data_source }}' - - -# Output - -# ok: [localhost] => { -# "ansible_facts": { -# "consolidated": { -# "a": { -# "colors": { -# "color": "red", -# "name": "a" -# }, -# "sizes": { -# "name": "a", -# "size": "small" -# }, -# "values": { -# "name": "a", -# "value": 1 -# } -# }, -# "b": { -# "colors": { -# "color": "green", -# "name": "b" -# }, -# "sizes": { -# "name": "b", -# "size": "medium" -# }, -# "values": { -# "name": "b", -# "value": 2 -# } -# }, -# "c": { -# "colors": { -# "color": "blue", -# "name": "c" -# }, -# "sizes": { -# "name": "c", -# "size": "large" -# }, -# "values": { -# "name": "c", -# "value": 3 -# } -# } -# } -# }, -# "changed": false -# } - -- name: Consolidate the data source using different keys - ansible.builtin.set_fact: null - consolidated: '{{ data_sources|ansible.utils.consolidate }}' - vars: - sizes: - - title: a - size: small - - title: b - size: medium - - title: c - size: large - additional_data_source: - - data: '{{ sizes }}' - match_key: title - name: sizes - data_sources: '{{ base_data + additional_data_source }}' - - -# Output - -# ok: [localhost] => { -# "ansible_facts": { -# "consolidated": { -# "a": { -# "colors": { -# "color": "red", -# "name": "a" -# }, -# "sizes": { -# "size": "small", -# "title": "a" -# }, -# "values": { -# "name": "a", -# "value": 1 -# } -# }, -# "b": { -# "colors": { -# "color": "green", -# "name": "b" -# }, -# "sizes": { -# "size": "medium", -# "title": "b" -# }, -# "values": { -# "name": "b", -# "value": 2 -# } -# }, -# "c": { -# "colors": { -# "color": "blue", -# "name": "c" -# }, -# "sizes": { -# "size": "large", -# "title": "c" -# }, -# "values": { -# "name": "c", -# "value": 3 -# } -# } -# } -# }, -# "changed": false -# } - -- name: Consolidate the data source using the name key (fail_missing_match_key) - ansible.builtin.set_fact: null - consolidated: '{{ data_sources|ansible.utils.consolidate(fail_missing_match_key=True) }}' - ignore_errors: true - vars: - sizes: - - size: small - - size: medium - - size: large - additional_data_source: - - data: '{{ sizes }}' - match_key: name - name: sizes - data_sources: '{{ base_data + additional_data_source }}' - -# Output - -# fatal: [localhost]: FAILED! => { -# "msg": "Error when using plugin 'consolidate': 'fail_missing_match_key' -# reported missing match key 'name' in data source 3 in list entry 1, -# missing match key 'name' in data source 3 in list entry 2, -# missing match key 'name' in data source 3 in list entry 3" -# } - -- name: Consolidate the data source using the name key (fail_missing_match_value) - ansible.builtin.set_fact: - consolidated: "{{ data_sources|ansible.utils.consolidate(fail_missing_match_value=True) }}" - ignore_errors: true - vars: - sizes: - - name: a - size: small - - name: b - size: medium - additional_data_source: - - data: "{{ sizes }}" - match_key: name - name: sizes - data_sources: "{{ base_data + additional_data_source }}" - -# fatal: [localhost]: FAILED! => { -# "msg": "Error when using plugin 'consolidate': 'fail_missing_match_value' -# reported missing match value c in data source 3" -# } - -- name: Consolidate the data source using the name key (fail_duplicate) - ansible.builtin.set_fact: - consolidated: "{{ data_sources|ansible.utils.consolidate(fail_duplicate=True) }}" - ignore_errors: true - vars: - sizes: - - name: a - size: small - - name: a - size: small - additional_data_source: - - data: "{{ sizes }}" - match_key: name - name: sizes - data_sources: "{{ base_data + additional_data_source }}" - -# fatal: [localhost]: FAILED! => { -# "msg": "Error when using plugin 'consolidate': 'fail_duplicate' -# reported duplicate values in data source 3" -# } - -# facts.yml - -# interfaces: -# - name: GigabitEthernet0/0 -# enabled: true -# duplex: auto -# speed: auto -# note: -# - Connected green wire -# - name: GigabitEthernet0/1 -# description: Configured by Ansible - Interface 1 -# mtu: 1500 -# speed: auto -# duplex: auto -# enabled: true -# note: -# - Connected blue wire -# - Configured by Paul -# vifs: -# - vlan_id: 100 -# description: Eth1 - VIF 100 -# mtu: 400 -# enabled: true -# comment: Needs reconfiguration -# - vlan_id: 101 -# description: Eth1 - VIF 101 -# enabled: true -# - name: GigabitEthernet0/2 -# description: Configured by Ansible - Interface 2 (ADMIN DOWN) -# mtu: 600 -# enabled: false -# l2_interfaces: -# - name: GigabitEthernet0/0 -# - mode: access -# name: GigabitEthernet0/1 -# trunk: -# allowed_vlans: -# - "11" -# - "12" -# - "59" -# - "67" -# - "75" -# - "77" -# - "81" -# - "100" -# - 400-408 -# - 411-413 -# - "415" -# - "418" -# - "982" -# - "986" -# - "988" -# - "993" -# - mode: trunk -# name: GigabitEthernet0/2 -# trunk: -# allowed_vlans: -# - "11" -# - "12" -# - "59" -# - "67" -# - "75" -# - "77" -# - "81" -# - "100" -# - 400-408 -# - 411-413 -# - "415" -# - "418" -# - "982" -# - "986" -# - "988" -# - "993" -# encapsulation: dot1q -# l3_interfaces: -# - ipv4: -# - address: 192.168.0.2/24 -# name: GigabitEthernet0/0 -# - name: GigabitEthernet0/1 -# - name: GigabitEthernet0/2 -# - name: Loopback888 -# - name: Loopback999 - -# Playbook -- name: Build the facts collection - set_fact: - data_sources: - - data: '{{ interfaces }}' - match_key: name - name: interfaces - - data: '{{ l2_interfaces }}' - match_key: name - name: l2_interfaces - - data: '{{ l3_interfaces }}' - match_key: name - name: l3_interfaces -- name: Combine all the facts based on match_keys - set_fact: - combined: >- - {{ data_sources|ansible.utils.consolidate(fail_missing_match_value=False) - }} - -# Output -# ok: [localhost] => { -# "ansible_facts": { -# "data_sources": [ -# { -# "data": [ -# { -# "duplex": "auto", -# "enabled": true, -# "name": "GigabitEthernet0/0", -# "note": [ -# "Connected green wire" -# ], -# "speed": "auto" -# }, -# { -# "description": "Configured by Ansible - Interface 1", -# "duplex": "auto", -# "enabled": true, -# "mtu": 1500, -# "name": "GigabitEthernet0/1", -# "note": [ -# "Connected blue wire", -# "Configured by Paul" -# ], -# "speed": "auto", -# "vifs": [ -# { -# "comment": "Needs reconfiguration", -# "description": "Eth1 - VIF 100", -# "enabled": true, -# "mtu": 400, -# "vlan_id": 100 -# }, -# { -# "description": "Eth1 - VIF 101", -# "enabled": true, -# "vlan_id": 101 -# } -# ] -# }, -# { -# "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", -# "enabled": false, -# "mtu": 600, -# "name": "GigabitEthernet0/2" -# } -# ], -# "match_key": "name", -# "name": "interfaces" -# }, -# { -# "data": [ -# { -# "name": "GigabitEthernet0/0" -# }, -# { -# "mode": "access", -# "name": "GigabitEthernet0/1", -# "trunk": { -# "allowed_vlans": [ -# "11", -# "12", -# "59", -# "67", -# "75", -# "77", -# "81", -# "100", -# "400-408", -# "411-413", -# "415", -# "418", -# "982", -# "986", -# "988", -# "993" -# ] -# } -# }, -# { -# "mode": "trunk", -# "name": "GigabitEthernet0/2", -# "trunk": { -# "allowed_vlans": [ -# "11", -# "12", -# "59", -# "67", -# "75", -# "77", -# "81", -# "100", -# "400-408", -# "411-413", -# "415", -# "418", -# "982", -# "986", -# "988", -# "993" -# ], -# "encapsulation": "dot1q" -# } -# } -# ], -# "match_key": "name", -# "name": "l2_interfaces" -# }, -# { -# "data": [ -# { -# "ipv4": [ -# { -# "address": "192.168.0.2/24" -# } -# ], -# "name": "GigabitEthernet0/0" -# }, -# { -# "name": "GigabitEthernet0/1" -# }, -# { -# "name": "GigabitEthernet0/2" -# }, -# { -# "name": "Loopback888" -# }, -# { -# "name": "Loopback999" -# } -# ], -# "match_key": "name", -# "name": "l3_interfaces" -# } -# ] -# }, -# "changed": false -# } -# Read vars_file 'facts.yml' - -# TASK [Combine all the facts based on match_keys] -# ok: [localhost] => { -# "ansible_facts": { -# "combined": { -# "GigabitEthernet0/0": { -# "interfaces": { -# "duplex": "auto", -# "enabled": true, -# "name": "GigabitEthernet0/0", -# "note": [ -# "Connected green wire" -# ], -# "speed": "auto" -# }, -# "l2_interfaces": { -# "name": "GigabitEthernet0/0" -# }, -# "l3_interfaces": { -# "ipv4": [ -# { -# "address": "192.168.0.2/24" -# } -# ], -# "name": "GigabitEthernet0/0" -# } -# }, -# "GigabitEthernet0/1": { -# "interfaces": { -# "description": "Configured by Ansible - Interface 1", -# "duplex": "auto", -# "enabled": true, -# "mtu": 1500, -# "name": "GigabitEthernet0/1", -# "note": [ -# "Connected blue wire", -# "Configured by Paul" -# ], -# "speed": "auto", -# "vifs": [ -# { -# "comment": "Needs reconfiguration", -# "description": "Eth1 - VIF 100", -# "enabled": true, -# "mtu": 400, -# "vlan_id": 100 -# }, -# { -# "description": "Eth1 - VIF 101", -# "enabled": true, -# "vlan_id": 101 -# } -# ] -# }, -# "l2_interfaces": { -# "mode": "access", -# "name": "GigabitEthernet0/1", -# "trunk": { -# "allowed_vlans": [ -# "11", -# "12", -# "59", -# "67", -# "75", -# "77", -# "81", -# "100", -# "400-408", -# "411-413", -# "415", -# "418", -# "982", -# "986", -# "988", -# "993" -# ] -# } -# }, -# "l3_interfaces": { -# "name": "GigabitEthernet0/1" -# } -# }, -# "GigabitEthernet0/2": { -# "interfaces": { -# "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", -# "enabled": false, -# "mtu": 600, -# "name": "GigabitEthernet0/2" -# }, -# "l2_interfaces": { -# "mode": "trunk", -# "name": "GigabitEthernet0/2", -# "trunk": { -# "allowed_vlans": [ -# "11", -# "12", -# "59", -# "67", -# "75", -# "77", -# "81", -# "100", -# "400-408", -# "411-413", -# "415", -# "418", -# "982", -# "986", -# "988", -# "993" -# ], -# "encapsulation": "dot1q" -# } -# }, -# "l3_interfaces": { -# "name": "GigabitEthernet0/2" -# } -# }, -# "Loopback888": { -# "interfaces": {}, -# "l2_interfaces": {}, -# "l3_interfaces": { -# "name": "Loopback888" -# } -# }, -# "Loopback999": { -# "interfaces": {}, -# "l2_interfaces": {}, -# "l3_interfaces": { -# "name": "Loopback999" -# } -# } -# } -# }, -# "changed": false -# } - -# Failing on missing match values -# ------------------------------- - -# facts.yaml -# interfaces: -# - name: GigabitEthernet0/0 -# enabled: true -# duplex: auto -# speed: auto -# note: -# - Connected green wire -# - name: GigabitEthernet0/1 -# description: Configured by Ansible - Interface 1 -# mtu: 1500 -# speed: auto -# duplex: auto -# enabled: true -# note: -# - Connected blue wire -# - Configured by Paul -# vifs: -# - vlan_id: 100 -# description: Eth1 - VIF 100 -# mtu: 400 -# enabled: true -# comment: Needs reconfiguration -# - vlan_id: 101 -# description: Eth1 - VIF 101 -# enabled: true -# - name: GigabitEthernet0/2 -# description: Configured by Ansible - Interface 2 (ADMIN DOWN) -# mtu: 600 -# enabled: false -# l2_interfaces: -# - name: GigabitEthernet0/0 -# - mode: access -# name: GigabitEthernet0/1 -# trunk: -# allowed_vlans: -# - "11" -# - "12" -# - "59" -# - "67" -# - "75" -# - "77" -# - "81" -# - "100" -# - 400-408 -# - 411-413 -# - "415" -# - "418" -# - "982" -# - "986" -# - "988" -# - "993" -# - mode: trunk -# name: GigabitEthernet0/2 -# trunk: -# allowed_vlans: -# - "11" -# - "12" -# - "59" -# - "67" -# - "75" -# - "77" -# - "81" -# - "100" -# - 400-408 -# - 411-413 -# - "415" -# - "418" -# - "982" -# - "986" -# - "988" -# - "993" -# encapsulation: dot1q -# l3_interfaces: -# - ipv4: -# - address: 192.168.0.2/24 -# name: GigabitEthernet0/0 -# - name: GigabitEthernet0/1 -# - name: GigabitEthernet0/2 -# - name: Loopback888 -# - name: Loopback999 - -# Playbook -- name: Build the facts collection - set_fact: - data_sources: - - data: '{{ interfaces }}' - match_key: name - name: interfaces - - data: '{{ l2_interfaces }}' - match_key: name - name: l2_interfaces - - data: '{{ l3_interfaces }}' - match_key: name - name: l3_interfaces -- name: Combine all the facts based on match_keys - set_fact: - combined: >- - {{ data_sources|ansible.utils.consolidate(fail_missing_match_value=True) - }} - -# Output -# ok: [localhost] => { -# "ansible_facts": { -# "data_sources": [ -# { -# "data": [ -# { -# "duplex": "auto", -# "enabled": true, -# "name": "GigabitEthernet0/0", -# "note": [ -# "Connected green wire" -# ], -# "speed": "auto" -# }, -# { -# "description": "Configured by Ansible - Interface 1", -# "duplex": "auto", -# "enabled": true, -# "mtu": 1500, -# "name": "GigabitEthernet0/1", -# "note": [ -# "Connected blue wire", -# "Configured by Paul" -# ], -# "speed": "auto", -# "vifs": [ -# { -# "comment": "Needs reconfiguration", -# "description": "Eth1 - VIF 100", -# "enabled": true, -# "mtu": 400, -# "vlan_id": 100 -# }, -# { -# "description": "Eth1 - VIF 101", -# "enabled": true, -# "vlan_id": 101 -# } -# ] -# }, -# { -# "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", -# "enabled": false, -# "mtu": 600, -# "name": "GigabitEthernet0/2" -# } -# ], -# "match_key": "name", -# "name": "interfaces" -# }, -# { -# "data": [ -# { -# "name": "GigabitEthernet0/0" -# }, -# { -# "mode": "access", -# "name": "GigabitEthernet0/1", -# "trunk": { -# "allowed_vlans": [ -# "11", -# "12", -# "59", -# "67", -# "75", -# "77", -# "81", -# "100", -# "400-408", -# "411-413", -# "415", -# "418", -# "982", -# "986", -# "988", -# "993" -# ] -# } -# }, -# { -# "mode": "trunk", -# "name": "GigabitEthernet0/2", -# "trunk": { -# "allowed_vlans": [ -# "11", -# "12", -# "59", -# "67", -# "75", -# "77", -# "81", -# "100", -# "400-408", -# "411-413", -# "415", -# "418", -# "982", -# "986", -# "988", -# "993" -# ], -# "encapsulation": "dot1q" -# } -# } -# ], -# "match_key": "name", -# "name": "l2_interfaces" -# }, -# { -# "data": [ -# { -# "ipv4": [ -# { -# "address": "192.168.0.2/24" -# } -# ], -# "name": "GigabitEthernet0/0" -# }, -# { -# "name": "GigabitEthernet0/1" -# }, -# { -# "name": "GigabitEthernet0/2" -# }, -# { -# "name": "Loopback888" -# }, -# { -# "name": "Loopback999" -# } -# ], -# "match_key": "name", -# "name": "l3_interfaces" -# } -# ] -# }, -# "changed": false -# } -# Read vars_file 'facts.yml' - -# TASK [Combine all the facts based on match_keys] -# fatal: [localhost]: FAILED! => { -# "msg": "Error when using plugin 'consolidate': 'fail_missing_match_value' reported Missing match value Loopback999, -# Loopback888 in data source 0, Missing match value Loopback999, Loopback888 in data source 1" -# } - -# Failing on missing match keys -# ----------------------------- - -# facts.yaml -# interfaces: -# - name: GigabitEthernet0/0 -# enabled: true -# duplex: auto -# speed: auto -# note: -# - Connected green wire -# - name: GigabitEthernet0/1 -# description: Configured by Ansible - Interface 1 -# mtu: 1500 -# speed: auto -# duplex: auto -# enabled: true -# note: -# - Connected blue wire -# - Configured by Paul -# vifs: -# - vlan_id: 100 -# description: Eth1 - VIF 100 -# mtu: 400 -# enabled: true -# comment: Needs reconfiguration -# - vlan_id: 101 -# description: Eth1 - VIF 101 -# enabled: true -# - name: GigabitEthernet0/2 -# description: Configured by Ansible - Interface 2 (ADMIN DOWN) -# mtu: 600 -# enabled: false -# l2_interfaces: -# - name: GigabitEthernet0/0 -# - mode: access -# name: GigabitEthernet0/1 -# trunk: -# allowed_vlans: -# - "11" -# - "12" -# - "59" -# - "67" -# - "75" -# - "77" -# - "81" -# - "100" -# - 400-408 -# - 411-413 -# - "415" -# - "418" -# - "982" -# - "986" -# - "988" -# - "993" -# - mode: trunk -# name: GigabitEthernet0/2 -# trunk: -# allowed_vlans: -# - "11" -# - "12" -# - "59" -# - "67" -# - "75" -# - "77" -# - "81" -# - "100" -# - 400-408 -# - 411-413 -# - "415" -# - "418" -# - "982" -# - "986" -# - "988" -# - "993" -# encapsulation: dot1q -# l3_interfaces: -# - ipv4: -# - address: 192.168.0.2/24 -# inft_name: GigabitEthernet0/0 -# - inft_name: GigabitEthernet0/1 -# - inft_name: GigabitEthernet0/2 -# - inft_name: Loopback888 -# - inft_name: Loopback999 - -# Playbook -- name: Build the facts collection - set_fact: - data_sources: - - data: '{{ interfaces }}' - match_key: name - name: interfaces - - data: '{{ l2_interfaces }}' - match_key: name - name: l2_interfaces - - data: '{{ l3_interfaces }}' - match_key: name - name: l3_interfaces -- name: Combine all the facts based on match_keys - set_fact: - combined: '{{ data_sources|ansible.utils.consolidate(fail_missing_match_key=True) }}' - -# Output -# ok: [localhost] => { -# "ansible_facts": { -# "data_sources": [ -# { -# "data": [ -# { -# "duplex": "auto", -# "enabled": true, -# "name": "GigabitEthernet0/0", -# "note": [ -# "Connected green wire" -# ], -# "speed": "auto" -# }, -# { -# "description": "Configured by Ansible - Interface 1", -# "duplex": "auto", -# "enabled": true, -# "mtu": 1500, -# "name": "GigabitEthernet0/1", -# "note": [ -# "Connected blue wire", -# "Configured by Paul" -# ], -# "speed": "auto", -# "vifs": [ -# { -# "comment": "Needs reconfiguration", -# "description": "Eth1 - VIF 100", -# "enabled": true, -# "mtu": 400, -# "vlan_id": 100 -# }, -# { -# "description": "Eth1 - VIF 101", -# "enabled": true, -# "vlan_id": 101 -# } -# ] -# }, -# { -# "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", -# "enabled": false, -# "mtu": 600, -# "name": "GigabitEthernet0/2" -# } -# ], -# "match_key": "name", -# "name": "interfaces" -# }, -# { -# "data": [ -# { -# "name": "GigabitEthernet0/0" -# }, -# { -# "mode": "access", -# "name": "GigabitEthernet0/1", -# "trunk": { -# "allowed_vlans": [ -# "11", -# "12", -# "59", -# "67", -# "75", -# "77", -# "81", -# "100", -# "400-408", -# "411-413", -# "415", -# "418", -# "982", -# "986", -# "988", -# "993" -# ] -# } -# }, -# { -# "mode": "trunk", -# "name": "GigabitEthernet0/2", -# "trunk": { -# "allowed_vlans": [ -# "11", -# "12", -# "59", -# "67", -# "75", -# "77", -# "81", -# "100", -# "400-408", -# "411-413", -# "415", -# "418", -# "982", -# "986", -# "988", -# "993" -# ], -# "encapsulation": "dot1q" -# } -# } -# ], -# "match_key": "name", -# "name": "l2_interfaces" -# }, -# { -# "data": [ -# { -# "inft_name": "GigabitEthernet0/0", -# "ipv4": [ -# { -# "address": "192.168.0.2/24" -# } -# ] -# }, -# { -# "inft_name": "GigabitEthernet0/1" -# }, -# { -# "inft_name": "GigabitEthernet0/2" -# }, -# { -# "inft_name": "Loopback888" -# }, -# { -# "inft_name": "Loopback999" -# } -# ], -# "match_key": "name", -# "name": "l3_interfaces" -# } -# ] -# }, -# "changed": false -# } -# Read vars_file 'facts.yml' - -# TASK [Combine all the facts based on match_keys] -# fatal: [localhost]: FAILED! => { -# "msg": "Error when using plugin 'consolidate': 'fail_missing_match_key' reported Missing match -# key 'name' in data source 2 in list entry 0, Missing match key 'name' in data -# source 2 in list entry 1, Missing match key 'name' in data source 2 in list -# entry 2, Missing match key 'name' in data source 2 in list entry 3, Missing -# match key 'name' in data source 2 in list entry 4" -# } - -# Failing on duplicate values in facts -# ------------------------------------ - -# facts.yaml -# interfaces: -# - name: GigabitEthernet0/0 -# enabled: true -# duplex: auto -# speed: auto -# note: -# - Connected green wire -# - name: GigabitEthernet0/1 -# description: Configured by Ansible - Interface 1 -# mtu: 1500 -# speed: auto -# duplex: auto -# enabled: true -# note: -# - Connected blue wire -# - Configured by Paul -# vifs: -# - vlan_id: 100 -# description: Eth1 - VIF 100 -# mtu: 400 -# enabled: true -# comment: Needs reconfiguration -# - vlan_id: 101 -# description: Eth1 - VIF 101 -# enabled: true -# - name: GigabitEthernet0/2 -# description: Configured by Ansible - Interface 2 (ADMIN DOWN) -# mtu: 600 -# enabled: false -# l2_interfaces: -# - name: GigabitEthernet0/0 -# - name: GigabitEthernet0/0 -# - mode: access -# name: GigabitEthernet0/1 -# trunk: -# allowed_vlans: -# - "11" -# - "12" -# - "59" -# - "67" -# - "75" -# - "77" -# - "81" -# - "100" -# - 400-408 -# - 411-413 -# - "415" -# - "418" -# - "982" -# - "986" -# - "988" -# - "993" -# - mode: trunk -# name: GigabitEthernet0/2 -# trunk: -# allowed_vlans: -# - "11" -# - "12" -# - "59" -# - "67" -# - "75" -# - "77" -# - "81" -# - "100" -# - 400-408 -# - 411-413 -# - "415" -# - "418" -# - "982" -# - "986" -# - "988" -# - "993" -# encapsulation: dot1q -# l3_interfaces: -# - ipv4: -# - address: 192.168.0.2/24 -# name: GigabitEthernet0/0 -# - name: GigabitEthernet0/1 -# - name: GigabitEthernet0/2 -# - name: Loopback888 -# - name: Loopback999 - -# Playbook -- name: Build the facts collection - set_fact: - data_sources: - - data: '{{ interfaces }}' - match_key: name - name: interfaces - - data: '{{ l2_interfaces }}' - match_key: name - name: l2_interfaces - - data: '{{ l3_interfaces }}' - match_key: name - name: l3_interfaces -- name: Combine all the facts based on match_keys - set_fact: - combined: '{{ data_sources|ansible.utils.consolidate(fail_duplicate=True) }}' - -# Output -# ok: [localhost] => { -# "ansible_facts": { -# "data_sources": [ -# { -# "data": [ -# { -# "duplex": "auto", -# "enabled": true, -# "name": "GigabitEthernet0/0", -# "note": [ -# "Connected green wire" -# ], -# "speed": "auto" -# }, -# { -# "description": "Configured by Ansible - Interface 1", -# "duplex": "auto", -# "enabled": true, -# "mtu": 1500, -# "name": "GigabitEthernet0/1", -# "note": [ -# "Connected blue wire", -# "Configured by Paul" -# ], -# "speed": "auto", -# "vifs": [ -# { -# "comment": "Needs reconfiguration", -# "description": "Eth1 - VIF 100", -# "enabled": true, -# "mtu": 400, -# "vlan_id": 100 -# }, -# { -# "description": "Eth1 - VIF 101", -# "enabled": true, -# "vlan_id": 101 -# } -# ] -# }, -# { -# "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", -# "enabled": false, -# "mtu": 600, -# "name": "GigabitEthernet0/2" -# } -# ], -# "match_key": "name", -# "name": "interfaces" -# }, -# { -# "data": [ -# { -# "name": "GigabitEthernet0/0" -# }, -# { -# "name": "GigabitEthernet0/0" -# }, -# { -# "mode": "access", -# "name": "GigabitEthernet0/1", -# "trunk": { -# "allowed_vlans": [ -# "11", -# "12", -# "59", -# "67", -# "75", -# "77", -# "81", -# "100", -# "400-408", -# "411-413", -# "415", -# "418", -# "982", -# "986", -# "988", -# "993" -# ] -# } -# }, -# { -# "mode": "trunk", -# "name": "GigabitEthernet0/2", -# "trunk": { -# "allowed_vlans": [ -# "11", -# "12", -# "59", -# "67", -# "75", -# "77", -# "81", -# "100", -# "400-408", -# "411-413", -# "415", -# "418", -# "982", -# "986", -# "988", -# "993" -# ], -# "encapsulation": "dot1q" -# } -# } -# ], -# "match_key": "name", -# "name": "l2_interfaces" -# }, -# { -# "data": [ -# { -# "ipv4": [ -# { -# "address": "192.168.0.2/24" -# } -# ], -# "name": "GigabitEthernet0/0" -# }, -# { -# "name": "GigabitEthernet0/1" -# }, -# { -# "name": "GigabitEthernet0/2" -# }, -# { -# "name": "Loopback888" -# }, -# { -# "name": "Loopback999" -# } -# ], -# "match_key": "name", -# "name": "l3_interfaces" -# } -# ] -# }, -# "changed": false -# } -# Read vars_file 'facts.yml' - -# TASK [Combine all the facts based on match_keys] -# fatal: [localhost]: FAILED! => { -# "msg": "Error when using plugin 'consolidate': 'fail_duplicate' reported Duplicate values in data source 1" -# } -""" - -from ansible.errors import AnsibleFilterError - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - AnsibleArgSpecValidator, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.consolidate import consolidate - - -try: - from jinja2.filters import pass_environment -except ImportError: - from jinja2.filters import environmentfilter as pass_environment - - -@pass_environment -def _consolidate(*args, **kwargs): - """Consolidate facts together on common attributes""" - - keys = [ - "data_sources", - "fail_missing_match_key", - "fail_missing_match_value", - "fail_duplicate", - ] - data = dict(zip(keys, args[1:])) - data.update(kwargs) - aav = AnsibleArgSpecValidator(data=data, schema=DOCUMENTATION, name="consolidate") - valid, errors, updated_data = aav.validate() - if not valid: - raise AnsibleFilterError(errors) - return consolidate(**updated_data) - - -class FilterModule(object): - """Consolidate""" - - def filters(self): - """A mapping of filter names to functions""" - return {"consolidate": _consolidate} diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/fact_diff.py b/ansible/collections/ansible_collections/ansible/utils/plugins/filter/fact_diff.py deleted file mode 100644 index a6901245..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/fact_diff.py +++ /dev/null @@ -1,209 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2023 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - - -""" -The fact_diff filter plugin -""" -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -DOCUMENTATION = """ - name: fact_diff - author: Ashwini Mhatre ((@amhatre)) - version_added: 2.12.0 - short_description: Find the difference between currently set facts - description: - - Compare two facts or variables and get a diff. - options: - before: - description: - - The first fact to be used in the comparison. - type: raw - required: true - after: - description: - - The second fact to be used in the comparison. - type: raw - required: true - plugin: - description: - - Configure and specify the diff plugin to use - type: dict - default: {} - suboptions: - name: - description: - - 'The diff plugin to use, in fully qualified collection name format.' - default: ansible.utils.native - type: str - vars: - description: - - Parameters passed to the diff plugin. - type: dict - default: {} - suboptions: - skip_lines: - description: - - Skip lines matching these regular expressions. - - Matches will be removed prior to the diff. - - >- - If the provided I(before) and I(after) are a string, they will - be split. - - >- - Each entry in each list will be cast to a string for the - comparison - type: list - elements: str - common: - description: - - Show all common lines. - type: bool - default: false -""" - -EXAMPLES = """ -- name: Set fact - ansible.builtin.set_fact: - before: - a: - b: - c: - d: - - 0 - - 1 - after: - a: - b: - c: - d: - - 2 - - 3 - -- name: Show the difference in json format - ansible.builtin.set_fact: - result: "{{before | ansible.utils.fact_diff(after)}}" - -# TASK [Show the difference in json format] ********************************************************************************************** -# ok: [localhost] => { -# "ansible_facts": { -# "result": [ -# "--- before", -# "+++ after", -# "@@ -3,8 +3,8 @@", -# " \"b\": {", -# " \"c\": {", -# " \"d\": [", -# "- 0,", -# "- 1", -# "+ 2,", -# "+ 3", -# " ]", -# " }", -# " }", -# "" -# ] -# }, -# "changed": false -# } - -- name: Set fact - ansible.builtin.set_fact: - before: "{{ before|ansible.utils.to_paths }}" - after: "{{ after|ansible.utils.to_paths }}" - -- name: Show the difference in path format - ansible.builtin.set_fact: - result: "{{before | ansible.utils.fact_diff(after)}}" - -# TASK [Show the difference in path format] ********************************************************************************************** -# ok: [localhost] => { -# "ansible_facts": { -# "result": [ -# "--- before", -# "+++ after", -# "@@ -1,4 +1,4 @@", -# " {", -# "- \"a.b.c.d[0]\": 0,", -# "- \"a.b.c.d[1]\": 1", -# "+ \"a.b.c.d[0]\": 2,", -# "+ \"a.b.c.d[1]\": 3", -# " }", -# "" -# ] -# }, -# "changed": false -# } - -- name: Set fact - ansible.builtin.set_fact: - before: "{{ before|to_nice_yaml }}" - after: "{{ after|to_nice_yaml }}" - -- name: Show the difference in yaml format - ansible.builtin.set_fact: - result: "{{before | ansible.utils.fact_diff(after)}}" - -# TASK [Show the difference in yaml format] ********************************************************************************************** -# ok: [localhost] => { -# "ansible_facts": { -# "result": [ -# "--- before", -# "+++ after", -# "@@ -1,2 +1,2 @@", -# "-a.b.c.d[0]: 0", -# "-a.b.c.d[1]: 1", -# "+a.b.c.d[0]: 2", -# "+a.b.c.d[1]: 3", -# "" -# ] -# }, -# "changed": false -# } -""" -RETURN = """ - result: - type: list - description: - - Returns diff between before and after facts. -""" -from ansible.errors import AnsibleFilterError -from ansible.module_utils._text import to_text - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - AnsibleArgSpecValidator, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.fact_diff import fact_diff - - -try: - from jinja2.filters import pass_environment -except ImportError: - from jinja2.filters import environmentfilter as pass_environment - - -@pass_environment -def _fact_diff(*args, **kwargs): - """Find the difference between currently set facts""" - - keys = ["before", "after", "plugin", "common"] - data = dict(zip(keys, args[1:])) - data.update(kwargs) - aav = AnsibleArgSpecValidator(data=data, schema=DOCUMENTATION, name="fact_diff") - valid, errors, updated_data = aav.validate() - if not valid: - raise AnsibleFilterError(errors) - res = fact_diff(**updated_data) - return to_text(res) - - -class FilterModule(object): - """fact_diff""" - - def filters(self): - """a mapping of filter names to functions""" - return {"fact_diff": _fact_diff} diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/from_xml.py b/ansible/collections/ansible_collections/ansible/utils/plugins/filter/from_xml.py deleted file mode 100644 index b0a257eb..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/from_xml.py +++ /dev/null @@ -1,140 +0,0 @@ -# -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -# - -""" -The from_xml filter plugin -""" -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -DOCUMENTATION = """ - name: from_xml - author: Ashwini Mhatre (@amhatre) - version_added: "2.0.2" - short_description: Convert given XML string to native python dictionary. - description: - - This plugin converts the XML string to a native python dictionary. - - Using the parameters below- C(data|ansible.utils.from_xml) - options: - data: - description: - - The input XML string. - - This option represents the XML value that is passed to the filter plugin in pipe format. - - For example C(config_data|ansible.utils.from_xml), in this case C(config_data) represents this option. - type: str - required: True - engine: - description: - - Conversion library to use within the filter plugin. - type: str - default: xmltodict -""" - -EXAMPLES = r""" - -#### Simple examples with out any engine. plugin will use default value as xmltodict - - -- name: convert given XML to native python dictionary - ansible.builtin.set_fact: - data: ' ' -- debug: - msg: '{{ data|ansible.utils.from_xml }}' - -# TASK###### -# TASK [convert given XML to native python dictionary] ***************************************************************************************************** -# task path: /Users/amhatre/ansible-collections/playbooks/test_utils.yaml:5 -# ok: [localhost] => { -# "ansible_facts": { -# "data": " " -# }, -# "changed": false -# } -# -# TASK [debug] ************************************************************************************************************************* -# task path: /Users/amhatre/ansible-collections/playbooks/test_utils.yaml:13 -# Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils -# ok: [localhost] => { -# "msg": { -# "netconf-state": { -# "@xmlns": "urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring", -# "schemas": { -# "schema": null -# } -# } -# } -# } - -#### example2 with engine=xmltodict - -- name: convert given XML to native python dictionary - ansible.builtin.set_fact: - data: ' ' -- debug: - msg: '{{ data|ansible.utils.from_xml(''xmltodict'') }}' - -# TASK###### -# TASK [convert given XML to native python dictionary] ***************************************************************************************************** -# task path: /Users/amhatre/ansible-collections/playbooks/test_utils.yaml:5 -# ok: [localhost] => { -# "ansible_facts": { -# "data": " " -# }, -# "changed": false -# } -# -# TASK [debug] ************************************************************************************************************************* -# task path: /Users/amhatre/ansible-collections/playbooks/test_utils.yaml:13 -# Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils -# ok: [localhost] => { -# "msg": { -# "netconf-state": { -# "@xmlns": "urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring", -# "schemas": { -# "schema": null -# } -# } -# } -# } -""" - -from ansible.errors import AnsibleFilterError - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - AnsibleArgSpecValidator, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.from_xml import from_xml - - -try: - from jinja2.filters import pass_environment -except ImportError: - from jinja2.filters import environmentfilter as pass_environment - - -@pass_environment -def _from_xml(*args, **kwargs): - """Convert the given data from xml to json.""" - - keys = ["data", "engine"] - data = dict(zip(keys, args[1:])) - data.update(kwargs) - aav = AnsibleArgSpecValidator(data=data, schema=DOCUMENTATION, name="from_xml") - valid, errors, updated_data = aav.validate() - if not valid: - raise AnsibleFilterError(errors) - return from_xml(**updated_data) - - -class FilterModule(object): - """from_xml""" - - def filters(self): - """a mapping of filter names to functions""" - return {"from_xml": _from_xml} diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/get_path.py b/ansible/collections/ansible_collections/ansible/utils/plugins/filter/get_path.py deleted file mode 100644 index 37c2dcd5..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/get_path.py +++ /dev/null @@ -1,183 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2020 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - - -""" -flatten a complex object to dot bracket notation -""" -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -DOCUMENTATION = """ - name: get_path - author: Bradley Thornton (@cidrblock) - version_added: "1.0.0" - short_description: Retrieve the value in a variable using a path - description: - - Use a I(path) to retrieve a nested value from a I(var). - - B(get_path) is also available as a B(lookup plugin) for convenience. - - Using the parameters below- C(var|ansible.utils.get_path(path, wantlist)) - options: - var: - description: - - The variable from which the value should be extracted. - - This option represents the value that is passed to the filter plugin in pipe format. - - For example C(config_data|ansible.utils.get_path()), in this case C(config_data) represents this option. - type: raw - required: True - path: - description: - - The I(path) in the I(var) to retrieve the value of. - - The I(path) needs to be a valid jinja path. - type: str - required: True - wantlist: - description: - - If set to C(True), the return value will always be a list. - type: bool - - notes: -""" - -EXAMPLES = r""" -- ansible.builtin.set_fact: - a: - b: - c: - d: - - 0 - - 1 - e: - - true - - false - -- name: Retrieve a value deep inside a using a path - ansible.builtin.set_fact: - value: "{{ a|ansible.utils.get_path(path) }}" - vars: - path: b.c.d[0] - -# TASK [Retrieve a value deep inside a using a path] ****************** -# ok: [localhost] => changed=false -# ansible_facts: -# value: '0' - - -#### Working with hostvars - -- name: Retrieve a value deep inside all of the host's vars - ansible.builtin.set_fact: - value: "{{ look_in|ansible.utils.get_path(look_for) }}" - vars: - look_in: "{{ hostvars[inventory_hostname] }}" - look_for: a.b.c.d[0] - -# TASK [Retrieve a value deep inside all of the host's vars] ******** -# ok: [nxos101] => changed=false -# ansible_facts: -# as_filter: '0' -# as_lookup: '0' - - -#### Used alongside ansible.utils.to_paths - -- name: Get the paths for the object - ansible.builtin.set_fact: - paths: "{{ a|ansible.utils.to_paths(prepend='a') }}" - -- name: Retrieve the value of each path from vars - ansible.builtin.debug: - msg: "The value of path {{ path }} in vars is {{ value }}" - loop: "{{ paths.keys()|list }}" - loop_control: - label: "{{ item }}" - vars: - path: "{{ item }}" - value: "{{ vars|ansible.utils.get_path(item) }}" - -# TASK [Get the paths for the object] ******************************* -# ok: [nxos101] => changed=false -# ansible_facts: -# paths: -# a.b.c.d[0]: 0 -# a.b.c.d[1]: 1 -# a.b.c.e[0]: True -# a.b.c.e[1]: False - -# TASK [Retrieve the value of each path from vars] ****************** -# ok: [nxos101] => (item=a.b.c.d[0]) => -# msg: The value of path a.b.c.d[0] in vars is 0 -# ok: [nxos101] => (item=a.b.c.d[1]) => -# msg: The value of path a.b.c.d[1] in vars is 1 -# ok: [nxos101] => (item=a.b.c.e[0]) => -# msg: The value of path a.b.c.e[0] in vars is True -# ok: [nxos101] => (item=a.b.c.e[1]) => -# msg: The value of path a.b.c.e[1] in vars is False - - -#### Working with complex structures and transforming results - -- name: Retrieve the current interface config - cisco.nxos.nxos_interfaces: - state: gathered - register: interfaces - -- name: Get the description of several interfaces - ansible.builtin.debug: - msg: "{{ rekeyed|ansible.utils.get_path(item) }}" - vars: - rekeyed: - by_name: "{{ interfaces.gathered|ansible.builtin.rekey_on_member('name') }}" - loop: - - by_name['Ethernet1/1'].description - - by_name['Ethernet1/2'].description|upper - - by_name['Ethernet1/3'].description|default('') - - -# TASK [Get the description of several interfaces] ****************** -# ok: [nxos101] => (item=by_name['Ethernet1/1'].description) => changed=false -# msg: Configured by ansible -# ok: [nxos101] => (item=by_name['Ethernet1/2'].description|upper) => changed=false -# msg: CONFIGURED BY ANSIBLE -# ok: [nxos101] => (item=by_name['Ethernet1/3'].description|default('')) => changed=false -# msg: '' -""" - -from ansible.errors import AnsibleFilterError - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - AnsibleArgSpecValidator, -) -from ansible_collections.ansible.utils.plugins.module_utils.common.get_path import get_path - - -try: - from jinja2.filters import pass_environment -except ImportError: - from jinja2.filters import environmentfilter as pass_environment - - -@pass_environment -def _get_path(*args, **kwargs): - """Retrieve the value in a variable using a path.""" - keys = ["environment", "var", "path"] - data = dict(zip(keys, args)) - data.update(kwargs) - environment = data.pop("environment") - aav = AnsibleArgSpecValidator(data=data, schema=DOCUMENTATION, name="get_path") - valid, errors, updated_data = aav.validate() - if not valid: - raise AnsibleFilterError(errors) - updated_data["environment"] = environment - return get_path(**updated_data) - - -class FilterModule(object): - """path filters""" - - def filters(self): - return {"get_path": _get_path} diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/hwaddr.py b/ansible/collections/ansible_collections/ansible/utils/plugins/filter/hwaddr.py deleted file mode 100644 index 4526359d..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/hwaddr.py +++ /dev/null @@ -1,126 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -filter plugin file for ipaddr filters: hwaddr -""" -from __future__ import absolute_import, division, print_function - -from functools import partial - -from ansible.errors import AnsibleFilterError - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - AnsibleArgSpecValidator, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddr_utils import ( - _need_netaddr, - hwaddr, -) - - -__metaclass__ = type - - -try: - from jinja2.filters import pass_environment -except ImportError: - from jinja2.filters import environmentfilter as pass_environment - -try: - import netaddr - - HAS_NETADDR = True -except ImportError: - # in this case, we'll make the filters return error messages (see bottom) - HAS_NETADDR = False -else: - - class mac_linux(netaddr.mac_unix): - word_fmt = "%.2x" - - -DOCUMENTATION = """ - name: hwaddr - author: Ashwini Mhatre (@amhatre) - version_added: "2.5.0" - short_description: HWaddr / MAC address filters - description: - - This filter check if string is a HW/MAC address and filter it - - You can use the hwaddr() filter to check if a given string is a MAC address or convert it between various - formats. - options: - value: - description: HW/MAC address. - type: str - required: True - query: - description: query string. Example. cisco,linux,unix etc - type: str - default: "" - alias: - description: alias - type: str - default: hwaddr - notes: -""" - -EXAMPLES = r""" -#### examples -- name: Check if given string is a MAC address - debug: - msg: "{{ '1a:2b:3c:4d:5e:6f' | ansible.utils.hwaddr }}" - -- name: Convert HW address to Cisco format - debug: - msg: "{{ '1a:2b:3c:4d:5e:6f' | ansible.utils.hwaddr('cisco') }}" - -# TASK [Check if given string is a MAC address] *************************************************************** -# ok: [localhost] => { -# "msg": "1a:2b:3c:4d:5e:6f" -# } -# -# TASK [Convert HW address to Cisco format] ****************************************************************** -# ok: [localhost] => { -# "msg": "1a2b.3c4d.5e6f" -# } -""" - -RETURN = """ - data: - type: str - description: - - mac/Hw address - -""" - - -@pass_environment -def _hwaddr(*args, **kwargs): - """This filter check if string is a HW/MAC address and filter it""" - keys = ["value", "query", "alias"] - data = dict(zip(keys, args[1:])) - data.update(kwargs) - aav = AnsibleArgSpecValidator(data=data, schema=DOCUMENTATION, name="hwaddr") - valid, errors, updated_data = aav.validate() - if not valid: - raise AnsibleFilterError(errors) - return hwaddr(**updated_data) - - -class FilterModule(object): - """IP address and network manipulation filters""" - - filter_map = { - # IP addresses and networks - "hwaddr": _hwaddr, - } - - def filters(self): - """ipaddr filter""" - if HAS_NETADDR: - return self.filter_map - else: - return dict((f, partial(_need_netaddr, f)) for f in self.filter_map) diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/index_of.py b/ansible/collections/ansible_collections/ansible/utils/plugins/filter/index_of.py deleted file mode 100644 index 15d08afa..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/index_of.py +++ /dev/null @@ -1,343 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2020 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - - -""" -The index_of filter plugin -""" -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -DOCUMENTATION = """ - name: index_of - author: Bradley Thornton (@cidrblock) - version_added: "1.0.0" - short_description: Find the indices of items in a list matching some criteria - description: - - This plugin returns the indices of items matching some criteria in a list. - - When working with a list of dictionaries, the key to evaluate can be specified. - - B(index_of) is also available as a B(lookup plugin) for convenience. - - Using the parameters below- C(data|ansible.utils.index_of(test, value, key, fail_on_missing, wantlist)) - options: - data: - description: - - A list of items to enumerate and test against. - - This option represents the value that is passed to the filter plugin in pipe format. - - For example C(config_data|ansible.utils.index_of('x')), in this case C(config_data) represents this option. - type: list - required: True - test: - description: - - The name of the test to run against the list, a valid jinja2 test or ansible test plugin. - - Jinja2 includes the following tests U(http://jinja.palletsprojects.com/templates/#builtin-tests). - - An overview of tests included in ansible U(https://docs.ansible.com/ansible/latest/user_guide/playbooks_tests.html) - type: str - required: True - value: - description: - - The value used to test each list item against. - - 'Not required for simple tests (eg: C(true), C(false), C(even), C(odd))' - - May be a C(string), C(boolean), C(number), C(regular expression) C(dict) and so on, depending on the C(test) used - type: raw - key: - description: - - When the data provided is a list of dictionaries, run the test against this dictionary key. - - When using a I(key), the I(data) must only contain dictionaries. - - See I(fail_on_missing) below to determine the behavior when the I(key) is missing from a dictionary in the I(data). - type: str - fail_on_missing: - description: When provided a list of dictionaries, fail if the key is missing from one or more of the dictionaries. - type: bool - wantlist: - description: - - When only a single entry in the I(data) is matched, the index of that entry is returned as an integer. - - If set to C(True), the return value will always be a list, even if only a single entry is matched. - type: bool - - notes: -""" - -EXAMPLES = r""" - -#### Simple examples - -- name: Define a list - ansible.builtin.set_fact: - data: - - 1 - - 2 - - 3 - -- name: Find the index of 2 - ansible.builtin.set_fact: - indices: "{{ data|ansible.utils.index_of('eq', 2) }}" - -# TASK [Find the index of 2] ************************************************* -# ok: [nxos101] => changed=false -# ansible_facts: -# indices: '1' - - -- name: Find the index of 2, ensure list is returned - ansible.builtin.set_fact: - indices: "{{ data|ansible.utils.index_of('eq', 2, wantlist=True) }}" - -# TASK [Find the index of 2, ensure list is returned] ************************ -# ok: [nxos101] => changed=false -# ansible_facts: -# indices: -# - 1 - - -- name: Find the index of 3 using the long format - ansible.builtin.set_fact: - indices: "{{ data|ansible.utils.index_of(test='eq', value=value, wantlist=True) }}" - vars: - value: 3 - -# TASK [Find the index of 3 using the long format] *************************** -# ok: [nxos101] => changed=false -# ansible_facts: -# indices: -# - 2 - - -- name: Find numbers greater than 1, using loop - debug: - msg: "{{ data[item] }} is {{ test }} than {{ value }}" - loop: "{{ data|ansible.utils.index_of(test, value) }}" - vars: - test: '>' - value: 1 - -# TASK [Find numbers great than 1, using loop] ******************************* -# ok: [sw01] => (item=1) => -# msg: 2 is > than 1 -# ok: [sw01] => (item=2) => -# msg: 3 is > than 1 - - -#### Working with lists of dictionaries - -- name: Define a list with hostname and type - ansible.builtin.set_fact: - data: - - name: sw01.example.lan - type: switch - - name: rtr01.example.lan - type: router - - name: fw01.example.corp - type: firewall - - name: fw02.example.corp - type: firewall - -- name: Find the index of all firewalls using the type key - ansible.builtin.set_fact: - firewalls: "{{ data|ansible.utils.index_of('eq', 'firewall', 'type') }}" - -# TASK [Find the index of all firewalls using the type key] ****************** -# ok: [nxos101] => changed=false -# ansible_facts: -# firewalls: -# - 2 -# - 3 - -- name: Find the index of all firewalls, use in a loop - debug: - msg: "The type of {{ device_type }} at index {{ item }} has name {{ data[item].name }}." - loop: "{{ data|ansible.utils.index_of('eq', device_type, 'type') }}" - vars: - device_type: firewall - -# TASK [Find the index of all firewalls, use in a loop, as a filter] ********* -# ok: [nxos101] => (item=2) => -# msg: The type of firewall at index 2 has name fw01.example.corp. -# ok: [nxos101] => (item=3) => -# msg: The type of firewall at index 3 has name fw02.example.corp. - -- name: Find the index of all devices with a .corp name - debug: - msg: "The device named {{ data[item].name }} is a {{ data[item].type }}" - loop: "{{ data|ansible.utils.index_of('regex', expression, 'name') }}" - vars: - expression: '\.corp$' - -# TASK [Find the index of all devices with a .corp name] ********************* -# ok: [nxos101] => (item=2) => -# msg: The device named fw01.example.corp is a firewall -# ok: [nxos101] => (item=3) => -# msg: The device named fw02.example.corp is a firewall - - -#### Working with complex structures from resource modules - -- name: Retrieve the current L3 interface configuration - cisco.nxos.nxos_l3_interfaces: - state: gathered - register: current_l3 - -# TASK [Retrieve the current L3 interface configuration] ********************* -# ok: [sw01] => changed=false -# gathered: -# - name: Ethernet1/1 -# - name: Ethernet1/2 -# <...> -# - name: Ethernet1/128 -# - ipv4: -# - address: 192.168.101.14/24 -# name: mgmt0 - -- name: Find the indices interfaces with a 192.168.101.xx ip address - ansible.builtin.set_fact: - found: "{{ found + entry }}" - with_indexed_items: "{{ current_l3.gathered }}" - vars: - found: [] - ip: '192.168.101.' - address: "{{ item.1.ipv4|d([])|ansible.utils.index_of('search', ip, 'address', wantlist=True) }}" - entry: - - interface_idx: "{{ item.0 }}" - address_idxs: "{{ address }}" - when: address - -# TASK [debug] *************************************************************** -# ok: [sw01] => -# found: -# - address_idxs: -# - 0 -# interface_idx: '128' - -- name: Show all interfaces and their address - debug: - msg: "{{ interface.name }} has ip {{ address }}" - loop: "{{ found|subelements('address_idxs') }}" - vars: - interface: "{{ current_l3.gathered[item.0.interface_idx|int] }}" - address: "{{ interface.ipv4[item.1].address }}" - -# TASK [Show all interfaces and their address] ******************************* -# ok: [nxos101] => (item=[{'interface_idx': '128', 'address_idxs': [0]}, 0]) => -# msg: mgmt0 has ip 192.168.101.14/24 - - -#### Working with deeply nested data - -- name: Define interface configuration facts - ansible.builtin.set_fact: - data: - interfaces: - interface: - - config: - description: configured by Ansible - 1 - enabled: true - loopback-mode: false - mtu: 1024 - name: loopback0000 - type: eth - name: loopback0000 - subinterfaces: - subinterface: - - config: - description: subinterface configured by Ansible - 1 - enabled: true - index: 5 - index: 5 - - config: - description: subinterface configured by Ansible - 2 - enabled: false - index: 2 - index: 2 - - config: - description: configured by Ansible - 2 - enabled: false - loopback-mode: false - mtu: 2048 - name: loopback1111 - type: virt - name: loopback1111 - subinterfaces: - subinterface: - - config: - description: subinterface configured by Ansible - 3 - enabled: true - index: 10 - index: 10 - - config: - description: subinterface configured by Ansible - 4 - enabled: false - index: 3 - index: 3 - - -- name: Find the description of loopback111, subinterface index 10 - debug: - msg: |- - {{ data.interfaces.interface[int_idx|int] - .subinterfaces.subinterface[subint_idx|int] - .config.description }} - vars: - # the values to search for - int_name: loopback1111 - sub_index: 10 - # retrieve the index in each nested list - int_idx: | - {{ data.interfaces.interface| - ansible.utils.index_of('eq', int_name, 'name') }} - subint_idx: | - {{ data.interfaces.interface[int_idx|int] - .subinterfaces.subinterface| - ansible.utils.index_of('eq', sub_index, 'index') }} - -# TASK [Find the description of loopback111, subinterface index 10] ************ -# ok: [sw01] => -# msg: subinterface configured by Ansible - 3 -""" - -from ansible.errors import AnsibleFilterError - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - AnsibleArgSpecValidator, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.index_of import index_of - - -try: - from jinja2.filters import pass_environment -except ImportError: - from jinja2.filters import environmentfilter as pass_environment - - -@pass_environment -def _index_of(*args, **kwargs): - """Find the indicies of items in a list matching some criteria.""" - - keys = [ - "environment", - "data", - "test", - "value", - "key", - "fail_on_missing", - "wantlist", - ] - data = dict(zip(keys, args)) - data.update(kwargs) - environment = data.pop("environment") - aav = AnsibleArgSpecValidator(data=data, schema=DOCUMENTATION, name="index_of") - valid, errors, updated_data = aav.validate() - if not valid: - raise AnsibleFilterError(errors) - updated_data["tests"] = environment.tests - return index_of(**updated_data) - - -class FilterModule(object): - """index_of""" - - def filters(self): - """a mapping of filter names to functions""" - return {"index_of": _index_of} diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/ip4_hex.py b/ansible/collections/ansible_collections/ansible/utils/plugins/filter/ip4_hex.py deleted file mode 100644 index 8f11ecbb..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/ip4_hex.py +++ /dev/null @@ -1,133 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -filter plugin file for ipaddr filters: ip4_hex -""" -from __future__ import absolute_import, division, print_function - -from functools import partial - -from ansible.errors import AnsibleFilterError - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - AnsibleArgSpecValidator, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddr_utils import _need_netaddr - - -__metaclass__ = type - - -try: - from jinja2.filters import pass_environment -except ImportError: - from jinja2.filters import environmentfilter as pass_environment - -try: - import netaddr - - HAS_NETADDR = True -except ImportError: - # in this case, we'll make the filters return error messages (see bottom) - HAS_NETADDR = False -else: - - class mac_linux(netaddr.mac_unix): - pass - - mac_linux.word_fmt = "%.2x" - -DOCUMENTATION = """ - name: ip4_hex - author: Ashwini Mhatre (@amhatre) - version_added: "2.5.0" - short_description: This filter is designed to convert IPv4 address to Hexadecimal notation with optional delimiter. - description: - - This filter convert IPv4 address to Hexadecimal notation with optional delimiter - options: - arg: - description: IPv4 address. - type: str - required: True - delimiter: - description: - - You can provide a single argument to each ip4_hex() filter as delimiter. - type: str - default: '' - notes: -""" - -EXAMPLES = r""" -#### examples -# ip4_hex convert IPv4 address to Hexadecimal notation with optional delimiter -- debug: - msg: "{{ '192.168.1.5' | ansible.utils.ip4_hex }}" - -# ip4_hex with delimiter -- debug: - msg: "{{ '192.168.1.5' | ansible.utils.ip4_hex(':') }}" - -# TASK [debug] ************************************************************************************************ -# task path: /Users/amhatre/ansible-collections/playbooks/test_ip4_hex.yaml:7 -# Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils -# ok: [localhost] => { -# "msg": "c0a80105" -# } -# -# TASK [debug] ************************************************************************************************ -# task path: /Users/amhatre/ansible-collections/playbooks/test_ip4_hex.yaml:11 -# Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils -# ok: [localhost] => { -# "msg": "c0:a8:01:05" -# } -""" - -RETURN = """ - data: - type: str - description: - - Returns IPv4 address to Hexadecimal notation. -""" - - -@pass_environment -def _ip4_hex(*args, **kwargs): - """This filter is designed to Convert an IPv4 address to Hexadecimal notation""" - keys = ["arg", "delimiter"] - data = dict(zip(keys, args[1:])) - data.update(kwargs) - aav = AnsibleArgSpecValidator(data=data, schema=DOCUMENTATION, name="ip4_hex") - valid, errors, updated_data = aav.validate() - if not valid: - raise AnsibleFilterError(errors) - return ip4_hex(**updated_data) - - -def ip4_hex(arg, delimiter=""): - """Convert an IPv4 address to Hexadecimal notation""" - try: - ip = netaddr.IPAddress(arg) - except (netaddr.AddrFormatError, ValueError): - msg = "You must pass a valid IP address; {0} is invalid".format(arg) - raise AnsibleFilterError(msg) - numbers = list(map(int, arg.split("."))) - return "{0:02x}{sep}{1:02x}{sep}{2:02x}{sep}{3:02x}".format(*numbers, sep=delimiter) - - -class FilterModule(object): - """IP address and network manipulation filters""" - - filter_map = { - # IP addresses and networks - "ip4_hex": _ip4_hex, - } - - def filters(self): - """ip4_hex filter""" - if HAS_NETADDR: - return self.filter_map - else: - return dict((f, partial(_need_netaddr, f)) for f in self.filter_map) diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/ipaddr.py b/ansible/collections/ansible_collections/ansible/utils/plugins/filter/ipaddr.py deleted file mode 100644 index 33f496a7..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/ipaddr.py +++ /dev/null @@ -1,299 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -filter plugin file for ipaddr filters: cidr_merge -""" -from __future__ import absolute_import, division, print_function - -from functools import partial - -from ansible.errors import AnsibleFilterError - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - AnsibleArgSpecValidator, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddr_utils import ( - _need_netaddr, - ipaddr, -) - - -__metaclass__ = type - - -try: - from jinja2.filters import pass_environment -except ImportError: - from jinja2.filters import environmentfilter as pass_environment - -try: - import netaddr - - HAS_NETADDR = True -except ImportError: - # in this case, we'll make the filters return error messages (see bottom) - HAS_NETADDR = False -else: - - class mac_linux(netaddr.mac_unix): - pass - - mac_linux.word_fmt = "%.2x" - -DOCUMENTATION = """ - name: ipaddr - author: Ashwini Mhatre (@amhatre) - version_added: "2.5.0" - short_description: This filter is designed to return the input value if a query is True, else False. - description: - - This filter is designed to return the input value if a query is True, and False if a query is False - - This way it can be easily used in chained filters - options: - value: - description: - - list of subnets or individual address or any other values input for ipaddr plugin - type: raw - required: True - query: - description: - - You can provide a single argument to each ipaddr() filter. - - The filter will then treat it as a query and return values modified by that query. - - >- - Types of queries include: - 1. query by name: ansible.utils.ipaddr('address'), ansible.utils.ipv4('network'); - 2. query by CIDR range: ansible.utils.ipaddr('192.168.0.0/24'), ansible.utils.ipv6('2001:db8::/32'); - 3. query by index number: ansible.utils.ipaddr('1'), ansible.utils.ipaddr('-1'); - type: str - default: '' - version: - type: int - description: Ip version 4 or 6 - alias: - type: str - description: type of filter. example ipaddr, ipv4, ipv6, ipwrap - notes: -""" - -EXAMPLES = r""" -#### examples -# Ipaddr filter plugin with different queries. -- name: Set value as input list - ansible.builtin.set_fact: - value: - - 192.24.2.1 - - host.fqdn - - ::1 - - '' - - 192.168.32.0/24 - - fe80::100/10 - - 42540766412265424405338506004571095040/64 - - true -- debug: - msg: "{{ value|ansible.utils.ipaddr }}" - -- name: Fetch only those elements that are host IP addresses and not network ranges - debug: - msg: "{{ value|ansible.utils.ipaddr('address') }}" - -- name: | - Fetch only host IP addresses with their correct CIDR prefixes (as is common with IPv6 addressing), you can use - the ipaddr('host') filter. - debug: - msg: "{{ value|ansible.utils.ipaddr('host') }}" - -- name: check if IP addresses or network ranges are accessible on a public Internet and return it. - debug: - msg: "{{ value|ansible.utils.ipaddr('public') }}" - -- name: check if IP addresses or network ranges are accessible on a private Internet and return it. - debug: - msg: "{{ value|ansible.utils.ipaddr('private') }}" - -- name: check which values are values are specifically network ranges and return it. - debug: - msg: "{{ value|ansible.utils.ipaddr('net') }}" - -- name: check how many IP addresses can be in a certain range. - debug: - msg: "{{ value| ansible.utils.ipaddr('net') | ansible.utils.ipaddr('size') }}" - -- name: By specifying a network range as a query, you can check if a given value is in that range. - debug: - msg: "{{ value|ansible.utils.ipaddr('192.0.0.0/8') }}" - -# First IP address (network address) -- name: | - If you specify a positive or negative integer as a query, ipaddr() will treat this as an index and will return - the specific IP address from a network range, in the "host/prefix" format. - debug: - msg: "{{ value| ansible.utils.ipaddr('net') | ansible.utils.ipaddr('0') }}" - -# Second IP address (usually the gateway host) -- debug: - msg: "{{ value| ansible.utils.ipaddr('net') | ansible.utils.ipaddr('1') }}" - -# Last IP address (the broadcast address in IPv4 networks) -- debug: - msg: "{{ value| ansible.utils.ipaddr('net') | ansible.utils.ipaddr('-1') }}" - - -# PLAY [Ipaddr filter plugin with different queries.] ****************************************************************** -# TASK [Set value as input list] *************************************************************************************** -# ok: [localhost] => {"ansible_facts": {"value": ["192.24.2.1", "host.fqdn", "::1", "", "192.168.32.0/24", -# "fe80::100/10", "42540766412265424405338506004571095040/64", true]}, "changed": false} -# -# TASK [debug] ******************************************************************************************************** -# ok: [localhost] => { -# "msg": [ -# "192.24.2.1", -# "::1", -# "192.168.32.0/24", -# "fe80::100/10", -# "2001:db8:32c:faad::/64" -# ] -# } -# -# TASK [Fetch only those elements that are host IP addresses and not network ranges] *********************************** -# ok: [localhost] => { -# "msg": [ -# "192.24.2.1", -# "::1", -# "fe80::100", -# "2001:db8:32c:faad::" -# ] -# } -# -# TASK [Fetch only host IP addresses with their correct CIDR prefixes (as is common with IPv6 addressing), you can use -# the ipaddr('host') filter.] ***************** -# ok: [localhost] => { -# "msg": [ -# "192.24.2.1/32", -# "::1/128", -# "fe80::100/10" -# ] -# } -# -# TASK [check if IP addresses or network ranges are accessible on a public Internet and return it.] ******************** -# ok: [localhost] => { -# "msg": [ -# "192.24.2.1", -# "2001:db8:32c:faad::/64" -# ] -# } -# -# TASK [check if IP addresses or network ranges are accessible on a private Internet and return it.] ******************* -# ok: [localhost] => { -# "msg": [ -# "192.168.32.0/24", -# "fe80::100/10" -# ] -# } -# -# TASK [check which values are values are specifically network ranges and return it.] ********************************** -# ok: [localhost] => { -# "msg": [ -# "192.168.32.0/24", -# "2001:db8:32c:faad::/64" -# ] -# } -# -# TASK [check how many IP addresses can be in a certain range.] ********************************************************* -# ok: [localhost] => { -# "msg": [ -# 256, -# 18446744073709551616 -# ] -# } -# -# TASK [By specifying a network range as a query, you can check if a given value is in that range.] ******************** -# ok: [localhost] => { -# "msg": [ -# "192.24.2.1", -# "192.168.32.0/24" -# ] -# } -# -# TASK [If you specify a positive or negative integer as a query, ipaddr() will treat this as an index and will -# return the specific IP address from a network range, in the "host/prefix" format.] *** -# ok: [localhost] => { -# "msg": [ -# "192.168.32.0/24", -# "2001:db8:32c:faad::/64" -# ] -# } -# -# TASK [debug] ********************************************************************************************************* -# ok: [localhost] => { -# "msg": [ -# "192.168.32.1/24", -# "2001:db8:32c:faad::1/64" -# ] -# } -# -# TASK [debug] ******************************************************************************************************** -# ok: [localhost] => { -# "msg": [ -# "192.168.32.255/24", -# "2001:db8:32c:faad:ffff:ffff:ffff:ffff/64" -# ] -# } -""" - -RETURN = """ - data: - type: raw - description: - - Returns values valid for a particular query. -""" - - -@pass_environment -def _ipaddr(*args, **kwargs): - """This filter is designed to return the input value if a query is True, and False if a query is False""" - keys = ["value", "query", "version", "alias"] - data = dict(zip(keys, args[1:])) - data.update(kwargs) - try: - if isinstance(data["value"], str): - pass - elif isinstance(data["value"], list): - pass - elif isinstance(data["value"], int): - pass - else: - raise AnsibleFilterError( - "Unrecognized type <{0}> for ipaddr filter <{1}>".format( - type(data["value"]), - "value", - ), - ) - - except (TypeError, ValueError): - raise AnsibleFilterError( - "Unrecognized type <{0}> for ipaddr filter <{1}>".format(type(data["value"]), "value"), - ) - - aav = AnsibleArgSpecValidator(data=data, schema=DOCUMENTATION, name="ipaddr") - valid, errors, updated_data = aav.validate() - if not valid: - raise AnsibleFilterError(errors) - return ipaddr(**updated_data) - - -class FilterModule(object): - """IP address and network manipulation filters""" - - filter_map = { - # IP addresses and networks - "ipaddr": _ipaddr, - } - - def filters(self): - """ipaddr filter""" - if HAS_NETADDR: - return self.filter_map - else: - return dict((f, partial(_need_netaddr, f)) for f in self.filter_map) diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/ipcut.py b/ansible/collections/ansible_collections/ansible/utils/plugins/filter/ipcut.py deleted file mode 100644 index 4e61a45d..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/ipcut.py +++ /dev/null @@ -1,152 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2023 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -filter plugin file for ipaddr filters: ip_cut -""" -from __future__ import absolute_import, division, print_function - -from functools import partial - -from ansible.errors import AnsibleFilterError - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - AnsibleArgSpecValidator, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddr_utils import _need_netaddr - - -__metaclass__ = type - - -try: - from jinja2.filters import pass_environment -except ImportError: - from jinja2.filters import environmentfilter as pass_environment - -try: - import netaddr - - HAS_NETADDR = True -except ImportError: - # in this case, we'll make the filters return error messages (see bottom) - HAS_NETADDR = False -else: - - class mac_linux(netaddr.mac_unix): - pass - - mac_linux.word_fmt = "%.2x" - -DOCUMENTATION = """ - name: ipcut - author: Ashwini Mhatre (@amhatre) - version_added: "2.11.0" - short_description: This filter is designed to get 1st or last few bits of IP address. - description: - - This filter is designed to fetch 1st or last few bits of Ip address. - options: - value: - description: - - list of subnets or individual address or any other values input for ip_cut plugin - type: str - required: True - amount: - type: int - description: integer for arithmetic. Example -1,2,3 -""" - -EXAMPLES = r""" -#### examples -- name: Get first 64 bits of Ipv6 address - debug: - msg: "{{ '1234:4321:abcd:dcba::17' | ansible.utils.ipcut(64) }}" - -- name: Get last 80 bits of Ipv6 address - debug: - msg: "{{ '1234:4321:abcd:dcba::17' | ansible.utils.ipcut(-80) }}" -# PLAY [IPCUT filter plugin examples] ************************************************************************************************ - -# TASK [Get first X bits of Ipv6 address] ******************************************************************************************** -# ok: [localhost] => { -# "msg": "1234:4321:abcd:dcba" -# } - -# TASK [Get last X bits of Ipv6 address] ********************************************************************************************* -# ok: [localhost] => { -# "msg": "dcba:0:0:0:17" -# } - -# PLAY RECAP ************************************************************************************************************************* -# localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 -""" - -RETURN = """ - data: - type: str - description: - - Returns result of portion of IP. -""" - - -@pass_environment -def _ipcut(*args, **kwargs): - """Fetch first or last bits of IPV6 address""" - keys = ["value", "amount"] - data = dict(zip(keys, args[1:])) - data.update(kwargs) - aav = AnsibleArgSpecValidator(data=data, schema=DOCUMENTATION, name="ipmath") - valid, errors, updated_data = aav.validate() - if not valid: - raise AnsibleFilterError(errors) - return ipcut(**updated_data) - - -def ipcut(value, amount): - ipv6_oct = [] - try: - ip = netaddr.IPAddress(value) - ipv6address = ip.bits().replace(":", "") - except (netaddr.AddrFormatError, ValueError): - msg = "You must pass a valid IP address; {0} is invalid".format(value) - raise AnsibleFilterError(msg) - - if not isinstance(amount, int): - msg = ("You must pass an integer for arithmetic; " "{0} is not a valid integer").format( - amount, - ) - raise AnsibleFilterError(msg) - else: - if amount < 0: - ipsub = ipv6address[amount:] - else: - ipsub = ipv6address[0:amount] - - ipsubfinal = [] - - for i in range(0, len(ipsub), 16): - oct_sub = i + 16 - ipsubfinal.append(ipsub[i:oct_sub]) - - for i in ipsubfinal: - x = hex(int(i, 2)) - ipv6_oct.append(x.replace("0x", "")) - return str(":".join(ipv6_oct)) - - -class FilterModule(object): - """IP address and network manipulation filters""" - - filter_map = { - # This filter is designed to fetch first or last bits of IPV6 address - "ipcut": _ipcut, - } - - def filters(self): - """ipcut filter""" - if HAS_NETADDR: - return self.filter_map - else: - return dict((f, partial(_need_netaddr, f)) for f in self.filter_map) diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/ipmath.py b/ansible/collections/ansible_collections/ansible/utils/plugins/filter/ipmath.py deleted file mode 100644 index 21e0df3f..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/ipmath.py +++ /dev/null @@ -1,182 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -filter plugin file for ipaddr filters: cidr_merge -""" -from __future__ import absolute_import, division, print_function - -from functools import partial - -from ansible.errors import AnsibleFilterError - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - AnsibleArgSpecValidator, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddr_utils import _need_netaddr - - -__metaclass__ = type - - -try: - from jinja2.filters import pass_environment -except ImportError: - from jinja2.filters import environmentfilter as pass_environment - -try: - import netaddr - - HAS_NETADDR = True -except ImportError: - # in this case, we'll make the filters return error messages (see bottom) - HAS_NETADDR = False -else: - - class mac_linux(netaddr.mac_unix): - pass - - mac_linux.word_fmt = "%.2x" - -DOCUMENTATION = """ - name: ipmath - author: Ashwini Mhatre (@amhatre) - version_added: "2.5.0" - short_description: This filter is designed to do simple IP math/arithmetic. - description: - - This filter is designed to do simple IP math/arithmetic. - options: - value: - description: - - list of subnets or individual address or any other values input for ipaddr plugin - type: str - required: True - amount: - type: int - description: integer for arithmetic. Example -1,2,3 -""" - -EXAMPLES = r""" -#### examples -# Ipmath filter plugin with different arthmetic. -# Get the next fifth address based on an IP address -- debug: - msg: "{{ '192.168.1.5' | ansible.netcommon.ipmath(5) }}" - -# Get the tenth previous address based on an IP address -- debug: - msg: "{{ '192.168.1.5' | ansible.netcommon.ipmath(-10) }}" - -# Get the next fifth address using CIDR notation -- debug: - msg: "{{ '192.168.1.1/24' | ansible.netcommon.ipmath(5) }}" - -# Get the previous fifth address using CIDR notation -- debug: - msg: "{{ '192.168.1.6/24' | ansible.netcommon.ipmath(-5) }}" - -# Get the previous tenth address using cidr notation -# It returns a address of the previous network range -- debug: - msg: "{{ '192.168.2.6/24' | ansible.netcommon.ipmath(-10) }}" - -# Get the next tenth address in IPv6 -- debug: - msg: "{{ '2001::1' | ansible.netcommon.ipmath(10) }}" - -# Get the previous tenth address in IPv6 -- debug: - msg: "{{ '2001::5' | ansible.netcommon.ipmath(-10) }}" - -# TASK [debug] ********************************************************************************************************** -# ok: [localhost] => { -# "msg": "192.168.1.10" -# } -# -# TASK [debug] ********************************************************************************************************** -# ok: [localhost] => { -# "msg": "192.168.0.251" -# } -# -# TASK [debug] ********************************************************************************************************** -# ok: [localhost] => { -# "msg": "192.168.1.6" -# } -# -# TASK [debug] ********************************************************************************************************** -# ok: [localhost] => { -# "msg": "192.168.1.1" -# } -# -# TASK [debug] ********************************************************************************************************** -# ok: [localhost] => { -# "msg": "192.168.1.252" -# } -# -# TASK [debug] ********************************************************************************************************** -# ok: [localhost] => { -# "msg": "2001::b" -# } -# -# TASK [debug] ********************************************************************************************************** -# ok: [localhost] => { -# "msg": "2000:ffff:ffff:ffff:ffff:ffff:ffff:fffb" -# } -""" - -RETURN = """ - data: - type: str - description: - - Returns result of IP math/arithmetic. -""" - - -@pass_environment -def _ipmath(*args, **kwargs): - """Convert the given data from json to xml.""" - keys = ["value", "amount"] - data = dict(zip(keys, args[1:])) - data.update(kwargs) - aav = AnsibleArgSpecValidator(data=data, schema=DOCUMENTATION, name="ipmath") - valid, errors, updated_data = aav.validate() - if not valid: - raise AnsibleFilterError(errors) - return ipmath(**updated_data) - - -def ipmath(value, amount): - try: - if "/" in value: - ip = netaddr.IPNetwork(value).ip - else: - ip = netaddr.IPAddress(value) - except (netaddr.AddrFormatError, ValueError): - msg = "You must pass a valid IP address; {0} is invalid".format(value) - raise AnsibleFilterError(msg) - - if not isinstance(amount, int): - msg = ("You must pass an integer for arithmetic; " "{0} is not a valid integer").format( - amount, - ) - raise AnsibleFilterError(msg) - - return str(ip + amount) - - -class FilterModule(object): - """IP address and network manipulation filters""" - - filter_map = { - # This filter is designed to do simple IP math/arithmetic - "ipmath": _ipmath, - } - - def filters(self): - """ipmath filter""" - if HAS_NETADDR: - return self.filter_map - else: - return dict((f, partial(_need_netaddr, f)) for f in self.filter_map) diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/ipsubnet.py b/ansible/collections/ansible_collections/ansible/utils/plugins/filter/ipsubnet.py deleted file mode 100644 index 36e09c2f..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/ipsubnet.py +++ /dev/null @@ -1,343 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -filter plugin file for ipaddr filters: ipsubnet -""" -from __future__ import absolute_import, division, print_function - -from functools import partial - -from ansible.errors import AnsibleFilterError - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - AnsibleArgSpecValidator, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddr_utils import ( - _need_netaddr, - ipaddr, -) - - -__metaclass__ = type - - -from ansible.module_utils._text import to_text - - -try: - from jinja2.filters import pass_environment -except ImportError: - from jinja2.filters import environmentfilter as pass_environment - -try: - import netaddr - - HAS_NETADDR = True -except ImportError: - # in this case, we'll make the filters return error messages (see bottom) - HAS_NETADDR = False -else: - - class mac_linux(netaddr.mac_unix): - pass - - mac_linux.word_fmt = "%.2x" - -DOCUMENTATION = """ - name: ipsubnet - author: Ashwini Mhatre (@amhatre) - version_added: "2.5.0" - short_description: This filter can be used to manipulate network subnets in several ways. - description: - - This filter can be used to manipulate network subnets in several ways. - options: - value: - description: - - subnets or individual address or any other values input for ipsubnet plugin - type: str - required: True - query: - description: | - You can provide query as 1st argument. - To check if a given string is a subnet, pass it through the filter without any arguments. If the given - string is an IP address, it will be converted into a subnet. - If you specify a subnet size as the first parameter of the ipsubnet() filter, and the subnet size is - smaller than the current one, you will get the number of subnets a given subnet can be split into. - type: str - default: '' - index: - description: | - The second argument of the ipsubnet() filter is an index number; by specifying it you can get a new subnet - with the specified index. - type: int - notes: -""" - -EXAMPLES = r""" -#### examples -# Ipsubnet filter plugin with different queries. -vars: - address: 192.168.144.5 - subnet: 192.168.0.0/16 - ipv6_address: '2001:4860:4860::8888' - ipv6_subnet: '2600:1f1c:1b3:8f00::/56' -tasks: - - name: convert IP address to subnet - debug: - msg: '{{ address | ansible.utils.ipsubnet }}' - - name: check if a given string is a subnet - debug: - msg: '{{ subnet | ansible.utils.ipsubnet }}' - - name: Get the number of subnets a given subnet can be split into. - debug: - msg: '{{ subnet | ansible.utils.ipsubnet(20) }}' - - name: Get a 1st subnet - debug: - msg: '{{ subnet | ansible.utils.ipsubnet(20, 0) }}' - - name: Get a last subnet - debug: - msg: '{{ subnet | ansible.utils.ipsubnet(20, -1) }}' - - name: Get first IPv6 subnet that has prefix length /120 - debug: - msg: '{{ ipv6_subnet | ansible.utils.ipsubnet(120, 0) }}' - - name: Get last subnet that has prefix length /120 - debug: - msg: '{{ ipv6_subnet | ansible.utils.ipsubnet(120, -1) }}' - - name: Get biggest subnet that contains that given IP address. - debug: - msg: '{{ address | ansible.utils.ipsubnet(20) }}' - - name: Get 1st smaller subnet by specifying 0 as index number - debug: - msg: '{{ address | ansible.utils.ipsubnet(18, 0) }}' - - name: Get last subnet - debug: - msg: '{{ address | ansible.utils.ipsubnet(18, -1) }}' - - name: >- - The rank of the IP in the subnet (the IP is the 36870nth /32 of the - subnet) - debug: - msg: '{{ address | ansible.utils.ipsubnet(subnet) }}' - - name: The rank in the /24 that contain the address - debug: - msg: '{{ address | ansible.utils.ipsubnet(''192.168.144.0/24'') }}' - - name: An IP with the subnet in the first /30 in a /24 - debug: - msg: '{{ ''192.168.144.1/30'' | ansible.utils.ipsubnet(''192.168.144.0/24'') }}' - - name: The fifth subnet /30 in a /24 - debug: - msg: '{{ ''192.168.144.16/30'' | ansible.utils.ipsubnet(''192.168.144.0/24'') }}' - - -# PLAY [Ipsubnet filter plugin with different queries.] **************************************************************** -# TASK [convert IP address to subnet] ************************************************************************* -# task path: /Users/amhatre/ansible-collections/playbooks/test_ipsubnet.yaml:10 -# Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils -# ok: [localhost] => { -# "msg": "192.168.144.5/32" -# } -# -# TASK [check if a given string is a subnet] ****************************************************************** -# task path: /Users/amhatre/ansible-collections/playbooks/test_ipsubnet.yaml:15 -# Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils -# ok: [localhost] => { -# "msg": "192.168.0.0/16" -# } -# -# TASK [Get the number of subnets a given subnet can be split into.] ****************************************** -# task path: /Users/amhatre/ansible-collections/playbooks/test_ipsubnet.yaml:20 -# Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils -# ok: [localhost] => { -# "msg": "16" -# } -# -# TASK [Get a 1st subnet] ************************************************************************************* -# task path: /Users/amhatre/ansible-collections/playbooks/test_ipsubnet.yaml:25 -# Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils -# ok: [localhost] => { -# "msg": "192.168.0.0/20" -# } -# -# TASK [Get a last subnet] ************************************************************************************ -# task path: /Users/amhatre/ansible-collections/playbooks/test_ipsubnet.yaml:30 -# Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils -# ok: [localhost] => { -# "msg": "192.168.240.0/20" -# } -# -# TASK [Get biggest subnet that contains that given IP address.] ********************************************** -# task path: /Users/amhatre/ansible-collections/playbooks/test_ipsubnet.yaml:35 -# Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils -# ok: [localhost] => { -# "msg": "192.168.144.0/20" -# } -# -# TASK [Get 1st smaller subnet by specifying 0 as index number] *********************************************** -# task path: /Users/amhatre/ansible-collections/playbooks/test_ipsubnet.yaml:40 -# Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils -# ok: [localhost] => { -# "msg": "192.168.128.0/18" -# } -# -# TASK [Get last subnet] ************************************************************************************** -# task path: /Users/amhatre/ansible-collections/playbooks/test_ipsubnet.yaml:45 -# Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils -# ok: [localhost] => { -# "msg": "192.168.144.4/31" -# } -# -# TASK [The rank of the IP in the subnet (the IP is the 36870nth /32 of the subnet)] ************************** -# task path: /Users/amhatre/ansible-collections/playbooks/test_ipsubnet.yaml:50 -# Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils -# ok: [localhost] => { -# "msg": "36870" -# } -# -# TASK [The rank in the /24 that contain the address] ********************************************************* -# task path: /Users/amhatre/ansible-collections/playbooks/test_ipsubnet.yaml:55 -# Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils -# ok: [localhost] => { -# "msg": "6" -# } -# -# TASK [An IP with the subnet in the first /30 in a /24] ****************************************************** -# task path: /Users/amhatre/ansible-collections/playbooks/test_ipsubnet.yaml:60 -# Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils -# ok: [localhost] => { -# "msg": "1" -# } -# -# TASK [he fifth subnet /30 in a /24] ************************************************************************* -# task path: /Users/amhatre/ansible-collections/playbooks/test_ipsubnet.yaml:65 -# Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils -# ok: [localhost] => { -# "msg": "5" -# } -""" - -RETURN = """ - data: - type: raw - description: - - Returns values valid for a particular query. -""" - - -@pass_environment -def _ipsubnet(*args, **kwargs): - """Manipulate IPv4/IPv6 subnets""" - keys = ["value", "query", "index"] - data = dict(zip(keys, args[1:])) - data.update(kwargs) - aav = AnsibleArgSpecValidator(data=data, schema=DOCUMENTATION, name="ipsubnet") - valid, errors, updated_data = aav.validate() - if not valid: - raise AnsibleFilterError(errors) - return ipsubnet(**updated_data) - - -def ipsubnet(value, query="", index=None): - """Manipulate IPv4/IPv6 subnets""" - - vtype = ipaddr(value, "type") - if not vtype: - return False - elif vtype == "address": - v = ipaddr(value, "cidr") - elif vtype == "network": - v = ipaddr(value, "subnet") - value = netaddr.IPNetwork(v).cidr - vtype = ipaddr(value, "type") - - if not query: - return to_text(value) - - vtotalbits = 128 if value.version == 6 else 32 - if query.isdigit(): - query = int(query) - if query < 0 or query > vtotalbits: - return False - - if index is None: - if vtype == "address": - return to_text(value.supernet(query)[0]) - elif vtype == "network": - if query - value.prefixlen < 0: - msg = "Requested subnet size of {0} is invalid".format( - to_text(query), - ) - raise AnsibleFilterError(msg) - return to_text(2 ** (query - value.prefixlen)) - - index = int(index) - if vtype == "address": - if index > vtotalbits + 1 - index or index < query - vtotalbits: - return False - return to_text(value.supernet(query)[index]) - elif vtype == "network": - subnets = 2 ** (query - value.prefixlen) - if index < 0: - index = index + subnets - if index < 0 or index >= subnets: - # subnet index out of range - return False - return to_text( - netaddr.IPNetwork( - to_text( - netaddr.IPAddress( - value.network.value + (index << vtotalbits - query), - ), - ) - + "/" - + to_text(query), - ), - ) - else: - vtype = ipaddr(query, "type") - if vtype == "address": - v = ipaddr(query, "cidr") - elif vtype == "network": - v = ipaddr(query, "subnet") - else: - msg = "You must pass a valid subnet or IP address; {0} is invalid".format( - to_text(query), - ) - raise AnsibleFilterError(msg) - query = netaddr.IPNetwork(v) - if ( - value.value >> vtotalbits - query.prefixlen - == query.value >> vtotalbits - query.prefixlen - ): - return to_text( - ( - ( - value.value - & 2 ** (value.prefixlen - query.prefixlen) - 1 - << (vtotalbits - value.prefixlen) - ) - >> (vtotalbits - value.prefixlen) - ) - + 1, - ) - msg = "{0} is not in the subnet {1}".format(value.cidr, query.cidr) - raise AnsibleFilterError(msg) - - return False - - -class FilterModule(object): - """IP address and network manipulation filters""" - - filter_map = { - # IP addresses and networks - "ipsubnet": _ipsubnet, - } - - def filters(self): - """ipsubnet filter""" - if HAS_NETADDR: - return self.filter_map - else: - return dict((f, partial(_need_netaddr, f)) for f in self.filter_map) diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/ipv4.py b/ansible/collections/ansible_collections/ansible/utils/plugins/filter/ipv4.py deleted file mode 100644 index 2559e98c..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/ipv4.py +++ /dev/null @@ -1,178 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -filter plugin file for ipaddr filters: ipv4 -""" -from __future__ import absolute_import, division, print_function - -from functools import partial - -from ansible.errors import AnsibleFilterError - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - AnsibleArgSpecValidator, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddr_utils import ( - _need_netaddr, - ipaddr, -) - - -__metaclass__ = type - - -try: - from jinja2.filters import pass_environment -except ImportError: - from jinja2.filters import environmentfilter as pass_environment - -try: - import netaddr -except ImportError: - # in this case, we'll make the filters return error messages (see bottom) - netaddr = None -else: - - class mac_linux(netaddr.mac_unix): - pass - - mac_linux.word_fmt = "%.2x" - -DOCUMENTATION = """ - name: ipv4 - author: Ashwini Mhatre (@amhatre) - version_added: "2.5.0" - short_description: To filter only Ipv4 addresses Ipv4 filter is used. - description: - - Sometimes you need only IPv4 addresses. To filter only Ipv4 addresses Ipv4 filter is used. - options: - value: - description: - - list of subnets or individual address or any other values input for ipv4 plugin - type: raw - required: True - query: - description: - - You can provide a single argument to each ipv4() filter. - - Example. query type 'ipv6' to convert ipv4 into ipv6 - type: str - default: '' - notes: -""" - -EXAMPLES = r""" -#### examples -# Ipv4 filter plugin with different queries. -- name: Set value as input list - ansible.builtin.set_fact: - value: - - 192.24.2.1 - - host.fqdn - - ::1 - - '' - - 192.168.32.0/24 - - fe80::100/10 - - 42540766412265424405338506004571095040/64 - - true -- name: IPv4 filter to filter Ipv4 Address - debug: - msg: "{{ value|ansible.utils.ipv4 }}" - -- name: convert IPv4 addresses into IPv6 addresses. - debug: - msg: "{{ value|ansible.utils.ipv4('ipv6') }}" - -- name: convert IPv4 addresses into IPv6 addresses. - debug: - msg: "{{ value|ansible.utils.ipv4('address') }}" - - -# PLAY [Ipv4 filter plugin with different queries.] ****************************************************************** -# TASK [Set value as input list] *************************************************************************************** -# ok: [localhost] => {"ansible_facts": {"value": ["192.24.2.1", "host.fqdn", "::1", "", "192.168.32.0/24", -# "fe80::100/10", "42540766412265424405338506004571095040/64", true]}, "changed": false} -# TASK [IPv4 filter to filter Ipv4 Address] ******************************************************************* -# ok: [localhost] => { -# "msg": [ -# "192.24.2.1", -# "192.168.32.0/24" -# ] -# } -# -# TASK [convert IPv4 addresses into IPv6 addresses.] ********************************************************** -# ok: [localhost] => { -# "msg": [ -# "::ffff:192.24.2.1/128", -# "::ffff:192.168.32.0/120" -# ] -# } -# -# TASK [convert IPv4 addresses into IPv6 addresses.] ********************************************************** -# ok: [localhost] => { -# "msg": [ -# "192.24.2.1" -# ] -# } -""" - -RETURN = """ - data: - type: raw - description: - - Returns values valid for a particular query. -""" - - -@pass_environment -def _ipv4(*args, **kwargs): - """This filter is designed to return the input value if a query is True, and False if a query is False""" - keys = ["value", "query"] - data = dict(zip(keys, args[1:])) - data.update(kwargs) - try: - if isinstance(data["value"], str): - pass - elif isinstance(data["value"], list): - pass - elif isinstance(data["value"], int): - pass - else: - raise AnsibleFilterError( - "Unrecognized type <{0}> for ipv4 filter <{1}>".format( - type(data["value"]), - "value", - ), - ) - - except (TypeError, ValueError): - raise AnsibleFilterError( - "Unrecognized type <{0}> for ipv4 filter <{1}>".format(type(data["value"]), "value"), - ) - aav = AnsibleArgSpecValidator(data=data, schema=DOCUMENTATION, name="ipv4") - valid, errors, updated_data = aav.validate() - if not valid: - raise AnsibleFilterError(errors) - return ipv4(**updated_data) - - -def ipv4(value, query=""): - return ipaddr(value, query, version=4, alias="ipv4") - - -class FilterModule(object): - """IP address and network manipulation filters""" - - filter_map = { - # IP addresses and networks - "ipv4": _ipv4, - } - - def filters(self): - """ipaddr filter""" - if netaddr: - return self.filter_map - else: - return dict((f, partial(_need_netaddr, f)) for f in self.filter_map) diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/ipv6.py b/ansible/collections/ansible_collections/ansible/utils/plugins/filter/ipv6.py deleted file mode 100644 index 39835fee..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/ipv6.py +++ /dev/null @@ -1,196 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -filter plugin file for ipaddr filters: ipv6 -""" -from __future__ import absolute_import, division, print_function - -from functools import partial - -from ansible.errors import AnsibleFilterError - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - AnsibleArgSpecValidator, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddr_utils import ( - _need_netaddr, - ipaddr, -) - - -__metaclass__ = type - - -try: - from jinja2.filters import pass_environment -except ImportError: - from jinja2.filters import environmentfilter as pass_environment - -try: - import netaddr - - HAS_NETADDR = True -except ImportError: - # in this case, we'll make the filters return error messages (see bottom) - HAS_NETADDR = False -else: - - class mac_linux(netaddr.mac_unix): - pass - - mac_linux.word_fmt = "%.2x" - -DOCUMENTATION = """ - name: ipv6 - author: Ashwini Mhatre (@amhatre) - version_added: "2.5.0" - short_description: To filter only Ipv6 addresses Ipv6 filter is used. - description: - - Sometimes you need only IPv6 addresses. To filter only Ipv6 addresses Ipv6 filter is used. - options: - value: - description: - - list of subnets or individual address or any other values input for ipv6 plugin - type: raw - required: True - query: - description: - - You can provide a single argument to each ipv6() filter. - - Example. query type 'ipv4' to convert ipv6 into ipv4 - type: str - default: '' - notes: -""" - -EXAMPLES = r""" -#### examples -# Ipv6 filter plugin with different queries. -- name: Set value as input list - ansible.builtin.set_fact: - value: - - 192.24.2.1 - - ::ffff:192.168.32.0/120 - - '' - - ::ffff:192.24.2.1/128 - - 192.168.32.0/24 - - fe80::100/10 - - true -- name: IPv6 filter to filter Ipv6 Address - debug: - msg: "{{ value|ansible.utils.ipv6 }}" - -- name: convert IPv6 addresses into IPv4 addresses. - debug: - msg: "{{ value|ansible.utils.ipv6('ipv4') }}" - -- name: filter only IPv6 addresses. - debug: - msg: "{{ value|ansible.utils.ipv6('address') }}" - - -# PLAY [Ipv6 filter plugin with different queries.] ****************************************************************** -# TASK [Set value as input list] *************************************************************************************** -# ok: [localhost] => { -# "ansible_facts": { -# "value": [ -# "192.24.2.1", -# "::ffff:192.168.32.0/120", -# "", -# "::ffff:192.24.2.1/128", -# "192.168.32.0/24", -# "fe80::100/10", -# true -# ] -# }, -# "changed": false -# } -# -# TASK [IPv6 filter to filter Ipv6 Address] **************************************************************************** -# ok: [localhost] => { -# "msg": [ -# "::ffff:192.168.32.0/120", -# "::ffff:192.24.2.1/128", -# "fe80::100/10" -# ] -# } -# -# TASK [convert IPv6 addresses into IPv4 addresses.] ******************************************************************* -# ok: [localhost] => { -# "msg": [ -# "192.168.32.0/24", -# "192.24.2.1/32" -# ] -# } -# -# TASK [filter only IPv6 addresses] ******************************************************************* -# ok: [localhost] => { -# "msg": [ -# "::ffff:192.168.32.0", -# "::ffff:192.24.2.1", -# "fe80::100" -# ] -# } -# -""" - -RETURN = """ - data: - type: raw - description: - - Returns values valid for a particular query. -""" - - -@pass_environment -def _ipv6(*args, **kwargs): - """This filter is designed to return the input value if a query is True, and False if a query is False""" - keys = ["value", "query"] - data = dict(zip(keys, args[1:])) - data.update(kwargs) - try: - if isinstance(data["value"], str): - pass - elif isinstance(data["value"], list): - pass - elif isinstance(data["value"], int): - pass - else: - raise AnsibleFilterError( - "Unrecognized type <{0}> for ipv6 filter <{1}>".format( - type(data["value"]), - "value", - ), - ) - - except (TypeError, ValueError): - raise AnsibleFilterError( - "Unrecognized type <{0}> for ipv6 filter <{1}>".format(type(data["value"]), "value"), - ) - aav = AnsibleArgSpecValidator(data=data, schema=DOCUMENTATION, name="ipv6") - valid, errors, updated_data = aav.validate() - if not valid: - raise AnsibleFilterError(errors) - return ipv6(**updated_data) - - -def ipv6(value, query=""): - return ipaddr(value, query, version=6, alias="ipv6") - - -class FilterModule(object): - """IP address and network manipulation filters""" - - filter_map = { - # IP addresses and networks - "ipv6": _ipv6, - } - - def filters(self): - """ipv6 filter""" - if HAS_NETADDR: - return self.filter_map - else: - return dict((f, partial(_need_netaddr, f)) for f in self.filter_map) diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/ipv6form.py b/ansible/collections/ansible_collections/ansible/utils/plugins/filter/ipv6form.py deleted file mode 100644 index 3d5c86ed..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/ipv6form.py +++ /dev/null @@ -1,174 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -filter plugin file for ipaddr filters: ipv6form -""" -from __future__ import absolute_import, division, print_function - -from functools import partial - -from ansible.errors import AnsibleFilterError - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - AnsibleArgSpecValidator, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddr_utils import _need_netaddr -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddress_utils import ( - _need_ipaddress, - ip_address, -) - - -__metaclass__ = type - - -try: - from jinja2.filters import pass_environment -except ImportError: - from jinja2.filters import environmentfilter as pass_environment - - -try: - import netaddr - - HAS_NETADDR = True -except ImportError: - # in this case, we'll make the filters return error messages (see bottom) - HAS_NETADDR = False -else: - - class mac_linux(netaddr.mac_unix): - pass - - mac_linux.word_fmt = "%.2x" - - -DOCUMENTATION = """ - name: ipv6form - author: Ashwini Mhatre (@amhatre) - version_added: "2.11.0" - short_description: This filter is designed to convert ipv6 address in different formats. For example expand, compressetc. - description: - - This filter is designed to convert ipv6 addresses in different formats. - options: - value: - description: - - individual ipv6 address input for ipv6_format plugin. - type: str - required: True - format: - type: str - choices: - ['compress', 'expand', 'x509'] - description: Different formats example. compress, expand, x509 -""" - -EXAMPLES = r""" -#### examples -# Ipv6form filter plugin with different format. -- name: Expand given Ipv6 address - debug: - msg: "{{ '1234:4321:abcd:dcba::17' | ansible.utils.ipv6form('expand') }}" - -- name: Compress given Ipv6 address - debug: - msg: "{{ '1234:4321:abcd:dcba:0000:0000:0000:0017' | ansible.utils.ipv6form('compress') }}" - -- name: Covert given Ipv6 address in x509 - debug: - msg: "{{ '1234:4321:abcd:dcba::17' | ansible.utils.ipv6form('x509') }}" - -# TASK [Expand given Ipv6 address] ************************************************************************************ -# task path: /home/amhatre/dev/playbook/test_ipform.yaml:7 -# Loading collection ansible.utils from /home/amhatre/dev/collections/ansible_collections/ansible/utils -# ok: [localhost] => { -# "msg": "1234:4321:abcd:dcba:0000:0000:0000:0017" -# } - -# TASK [Compress given Ipv6 address] ********************************************************************************* -# task path: /home/amhatre/dev/playbook/test_ipform.yaml:11 -# Loading collection ansible.utils from /home/amhatre/dev/collections/ansible_collections/ansible/utils -# ok: [localhost] => { -# "msg": "1234:4321:abcd:dcba::17" -# } - -# TASK [Covert given Ipv6 address in x509] **************************************************************************** -# task path: /home/amhatre/dev/playbook/test_ipform.yaml:15 -# Loading collection ansible.utils from /home/amhatre/dev/collections/ansible_collections/ansible/utils -# ok: [localhost] => { -# "msg": "1234:4321:abcd:dcba:0:0:0:17" -# } - -# PLAY RECAP ********************************************************************************************************** -# localhost : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 -""" - -RETURN = """ - data: - type: str - description: - - Returns result ipv6 address in expected format. -""" - - -@pass_environment -def _ipv6form(*args, **kwargs): - """Convert the given data from json to xml.""" - keys = ["value", "format"] - data = dict(zip(keys, args[1:])) - data.update(kwargs) - aav = AnsibleArgSpecValidator(data=data, schema=DOCUMENTATION, name="ipv6form") - valid, errors, updated_data = aav.validate() - if not valid: - raise AnsibleFilterError(errors) - return ipv6form(**updated_data) - - -@_need_ipaddress -def ipv6form(value, format): - try: - if format == "expand": - return ip_address(value).exploded - elif format == "compress": - return ip_address(value).compressed - elif format == "x509": - return _handle_x509(value) - except ValueError: - msg = "You must pass a valid IP address; {0} is invalid".format(value) - raise AnsibleFilterError(msg) - - if not isinstance(format, str): - msg = ("You must pass valid format; " "{0} is not a valid format").format( - format, - ) - raise AnsibleFilterError(msg) - - -def _handle_x509(value): - """Convert ipv6 address into x509 format""" - ip = netaddr.IPAddress(value) - ipv6_oct = [] - ipv6address = ip.bits().split(":") - for i in ipv6address: - x = hex(int(i, 2)) - ipv6_oct.append(x.replace("0x", "")) - return str(":".join(ipv6_oct)) - - -class FilterModule(object): - """IP address and network manipulation filters""" - - filter_map = { - # This filter is designed to do ipv6 conversion in required format - "ipv6form": _ipv6form, - } - - def filters(self): - """ipv6form filter""" - if HAS_NETADDR: - return self.filter_map - else: - return dict((f, partial(_need_netaddr, f)) for f in self.filter_map) diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/ipwrap.py b/ansible/collections/ansible_collections/ansible/utils/plugins/filter/ipwrap.py deleted file mode 100644 index c3c9ebe7..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/ipwrap.py +++ /dev/null @@ -1,215 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -filter plugin file for ipaddr filters: ipwrap -""" -from __future__ import absolute_import, division, print_function - -import types - -from functools import partial - -from ansible.errors import AnsibleFilterError - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - AnsibleArgSpecValidator, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddr_utils import ( - _need_netaddr, - ipaddr, -) - - -__metaclass__ = type - - -try: - from jinja2.filters import pass_environment -except ImportError: - from jinja2.filters import environmentfilter as pass_environment - -try: - import netaddr - - HAS_NETADDR = True -except ImportError: - # in this case, we'll make the filters return error messages (see bottom) - HAS_NETADDR = False -else: - - class mac_linux(netaddr.mac_unix): - pass - - mac_linux.word_fmt = "%.2x" - -DOCUMENTATION = """ - name: ipwrap - author: Ashwini Mhatre (@amhatre) - version_added: "2.5.0" - short_description: This filter is designed to Wrap IPv6 addresses in [ ] brackets. - description: - - Some configuration files require IPv6 addresses to be "wrapped" in square brackets ([ ]).To accomplish that, - - you can use the ipwrap() filter.It will wrap all IPv6 addresses and leave any other strings intact. - options: - value: - description: - - list of subnets or individual address or any other values input. Example. ['192.24.2.1', 'host.fqdn', - '::1', '192.168.32.0/24', 'fe80::100/10', True, '', '42540766412265424405338506004571095040/64'] - type: raw - required: True - query: - description: - - You can provide a single argument to each ipwrap() filter. - - The filter will then treat it as a query and return values modified by that query. - type: str - default: '' - notes: -""" - -EXAMPLES = r""" -#### examples -# Ipwrap filter plugin o Wrap IPv6 addresses in [ ] brackets. -- name: Set value as input list - ansible.builtin.set_fact: - value: - - 192.24.2.1 - - host.fqdn - - ::1 - - '' - - 192.168.32.0/24 - - fe80::100/10 - - 42540766412265424405338506004571095040/64 - - true -- debug: - msg: "{{ value|ansible.utils.ipwrap }}" - -- name: | - ipwrap() did not filter out non-IP address values, which is usually what you want when for example - you are mixing IP addresses with hostnames. If you still want to filter out all non-IP address values, - you can chain both filters together. - debug: - msg: "{{ value|ansible.utils.ipaddr|ansible.utils.ipwrap }}" - -# PLAY [Ipwrap filter plugin o Wrap IPv6 addresses in [ ] brackets.] *************************************************** -# TASK [Set value as input list] *************************************************************************************** -# ok: [localhost] => {"ansible_facts": {"value": ["192.24.2.1", "host.fqdn", "::1", "", "192.168.32.0/24", -# "fe80::100/10", "42540766412265424405338506004571095040/64", true]}, "changed": false} -# -# TASK [debug] ******************************************************************************************************** -# ok: [localhost] => { -# "msg": [ -# "192.24.2.1", -# "::1", -# "192.168.32.0/24", -# "fe80::100/10", -# "2001:db8:32c:faad::/64" -# ] -# } -# -# TASK [debug] ************************************************************************************************ -# ok: [localhost] => { -# "msg": [ -# "192.24.2.1", -# "host.fqdn", -# "[::1]", -# "", -# "192.168.32.0/24", -# "[fe80::100]/10", -# "[2001:db8:32c:faad::]/64", -# "True" -# ] -# } -# -# TASK [ipwrap() did not filter out non-IP address values, which is usually what you want when for example -# you are mixing IP addresses with hostnames. If you still want to filter out all non-IP address values, -# you can chain both filters together.] *** -# ok: [localhost] => { -# "msg": [ -# "192.24.2.1", -# "[::1]", -# "192.168.32.0/24", -# "[fe80::100]/10", -# "[2001:db8:32c:faad::]/64" -# ] -# } -""" - -RETURN = """ - data: - type: raw - description: - - Returns values valid for a particular query. -""" - - -@pass_environment -def _ipwrap(*args, **kwargs): - """This filter is designed to Wrap IPv6 addresses in [ ] brackets.""" - keys = ["value"] - data = dict(zip(keys, args[1:])) - data.update(kwargs) - try: - if isinstance(data["value"], str): - pass - elif isinstance(data["value"], list): - pass - elif isinstance(data["value"], bool): - pass - else: - raise AnsibleFilterError( - "Unrecognized type <{0}> for ipwrap filter <{1}>".format( - type(data["value"]), - "value", - ), - ) - - except (TypeError, ValueError): - raise AnsibleFilterError( - "Unrecognized type <{0}> for ipwrap filter <{1}>".format(type(data["value"]), "value"), - ) - aav = AnsibleArgSpecValidator(data=data, schema=DOCUMENTATION, name="ipwrap") - valid, errors, updated_data = aav.validate() - if not valid: - raise AnsibleFilterError(errors) - return ipwrap(**updated_data) - - -def ipwrap(value, query=""): - try: - if isinstance(value, (list, tuple, types.GeneratorType)): - _ret = [] - for element in value: - if ipaddr(element, query, version=False, alias="ipwrap"): - _ret.append(ipaddr(element, "wrap")) - else: - _ret.append(element) - - return _ret - else: - _ret = ipaddr(value, query, version=False, alias="ipwrap") - if _ret: - return ipaddr(_ret, "wrap") - else: - return value - - except Exception: - return value - - -class FilterModule(object): - """IP address and network manipulation filters""" - - filter_map = { - # IP addresses and networks - "ipwrap": _ipwrap, - } - - def filters(self): - """ipwrap filter""" - if HAS_NETADDR: - return self.filter_map - else: - return dict((f, partial(_need_netaddr, f)) for f in self.filter_map) diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/keep_keys.py b/ansible/collections/ansible_collections/ansible/utils/plugins/filter/keep_keys.py deleted file mode 100644 index 7c4cfbdf..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/keep_keys.py +++ /dev/null @@ -1,294 +0,0 @@ -# -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -# - -""" -The keep_keys filter plugin -""" -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -DOCUMENTATION = """ - name: keep_keys - author: Sagar Paul (@KB-perByte) - version_added: "2.5.0" - short_description: Keep specific keys from a data recursively. - description: - - This plugin keep only specified keys from a provided data recursively. - - Matching parameter defaults to equals unless C(matching_parameter) is explicitly mentioned. - - Using the parameters below- C(data|ansible.utils.keep_keys(target([....]))) - options: - data: - description: - - This option represents a list of dictionaries or a dictionary with any level of nesting data. - - For example C(config_data|ansible.utils.keep_keys(target([....]))), in this case C(config_data) represents this option. - type: raw - required: True - target: - description: Specify the target keys to keep in list format. - type: list - elements: str - required: True - matching_parameter: - description: Specify the matching configuration of target keys and data attributes. - type: str - choices: ["starts_with","ends_with","regex"] -""" - -EXAMPLES = r""" - -# example.yaml -# interfaces: -# - name: eth0 -# enabled: true -# duplex: auto -# speed: auto -# note: -# - Connected green wire -# - name: eth1 -# description: Configured by Ansible - Interface 1 -# mtu: 1500 -# speed: auto -# duplex: auto -# enabled: true -# note: -# - Connected blue wire -# - Configured by Paul -# vifs: -# - vlan_id: 100 -# description: Eth1 - VIF 100 -# mtu: 400 -# enabled: true -# comment: Needs reconfiguration -# - vlan_id: 101 -# description: Eth1 - VIF 101 -# enabled: true -# - name: eth2 -# description: Configured by Ansible - Interface 2 (ADMIN DOWN) -# mtu: 600 -# enabled: false - -# Playbook -- name: keep selective keys from dict/list of dict data - ansible.builtin.set_fact: - data: '{{ interfaces }}' -- debug: - msg: >- - {{ data|ansible.utils.keep_keys(target=['description', 'name', 'mtu', - 'duplex', 'enabled', 'vifs', 'vlan_id']) }} - -# Output -# TASK [keep selective keys from python dict/list of dict] **************************************************************************************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": [ -# { -# "duplex": "auto", -# "enabled": true, -# "name": "eth0", -# "note": [ -# "Connected green wire" -# ], -# "speed": "auto" -# }, -# { -# "description": "Configured by Ansible - Interface 1", -# "duplex": "auto", -# "enabled": true, -# "mtu": 1500, -# "name": "eth1", -# "note": [ -# "Connected blue wire", -# "Configured by Paul" -# ], -# "speed": "auto", -# "vifs": [ -# { -# "comment": "Needs reconfiguration", -# "description": "Eth1 - VIF 100", -# "enabled": true, -# "mtu": 400, -# "vlan_id": 100 -# }, -# { -# "description": "Eth1 - VIF 101", -# "enabled": true, -# "vlan_id": 101 -# } -# ] -# }, -# { -# "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", -# "enabled": false, -# "mtu": 600, -# "name": "eth2" -# } -# ] -# }, -# "changed": false -# } -# Read vars_file 'example.yaml' - -# TASK [debug] ************************************************************************************************************* -# ok: [localhost] => { -# "msg": [ -# { -# "duplex": "auto", -# "enabled": true, -# "name": "eth0" -# }, -# { -# "description": "Configured by Ansible - Interface 1", -# "duplex": "auto", -# "enabled": true, -# "mtu": 1500, -# "name": "eth1", -# "vifs": [ -# { -# "description": "Eth1 - VIF 100", -# "enabled": true, -# "mtu": 400, -# "vlan_id": 100 -# }, -# { -# "description": "Eth1 - VIF 101", -# "enabled": true, -# "vlan_id": 101 -# } -# ] -# }, -# { -# "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", -# "enabled": false, -# "mtu": 600, -# "name": "eth2" -# } -# ] -# } - -# Playbook - -- name: keep selective keys from dict/list of dict data - ansible.builtin.set_fact: - data: "{{ interfaces }}" - -- debug: - msg: "{{ data|ansible.utils.keep_keys(target=['desc', 'name'], matching_parameter= 'starts_with') }}" - -# Output -# TASK [keep selective keys from python dict/list of dict] ************************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": [ -# { -# "duplex": "auto", -# "enabled": true, -# "name": "eth0", -# "note": [ -# "Connected green wire" -# ], -# "speed": "auto" -# }, -# { -# "description": "Configured by Ansible - Interface 1", -# "duplex": "auto", -# "enabled": true, -# "mtu": 1500, -# "name": "eth1", -# "note": [ -# "Connected blue wire", -# "Configured by Paul" -# ], -# "speed": "auto", -# "vifs": [ -# { -# "comment": "Needs reconfiguration", -# "description": "Eth1 - VIF 100", -# "enabled": true, -# "mtu": 400, -# "vlan_id": 100 -# }, -# { -# "description": "Eth1 - VIF 101", -# "enabled": true, -# "vlan_id": 101 -# } -# ] -# }, -# { -# "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", -# "enabled": false, -# "mtu": 600, -# "name": "eth2" -# } -# ] -# }, -# "changed": false -# } -# Read vars_file 'example.yaml' - -# TASK [debug] ********************************************************************************** -# ok: [localhost] => { -# "msg": [ -# { -# "name": "eth0" -# }, -# { -# "description": "Configured by Ansible - Interface 1", -# "name": "eth1", -# "vifs": [ -# { -# "description": "Eth1 - VIF 100" -# }, -# { -# "description": "Eth1 - VIF 101" -# } -# ] -# }, -# { -# "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", -# "name": "eth2" -# } -# ] -# } -""" - -from ansible.errors import AnsibleFilterError - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - AnsibleArgSpecValidator, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.keep_keys import keep_keys - - -try: - from jinja2.filters import pass_environment -except ImportError: - from jinja2.filters import environmentfilter as pass_environment - - -@pass_environment -def _keep_keys(*args, **kwargs): - """keep specific keys from a data recursively""" - - keys = ["data", "target", "matching_parameter"] - data = dict(zip(keys, args[1:])) - data.update(kwargs) - aav = AnsibleArgSpecValidator(data=data, schema=DOCUMENTATION, name="keep_keys") - valid, errors, updated_data = aav.validate() - if not valid: - raise AnsibleFilterError(errors) - return keep_keys(**updated_data) - - -class FilterModule(object): - """keep_keys""" - - def filters(self): - """a mapping of filter names to functions""" - return {"keep_keys": _keep_keys} diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/macaddr.py b/ansible/collections/ansible_collections/ansible/utils/plugins/filter/macaddr.py deleted file mode 100644 index 897e56b3..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/macaddr.py +++ /dev/null @@ -1,127 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -filter plugin file for ipaddr filters: macaddr -""" -from __future__ import absolute_import, division, print_function - -from functools import partial - -from ansible.errors import AnsibleFilterError - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - AnsibleArgSpecValidator, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddr_utils import ( - _need_netaddr, - hwaddr, -) - - -__metaclass__ = type - - -try: - from jinja2.filters import pass_environment -except ImportError: - from jinja2.filters import environmentfilter as pass_environment - -try: - import netaddr - - HAS_NETADDR = True -except ImportError: - # in this case, we'll make the filters return error messages (see bottom) - HAS_NETADDR = False -else: - - class mac_linux(netaddr.mac_unix): - pass - - mac_linux.word_fmt = "%.2x" - -DOCUMENTATION = """ - name: macaddr - author: Ashwini Mhatre (@amhatre) - version_added: "2.5.0" - short_description: macaddr / MAC address filters - description: - - This filter check if string is a MAC address and filter it - - You can use the macaddr() filter to check if a given string is a MAC address or convert it between various - formats. - options: - value: - description: HW/MAC address. - type: str - required: True - query: - description: query string. Example. cisco,linux,unix etc - type: str - default: "" - notes: -""" - -EXAMPLES = r""" -#### examples -- name: Check if given string is a MAC address - debug: - msg: "{{ '1a:2b:3c:4d:5e:6f' | ansible.utils.macaddr }}" - -- name: Convert MAC address to Cisco format - debug: - msg: "{{ '1a:2b:3c:4d:5e:6f' | ansible.utils.macaddr('cisco') }}" - -# TASK [Check if given string is a MAC address] *************************************************************** -# ok: [localhost] => { -# "msg": "1a:2b:3c:4d:5e:6f" -# } -# -# TASK [Convert MAC address to Cisco format] ****************************************************************** -# ok: [localhost] => { -# "msg": "1a2b.3c4d.5e6f" -# } -""" - -RETURN = """ - data: - type: str - description: - - mac/Hw address - -""" - - -@pass_environment -def _macaddr(*args, **kwargs): - """This filter check if string is a HW/MAC address and filter it""" - keys = ["value", "query"] - data = dict(zip(keys, args[1:])) - data.update(kwargs) - aav = AnsibleArgSpecValidator(data=data, schema=DOCUMENTATION, name="macaddr") - valid, errors, updated_data = aav.validate() - if not valid: - raise AnsibleFilterError(errors) - return macaddr(**updated_data) - - -def macaddr(value, query=""): - return hwaddr(value, query, alias="macaddr") - - -class FilterModule(object): - """IP address and network manipulation filters""" - - filter_map = { - # IP addresses and networks - "macaddr": _macaddr, - } - - def filters(self): - """ipaddr filter""" - if HAS_NETADDR: - return self.filter_map - else: - return dict((f, partial(_need_netaddr, f)) for f in self.filter_map) diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/network_in_network.py b/ansible/collections/ansible_collections/ansible/utils/plugins/filter/network_in_network.py deleted file mode 100644 index b4b6d012..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/network_in_network.py +++ /dev/null @@ -1,160 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -filter plugin file for ipaddr filters: network_in_network -""" -from __future__ import absolute_import, division, print_function - -from functools import partial - -from ansible.errors import AnsibleFilterError - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - AnsibleArgSpecValidator, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddr_utils import ( - _address_normalizer, - _need_netaddr, - _range_checker, - ipaddr, -) - - -__metaclass__ = type - - -try: - from jinja2.filters import pass_environment -except ImportError: - from jinja2.filters import environmentfilter as pass_environment - -try: - import netaddr - - HAS_NETADDR = True -except ImportError: - # in this case, we'll make the filters return error messages (see bottom) - HAS_NETADDR = False -else: - - class mac_linux(netaddr.mac_unix): - pass - - mac_linux.word_fmt = "%.2x" - -DOCUMENTATION = """ - name: network_in_network - author: Ashwini Mhatre (@amhatre) - version_added: "2.5.0" - short_description: This filter returns whether an address or a network passed as argument is in a network. - description: - - This filter returns whether an address or a network passed as argument is in a network. - options: - value: - description: The network address or range to test against. - type: str - required: True - test: - description: The address or network to validate if it is within the range of 'value'. - type: str - notes: -""" - -EXAMPLES = r""" -#### examples -- name: Check ip address 1 is part of another network - debug: - msg: "{{ '192.168.0.0/24' | ansible.utils.network_in_network( '192.168.0.1' ) }}" - -- name: Check ip address 2 is part of another network - debug: - msg: "{{ '192.168.0.0/24' | ansible.utils.network_in_network( '10.0.0.1' ) }}" - -- name: Check in a network is part of another network. - debug: - msg: "{{ '192.168.0.0/16' | ansible.utils.network_in_network( '192.168.0.0/24' ) }}" - -# TASK [Check ip address 1 is part of another network] ******************************************************** -# task path: /Users/amhatre/ansible-collections/playbooks/test_network_in_network.yaml:7 -# Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils -# ok: [localhost] => { -# "msg": true -# } -# -# TASK [Check ip address 2 is part of another network] ******************************************************** -# task path: /Users/amhatre/ansible-collections/playbooks/test_network_in_network.yaml:11 -# Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils -# ok: [localhost] => { -# "msg": false -# } -# -# TASK [Check in a network is part of another network.] ******************************************************* -# task path: /Users/amhatre/ansible-collections/playbooks/test_network_in_network.yaml:15 -# Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils -# ok: [localhost] => { -# "msg": true -# } -""" - -RETURN = """ - data: - type: bool - description: - - Returns whether an address or a network passed as argument is in a network. - -""" - - -@pass_environment -def _network_in_network(*args, **kwargs): - """This filter returns whether an address or a network passed as argument is in a network.""" - keys = ["value", "test"] - data = dict(zip(keys, args[1:])) - data.update(kwargs) - aav = AnsibleArgSpecValidator(data=data, schema=DOCUMENTATION, name="network_in_network") - valid, errors, updated_data = aav.validate() - if not valid: - raise AnsibleFilterError(errors) - return network_in_network(**updated_data) - - -def network_in_network(value, test): - """ - Checks whether the 'test' address or addresses are in 'value', including broadcast and network - :param: value: The network address or range to test against. - :param test: The address or network to validate if it is within the range of 'value'. - :return: bool - """ - # normalize value and test variables into an ipaddr - v = _address_normalizer(value) - w = _address_normalizer(test) - - # get first and last addresses as integers to compare value and test; or cathes value when case is /32 - v_first = ipaddr(ipaddr(v, "network") or ipaddr(v, "address"), "int") - v_last = ipaddr(ipaddr(v, "broadcast") or ipaddr(v, "address"), "int") - w_first = ipaddr(ipaddr(w, "network") or ipaddr(w, "address"), "int") - w_last = ipaddr(ipaddr(w, "broadcast") or ipaddr(w, "address"), "int") - - if _range_checker(w_first, v_first, v_last) and _range_checker(w_last, v_first, v_last): - return True - else: - return False - - -class FilterModule(object): - """IP address and network manipulation filters""" - - filter_map = { - # IP addresses and networks - "network_in_network": _network_in_network, - } - - def filters(self): - """ipaddr filter""" - if HAS_NETADDR: - return self.filter_map - else: - return dict((f, partial(_need_netaddr, f)) for f in self.filter_map) diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/network_in_usable.py b/ansible/collections/ansible_collections/ansible/utils/plugins/filter/network_in_usable.py deleted file mode 100644 index d13ce0a7..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/network_in_usable.py +++ /dev/null @@ -1,162 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -filter plugin file for ipaddr filters: network_in_usable -""" -from __future__ import absolute_import, division, print_function - -from functools import partial - -from ansible.errors import AnsibleFilterError - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - AnsibleArgSpecValidator, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddr_utils import ( - _address_normalizer, - _need_netaddr, - _range_checker, - ipaddr, -) - - -__metaclass__ = type - - -try: - from jinja2.filters import pass_environment -except ImportError: - from jinja2.filters import environmentfilter as pass_environment - -try: - import netaddr - - HAS_NETADDR = True -except ImportError: - # in this case, we'll make the filters return error messages (see bottom) - HAS_NETADDR = False -else: - - class mac_linux(netaddr.mac_unix): - pass - - mac_linux.word_fmt = "%.2x" - -DOCUMENTATION = """ - name: network_in_usable - author: Ashwini Mhatre (@amhatre) - version_added: "2.5.0" - short_description: The network_in_usable filter returns whether an address passed as an argument is usable in a network. - description: - - The network_in_usable filter returns whether an address passed as an argument is usable in a network - Usable addresses are addresses that can be assigned to a host. - - The network ID and the broadcast address are not usable addresses. - options: - value: - description: The network address or range to test against. - type: str - required: True - test: - description: The address or network is usable or not. - type: str - notes: -""" - -EXAMPLES = r""" -#### examples -- name: Check ip address is usable in a network - debug: - msg: "{{ '192.168.0.0/24' | ansible.utils.network_in_usable( '192.168.0.1' ) }}" - -- name: Check broadcast address is usable in a network - debug: - msg: "{{ '192.168.0.0/24' | ansible.utils.network_in_usable( '192.168.0.255' ) }}" - -- name: Check in a network is part of another network. - debug: - msg: "{{ '192.168.0.0/16' | ansible.utils.network_in_usable( '192.168.0.255' ) }}" - -# TASK [Check ip address is usable in a network] ************************************************************** -# task path: /Users/amhatre/ansible-collections/playbooks/test_network_in_usable.yaml:7 -# Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils -# ok: [localhost] => { -# "msg": true -# } -# -# TASK [Check broadcast address is usable in a network] ******************************************************* -# task path: /Users/amhatre/ansible-collections/playbooks/test_network_in_usable.yaml:11 -# Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils -# ok: [localhost] => { -# "msg": false -# } -# -# TASK [Check in a network is part of another network.] ******************************************************* -# task path: /Users/amhatre/ansible-collections/playbooks/test_network_in_usable.yaml:15 -# Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils -# ok: [localhost] => { -# "msg": true -# } -""" - -RETURN = """ - data: - type: bool - description: - - Returns whether an address or a network passed as argument is in a network. - -""" - - -@pass_environment -def _network_in_usable(*args, **kwargs): - """This filter returns whether an address or a network passed as argument is in a network.""" - keys = ["value", "test"] - data = dict(zip(keys, args[1:])) - data.update(kwargs) - aav = AnsibleArgSpecValidator(data=data, schema=DOCUMENTATION, name="network_in_usable") - valid, errors, updated_data = aav.validate() - if not valid: - raise AnsibleFilterError(errors) - return network_in_usable(**updated_data) - - -def network_in_usable(value, test): - """ - Checks whether 'test' is a usable address or addresses in 'value' - :param: value: The string representation of an address or network to test against. - :param test: The string representation of an address or network to validate if it is within the range of 'value'. - :return: bool - """ - # normalize value and test variables into an ipaddr - v = _address_normalizer(value) - w = _address_normalizer(test) - - # get first and last addresses as integers to compare value and test; or cathes value when case is /32 - v_first = ipaddr(ipaddr(v, "first_usable") or ipaddr(v, "address"), "int") - v_last = ipaddr(ipaddr(v, "last_usable") or ipaddr(v, "address"), "int") - w_first = ipaddr(ipaddr(w, "network") or ipaddr(w, "address"), "int") - w_last = ipaddr(ipaddr(w, "broadcast") or ipaddr(w, "address"), "int") - - if _range_checker(w_first, v_first, v_last) and _range_checker(w_last, v_first, v_last): - return True - else: - return False - - -class FilterModule(object): - """IP address and network manipulation filters""" - - filter_map = { - # IP addresses and networks - "network_in_usable": _network_in_usable, - } - - def filters(self): - """ipaddr filter""" - if HAS_NETADDR: - return self.filter_map - else: - return dict((f, partial(_need_netaddr, f)) for f in self.filter_map) diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/next_nth_usable.py b/ansible/collections/ansible_collections/ansible/utils/plugins/filter/next_nth_usable.py deleted file mode 100644 index 1f766d02..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/next_nth_usable.py +++ /dev/null @@ -1,152 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -filter plugin file for ipaddr filters: ipv4 -""" -from __future__ import absolute_import, division, print_function - -from functools import partial - -from ansible.errors import AnsibleFilterError - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - AnsibleArgSpecValidator, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddr_utils import ( - _first_last, - _need_netaddr, - ipaddr, -) - - -__metaclass__ = type - - -try: - from jinja2.filters import pass_environment -except ImportError: - from jinja2.filters import environmentfilter as pass_environment - -try: - import netaddr - - HAS_NETADDR = True -except ImportError: - # in this case, we'll make the filters return error messages (see bottom) - HAS_NETADDR = False -else: - - class mac_linux(netaddr.mac_unix): - pass - - mac_linux.word_fmt = "%.2x" - -DOCUMENTATION = """ - name: next_nth_usable - author: Ashwini Mhatre (@amhatre) - version_added: "2.5.0" - short_description: This filter returns the next nth usable ip within a network described by value. - description: - - This filter returns the next nth usable ip within a network described by value. - - Use next_nth_usable to find the next nth usable IP address in relation to another within a range - options: - value: - description: - - subnets or individual address input for next_nth_usable plugin - type: str - required: True - offset: - description: - - index value - - next nth usable IP address - type: int - notes: -""" - -EXAMPLES = r""" -#### examples -# Ipv4 filter plugin with different queries. -- name: next_nth_usable returns the second usable IP address for the given IP range - debug: - msg: "{{ '192.168.122.1/24' | ansible.utils.next_nth_usable(2) }}" - -- name: If there is no usable address, it returns an empty string. - debug: - msg: "{{ '192.168.122.254/24' | ansible.utils.next_nth_usable(2) }}" - -# TASK [next_nth_usable returns the second usable IP address for the given IP range] ************************** -# task path: /Users/amhatre/ansible-collections/playbooks/test_next_nth_usable.yaml:9 -# Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils -# ok: [localhost] => { -# "msg": "192.168.122.3" -# } -# -# TASK [If there is no usable address, it returns an empty string.] ******************************************* -# task path: /Users/amhatre/ansible-collections/playbooks/test_next_nth_usable.yaml:14 -# Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils -# ok: [localhost] => { -# "msg": "" -# } -""" - -RETURN = """ - data: - type: str - description: - - Returns the next nth usable ip within a network described by value. -""" - - -@pass_environment -def _next_nth_usable(*args, **kwargs): - """This filter returns the next nth usable ip within a network described by value.""" - keys = ["value", "offset"] - data = dict(zip(keys, args[1:])) - data.update(kwargs) - aav = AnsibleArgSpecValidator(data=data, schema=DOCUMENTATION, name="next_nth_usable") - valid, errors, updated_data = aav.validate() - if not valid: - raise AnsibleFilterError(errors) - return next_nth_usable(**updated_data) - - -def next_nth_usable(value, offset): - """ - Returns the next nth usable ip within a network described by value. - """ - try: - vtype = ipaddr(value, "type") - if vtype == "address": - v = ipaddr(value, "cidr") - elif vtype == "network": - v = ipaddr(value, "subnet") - - v = netaddr.IPNetwork(v) - except Exception: - return False - if not isinstance(offset, int): - raise AnsibleFilterError("Must pass in an integer") - if v.size > 1: - first_usable, last_usable = _first_last(v) - nth_ip = int(netaddr.IPAddress(int(v.ip) + offset)) - if first_usable <= nth_ip <= last_usable: - return str(netaddr.IPAddress(int(v.ip) + offset)) - - -class FilterModule(object): - """IP address and network manipulation filters""" - - filter_map = { - # IP addresses and networks - "next_nth_usable": _next_nth_usable, - } - - def filters(self): - """ipaddr filter""" - if HAS_NETADDR: - return self.filter_map - else: - return dict((f, partial(_need_netaddr, f)) for f in self.filter_map) diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/nthhost.py b/ansible/collections/ansible_collections/ansible/utils/plugins/filter/nthhost.py deleted file mode 100644 index 8a0895cd..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/nthhost.py +++ /dev/null @@ -1,152 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -filter plugin file for ipaddr filters: nthhost -""" -from __future__ import absolute_import, division, print_function - -from functools import partial - -from ansible.errors import AnsibleFilterError - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - AnsibleArgSpecValidator, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddr_utils import ( - _need_netaddr, - ipaddr, -) - - -__metaclass__ = type - - -try: - from jinja2.filters import pass_environment -except ImportError: - from jinja2.filters import environmentfilter as pass_environment - -try: - import netaddr - - HAS_NETADDR = True -except ImportError: - # in this case, we'll make the filters return error messages (see bottom) - HAS_NETADDR = False -else: - - class mac_linux(netaddr.mac_unix): - pass - - mac_linux.word_fmt = "%.2x" - -DOCUMENTATION = """ - name: nthhost - author: Ashwini Mhatre (@amhatre) - version_added: "2.5.0" - short_description: This filter returns the nth host within a network described by value. - description: - - This filter returns the nth host within a network described by value. To return the nth ip from a network, use the filter nthhost. - - Nthhost also supports a negative value. - options: - value: - description: The network address or range to test against. - type: str - required: True - query: - description: nth host - type: str - notes: -""" - -EXAMPLES = r""" -#### examples -- name: To return the nth ip from a network, use the filter nthhost. - debug: - msg: "{{ '10.0.0.0/8' | ansible.utils.nthhost(305) }}" - -- name: nthhost also supports a negative value. - debug: - msg: "{{ '10.0.0.0/8' | ansible.utils.nthhost(-1) }}" - -# TASK [To return the nth ip from a network, use the filter nthhost.] ***************************************** -# task path: /Users/amhatre/ansible-collections/playbooks/test_nthhost.yaml:7 -# Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils -# ok: [localhost] => { -# "msg": "10.0.1.49" -# } -# -# TASK [nthhost also supports a negative value.] ************************************************************** -# task path: /Users/amhatre/ansible-collections/playbooks/test_nthhost.yaml:11 -# Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils -# ok: [localhost] => { -# "msg": "10.255.255.255" -# } -""" - -RETURN = """ - data: - type: str - description: - - Returns nth host from network - -""" - - -@pass_environment -def _nthhost(*args, **kwargs): - """This filter returns whether an address or a network passed as argument is in a network.""" - keys = ["value", "query"] - data = dict(zip(keys, args[1:])) - data.update(kwargs) - aav = AnsibleArgSpecValidator(data=data, schema=DOCUMENTATION, name="nthhost") - valid, errors, updated_data = aav.validate() - if not valid: - raise AnsibleFilterError(errors) - return nthhost(**updated_data) - - -def nthhost(value, query=""): - """Returns the nth host within a network described by value.""" - try: - vtype = ipaddr(value, "type") - if vtype == "address": - v = ipaddr(value, "cidr") - elif vtype == "network": - v = ipaddr(value, "subnet") - - value = netaddr.IPNetwork(v) - except Exception: - return False - - if not query: - return False - - try: - nth = int(query) - if value.size > nth: - return str(value[nth]) - - except ValueError: - return False - - return False - - -class FilterModule(object): - """IP address and network manipulation filters""" - - filter_map = { - # IP addresses and networks - "nthhost": _nthhost, - } - - def filters(self): - """ipaddr filter""" - if HAS_NETADDR: - return self.filter_map - else: - return dict((f, partial(_need_netaddr, f)) for f in self.filter_map) diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/param_list_compare.py b/ansible/collections/ansible_collections/ansible/utils/plugins/filter/param_list_compare.py deleted file mode 100644 index 540172c5..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/param_list_compare.py +++ /dev/null @@ -1,217 +0,0 @@ -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -DOCUMENTATION = """ - name: param_list_compare - author: Rohit Thakur (@rohitthakur2590) - version_added: "2.4.0" - short_description: Generate the final param list combining/comparing base and provided parameters. - description: - - Generate the final list of parameters after comparing with base list and provided/target list of params/bangs. - options: - base: - description: Specify the base list. - type: list - elements: str - target: - description: Specify the target list. - type: list - elements: str -""" - -EXAMPLES = r""" -- set_fact: - base: ['1', '2', '3', '4', ' 5'] - -- set_fact: - target: ['!all', '2', '4'] - -- name: Get final list of parameters - register: result - set_fact: - final_params: "{{ base | param_list_compare(target) }}" - -# TASK [Target list] ********************************************************** -# ok: [localhost] => { -# "msg": { -# "actionable": [ -# "2", -# "4" -# ], -# "unsupported": [] -# } -# } - -- set_fact: - base: ['1', '2', '3', '4', '5'] - -- name: Get final list of parameters - register: result - set_fact: - final_params: "{{ base|param_list_compare(target=['2', '7', '8']) }}" - -# TASK [Get final list of parameters] ******************************************** -# ok: [localhost] => { -# "ansible_facts": { -# "final_params": { -# "actionable": [ -# "2" -# ], -# "unsupported": [ -# "7", -# "8" -# ] -# } -# }, -# "changed": false -# } - -# Network Specific Example -# ----------- -- set_fact: - ios_resources: - - "acl_interfaces" - - "acls" - - "bgp_address_family" - - "bgp_global" - - "interfaces" - - "l2_interfaces" - - "l3_interfaces" - - "lacp" - - "lacp_interfaces" - - "lag_interfaces" - - "lldp_global" - - "lldp_interfaces" - - "logging_global" - - "ospf_interfaces" - - "ospfv2" - - "ospfv3" - - "prefix_lists" - - "route_maps" - - "static_routes" - - "vlans" - -- set_fact: - target_resources: - - '!all' - - 'vlan' - - 'bgp_global' - -- name: Get final list of target resources/params - register: result - set_fact: - network_resources: "{{ ios_resources|param_list_compare(target_resources) }}" - -- name: Target list of network resources - debug: - msg: "{{ network_resources }}" - -# TASK [Target list of network resources] ******************************************************************************************************************* -# ok: [localhost] => { -# "msg": { -# "actionable": [ -# "bgp_global", -# "vlans" -# ], -# "unsupported": [] -# } -# } - -- name: Get final list of target resources/params - register: result - set_fact: - network_resources: "{{ ios_resources|param_list_compare(target=['vla', 'ntp_global', 'logging_global']) }}" - -- name: Target list of network resources - debug: - msg: "{{ network_resources }}" - -# TASK [Target list of network resources] ************************************************ -# ok: [localhost] => { -# "msg": { -# "actionable": [ -# "logging_global" -# ], -# "unsupported": [ -# "vla", -# "ntp_global" -# ] -# } -# } -""" - -RETURN = """ - actionable: - description: list of combined params - type: list - - unsupported: - description: list of unsupported params - type: list - -""" - -from ansible.errors import AnsibleFilterError - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - check_argspec, -) - - -ARGSPEC_CONDITIONALS = {} - - -def param_list_compare(*args, **kwargs): - params = ["base", "target"] - data = dict(zip(params, args)) - data.update(kwargs) - - if len(data) < 2: - raise AnsibleFilterError( - "Missing either 'base' or 'other value in filter input," - "refer 'ansible.utils.param_list_compare' filter plugin documentation for details", - ) - - valid, argspec_result, updated_params = check_argspec( - DOCUMENTATION, - "param_list_compare filter", - schema_conditionals=ARGSPEC_CONDITIONALS, - **data, - ) - if not valid: - raise AnsibleFilterError( - "{argspec_result} with errors: {argspec_errors}".format( - argspec_result=argspec_result.get("msg"), - argspec_errors=argspec_result.get("errors"), - ), - ) - base = data["base"] - other = data["target"] - combined = [] - alls = [x for x in other if x == "all"] - bangs = [x[1:] for x in other if x.startswith("!")] - rbangs = [x for x in other if x.startswith("!")] - remain = [x for x in other if x not in alls and x not in rbangs and x in base] - unsupported = [x for x in other if x not in alls and x not in rbangs and x not in base] - - if alls: - combined = base - for entry in bangs: - if entry in combined: - combined.remove(entry) - for entry in remain: - if entry not in combined: - combined.append(entry) - combined.sort() - output = {"actionable": combined, "unsupported": unsupported} - return output - - -class FilterModule(object): - """param_list_compare""" - - def filters(self): - """a mapping of filter names to functions""" - return {"param_list_compare": param_list_compare} diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/previous_nth_usable.py b/ansible/collections/ansible_collections/ansible/utils/plugins/filter/previous_nth_usable.py deleted file mode 100644 index 6f767dd2..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/previous_nth_usable.py +++ /dev/null @@ -1,152 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -filter plugin file for ipaddr filters: previous_nth_usable -""" -from __future__ import absolute_import, division, print_function - -from functools import partial - -from ansible.errors import AnsibleFilterError - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - AnsibleArgSpecValidator, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddr_utils import ( - _first_last, - _need_netaddr, - ipaddr, -) - - -__metaclass__ = type - - -try: - from jinja2.filters import pass_environment -except ImportError: - from jinja2.filters import environmentfilter as pass_environment - -try: - import netaddr - - HAS_NETADDR = True -except ImportError: - # in this case, we'll make the filters return error messages (see bottom) - HAS_NETADDR = False -else: - - class mac_linux(netaddr.mac_unix): - pass - - mac_linux.word_fmt = "%.2x" - -DOCUMENTATION = """ - name: previous_nth_usable - author: Ashwini Mhatre (@amhatre) - version_added: "2.5.0" - short_description: This filter returns the previous nth usable ip within a network described by value. - description: - - This filter returns the previous nth usable ip within a network described by value. - - Use previous_nth_usable to find the previous nth usable IP address in relation to another within a range - options: - value: - description: - - subnets or individual address input for previous_nth_usable plugin - type: str - required: True - offset: - description: - - index value - - previous nth usable IP address - type: int - notes: -""" - -EXAMPLES = r""" -#### examples -- name: previous_nth_usable returns the second usable IP address for the given IP range - debug: - msg: "{{ '192.168.122.10/24' | ansible.utils.previous_nth_usable(2) }}" - -- name: If there is no usable address, it returns an empty string. - debug: - msg: "{{ '192.168.122.1/24' | ansible.utils.previous_nth_usable(2) }}" - -# TASK [previous_nth_usable returns the second usable IP address for the given IP range] ************************** -# task path: /Users/amhatre/ansible-collections/playbooks/test_previous_nth_usable.yaml:9 -# Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils -# ok: [localhost] => { -# "msg": "192.168.122.8" -# } -# -# TASK [If there is no usable address, it returns an empty string.] ******************************************* -# task path: /Users/amhatre/ansible-collections/playbooks/test_previous_nth_usable.yaml:14 -# Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils -# ok: [localhost] => { -# "msg": "" -# } -""" - -RETURN = """ - data: - type: str - description: - - Returns the previous nth usable ip within a network described by value. -""" - - -@pass_environment -def _previous_nth_usable(*args, **kwargs): - """This filter returns the previous nth usable ip within a network described by value.""" - keys = ["value", "offset"] - data = dict(zip(keys, args[1:])) - data.update(kwargs) - aav = AnsibleArgSpecValidator(data=data, schema=DOCUMENTATION, name="previous_nth_usable") - valid, errors, updated_data = aav.validate() - if not valid: - raise AnsibleFilterError(errors) - return previous_nth_usable(**updated_data) - - -def previous_nth_usable(value, offset): - """ - Returns the previous nth usable ip within a network described by value. - """ - try: - vtype = ipaddr(value, "type") - if vtype == "address": - v = ipaddr(value, "cidr") - elif vtype == "network": - v = ipaddr(value, "subnet") - - v = netaddr.IPNetwork(v) - except Exception: - return False - - if not isinstance(offset, int): - raise AnsibleFilterError("Must pass in an integer") - if v.size > 1: - first_usable, last_usable = _first_last(v) - nth_ip = int(netaddr.IPAddress(int(v.ip) - offset)) - if nth_ip >= first_usable and nth_ip <= last_usable: - return str(netaddr.IPAddress(int(v.ip) - offset)) - - -class FilterModule(object): - """IP address and network manipulation filters""" - - filter_map = { - # IP addresses and networks - "previous_nth_usable": _previous_nth_usable, - } - - def filters(self): - """ipaddr filter""" - if HAS_NETADDR: - return self.filter_map - else: - return dict((f, partial(_need_netaddr, f)) for f in self.filter_map) diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/reduce_on_network.py b/ansible/collections/ansible_collections/ansible/utils/plugins/filter/reduce_on_network.py deleted file mode 100644 index 6f00ef25..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/reduce_on_network.py +++ /dev/null @@ -1,150 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -filter plugin file for ipaddr filters: reduce_on_network -""" -from __future__ import absolute_import, division, print_function - -from functools import partial - -from ansible.errors import AnsibleFilterError - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - AnsibleArgSpecValidator, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddr_utils import ( - _address_normalizer, - _need_netaddr, - _range_checker, - ipaddr, -) - - -__metaclass__ = type - - -try: - from jinja2.filters import pass_environment -except ImportError: - from jinja2.filters import environmentfilter as pass_environment - -try: - import netaddr - - HAS_NETADDR = True -except ImportError: - # in this case, we'll make the filters return error messages (see bottom) - HAS_NETADDR = False -else: - - class mac_linux(netaddr.mac_unix): - pass - - mac_linux.word_fmt = "%.2x" - -DOCUMENTATION = """ - name: reduce_on_network - author: Ashwini Mhatre (@amhatre) - version_added: "2.5.0" - short_description: This filter reduces a list of addresses to only the addresses that match a given network. - description: - - This filter reduces a list of addresses to only the addresses that match a given network. - - To check whether multiple addresses belong to a network, use the reduce_on_network filter. - options: - value: - description: the list of addresses to filter on. - type: list - elements: str - required: True - network: - description: The network to validate against. - type: str - notes: -""" - -EXAMPLES = r""" - -- name: To check whether multiple addresses belong to a network, use the reduce_on_network filter. - debug: - msg: "{{ ['192.168.0.34', '10.3.0.3', '192.168.2.34'] | ansible.utils.reduce_on_network( '192.168.0.0/24' ) }}" - -# TASK [To check whether multiple addresses belong to a network, use the reduce_on_network filter.] *********** -# task path: /Users/amhatre/ansible-collections/playbooks/test_reduce_on_network.yaml:7 -# Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils -# ok: [localhost] => { -# "msg": [ -# "192.168.0.34" -# ] -# } -""" - -RETURN = """ - data: - type: bool - description: - - Returns whether an address or a network passed as argument is in a network. - -""" - - -@pass_environment -def _reduce_on_network(*args, **kwargs): - """This filter returns whether an address or a network passed as argument is in a network.""" - keys = ["value", "network"] - data = dict(zip(keys, args[1:])) - data.update(kwargs) - aav = AnsibleArgSpecValidator(data=data, schema=DOCUMENTATION, name="reduce_on_network") - valid, errors, updated_data = aav.validate() - if not valid: - raise AnsibleFilterError(errors) - return reduce_on_network(**updated_data) - - -def reduce_on_network(value, network): - """ - Reduces a list of addresses to only the addresses that match a given network. - :param: value: The list of addresses to filter on. - :param: network: The network to validate against. - :return: The reduced list of addresses. - """ - # normalize network variable into an ipaddr - n = _address_normalizer(network) - - # get first and last addresses as integers to compare value and test; or cathes value when case is /32 - n_first = ipaddr(ipaddr(n, "network") or ipaddr(n, "address"), "int") - n_last = ipaddr(ipaddr(n, "broadcast") or ipaddr(n, "address"), "int") - - # create an empty list to fill and return - r = [] - - for address in value: - # normalize address variables into an ipaddr - a = _address_normalizer(address) - - # get first and last addresses as integers to compare value and test; or cathes value when case is /32 - a_first = ipaddr(ipaddr(a, "network") or ipaddr(a, "address"), "int") - a_last = ipaddr(ipaddr(a, "broadcast") or ipaddr(a, "address"), "int") - - if _range_checker(a_first, n_first, n_last) and _range_checker(a_last, n_first, n_last): - r.append(address) - - return r - - -class FilterModule(object): - """IP address and network manipulation filters""" - - filter_map = { - # IP addresses and networks - "reduce_on_network": _reduce_on_network, - } - - def filters(self): - """ipaddr filter""" - if HAS_NETADDR: - return self.filter_map - else: - return dict((f, partial(_need_netaddr, f)) for f in self.filter_map) diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/remove_keys.py b/ansible/collections/ansible_collections/ansible/utils/plugins/filter/remove_keys.py deleted file mode 100644 index 72d6a1b3..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/remove_keys.py +++ /dev/null @@ -1,340 +0,0 @@ -# -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -# - -""" -The remove_keys filter plugin -""" -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -DOCUMENTATION = """ - name: remove_keys - author: Sagar Paul (@KB-perByte) - version_added: "2.5.0" - short_description: Remove specific keys from a data recursively. - description: - - This plugin removes specific keys from a provided data recursively. - - Matching parameter defaults to equals unless C(matching_parameter) is explicitly mentioned. - - Using the parameters below- C(data|ansible.utils.remove_keys(target([....]))) - options: - data: - description: - - This option represents a list of dictionaries or a dictionary with any level of nesting data. - - For example C(config_data|ansible.utils.remove_keys(target([....]))), in this case C(config_data) represents this option. - type: raw - required: True - target: - description: Specify the target keys to remove in list format. - type: list - elements: str - required: True - matching_parameter: - description: Specify the matching configuration of target keys and data attributes. - type: str - choices: ["starts_with","ends_with","regex"] -""" - -EXAMPLES = r""" - -# example.yaml -# interfaces: -# - name: eth0 -# enabled: true -# duplex: auto -# speed: auto -# note: -# - Connected green wire -# - name: eth1 -# description: Configured by Ansible - Interface 1 -# mtu: 1500 -# speed: auto -# duplex: auto -# enabled: true -# note: -# - Connected blue wire -# - Configured by Paul -# vifs: -# - vlan_id: 100 -# description: Eth1 - VIF 100 -# mtu: 400 -# enabled: true -# comment: Needs reconfiguration -# - vlan_id: 101 -# description: Eth1 - VIF 101 -# enabled: true -# - name: eth2 -# description: Configured by Ansible - Interface 2 (ADMIN DOWN) -# mtu: 600 -# enabled: false - -# Playbook - -- name: remove multiple keys from a provided data - ansible.builtin.set_fact: - data: '{{ interfaces }}' -- debug: - msg: '{{ data|ansible.utils.remove_keys(target=[''note'', ''comment'']) }}' - -# Output -# TASK [remove multiple keys from a provided data] *************************************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": [ -# { -# "duplex": "auto", -# "enabled": true, -# "name": "eth0", -# "note": [ -# "Connected green wire" -# ], -# "speed": "auto" -# }, -# { -# "description": "Configured by Ansible - Interface 1", -# "duplex": "auto", -# "enabled": true, -# "mtu": 1500, -# "name": "eth1", -# "note": [ -# "Connected blue wire", -# "Configured by Paul" -# ], -# "speed": "auto", -# "vifs": [ -# { -# "comment": "Needs reconfiguration", -# "description": "Eth1 - VIF 100", -# "enabled": true, -# "mtu": 400, -# "vlan_id": 100 -# }, -# { -# "description": "Eth1 - VIF 101", -# "enabled": true, -# "vlan_id": 101 -# } -# ] -# }, -# { -# "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", -# "enabled": false, -# "mtu": 600, -# "name": "eth2" -# } -# ] -# }, -# "changed": false -# } -# Read vars_file 'example.yaml' - -# TASK [debug] ******************************************** -# ok: [localhost] => { -# "msg": [ -# { -# "duplex": "auto", -# "enabled": true, -# "name": "eth0", -# "speed": "auto" -# }, -# { -# "description": "Configured by Ansible - Interface 1", -# "duplex": "auto", -# "enabled": true, -# "mtu": 1500, -# "name": "eth1", -# "speed": "auto", -# "vifs": [ -# { -# "description": "Eth1 - VIF 100", -# "enabled": true, -# "mtu": 400, -# "vlan_id": 100 -# }, -# { -# "description": "Eth1 - VIF 101", -# "enabled": true, -# "vlan_id": 101 -# } -# ] -# }, -# { -# "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", -# "enabled": false, -# "mtu": 600, -# "name": "eth2" -# } -# ] -# } - -# example.yaml -# interfaces: -# - name: eth0 -# enabled: true -# duplex: auto -# speed: auto -# note: -# - Connected green wire -# - name: eth1 -# description: Configured by Ansible - Interface 1 -# mtu: 1500 -# speed: auto -# duplex: auto -# enabled: true -# note: -# - Connected blue wire -# - Configured by Paul -# vifs: -# - vlan_id: 100 -# description: Eth1 - VIF 100 -# mtu: 400 -# enabled: true -# comment: Needs reconfiguration -# - vlan_id: 101 -# description: Eth1 - VIF 101 -# enabled: true -# - name: eth2 -# description: Configured by Ansible - Interface 2 (ADMIN DOWN) -# mtu: 600 -# enabled: false - -# Playbook -- name: remove multiple keys from a provided data - ansible.builtin.set_fact: - data: '{{ interfaces }}' -- debug: - msg: >- - {{ data|ansible.utils.remove_keys(target=['^note$', '^comment'], - matching_parameter= 'regex') }} - -# Output -# TASK [remove multiple keys from a provided data] *********************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": [ -# { -# "duplex": "auto", -# "enabled": true, -# "name": "eth0", -# "note": [ -# "Connected green wire" -# ], -# "speed": "auto" -# }, -# { -# "description": "Configured by Ansible - Interface 1", -# "duplex": "auto", -# "enabled": true, -# "mtu": 1500, -# "name": "eth1", -# "note": [ -# "Connected blue wire", -# "Configured by Paul" -# ], -# "speed": "auto", -# "vifs": [ -# { -# "comment": "Needs reconfiguration", -# "description": "Eth1 - VIF 100", -# "enabled": true, -# "mtu": 400, -# "vlan_id": 100 -# }, -# { -# "description": "Eth1 - VIF 101", -# "enabled": true, -# "vlan_id": 101 -# } -# ] -# }, -# { -# "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", -# "enabled": false, -# "mtu": 600, -# "name": "eth2" -# } -# ] -# }, -# "changed": false -# } -# Read vars_file 'example.yaml' - -# TASK [debug] ***************************************** -# ok: [localhost] => { -# "msg": [ -# { -# "duplex": "auto", -# "enabled": true, -# "name": "eth0", -# "speed": "auto" -# }, -# { -# "description": "Configured by Ansible - Interface 1", -# "duplex": "auto", -# "enabled": true, -# "mtu": 1500, -# "name": "eth1", -# "speed": "auto", -# "vifs": [ -# { -# "description": "Eth1 - VIF 100", -# "enabled": true, -# "mtu": 400, -# "vlan_id": 100 -# }, -# { -# "description": "Eth1 - VIF 101", -# "enabled": true, -# "vlan_id": 101 -# } -# ] -# }, -# { -# "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", -# "enabled": false, -# "mtu": 600, -# "name": "eth2" -# } -# ] -# } -""" - -from ansible.errors import AnsibleFilterError - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - AnsibleArgSpecValidator, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.remove_keys import remove_keys - - -try: - from jinja2.filters import pass_environment -except ImportError: - from jinja2.filters import environmentfilter as pass_environment - - -@pass_environment -def _remove_keys(*args, **kwargs): - """remove specific keys from a data recursively""" - - keys = ["data", "target", "matching_parameter"] - data = dict(zip(keys, args[1:])) - data.update(kwargs) - aav = AnsibleArgSpecValidator(data=data, schema=DOCUMENTATION, name="remove_keys") - valid, errors, updated_data = aav.validate() - if not valid: - raise AnsibleFilterError(errors) - return remove_keys(**updated_data) - - -class FilterModule(object): - """remove_keys""" - - def filters(self): - """a mapping of filter names to functions""" - return {"remove_keys": _remove_keys} diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/replace_keys.py b/ansible/collections/ansible_collections/ansible/utils/plugins/filter/replace_keys.py deleted file mode 100644 index fc7e064f..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/replace_keys.py +++ /dev/null @@ -1,319 +0,0 @@ -# -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -# - -""" -The replace_keys filter plugin -""" -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -DOCUMENTATION = """ - name: replace_keys - author: Sagar Paul (@KB-perByte) - version_added: "2.5.0" - short_description: Replaces specific keys with their after value from a data recursively. - description: - - This plugin replaces specific keys with their after value from a data recursively. - - Matching parameter defaults to equals unless C(matching_parameter) is explicitly mentioned. - - Using the parameters below- C(data|ansible.utils.replace_keys(target([....]))) - options: - data: - description: - - This option represents a list of dictionaries or a dictionary with any level of nesting data. - - For example C(config_data|ansible.utils.replace_keys(target([....]))), in this case C(config_data) represents this option. - type: raw - required: True - target: - description: Specify the target keys to replace in list of dictionaries format containing - before and after key value. - type: list - elements: dict - required: True - suboptions: - before: - description: before attribute key [to change] - type: str - after: - description: after attribute key [change to] - type: str - matching_parameter: - description: Specify the matching configuration of target keys and data attributes. - type: str - choices: ["starts_with","ends_with","regex"] -""" - -EXAMPLES = r""" -# example.yaml -# interfaces: -# - interface_name: eth0 -# enabled: true -# duplex: auto -# speed: auto -# - interface_name: eth1 -# description: Configured by Ansible - Interface 1 -# mtu: 1500 -# speed: auto -# duplex: auto -# is_enabled: true -# vifs: -# - vlan_id: 100 -# description: Eth1 - VIF 100 -# mtu: 400 -# is_enabled: true -# - vlan_id: 101 -# description: Eth1 - VIF 101 -# is_enabled: true -# - interface_name: eth2 -# description: Configured by Ansible - Interface 2 (ADMIN DOWN) -# mtu: 600 -# is_enabled: false - -# Playbook -- name: replace keys with specified keys dict/list to dict - ansible.builtin.set_fact: - data: '{{ interfaces }}' -- debug: - msg: >- - {{ data|ansible.utils.replace_keys(target=[{'before':'interface_name', - 'after':'name'}, {'before':'is_enabled', 'after':'enabled'}]) }} - -# Output -# TASK [replace keys with specified keys dict/list to dict] ************************* -# ok: [localhost] => { -# "ansible_facts": { -# "data": [ -# { -# "duplex": "auto", -# "enabled": true, -# "interface_name": "eth0", -# "speed": "auto" -# }, -# { -# "description": "Configured by Ansible - Interface 1", -# "duplex": "auto", -# "interface_name": "eth1", -# "is_enabled": true, -# "mtu": 1500, -# "speed": "auto", -# "vifs": [ -# { -# "description": "Eth1 - VIF 100", -# "is_enabled": true, -# "mtu": 400, -# "vlan_id": 100 -# }, -# { -# "description": "Eth1 - VIF 101", -# "is_enabled": true, -# "vlan_id": 101 -# } -# ] -# }, -# { -# "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", -# "interface_name": "eth2", -# "is_enabled": false, -# "mtu": 600 -# } -# ] -# }, -# "changed": false -# } - -# TASK [debug] ********************************************************************** -# ok: [localhost] => { -# "msg": [ -# { -# "duplex": "auto", -# "enabled": true, -# "name": "eth0", -# "speed": "auto" -# }, -# { -# "description": "Configured by Ansible - Interface 1", -# "duplex": "auto", -# "enabled": true, -# "mtu": 1500, -# "name": "eth1", -# "speed": "auto", -# "vifs": [ -# { -# "description": "Eth1 - VIF 100", -# "enabled": true, -# "mtu": 400, -# "vlan_id": 100 -# }, -# { -# "description": "Eth1 - VIF 101", -# "enabled": true, -# "vlan_id": 101 -# } -# ] -# }, -# { -# "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", -# "enabled": false, -# "mtu": 600, -# "name": "eth2" -# } -# ] -# } - -# example.yaml -# interfaces: -# - interface_name: eth0 -# enabled: true -# duplex: auto -# speed: auto -# - interface_name: eth1 -# description: Configured by Ansible - Interface 1 -# mtu: 1500 -# speed: auto -# duplex: auto -# is_enabled: true -# vifs: -# - vlan_id: 100 -# description: Eth1 - VIF 100 -# mtu: 400 -# is_enabled: true -# - vlan_id: 101 -# description: Eth1 - VIF 101 -# is_enabled: true -# - interface_name: eth2 -# description: Configured by Ansible - Interface 2 (ADMIN DOWN) -# mtu: 600 -# is_enabled: false - -# Playbook -- name: replace keys with specified keys dict/list to dict - ansible.builtin.set_fact: - data: '{{ interfaces }}' -- debug: - msg: >- - {{ data|ansible.utils.replace_keys(target=[{'before':'name', - 'after':'name'}, {'before':'enabled', 'after':'enabled'}], - matching_parameter= 'ends_with') }} - -# Output -# TASK [replace keys with specified keys dict/list to dict] ********************************* -# ok: [localhost] => { -# "ansible_facts": { -# "data": [ -# { -# "duplex": "auto", -# "enabled": true, -# "interface_name": "eth0", -# "speed": "auto" -# }, -# { -# "description": "Configured by Ansible - Interface 1", -# "duplex": "auto", -# "interface_name": "eth1", -# "is_enabled": true, -# "mtu": 1500, -# "speed": "auto", -# "vifs": [ -# { -# "description": "Eth1 - VIF 100", -# "is_enabled": true, -# "mtu": 400, -# "vlan_id": 100 -# }, -# { -# "description": "Eth1 - VIF 101", -# "is_enabled": true, -# "vlan_id": 101 -# } -# ] -# }, -# { -# "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", -# "interface_name": "eth2", -# "is_enabled": false, -# "mtu": 600 -# } -# ] -# }, -# "changed": false -# } - -# TASK [debug] *************************************************************************** -# ok: [localhost] => { -# "msg": [ -# { -# "duplex": "auto", -# "enabled": true, -# "name": "eth0", -# "speed": "auto" -# }, -# { -# "description": "Configured by Ansible - Interface 1", -# "duplex": "auto", -# "enabled": true, -# "mtu": 1500, -# "name": "eth1", -# "speed": "auto", -# "vifs": [ -# { -# "description": "Eth1 - VIF 100", -# "enabled": true, -# "mtu": 400, -# "vlan_id": 100 -# }, -# { -# "description": "Eth1 - VIF 101", -# "enabled": true, -# "vlan_id": 101 -# } -# ] -# }, -# { -# "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", -# "enabled": false, -# "mtu": 600, -# "name": "eth2" -# } -# ] -# } -""" - -from ansible.errors import AnsibleFilterError - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - AnsibleArgSpecValidator, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.replace_keys import replace_keys - - -try: - from jinja2.filters import pass_environment -except ImportError: - from jinja2.filters import environmentfilter as pass_environment - - -@pass_environment -def _replace_keys(*args, **kwargs): - """replaces specific keys with their after value from a data recursively""" - - keys = ["data", "target", "matching_parameter"] - data = dict(zip(keys, args[1:])) - data.update(kwargs) - aav = AnsibleArgSpecValidator(data=data, schema=DOCUMENTATION, name="replace_keys") - valid, errors, updated_data = aav.validate() - if not valid: - raise AnsibleFilterError(errors) - return replace_keys(**updated_data) - - -class FilterModule(object): - """replace_keys""" - - def filters(self): - """a mapping of filter names to functions""" - return {"replace_keys": _replace_keys} diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/slaac.py b/ansible/collections/ansible_collections/ansible/utils/plugins/filter/slaac.py deleted file mode 100644 index e67b5899..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/slaac.py +++ /dev/null @@ -1,144 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -filter plugin file for ipaddr filters: slaac -""" -from __future__ import absolute_import, division, print_function - -from functools import partial - -from ansible.errors import AnsibleFilterError - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - AnsibleArgSpecValidator, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddr_utils import ( - _need_netaddr, - hwaddr, - ipaddr, -) - - -__metaclass__ = type - - -try: - from jinja2.filters import pass_environment -except ImportError: - from jinja2.filters import environmentfilter as pass_environment - -try: - import netaddr - - HAS_NETADDR = True -except ImportError: - # in this case, we'll make the filters return error messages (see bottom) - HAS_NETADDR = False -else: - - class mac_linux(netaddr.mac_unix): - pass - - mac_linux.word_fmt = "%.2x" - -DOCUMENTATION = """ - name: slaac - author: Ashwini Mhatre (@amhatre) - version_added: "2.5.0" - short_description: This filter returns the SLAAC address within a network for a given HW/MAC address. - description: - - This filter returns the SLAAC address within a network for a given HW/MAC address. - - The filter slaac() generates an IPv6 address for a given network and a MAC Address in Stateless Configuration. - options: - value: - description: The network address or range to test against. - type: str - required: True - query: - description: nth host - type: str - notes: -""" - -EXAMPLES = r""" -#### examples -- name: The filter slaac() generates an IPv6 address for a given network and a MAC Address in Stateless Configuration. - debug: - msg: "{{ 'fdcf:1894:23b5:d38c:0000:0000:0000:0000' | slaac('c2:31:b3:83:bf:2b') }}" - -# TASK [The filter slaac() generates an IPv6 address for a given network and a MAC Address in Stateless Configuration.] *** -# task path: /Users/amhatre/ansible-collections/playbooks/test_slaac.yaml:7 -# Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils -# ok: [localhost] => { -# "msg": "fdcf:1894:23b5:d38c:c031:b3ff:fe83:bf2b" -# } -""" - -RETURN = """ - data: - type: str - description: - - Returns the SLAAC address within a network for a given HW/MAC address. - -""" - - -@pass_environment -def _slaac(*args, **kwargs): - """This filter returns whether an address or a network passed as argument is in a network.""" - keys = ["value", "query"] - data = dict(zip(keys, args[1:])) - data.update(kwargs) - aav = AnsibleArgSpecValidator(data=data, schema=DOCUMENTATION, name="slaac") - valid, errors, updated_data = aav.validate() - if not valid: - raise AnsibleFilterError(errors) - return slaac(**updated_data) - - -def slaac(value, query=""): - """Get the SLAAC address within given network""" - try: - vtype = ipaddr(value, "type") - if vtype == "address": - v = ipaddr(value, "cidr") - elif vtype == "network": - v = ipaddr(value, "subnet") - - if ipaddr(value, "version") != 6: - return False - - value = netaddr.IPNetwork(v) - except Exception: - return False - - if not query: - return False - - try: - mac = hwaddr(query, alias="slaac") - - eui = netaddr.EUI(mac) - except Exception: - return False - - return str(eui.ipv6(value.network)) - - -class FilterModule(object): - """IP address and network manipulation filters""" - - filter_map = { - # IP addresses and networks - "slaac": _slaac, - } - - def filters(self): - """ipaddr filter""" - if HAS_NETADDR: - return self.filter_map - else: - return dict((f, partial(_need_netaddr, f)) for f in self.filter_map) diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/to_paths.py b/ansible/collections/ansible_collections/ansible/utils/plugins/filter/to_paths.py deleted file mode 100644 index 8d308729..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/to_paths.py +++ /dev/null @@ -1,145 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2020 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - - -""" -flatten a complex object to dot bracket notation -""" -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - - -DOCUMENTATION = """ - name: to_paths - author: Bradley Thornton (@cidrblock) - version_added: "1.0.0" - short_description: Flatten a complex object into a dictionary of paths and values - description: - - Flatten a complex object into a dictionary of paths and values. - - Paths are dot delimited whenever possible. - - Brackets are used for list indices and keys that contain special characters. - - B(to_paths) is also available as a B(lookup plugin) for convenience. - - Using the parameters below- C(var|ansible.utils.to_paths(prepend, wantlist)) - options: - var: - description: - - The value of I(var) will be will be used. - - This option represents the value that is passed to the filter plugin in pipe format. - - For example C(config_data|ansible.utils.to_paths()), in this case C(config_data) represents this option. - type: raw - required: True - prepend: - description: Prepend each path entry. Useful to add the initial I(var) name. - type: str - required: False - wantlist: - description: - - If set to C(True), the return value will always be a list. - type: bool - - notes: -""" - -EXAMPLES = r""" - -#### Simple examples - -- ansible.builtin.set_fact: - a: - b: - c: - d: - - 0 - - 1 - e: - - true - - false - -- ansible.builtin.set_fact: - paths: "{{ a|ansible.utils.to_paths }}" - -# TASK [ansible.builtin.set_fact] ******************************************** -# ok: [nxos101] => changed=false -# ansible_facts: -# paths: -# b.c.d[0]: 0 -# b.c.d[1]: 1 -# b.c.e[0]: True -# b.c.e[1]: False - -- name: Use prepend to add the initial variable name - ansible.builtin.set_fact: - paths: "{{ a|ansible.utils.to_paths(prepend='a') }}" - -# TASK [Use prepend to add the initial variable name] ************************** -# ok: [nxos101] => changed=false -# ansible_facts: -# paths: -# a.b.c.d[0]: 0 -# a.b.c.d[1]: 1 -# a.b.c.e[0]: True -# a.b.c.e[1]: False - - -#### Using a complex object - -- name: Make an API call - uri: - url: "https://nxos101/restconf/data/openconfig-interfaces:interfaces" - headers: - accept: "application/yang.data+json" - url_password: password - url_username: admin - validate_certs: false - register: result - delegate_to: localhost - -- name: Flatten the complex object - ansible.builtin.set_fact: - paths: "{{ result.json|ansible.utils.to_paths }}" - -# TASK [Flatten the complex object] ****************************************** -# ok: [nxos101] => changed=false -# ansible_facts: -# paths: -# interfaces.interface[0].config.enabled: 'true' -# interfaces.interface[0].config.mtu: '1500' -# interfaces.interface[0].config.name: eth1/71 -# interfaces.interface[0].config.type: ethernetCsmacd -# interfaces.interface[0].ethernet.config['auto-negotiate']: 'true' -# interfaces.interface[0].ethernet.state.counters['in-crc-errors']: '0' -# interfaces.interface[0].ethernet.state.counters['in-fragment-frames']: '0' -# interfaces.interface[0].ethernet.state.counters['in-jabber-frames']: '0' -# interfaces.interface[0].ethernet.state.counters['in-mac-control-frames']: '0' -# <...> -""" - -from ansible.errors import AnsibleFilterError - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - AnsibleArgSpecValidator, -) -from ansible_collections.ansible.utils.plugins.module_utils.common.to_paths import to_paths - - -def _to_paths(*args, **kwargs): - """Flatten a complex object into a dictionary of paths and values.""" - keys = ["var", "prepend", "wantlist"] - data = dict(zip(keys, args)) - data.update(kwargs) - aav = AnsibleArgSpecValidator(data=data, schema=DOCUMENTATION, name="to_paths") - valid, errors, updated_data = aav.validate() - if not valid: - raise AnsibleFilterError(errors) - return to_paths(**updated_data) - - -class FilterModule(object): - """path filters""" - - def filters(self): - return {"to_paths": _to_paths} diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/to_xml.py b/ansible/collections/ansible_collections/ansible/utils/plugins/filter/to_xml.py deleted file mode 100644 index c41cb841..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/to_xml.py +++ /dev/null @@ -1,190 +0,0 @@ -# -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -# - - -""" -The to_xml filter plugin -""" -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -DOCUMENTATION = """ - name: to_xml - author: Ashwini Mhatre (@amhatre) - version_added: "2.0.2" - short_description: Convert given JSON string to XML - description: - - This plugin converts the JSON string to XML. - - Using the parameters below- C(data|ansible.utils.to_xml) - options: - data: - description: - - The input JSON string . - - This option represents the JSON value that is passed to the filter plugin in pipe format. - - For example C(config_data|ansible.utils.to_xml), in this case C(config_data) represents this option. - type: dict - required: True - engine: - description: - - Conversion library to use within the filter plugin. - type: str - default: xmltodict - indent: - description: - - The character used for indentation (defaults to tabs). - type: str - default: tabs - choices: ["tabs", "spaces"] - indent_width: - description: - - The number of spaces to use to indent output data. - - This option is only used when indent="spaces", otherwise it is ignored. - - When indent="tabs", a single tab is always used for indentation. - type: int - default: 4 - full_document: - description: - - The option to disable xml declaration(defaults to True). - type: bool - default: True -""" - -EXAMPLES = r""" - -#### Simple examples with out any engine. plugin will use default value as xmltodict - -- name: Define JSON data - ansible.builtin.set_fact: - data: - "interface-configurations": - "@xmlns": "http://cisco.com/ns/yang/Cisco-IOS-XR-ifmgr-cfg" - "interface-configuration": -- debug: - msg: "{{ data | ansible.utils.to_xml }}" - -# TASK [Define JSON data ] ************************************************************************* -# task path: /Users/amhatre/ansible-collections/playbooks/test_utils_json_to_xml.yaml:5 -# ok: [localhost] => { -# "ansible_facts": { -# "data": { -# "interface-configurations": { -# "@xmlns": "http://cisco.com/ns/yang/Cisco-IOS-XR-ifmgr-cfg", -# "interface-configuration": null -# } -# } -# }, -# "changed": false -# } -# -# TASK [debug] *********************************************************************************************************** -# task path: /Users/amhatre/ansible-collections/playbooks/test_utils_json_to_xml.yaml:13 -# Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils -# ok: [localhost] => { -# "msg": "\n\n\t\n" -# } - -#### example2 with engine=xmltodict - -- name: Define JSON data - ansible.builtin.set_fact: - data: - "interface-configurations": - "@xmlns": "http://cisco.com/ns/yang/Cisco-IOS-XR-ifmgr-cfg" - "interface-configuration": -- debug: - msg: "{{ data | ansible.utils.to_xml('xmltodict') }}" - -# TASK [Define JSON data ] ************************************************************************* -# task path: /Users/amhatre/ansible-collections/playbooks/test_utils_json_to_xml.yaml:5 -# ok: [localhost] => { -# "ansible_facts": { -# "data": { -# "interface-configurations": { -# "@xmlns": "http://cisco.com/ns/yang/Cisco-IOS-XR-ifmgr-cfg", -# "interface-configuration": null -# } -# } -# }, -# "changed": false -# } -# TASK [debug] *********************************************************************************************************** -# task path: /Users/amhatre/ansible-collections/playbooks/test_utils_json_to_xml.yaml:13 -# Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils -# ok: [localhost] => { -# "msg": "\n\n\t\n" -# } - -#### example3 with indent='spaces' and indent_width=2 - -- name: Define JSON data - ansible.builtin.set_fact: - data: - "interface-configurations": - "@xmlns": "http://cisco.com/ns/yang/Cisco-IOS-XR-ifmgr-cfg" - "interface-configuration": -- debug: - msg: "{{ data | ansible.utils.to_xml(indent='spaces', indent_width=2) }}" - -# TASK [Define JSON data ] ************************************************************************* -# task path: /Users/amhatre/ansible-collections/playbooks/test_utils_json_to_xml.yaml:5 -# ok: [localhost] => { -# "ansible_facts": { -# "data": { -# "interface-configurations": { -# "@xmlns": "http://cisco.com/ns/yang/Cisco-IOS-XR-ifmgr-cfg", -# "interface-configuration": null -# } -# } -# }, -# "changed": false -# } -# TASK [debug] *********************************************************************************************************** -# task path: /Users/amhatre/ansible-collections/playbooks/test_utils_json_to_xml.yaml:13 -# Loading collection ansible.utils from /Users/amhatre/ansible-collections/collections/ansible_collections/ansible/utils -# ok: [localhost] => { -# "\n\n \n" -# } -""" - -from ansible.errors import AnsibleFilterError - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - AnsibleArgSpecValidator, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.to_xml import to_xml - - -try: - from jinja2.filters import pass_environment -except ImportError: - from jinja2.filters import environmentfilter as pass_environment - - -@pass_environment -def _to_xml(*args, **kwargs): - """Convert the given data from json to xml.""" - keys = ["data", "engine", "indent", "indent_width"] - data = dict(zip(keys, args[1:])) - data.update(kwargs) - aav = AnsibleArgSpecValidator(data=data, schema=DOCUMENTATION, name="to_xml") - valid, errors, updated_data = aav.validate() - if not valid: - raise AnsibleFilterError(errors) - return to_xml(**updated_data) - - -class FilterModule(object): - """to_xml""" - - def filters(self): - """a mapping of filter names to functions""" - return {"to_xml": _to_xml} diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/usable_range.py b/ansible/collections/ansible_collections/ansible/utils/plugins/filter/usable_range.py deleted file mode 100644 index 174cbbb2..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/usable_range.py +++ /dev/null @@ -1,184 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Filter plugin file for usable_range -""" - -from __future__ import absolute_import, division, print_function - -from ipaddress import IPv4Network, IPv6Network - -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddress_utils import ( - _need_ipaddress, - ip_network, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.base.utils import _validate_args - - -__metaclass__ = type - -DOCUMENTATION = """ - name: usable_range - author: Priyam Sahoo (@priyamsahoo) - version_added: "2.3.0" - short_description: Expand the usable IP addresses - description: - - For a given IP address (IPv4 or IPv6) in CIDR form, the plugin generates a list of usable IP addresses belonging to the network. - options: - ip: - description: - - A string that represents an IP address of network in CIDR form - - 'For example: C(10.0.0.0/24) or C(2001:db8:abcd:0012::0/124)' - type: str - required: True - notes: -""" - -EXAMPLES = r""" - -#### Simple examples - -- name: Expand and produce list of usable IP addresses in 10.0.0.0/28 - ansible.builtin.set_fact: - data: "{{ '10.0.0.0/28' | ansible.utils.usable_range }}" - -# TASK [Expand and produce list of usable IP addresses in 10.0.0.0/28] ************************ -# ok: [localhost] => { -# "ansible_facts": { -# "data": { -# "number_of_ips": 16, -# "usable_ips": [ -# "10.0.0.0", -# "10.0.0.1", -# "10.0.0.2", -# "10.0.0.3", -# "10.0.0.4", -# "10.0.0.5", -# "10.0.0.6", -# "10.0.0.7", -# "10.0.0.8", -# "10.0.0.9", -# "10.0.0.10", -# "10.0.0.11", -# "10.0.0.12", -# "10.0.0.13", -# "10.0.0.14", -# "10.0.0.15" -# ] -# } -# }, -# "changed": false -# } - -- name: Expand and produce list of usable IP addresses in 2001:db8:abcd:0012::0/126 - ansible.builtin.set_fact: - data1: "{{ '2001:db8:abcd:0012::0/126' | ansible.utils.usable_range }}" - -# TASK [Expand and produce list of usable IP addresses in 2001:db8:abcd:0012::0/126] *** -# ok: [localhost] => { -# "ansible_facts": { -# "data1": { -# "number_of_ips": 4, -# "usable_ips": [ -# "2001:db8:abcd:12::", -# "2001:db8:abcd:12::1", -# "2001:db8:abcd:12::2", -# "2001:db8:abcd:12::3" -# ] -# } -# }, -# "changed": false -# } - -- name: Expand and produce list of usable IP addresses in 10.1.1.1 - ansible.builtin.set_fact: - data: "{{ '10.1.1.1' | ansible.utils.usable_range }}" - -# TASK [Expand and produce list of usable IP addresses in 10.1.1.1] *************************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": { -# "number_of_ips": 1, -# "usable_ips": [ -# "10.1.1.1" -# ] -# } -# }, -# "changed": false -# } - -#### Simple Use-case (looping through the list result) - -- name: Expand and produce list of usable IP addresses in 127.0.0.0/28 - ansible.builtin.set_fact: - data1: "{{ '127.0.0.0/28' | ansible.utils.usable_range }}" - -- name: Ping all but first IP addresses from the generated list - shell: "ping -c 1 {{ item }}" - loop: "{{ data1.usable_ips[1:] }}" - -# TASK [Expand and produce list of usable IP addresses in 127.0.0.0/28] ****************************** -# ok: [localhost] - -# TASK [Ping all but first IP addresses from the generated list] ************************************* -# changed: [localhost] => (item=127.0.0.1) -# changed: [localhost] => (item=127.0.0.2) -# changed: [localhost] => (item=127.0.0.3) -# changed: [localhost] => (item=127.0.0.4) -# changed: [localhost] => (item=127.0.0.5) -# changed: [localhost] => (item=127.0.0.6) -# changed: [localhost] => (item=127.0.0.7) -# changed: [localhost] => (item=127.0.0.8) -# changed: [localhost] => (item=127.0.0.9) -# changed: [localhost] => (item=127.0.0.10) -# changed: [localhost] => (item=127.0.0.11) -# changed: [localhost] => (item=127.0.0.12) -# changed: [localhost] => (item=127.0.0.13) -# changed: [localhost] => (item=127.0.0.14) -# changed: [localhost] => (item=127.0.0.15) -""" - -RETURN = """ - data: - description: - - Total number of usable IP addresses under the key C(number_of_ips) - - List of usable IP addresses under the key C(usable_ips) -""" - -from ansible.errors import AnsibleFilterError -from ansible.module_utils.common.text.converters import to_text -from ansible.module_utils.six import ensure_text - - -@_need_ipaddress -def _usable_range(ip): - """Expand the usable IP addresses""" - - params = {"ip": ip} - _validate_args("usable_range", DOCUMENTATION, params) - - try: - if ip_network(ip).version == 4: - ips = [to_text(usable_ips) for usable_ips in IPv4Network(ensure_text(ip))] - no_of_ips = IPv4Network(ensure_text(ip)).num_addresses - if ip_network(ip).version == 6: - ips = [to_text(usable_ips) for usable_ips in IPv6Network(ensure_text(ip))] - no_of_ips = IPv6Network(ensure_text(ip)).num_addresses - - except Exception as e: - raise AnsibleFilterError( - "Error while using plugin 'usable_range': {msg}".format(msg=to_text(e)), - ) - - return {"usable_ips": ips, "number_of_ips": no_of_ips} - - -class FilterModule(object): - """usable_range""" - - def filters(self): - """a mapping of filter names to functions""" - return {"usable_range": _usable_range} diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/validate.py b/ansible/collections/ansible_collections/ansible/utils/plugins/filter/validate.py deleted file mode 100644 index 85e9eb72..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/filter/validate.py +++ /dev/null @@ -1,143 +0,0 @@ -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -DOCUMENTATION = """ - name: validate - author: Ganesh Nalawade (@ganeshrn) - version_added: "1.0.0" - short_description: Validate data with provided criteria - description: - - Validate I(data) with provided I(criteria) based on the validation I(engine). - options: - data: - type: raw - description: - - Data that will be validated against I(criteria). - - This option represents the value that is passed to the filter plugin in pipe format. - For example C(config_data|ansible.utils.validate()), in this case C(config_data) - represents this option. - - For the type of I(data) that represents this value refer to the documentation of individual validator plugins. - required: True - criteria: - type: raw - description: - - The criteria used for validation of value that represents I(data) options. - - This option represents the first argument passed in the filter plugin. - For example C(config_data|ansible.utils.validate(config_criteria)), in - this case the value of C(config_criteria) represents this option. - - For the type of I(criteria) that represents this value refer to the documentation of individual validator plugins. - required: True - engine: - type: str - description: - - The name of the validator plugin to use. - - This option can be passed in lookup plugin as a key, value pair. - For example C(config_data|ansible.utils.validate(config_criteria, engine='ansible.utils.jsonschema')), in - this case the value C(ansible.utils.jsonschema) represents the engine to be use for data validation. - If the value is not provided the default value that is C(ansible.utils.jsonschema) will be used. - - The value should be in fully qualified collection name format that is - C(..). - default: ansible.utils.jsonschema - notes: - - For the type of options I(data) and I(criteria) refer to the individual validate plugin - documentation that is represented in the value of I(engine) option. - - For additional plugin configuration options refer to the individual validate plugin - documentation that is represented by the value of I(engine) option. - - The plugin configuration option can be either passed as C(key=value) pairs within filter plugin - or environment variables. - - The precedence of the I(validate) plugin configurable option is the variable passed within filter plugin - as C(key=value) pairs followed by the environment variables. -""" - -EXAMPLES = r""" -- name: set facts for data and criteria - ansible.builtin.set_fact: - data: "{{ lookup('ansible.builtin.file', './validate/data/show_interfaces_iosxr.json')}}" - criteria: "{{ lookup('ansible.builtin.file', './validate/criteria/jsonschema/show_interfaces_iosxr.json')}}" - -- name: validate data in json format using jsonschema by passing plugin configuration variable as key/value pairs - ansible.builtin.set_fact: - data_validity: "{{ data|ansible.utils.validate(criteria, engine='ansible.utils.jsonschema', draft='draft7') }}" -""" - -RETURN = """ - _raw: - description: - - If data is valid returns empty list - - If data is invalid returns list of errors in data -""" - -from ansible.errors import AnsibleError, AnsibleFilterError -from ansible.module_utils._text import to_text - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - check_argspec, -) -from ansible_collections.ansible.utils.plugins.module_utils.common.utils import to_list -from ansible_collections.ansible.utils.plugins.plugin_utils.base.validate import _load_validator - - -ARGSPEC_CONDITIONALS = {} - - -def validate(*args, **kwargs): - if len(args) < 2: - raise AnsibleFilterError( - "Missing either 'data' or 'criteria' value in filter input," - " refer 'ansible.utils.validate' filter plugin documentation for details", - ) - - params = {"data": args[0], "criteria": args[1]} - if kwargs.get("engine"): - params.update({"engine": kwargs["engine"]}) - - valid, argspec_result, updated_params = check_argspec( - DOCUMENTATION, - "validate filter", - schema_conditionals=ARGSPEC_CONDITIONALS, - **params, - ) - if not valid: - raise AnsibleFilterError( - "{argspec_result} with errors: {argspec_errors}".format( - argspec_result=argspec_result.get("msg"), - argspec_errors=argspec_result.get("errors"), - ), - ) - - validator_engine, validator_result = _load_validator( - engine=updated_params["engine"], - data=updated_params["data"], - criteria=updated_params["criteria"], - kwargs=kwargs, - ) - if validator_result.get("failed"): - raise AnsibleFilterError( - "validate lookup plugin failed with errors: {msg}".format( - msg=validator_result.get("msg"), - ), - ) - - try: - result = validator_engine.validate() - except AnsibleError as exc: - raise AnsibleFilterError(to_text(exc, errors="surrogate_then_replace")) - except Exception as exc: - raise AnsibleFilterError( - "Unhandled exception from validator '{validator}'. Error: {err}".format( - validator=updated_params["engine"], - err=to_text(exc, errors="surrogate_then_replace"), - ), - ) - - return to_list(result.get("errors", [])) - - -class FilterModule(object): - """index_of""" - - def filters(self): - """a mapping of filter names to functions""" - return {"validate": validate} diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/lookup/get_path.py b/ansible/collections/ansible_collections/ansible/utils/plugins/lookup/get_path.py deleted file mode 100644 index 3370d6ac..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/lookup/get_path.py +++ /dev/null @@ -1,182 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2020 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - - -""" -The get_path lookup plugin -""" -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - - -DOCUMENTATION = """ - name: get_path - author: Bradley Thornton (@cidrblock) - version_added: "1.0.0" - short_description: Retrieve the value in a variable using a path - description: - - Use a I(path) to retrieve a nested value from a I(var) - - B(get_path) is also available as a B(filter plugin) for convenience - - Using the parameters below- C(lookup('ansible.utils.get_path', var, path, wantlist)) - options: - var: - description: - - The variable from which the value should be extracted. - type: raw - required: True - path: - description: - - The I(path) in the I(var) to retrieve the value of. - - The I(path) needs to a be a valid jinja path. - type: str - required: True - wantlist: - description: - - If set to C(True), the return value will always be a list. - - This can also be accomplished using C(query) or C(q) instead of C(lookup). - - U(https://docs.ansible.com/ansible/latest/plugins/lookup.html). - type: bool - - notes: -""" - -EXAMPLES = r""" -- ansible.builtin.set_fact: - a: - b: - c: - d: - - 0 - - 1 - e: - - true - - false - -- name: Retrieve a value deep inside a using a path - ansible.builtin.set_fact: - value: "{{ lookup('ansible.utils.get_path', a, path) }}" - vars: - path: b.c.d[0] - -# TASK [Retrieve a value deep inside a using a path] ****************** -# ok: [localhost] => changed=false -# ansible_facts: -# value: '0' - - -#### Working with hostvars - -- name: Retrieve a value deep inside all of the host's vars - ansible.builtin.set_fact: - value: "{{ lookup('ansible.utils.get_path', look_in, look_for) }}" - vars: - look_in: "{{ hostvars[inventory_hostname] }}" - look_for: a.b.c.d[0] - -# TASK [Retrieve a value deep inside all of the host's vars] ******** -# ok: [nxos101] => changed=false -# ansible_facts: -# as_filter: '0' -# as_lookup: '0' - - -#### Used alongside ansible.utils.to_paths - -- name: Get the paths for the object - ansible.builtin.set_fact: - paths: "{{ lookup('ansible.utils.to_paths', a, prepend='a') }}" - -- name: Retrieve the value of each path from vars - ansible.builtin.debug: - msg: "The value of path {{ path }} in vars is {{ value }}" - loop: "{{ paths.keys()|list }}" - loop_control: - label: "{{ item }}" - vars: - path: "{{ item }}" - value: "{{ lookup('ansible.utils.get_path', hostvars[inventory_hostname], item) }}" - -# TASK [Get the paths for the object] ******************************* -# ok: [nxos101] => changed=false -# ansible_facts: -# paths: -# a.b.c.d[0]: 0 -# a.b.c.d[1]: 1 -# a.b.c.e[0]: True -# a.b.c.e[1]: False - -# TASK [Retrieve the value of each path from vars] ****************** -# ok: [nxos101] => (item=a.b.c.d[0]) => -# msg: The value of path a.b.c.d[0] in vars is 0 -# ok: [nxos101] => (item=a.b.c.d[1]) => -# msg: The value of path a.b.c.d[1] in vars is 1 -# ok: [nxos101] => (item=a.b.c.e[0]) => -# msg: The value of path a.b.c.e[0] in vars is True -# ok: [nxos101] => (item=a.b.c.e[1]) => -# msg: The value of path a.b.c.e[1] in vars is False - - -#### Working with complex structures and transforming results - -- name: Retrieve the current interface config - cisco.nxos.nxos_interfaces: - state: gathered - register: interfaces - -- name: Get the description of several interfaces - ansible.builtin.debug: - msg: "{{ lookup('ansible.utils.get_path', rekeyed, item) }}" - vars: - rekeyed: - by_name: "{{ interfaces.gathered|ansible.builtin.rekey_on_member('name') }}" - loop: - - by_name['Ethernet1/1'].description - - by_name['Ethernet1/2'].description|upper - - by_name['Ethernet1/3'].description|default('') - - -# TASK [Get the description of several interfaces] ****************** -# ok: [nxos101] => (item=by_name['Ethernet1/1'].description) => changed=false -# msg: Configured by ansible -# ok: [nxos101] => (item=by_name['Ethernet1/2'].description|upper) => changed=false -# msg: CONFIGURED BY ANSIBLE -# ok: [nxos101] => (item=by_name['Ethernet1/3'].description|default('')) => changed=false -# msg: '' -""" - -RETURN = """ - _raw: - description: - - One or more zero-based indices of the matching list items. - - See C(wantlist) if a list is always required. -""" - -from ansible.errors import AnsibleLookupError -from ansible.plugins.lookup import LookupBase - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - AnsibleArgSpecValidator, -) -from ansible_collections.ansible.utils.plugins.module_utils.common.get_path import get_path - - -class LookupModule(LookupBase): - def run(self, terms, variables, **kwargs): - if isinstance(terms, list): - keys = ["var", "path"] - terms = dict(zip(keys, terms)) - terms.update(kwargs) - - schema = [v for k, v in globals().items() if k.lower() == "documentation"] - aav = AnsibleArgSpecValidator(data=terms, schema=schema[0], name="get_path") - valid, errors, updated_data = aav.validate() - if not valid: - raise AnsibleLookupError(errors) - updated_data["wantlist"] = True - updated_data["environment"] = self._templar.environment - res = get_path(**updated_data) - return res diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/lookup/index_of.py b/ansible/collections/ansible_collections/ansible/utils/plugins/lookup/index_of.py deleted file mode 100644 index 3da623ac..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/lookup/index_of.py +++ /dev/null @@ -1,352 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2020 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - - -""" -The index_of lookup plugin -""" -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - - -DOCUMENTATION = """ - name: index_of - author: Bradley Thornton (@cidrblock) - version_added: "1.0.0" - short_description: Find the indices of items in a list matching some criteria - description: - - This plugin returns the indices of items matching some criteria in a list. - - When working with a list of dictionaries, the key to evaluate can be specified. - - B(index_of) is also available as a B(filter plugin) for convenience. - - Using the parameters below- C(lookup('ansible.utils.index_of', data, test, value, key, fail_on_missing, wantlist)). - options: - data: - description: - - A list of items to enumerate and test against. - type: list - elements: raw - required: True - test: - description: - - The name of the test to run against the list, a valid jinja2 test or ansible test plugin. - - Jinja2 includes the following tests U(http://jinja.palletsprojects.com/templates/#builtin-tests). - - An overview of tests included in ansible U(https://docs.ansible.com/ansible/latest/user_guide/playbooks_tests.html). - type: str - required: True - value: - description: - - The value used to test each list item against. - - Not required for simple tests (e.g. C(true), C(false), C(even), C(odd)) - - May be a C(string), C(boolean), C(number), C(regular expression) C(dict) and so on, depending on the B(test) used. - type: raw - key: - description: - - When the data provided is a list of dictionaries, run the test against this dictionary key. - - When using a I(key), the I(data) must only contain dictionaries. - - See I(fail_on_missing) below to determine the behaviour when the I(key) is missing from a dictionary in the I(data). - type: str - fail_on_missing: - description: - - When provided a list of dictionaries, fail if the key is missing from one or more of the dictionaries. - type: bool - wantlist: - description: - - When only a single entry in the I(data) is matched, the index of that entry is returned as an integer. - - If set to C(True), the return value will always be a list, even if only a single entry is matched. - - This can also be accomplished using C(query) or C(q) instead of C(lookup). - - U(https://docs.ansible.com/ansible/latest/plugins/lookup.html) - type: bool - - notes: -""" - -EXAMPLES = r""" - -#### Simple examples - -- ansible.builtin.set_fact: - data: - - 1 - - 2 - - 3 - -- name: Find the index of 2 - ansible.builtin.set_fact: - indices: "{{ lookup('ansible.utils.index_of', data, 'eq', 2) }}" - -# TASK [Find the index of 2] ************************************************* -# ok: [nxos101] => changed=false -# ansible_facts: -# indices: '1' - -- name: Find the index of 2, ensure list is returned - ansible.builtin.set_fact: - indices: "{{ lookup('ansible.utils.index_of', data, 'eq', 2, wantlist=True) }}" - -# TASK [Find the index of 2, ensure list is returned] ************************ -# ok: [nxos101] => changed=false -# ansible_facts: -# indices: -# - 1 - -- name: Find the index of 3 using the long format - ansible.builtin.set_fact: - indices: "{{ lookup('ansible.utils.index_of', data=data, test='eq', value=value, wantlist=True) }}" - vars: - value: 3 - -# TASK [Find the index of 3 using the long format] *************************** -# ok: [nxos101] => changed=false -# ansible_facts: -# indices: -# - 2 - -- name: Find numbers greater than 1, using loop - debug: - msg: "{{ data[item] }} is {{ test }} than {{ value }}" - loop: "{{ lookup('ansible.utils.index_of', data, test, value) }}" - vars: - test: '>' - value: 1 - -# TASK [Find numbers great than 1, using loop] ******************************* -# ok: [sw01] => (item=1) => -# msg: 2 is > than 1 -# ok: [sw01] => (item=2) => -# msg: 3 is > than 1 - -- name: Find numbers greater than 1, using with - debug: - msg: "{{ data[item] }} is {{ params.test }} than {{ params.value }}" - with_ansible.utils.index_of: "{{ params }}" - vars: - params: - data: "{{ data }}" - test: '>' - value: 1 - -# TASK [Find numbers greater than 1, using with] ***************************** -# ok: [nxos101] => (item=1) => -# msg: 2 is > than 1 -# ok: [nxos101] => (item=2) => -# msg: 3 is > than 1 - - -#### Working with lists of dictionaries - -- ansible.builtin.set_fact: - data: - - name: sw01.example.lan - type: switch - - name: rtr01.example.lan - type: router - - name: fw01.example.corp - type: firewall - - name: fw02.example.corp - type: firewall - -- name: Find the index of all firewalls using the type key - ansible.builtin.set_fact: - firewalls: "{{ lookup('ansible.utils.index_of', data, 'eq', 'firewall', 'type') }}" - -# TASK [Find the index of all firewalls using the type key] ****************** -# ok: [nxos101] => changed=false -# ansible_facts: -# firewalls: -# - 2 -# - 3 - -- name: Find the index of all firewalls, use in a loop - debug: - msg: "The type of {{ device_type }} at index {{ item }} has name {{ data[item].name }}." - loop: "{{ lookup('ansible.utils.index_of', data, 'eq', device_type, 'type') }}" - vars: - device_type: firewall - -# TASK [Find the index of all firewalls, use in a loop, as a filter] ********* -# ok: [nxos101] => (item=2) => -# msg: The type of firewall at index 2 has name fw01.example.corp. -# ok: [nxos101] => (item=3) => -# msg: The type of firewall at index 3 has name fw02.example.corp. - -- name: Find the index of all devices with a .corp name - debug: - msg: "The device named {{ data[item].name }} is a {{ data[item].type }}" - loop: "{{ lookup('ansible.utils.index_of', data, 'regex', expression, 'name') }}" - vars: - expression: '\.corp$' - -# TASK [Find the index of all devices with a .corp name] ********************* -# ok: [nxos101] => (item=2) => -# msg: The device named fw01.example.corp is a firewall -# ok: [nxos101] => (item=3) => -# msg: The device named fw02.example.corp is a firewall - - -#### Working with complex structures from resource modules - -- name: Retrieve the current L3 interface configuration - cisco.nxos.nxos_l3_interfaces: - state: gathered - register: current_l3 - -# TASK [Retrieve the current L3 interface configuration] ********************* -# ok: [sw01] => changed=false -# gathered: -# - name: Ethernet1/1 -# - name: Ethernet1/2 -# <...> -# - name: Ethernet1/128 -# - ipv4: -# - address: 192.168.101.14/24 -# name: mgmt0 - -- name: Find the indices interfaces with a 192.168.101.xx ip address - ansible.builtin.set_fact: - found: "{{ found + entry }}" - with_indexed_items: "{{ current_l3.gathered }}" - vars: - found: [] - ip: '192.168.101.' - address: "{{ lookup('ansible.utils.index_of', item.1.ipv4 | d([]), 'search', ip, 'address', wantlist=True) }}" - entry: - - interface_idx: "{{ item.0 }}" - address_idxs: "{{ address }}" - when: address - -# TASK [debug] *************************************************************** -# ok: [sw01] => -# found: -# - address_idxs: -# - 0 -# interface_idx: '128' - -- name: Show all interfaces and their address - debug: - msg: "{{ interface.name }} has ip {{ address }}" - loop: "{{ found|subelements('address_idxs') }}" - vars: - interface: "{{ current_l3.gathered[item.0.interface_idx|int] }}" - address: "{{ interface.ipv4[item.1].address }}" - -# TASK [Show all interfaces and their address] ******************************* -# ok: [nxos101] => (item=[{'interface_idx': '128', 'address_idxs': [0]}, 0]) => -# msg: mgmt0 has ip 192.168.101.14/24 - - -#### Working with deeply nested data - -- ansible.builtin.set_fact: - data: - interfaces: - interface: - - config: - description: configured by Ansible - 1 - enabled: true - loopback-mode: false - mtu: 1024 - name: loopback0000 - type: eth - name: loopback0000 - subinterfaces: - subinterface: - - config: - description: subinterface configured by Ansible - 1 - enabled: true - index: 5 - index: 5 - - config: - description: subinterface configured by Ansible - 2 - enabled: false - index: 2 - index: 2 - - config: - description: configured by Ansible - 2 - enabled: false - loopback-mode: false - mtu: 2048 - name: loopback1111 - type: virt - name: loopback1111 - subinterfaces: - subinterface: - - config: - description: subinterface configured by Ansible - 3 - enabled: true - index: 10 - index: 10 - - config: - description: subinterface configured by Ansible - 4 - enabled: false - index: 3 - index: 3 - - -- name: Find the description of loopback111, subinterface index 10 - debug: - msg: |- - {{ data.interfaces.interface[int_idx|int] - .subinterfaces.subinterface[subint_idx|int] - .config.description }} - vars: - # the values to search for - int_name: loopback1111 - sub_index: 10 - # retrieve the index in each nested list - int_idx: | - {{ lookup('ansible.utils.index_of', - data.interfaces.interface, - 'eq', int_name, 'name') }} - subint_idx: | - {{ lookup('ansible.utils.index_of', - data.interfaces.interface[int_idx|int].subinterfaces.subinterface, - 'eq', sub_index, 'index') }} - -# TASK [Find the description of loopback111, subinterface index 10] ************ -# ok: [sw01] => -# msg: subinterface configured by Ansible - 3 -""" - -RETURN = """ - _raw: - description: - - One or more zero-based indicies of the matching list items. - - See C(wantlist) if a list is always required. -""" - -from ansible.errors import AnsibleLookupError -from ansible.plugins.lookup import LookupBase - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - AnsibleArgSpecValidator, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.index_of import index_of - - -class LookupModule(LookupBase): - def run(self, terms, variables, **kwargs): - if isinstance(terms, list): - keys = [ - "data", - "test", - "value", - "key", - "fail_on_missing", - "wantlist", - ] - terms = dict(zip(keys, terms)) - terms.update(kwargs) - - schema = [v for k, v in globals().items() if k.lower() == "documentation"] - aav = AnsibleArgSpecValidator(data=terms, schema=schema[0], name="index_of") - valid, errors, updated_data = aav.validate() - if not valid: - raise AnsibleLookupError(errors) - updated_data["wantlist"] = True - updated_data["tests"] = self._templar.environment.tests - res = index_of(**updated_data) - return res diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/lookup/to_paths.py b/ansible/collections/ansible_collections/ansible/utils/plugins/lookup/to_paths.py deleted file mode 100644 index 70a9abe3..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/lookup/to_paths.py +++ /dev/null @@ -1,153 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2020 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - - -""" -The to_paths lookup plugin -""" -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - - -DOCUMENTATION = """ - name: to_paths - author: Bradley Thornton (@cidrblock) - version_added: "1.0.0" - short_description: Flatten a complex object into a dictionary of paths and values - description: - - Flatten a complex object into a dictionary of paths and values. - - Paths are dot delimited whenever possible. - - Brackets are used for list indices and keys that contain special characters. - - B(to_paths) is also available as a filter plugin. - - Using the parameters below- C(lookup('ansible.utils.to_paths', var, prepend, wantlist)) - options: - var: - description: - - The value of I(var) will be used. - type: raw - required: True - prepend: - description: - - Prepend each path entry. Useful to add the initial I(var) name. - type: str - required: False - wantlist: - description: - - If set to I(True), the return value will always be a list. - - This can also be accomplished using C(query) or B(q) instead of C(lookup). - - U(https://docs.ansible.com/ansible/latest/plugins/lookup.html) - type: bool - - notes: -""" - -EXAMPLES = r""" - -#### Simple examples - -- ansible.builtin.set_fact: - a: - b: - c: - d: - - 0 - - 1 - e: - - true - - false - -- ansible.builtin.set_fact: - paths: "{{ lookup('ansible.utils.to_paths', a) }}" - -# TASK [ansible.builtin.set_fact] ******************************************** -# ok: [nxos101] => changed=false -# ansible_facts: -# paths: -# b.c.d[0]: 0 -# b.c.d[1]: 1 -# b.c.e[0]: True -# b.c.e[1]: False - -- name: Use prepend to add the initial variable name - ansible.builtin.set_fact: - paths: "{{ lookup('ansible.utils.to_paths', a, prepend='a') }}" - -# TASK [Use prepend to add the initial variable name] ************************** -# ok: [nxos101] => changed=false -# ansible_facts: -# paths: -# a.b.c.d[0]: 0 -# a.b.c.d[1]: 1 -# a.b.c.e[0]: True -# a.b.c.e[1]: False - - -#### Using a complex object - -- name: Make an API call - ansible.builtin.uri: - url: "https://nxos101/restconf/data/openconfig-interfaces:interfaces" - headers: - accept: "application/yang.data+json" - url_password: password - url_username: admin - validate_certs: false - register: result - delegate_to: localhost - -- name: Flatten the complex object - ansible.builtin.set_fact: - paths: "{{ lookup('ansible.utils.to_paths', result.json) }}" - -# TASK [Flatten the complex object] ****************************************** -# ok: [nxos101] => changed=false -# ansible_facts: -# paths: -# interfaces.interface[0].config.enabled: 'true' -# interfaces.interface[0].config.mtu: '1500' -# interfaces.interface[0].config.name: eth1/71 -# interfaces.interface[0].config.type: ethernetCsmacd -# interfaces.interface[0].ethernet.config['auto-negotiate']: 'true' -# interfaces.interface[0].ethernet.state.counters['in-crc-errors']: '0' -# interfaces.interface[0].ethernet.state.counters['in-fragment-frames']: '0' -# interfaces.interface[0].ethernet.state.counters['in-jabber-frames']: '0' -# interfaces.interface[0].ethernet.state.counters['in-mac-control-frames']: '0' -# <...> -""" - -RETURN = """ - _raw: - description: - - A dictionary of key value pairs. - - The key is the path. - - The value is the value. -""" - -from ansible.errors import AnsibleLookupError -from ansible.plugins.lookup import LookupBase - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - AnsibleArgSpecValidator, -) -from ansible_collections.ansible.utils.plugins.module_utils.common.to_paths import to_paths - - -class LookupModule(LookupBase): - def run(self, terms, variables, **kwargs): - if isinstance(terms, list): - keys = ["var", "prepend"] - terms = dict(zip(keys, terms)) - terms.update(kwargs) - - schema = [v for k, v in globals().items() if k.lower() == "documentation"] - aav = AnsibleArgSpecValidator(data=terms, schema=schema[0], name="to_paths") - valid, errors, updated_data = aav.validate() - if not valid: - raise AnsibleLookupError(errors) - updated_data["wantlist"] = True - res = to_paths(**updated_data) - return res diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/lookup/validate.py b/ansible/collections/ansible_collections/ansible/utils/plugins/lookup/validate.py deleted file mode 100644 index 711c3c98..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/lookup/validate.py +++ /dev/null @@ -1,151 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2020 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -DOCUMENTATION = """ - name: validate - author: Ganesh Nalawade (@ganeshrn) - version_added: "1.0.0" - short_description: Validate data with provided criteria - description: - - Validate I(data) with provided I(criteria) based on the validation I(engine). - options: - data: - type: raw - description: - - Data that will be validated against I(criteria). - - This option represents the value that is passed to the lookup plugin as the first argument. - For example C(lookup(config_data, config_criteria, engine='ansible.utils.jsonschema')), - in this case C(config_data) represents this option. - - For the type of I(data) that represents this value refer to the documentation of individual validate plugins. - required: True - criteria: - type: raw - description: - - The criteria used for validation of value that represents I(data) options. - - This option represents the second argument passed in the lookup plugin - For example C(lookup(config_data, config_criteria, engine='ansible.utils.jsonschema')), - in this case the value of C(config_criteria) represents this option. - - For the type of I(criteria) that represents this value refer to the documentation of individual - validate plugins. - required: True - engine: - type: str - description: - - The name of the validate plugin to use. - - This option can be passed in lookup plugin as a key, value pair. - For example C(lookup(config_data, config_criteria, engine='ansible.utils.jsonschema')), in - this case the value C(ansible.utils.jsonschema) represents the engine to be use for data validation. - If the value is not provided the default value that is C(ansible.utils.jsonschema) will be used. - - The value should be in fully qualified collection name format that is - C(..). - default: ansible.utils.jsonschema - notes: - - For the type of options I(data) and I(criteria) refer to the individual validate plugin - documentation that is represented in the value of I(engine) option. - - For additional plugin configuration options refer to the individual validate plugin - documentation that is represented by the value of I(engine) option. - - The plugin configuration option can be either passed as C(key=value) pairs within lookup plugin - or task or environment variables. - - The precedence the validate plugin configurable option is the variable passed within lookup plugin - as C(key=value) pairs followed by task variables followed by environment variables. -""" - -EXAMPLES = r""" -- name: set facts for data and criteria - ansible.builtin.set_fact: - data: "{{ lookup('ansible.builtin.file', './validate/data/show_interfaces_iosxr.json') }}" - criteria: "{{ lookup('ansible.builtin.file', './validate/criteria/jsonschema/show_interfaces_iosxr.json') }}" - -- name: validate data in json format using jsonschema with lookup plugin by passing plugin configuration variable as key/value pairs - ansible.builtin.set_fact: - data_criteria_checks: "{{ lookup('ansible.utils.validate', data, criteria, engine='ansible.utils.jsonschema', draft='draft7') }}" - -- name: validate data in json format using jsonschema with lookup plugin by passing plugin configuration variable as task variable - ansible.builtin.set_fact: - data_criteria_checks: "{{ lookup('ansible.utils.validate', data, criteria, engine='ansible.utils.jsonschema', draft='draft7') }}" - vars: - ansible_validate_jsonschema_draft: draft3 -""" - -RETURN = """ - _raw: - description: - - If data is valid returns empty list. - - If data is invalid returns list of errors in data. -""" - -from ansible.errors import AnsibleError, AnsibleLookupError -from ansible.module_utils._text import to_text -from ansible.plugins.lookup import LookupBase - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - check_argspec, -) -from ansible_collections.ansible.utils.plugins.module_utils.common.utils import to_list -from ansible_collections.ansible.utils.plugins.plugin_utils.base.validate import _load_validator - - -ARGSPEC_CONDITIONALS = {} - - -class LookupModule(LookupBase): - def run(self, terms, variables, **kwargs): - if len(terms) < 2: - raise AnsibleLookupError( - "missing either 'data' or 'criteria' value in lookup input," - " refer ansible.utils.validate lookup plugin documentation for details", - ) - - params = {"data": terms[0], "criteria": terms[1]} - if kwargs.get("engine"): - params.update({"engine": kwargs["engine"]}) - - schema = [v for k, v in globals().items() if k.lower() == "documentation"] - valid, argspec_result, updated_params = check_argspec( - schema=schema[0], - name="validate lookup", - schema_conditionals=ARGSPEC_CONDITIONALS, - **params, - ) - if not valid: - raise AnsibleLookupError( - "{argspec_result} with errors: {argspec_errors}".format( - argspec_result=argspec_result.get("msg"), - argspec_errors=argspec_result.get("errors"), - ), - ) - - validator_engine, validator_result = _load_validator( - engine=updated_params["engine"], - data=updated_params["data"], - criteria=updated_params["criteria"], - plugin_vars=variables, - kwargs=kwargs, - ) - if validator_result.get("failed"): - raise AnsibleLookupError( - "validate lookup plugin failed with errors: {validator_result}".format( - validator_result=validator_result.get("msg"), - ), - ) - - try: - result = validator_engine.validate() - except AnsibleError as exc: - raise AnsibleLookupError(to_text(exc, errors="surrogate_then_replace")) - except Exception as exc: - raise AnsibleLookupError( - "Unhandled exception from validator '{validator}'. Error: {err}".format( - validator=updated_params["engine"], - err=to_text(exc, errors="surrogate_then_replace"), - ), - ) - - return to_list(result.get("errors", [])) diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/module_utils/common/argspec_validate.py b/ansible/collections/ansible_collections/ansible/utils/plugins/module_utils/common/argspec_validate.py deleted file mode 100644 index 18aad12e..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/module_utils/common/argspec_validate.py +++ /dev/null @@ -1,278 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2020 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -"""Use AnsibleModule's argspec validation - -def _check_argspec(self): - aav = AnsibleArgSpecValidator( - data=self._task.args, - schema=DOCUMENTATION, - schema_format="doc", - schema_conditionals={}, - other_args={}, - name=self._task.action, - ) - valid, errors, updated_data = aav.validate() - if not valid: - raise AnsibleActionFail(errors) - -""" -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import re - -from ansible.module_utils.basic import AnsibleModule -from ansible.module_utils.six import iteritems - -from ansible_collections.ansible.utils.plugins.module_utils.common.utils import dict_merge - - -try: - import yaml - - # use C version if possible for speedup - try: - from yaml import CSafeLoader as SafeLoader - except ImportError: - from yaml import SafeLoader - HAS_YAML = True -except ImportError: - HAS_YAML = False - -# TODO: Update this to point to functionality being exposed in 2.11 -# ansible-base 2.11 should expose argspec validation outside of the -# ansiblemodule class -try: - from ansible.module_utils.common.arg_spec import ArgumentSpecValidator - - HAS_ANSIBLE_ARG_SPEC_VALIDATOR = True -except ImportError: - HAS_ANSIBLE_ARG_SPEC_VALIDATOR = False - - -OPTION_METADATA = ( - "type", - "choices", - "default", - "required", - "aliases", - "elements", - "fallback", - "no_log", - "apply_defaults", - "deprecated_aliases", - "removed_in_version", -) -OPTION_CONDITIONALS = ( - "mutually_exclusive", - "required_one_of", - "required_together", - "required_by", - "required_if", -) - -VALID_ANSIBLEMODULE_ARGS = ( - "argument_spec", - "bypass_checks", - "no_log", - "add_file_common_args", - "supports_check_mode", -) + OPTION_CONDITIONALS - -BASE_ARG_AVAIL = 2.11 - - -class MonkeyModule(AnsibleModule): - """A derivative of the AnsibleModule used - to just validate the data (task.args) against - the schema(argspec) - """ - - def __init__(self, data, schema, name): - self._errors = None - self._valid = True - self._schema = schema - self.name = name - self.params = data - - def fail_json(self, msg): - """Replace the AnsibleModule fail_json here - :param msg: The message for the failure - :type msg: str - """ - if self.name: - msg = re.sub(r"\(basic\.pyc?\)", "'{name}'".format(name=self.name), msg) - self._valid = False - self._errors = msg - - def _load_params(self): - """This replaces the AnsibleModule _load_params - fn because we already set self.params in init - """ - pass - - def validate(self): - """Instantiate the super, validating the schema - against the data - :return valid: if the data passed - :rtype valid: bool - :return errors: errors reported during validation - :rtype errors: str - :return params: The original data updated with defaults - :rtype params: dict - """ - super(MonkeyModule, self).__init__(**self._schema) - return self._valid, self._errors, self.params - - -class AnsibleArgSpecValidator: - def __init__( - self, - data, - schema, - schema_format="doc", - schema_conditionals=None, - name=None, - other_args=None, - ): - """Validate some data against a schema - :param data: The data to validate - :type data: dict - :param schema: A schema in ansible argspec format - :type schema: dict - :param schema_format: 'doc' (ansible docstring) or 'argspec' (ansible argspec) - :type schema: str if doc, dict if argspec - :param schema_conditionals: A dict of schema conditionals, ie required_if - :type schema_conditionals: dict - :param name: the name of the plugin calling this class, used in error messages - :type name: str - :param other_args: Other valid kv pairs for the argspec, eg no_log, bypass_checks - :type other_args: dict - - note: - - the schema conditionals can be root conditionals or deeply nested conditionals - these get dict_merged into the argspec from the docstring, since the docstring cannot - contain them. - """ - self._errors = "" - self._name = name - self._other_args = other_args - self._schema = schema - self._schema_format = schema_format - self._schema_conditionals = schema_conditionals - self._data = data - - def _extract_schema_from_doc(self, doc_obj, temp_schema): - """Extract the schema from a doc string - :param doc_obj: The doc as a python obj - :type doc_obj: dictionary - :params temp_schema: The dict in which we stuff the schema parts - :type temp_schema: dict - """ - options_obj = doc_obj.get("options") - for okey, ovalue in iteritems(options_obj): - temp_schema[okey] = {} - for metakey in list(ovalue): - if metakey == "suboptions": - temp_schema[okey].update({"options": {}}) - suboptions_obj = {"options": ovalue["suboptions"]} - self._extract_schema_from_doc(suboptions_obj, temp_schema[okey]["options"]) - elif metakey in OPTION_METADATA + OPTION_CONDITIONALS: - temp_schema[okey].update({metakey: ovalue[metakey]}) - - # TODO: Support extends_documentation_fragment - def _convert_doc_to_schema(self): - """Convert the doc string to an obj, was yaml - add back other valid conditionals and params - """ - doc_obj = yaml.load(self._schema, SafeLoader) - temp_schema = {} - self._extract_schema_from_doc(doc_obj, temp_schema) - self._schema = {"argument_spec": temp_schema} - - def _validate(self): - """Validate the data gainst the schema - convert doc string in argspec if necessary - - :return valid: if the data passed - :rtype valid: bool - :return errors: errors reported during validation - :rtype errors: str - :return params: The original data updated with defaults - :rtype params: dict - """ - if self._schema_format == "doc": - self._convert_doc_to_schema() - if self._schema_conditionals is not None: - self._schema = dict_merge(self._schema, self._schema_conditionals) - if self._other_args is not None: - self._schema = dict_merge(self._schema, self._other_args) - invalid_keys = [k for k in self._schema.keys() if k not in VALID_ANSIBLEMODULE_ARGS] - if invalid_keys: - valid = False - errors = "Invalid schema. Invalid keys found: {ikeys}".format( - ikeys=",".join(invalid_keys), - ) - updated_data = {} - else: - mm = MonkeyModule(data=self._data, schema=self._schema, name=self._name) - valid, errors, updated_data = mm.validate() - return valid, errors, updated_data - - def validate(self): - """The public validate method - check for future argspec validation - that is coming in 2.11, change the check according above - """ - if HAS_ANSIBLE_ARG_SPEC_VALIDATOR: - if self._schema_format == "doc": - self._convert_doc_to_schema() - if self._schema_conditionals is not None: - self._schema = dict_merge(self._schema, self._schema_conditionals) - invalid_keys = [k for k in self._schema.keys() if k not in VALID_ANSIBLEMODULE_ARGS] - if invalid_keys: - valid = False - errors = [ - "Invalid schema. Invalid keys found: {ikeys}".format( - ikeys=",".join(invalid_keys), - ), - ] - updated_data = {} - return valid, errors, updated_data - else: - validator = ArgumentSpecValidator(**self._schema) - result = validator.validate(self._data) - valid = not bool(result.error_messages) - return ( - valid, - result.error_messages, - result.validated_parameters, - ) - else: - return self._validate() - - -def check_argspec(schema, name, schema_format="doc", schema_conditionals=None, **args): - if schema_conditionals is None: - schema_conditionals = {} - - aav = AnsibleArgSpecValidator( - data=args, - schema=schema, - schema_format=schema_format, - schema_conditionals=schema_conditionals, - name=name, - ) - result = {} - valid, errors, updated_params = aav.validate() - if not valid: - result["errors"] = errors - result["failed"] = True - result["msg"] = "argspec validation failed for {name} plugin".format(name=name) - - return valid, result, updated_params diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/module_utils/common/get_path.py b/ansible/collections/ansible_collections/ansible/utils/plugins/module_utils/common/get_path.py deleted file mode 100644 index 1d82816a..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/module_utils/common/get_path.py +++ /dev/null @@ -1,32 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2020 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - - -""" -flatten a complex object to dot bracket notation -""" -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - - -def get_path(var, path, environment, wantlist): - """Get the value of a path within an object - - :param var: The var from which the value is retrieved - :type var: should be dict or list, but jinja can sort that out - :param path: The path to get - :type path: should be a string but jinja can sort that out - :param environment: The jinja Environment - :type environment: Environment - :return: The result of the jinja evaluation - :rtype: any - """ - string_to_variable = "{{ %s }}" % path - result = environment.from_string(string_to_variable).render(**var) - if wantlist: - return [result] - return result diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/module_utils/common/to_paths.py b/ansible/collections/ansible_collections/ansible/utils/plugins/module_utils/common/to_paths.py deleted file mode 100644 index f8681192..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/module_utils/common/to_paths.py +++ /dev/null @@ -1,57 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2020 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - - -""" -flatten a complex object to dot bracket notation -""" -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import re - -from ansible.module_utils.common._collections_compat import Mapping, MutableMapping - - -def to_paths(var, prepend, wantlist): - if prepend: - var = {prepend: var} - - def flatten(data, name="", out=None): - if out is None: - out = {} - if isinstance(data, (dict, Mapping, MutableMapping)): - if data: - for key, val in data.items(): - if name: - if re.match("^[a-zA-Z_][a-zA-Z0-9_]*$", key): - nname = name + ".{key}".format(key=key) - else: - nname = name + "['{key}']".format(key=key) - else: - nname = key - flatten(val, nname, out) - elif name: - out[name] = {} - else: - out = {} - elif isinstance(data, list): - if data: - for idx, val in enumerate(data): - flatten(val, "{name}[{idx}]".format(name=name, idx=idx), out) - elif name: - out[name] = [] - else: - out = [] - else: - out[name] = data - return out - - out = flatten(var) - if wantlist: - return [out] - return out diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/module_utils/common/utils.py b/ansible/collections/ansible_collections/ansible/utils/plugins/module_utils/common/utils.py deleted file mode 100644 index 4ad63566..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/module_utils/common/utils.py +++ /dev/null @@ -1,111 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2020 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -from copy import deepcopy - -from ansible.module_utils.common._collections_compat import Mapping -from ansible.module_utils.six import iteritems - - -def sort_list(val): - if isinstance(val, list): - if isinstance(val[0], dict): - sorted_keys = [tuple(sorted(dict_.keys())) for dict_ in val] - # All keys should be identical - if len(set(sorted_keys)) != 1: - raise ValueError("dictionaries do not match") - - return sorted(val, key=lambda d: tuple(d[k] for k in sorted_keys[0])) - return sorted(val) - return val - - -def dict_merge(base, other): - """Return a new dict object that combines base and other - - This will create a new dict object that is a combination of the key/value - pairs from base and other. When both keys exist, the value will be - selected from other. - - If the value in base is a list, and the value in other is a list - the base list will be extended with the values from the other list that were - not already present in the base list - - If the value in base is a list, and the value in other is a list - and the two have the same entries, the value from other will be - used, preserving the order from the other list - - If the value in base is a list, and the value in other is not a list - the value from other will be used - - :param base: dict object to serve as base - :param other: dict object to combine with base - - :returns: new combined dict object - """ - if not isinstance(base, dict): - raise AssertionError("`base` must be of type ") - if not isinstance(other, dict): - raise AssertionError("`other` must be of type ") - - combined = dict() - - for key, value in iteritems(deepcopy(base)): - if isinstance(value, dict): - if key in other: - item = other.get(key) - if item is not None: - if isinstance(other[key], Mapping): - combined[key] = dict_merge(value, other[key]) - else: - combined[key] = other[key] - else: - combined[key] = item - else: - combined[key] = value - elif isinstance(value, list): - if key in other: - item = other.get(key) - if isinstance(item, list): - if sort_list(value) == sort_list(item): - combined[key] = item - else: - value.extend([i for i in item if i not in value]) - combined[key] = value - else: - combined[key] = item - else: - combined[key] = value - else: - if key in other: - other_value = other.get(key) - if other_value is not None: - if sort_list(base[key]) != sort_list(other_value): - combined[key] = other_value - else: - combined[key] = value - else: - combined[key] = other_value - else: - combined[key] = value - - for key in set(other.keys()).difference(base.keys()): - combined[key] = other.get(key) - - return combined - - -def to_list(val): - if isinstance(val, (list, tuple, set)): - return list(val) - elif val is not None: - return [val] - else: - return list() diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/modules/cli_parse.py b/ansible/collections/ansible_collections/ansible/utils/plugins/modules/cli_parse.py deleted file mode 100644 index 48737ae4..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/modules/cli_parse.py +++ /dev/null @@ -1,282 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- -# Copyright 2020 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - - -DOCUMENTATION = """ -module: cli_parse -author: Bradley Thornton (@cidrblock) -short_description: Parse cli output or text using a variety of parsers -description: -- Parse cli output or text using a variety of parsers -version_added: 1.0.0 -options: - command: - type: str - description: - - The command to run on the host - text: - type: str - description: - - Text to be parsed - parser: - type: dict - description: - - Parser specific parameters - required: True - suboptions: - name: - type: str - description: - - The name of the parser to use - required: True - command: - type: str - description: - - The command used to locate the parser's template - os: - type: str - description: - - Provide an operating system value to the parser - - For `ntc_templates` parser, this should be in the supported - `_` format. - template_path: - type: str - description: - - Path of the parser template on the Ansible controller - - This can be a relative or an absolute path - vars: - type: dict - description: - - Additional parser specific parameters - - See the cli_parse user guide for examples of parser specific variables - - U(https://docs.ansible.com/ansible/latest/network/user_guide/cli_parsing.html) - set_fact: - description: - - Set the resulting parsed data as a fact - type: str - - -notes: -- The default search path for a parser template is templates/{{ short_os }}_{{ command }}.{{ extension }} -- => short_os derived from ansible_network_os or ansible_distribution and set to lower case -- => command is the command passed to the module with spaces replaced with _ -- => extension is specific to the parser used (native=yaml, textfsm=textfsm, ttp=ttp) -- The default Ansible search path for the templates directory is used for parser templates as well -- Some parsers may have additional configuration options available. See the parsers/vars key and the parser's documentation -- Some parsers require third-party python libraries be installed on the Ansible control node and a specific python version -- example Pyats requires pyats and genie and requires Python 3 -- example ntc_templates requires ntc_templates -- example textfsm requires textfsm -- example ttp requires ttp -- example xml requires xml_to_dict -- Support of 3rd party python libraries is limited to the use of their public APIs as documented -- "Additional information and examples can be found in the parsing user guide:" -- https://docs.ansible.com/ansible/latest/network/user_guide/cli_parsing.html -""" - - -EXAMPLES = r""" - -# Using the native parser - -# ------------- -# templates/nxos_show_interface.yaml -# - example: Ethernet1/1 is up -# getval: '(?P\S+) is (?P\S+)' -# result: -# "{{ name }}": -# name: "{{ name }}" -# state: -# operating: "{{ oper_state }}" -# shared: True -# -# - example: admin state is up, Dedicated Interface -# getval: 'admin state is (?P\S+)' -# result: -# "{{ name }}": -# name: "{{ name }}" -# state: -# admin: "{{ admin_state }}" -# -# - example: " Hardware: Ethernet, address: 0000.5E00.5301 (bia 0000.5E00.5301)" -# getval: '\s+Hardware: (?P.*), address: (?P\S+)' -# result: -# "{{ name }}": -# hardware: "{{ hardware }}" -# mac_address: "{{ mac }}" - -- name: Run command and parse with native - ansible.utils.cli_parse: - command: "show interface" - parser: - name: ansible.netcommon.native - set_fact: interfaces_fact - - -- name: Pass text and template_path - ansible.utils.cli_parse: - text: "{{ previous_command['stdout'] }}" - parser: - name: ansible.netcommon.native - template_path: "{{ role_path }}/templates/nxos_show_interface.yaml" - - -# Using the ntc_templates parser - -# ------------- -# The ntc_templates use 'vendor_platform' for the file name -# it will be derived from ansible_network_os if not provided -# example cisco.ios.ios => cisco_ios - -- name: Run command and parse with ntc_templates - ansible.utils.cli_parse: - command: "show interface" - parser: - name: ansible.netcommon.ntc_templates - register: parser_output - -- name: Pass text and command - ansible.utils.cli_parse: - text: "{{ previous_command['stdout'] }}" - parser: - name: ansible.netcommon.ntc_templates - command: show interface - register: parser_output - - -# Using the pyats parser - -# ------------- -# The pyats parser uses 'os' to locate the appropriate parser -# it will be derived from ansible_network_os if not provided -# in the case of pyats: cisco.ios.ios => iosxe - -- name: Run command and parse with pyats - ansible.utils.cli_parse: - command: "show interface" - parser: - name: ansible.netcommon.pyats - register: parser_output - -- name: Pass text and command - ansible.utils.cli_parse: - text: "{{ previous_command['stdout'] }}" - parser: - name: ansible.netcommon.pyats - command: show interface - register: parser_output - -- name: Provide an OS to pyats to use an ios parser - ansible.utils.cli_parse: - text: "{{ previous_command['stdout'] }}" - parser: - name: ansible.netcommon.pyats - command: show interface - os: ios - register: parser_output - - -# Using the textfsm parser - -# ------------- -# templates/nxos_show_version.textfsm -# -# Value UPTIME ((\d+\s\w+.s.,?\s?){4}) -# Value LAST_REBOOT_REASON (.+) -# Value OS (\d+.\d+(.+)?) -# Value BOOT_IMAGE (.*) -# Value PLATFORM (\w+) -# -# Start -# ^\s+(NXOS: version|system:\s+version)\s+${OS}\s*$$ -# ^\s+(NXOS|kickstart)\s+image\s+file\s+is:\s+${BOOT_IMAGE}\s*$$ -# ^\s+cisco\s+${PLATFORM}\s+[cC]hassis -# ^\s+cisco\s+Nexus\d+\s+${PLATFORM} -# # Cisco N5K platform -# ^\s+cisco\s+Nexus\s+${PLATFORM}\s+[cC]hassis -# ^\s+cisco\s+.+-${PLATFORM}\s* -# ^Kernel\s+uptime\s+is\s+${UPTIME} -# ^\s+Reason:\s${LAST_REBOOT_REASON} -> Record - -- name: Run command and parse with textfsm - ansible.utils.cli_parse: - command: "show version" - parser: - name: ansible.utils.textfsm - register: parser_output - -- name: Pass text and command - ansible.utils.cli_parse: - text: "{{ previous_command['stdout'] }}" - parser: - name: ansible.utils.textfsm - command: show version - register: parser_output - -# Using the ttp parser - -# ------------- -# templates/nxos_show_interface.ttp -# -# {{ interface }} is {{ state }} -# admin state is {{ admin_state }}{{ ignore(".*") }} - -- name: Run command and parse with ttp - ansible.utils.cli_parse: - command: "show interface" - parser: - name: ansible.utils.ttp - set_fact: new_fact_key - -- name: Pass text and template_path - ansible.utils.cli_parse: - text: "{{ previous_command['stdout'] }}" - parser: - name: ansible.utils.ttp - template_path: "{{ role_path }}/templates/nxos_show_interface.ttp" - register: parser_output - -# Using the XML parser - -# ------------- -- name: Run command and parse with xml - ansible.utils.cli_parse: - command: "show interface | xml" - parser: - name: ansible.utils.xml - register: parser_output - -- name: Pass text and parse with xml - ansible.utils.cli_parse: - text: "{{ previous_command['stdout'] }}" - parser: - name: ansible.utils.xml - register: parser_output -""" - -RETURN = r""" -parsed: - description: The structured data resulting from the parsing of the text - returned: always - type: dict - sample: -stdout: - description: The output from the command run - returned: when provided a command - type: str - sample: -stdout_lines: - description: The output of the command run split into lines - returned: when provided a command - type: list - elements: str - sample: -""" diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/modules/fact_diff.py b/ansible/collections/ansible_collections/ansible/utils/plugins/modules/fact_diff.py deleted file mode 100644 index 1702b561..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/modules/fact_diff.py +++ /dev/null @@ -1,207 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2020 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - - -DOCUMENTATION = r""" ---- -module: fact_diff -short_description: Find the difference between currently set facts -version_added: "1.0.0" -description: - - Compare two facts or variables and get a diff. -options: - before: - description: - - The first fact to be used in the comparison. - type: raw - required: True - after: - description: - - The second fact to be used in the comparison. - type: raw - required: True - plugin: - description: - - Configure and specify the diff plugin to use - type: dict - default: {} - suboptions: - name: - description: - - The diff plugin to use, in fully qualified collection name format. - default: ansible.utils.native - type: str - vars: - description: - - Parameters passed to the diff plugin. - type: dict - default: {} - suboptions: - skip_lines: - description: - - Skip lines matching these regular expressions. - - Matches will be removed prior to the diff. - - If the provided I(before) and I(after) are a string, they will be split. - - Each entry in each list will be cast to a string for the comparison - type: list - elements: str - -notes: - -author: -- Bradley Thornton (@cidrblock) -""" - -EXAMPLES = r""" -- ansible.builtin.set_fact: - before: - a: - b: - c: - d: - - 0 - - 1 - after: - a: - b: - c: - d: - - 2 - - 3 - -- name: Show the difference in json format - ansible.utils.fact_diff: - before: "{{ before }}" - after: "{{ after }}" - -# TASK [ansible.utils.fact_diff] ************************************** -# --- before -# +++ after -# @@ -3,8 +3,8 @@ -# "b": { -# "c": { -# "d": [ -# - 0, -# - 1 -# + 2, -# + 3 -# ] -# } -# } -# -# changed: [localhost] - -- name: Show the difference in path format - ansible.utils.fact_diff: - before: "{{ before | ansible.utils.to_paths }}" - after: "{{ after | ansible.utils.to_paths }}" - -# TASK [ansible.utils.fact_diff] ************************************** -# --- before -# +++ after -# @@ -1,4 +1,4 @@ -# { -# - "a.b.c.d[0]": 0, -# - "a.b.c.d[1]": 1 -# + "a.b.c.d[0]": 2, -# + "a.b.c.d[1]": 3 -# } -# -# changed: [localhost] - -- name: Show the difference in yaml format - ansible.utils.fact_diff: - before: "{{ before | to_nice_yaml }}" - after: "{{ after | to_nice_yaml }}" - -# TASK [ansible.utils.fact_diff] ************************************** -# --- before -# +++ after -# @@ -2,5 +2,5 @@ -# b: -# c: -# d: -# - - 0 -# - - 1 -# + - 2 -# + - 3 - -# changed: [localhost] - - -#### Show the difference between complex object using restconf -# ansible_connection: ansible.netcommon.httpapi -# ansible_httpapi_use_ssl: True -# ansible_httpapi_validate_certs: False -# ansible_network_os: ansible.netcommon.restconf - -- name: Get the current interface config prior to changes - ansible.netcommon.restconf_get: - content: config - path: /data/Cisco-NX-OS-device:System/intf-items/phys-items - register: pre - -- name: Update the description of eth1/100 - ansible.utils.update_fact: - updates: - - path: "pre['response']['phys-items']['PhysIf-list'][{{ index }}]['descr']" - value: "Configured by ansible {{ 100 | random }}" - vars: - index: "{{ pre['response']['phys-items']['PhysIf-list'] | ansible.utils.index_of('eq', 'eth1/100', 'id') }}" - register: updated - -- name: Apply the configuration - ansible.netcommon.restconf_config: - path: 'data/Cisco-NX-OS-device:System/intf-items/' - content: "{{ updated.pre.response}}" - method: patch - -- name: Get the current interface config after changes - ansible.netcommon.restconf_get: - content: config - path: /data/Cisco-NX-OS-device:System/intf-items/phys-items - register: post - -- name: Show the difference - ansible.utils.fact_diff: - before: "{{ pre.response | ansible.utils.to_paths }}" - after: "{{ post.response | ansible.utils.to_paths }}" - -# TASK [ansible.utils.fact_diff] ********************************************* -# --- before -# +++ after -# @@ -3604,7 +3604,7 @@ -# "phys-items['PhysIf-list'][37].bw": "0", -# "phys-items['PhysIf-list'][37].controllerId": "", -# "phys-items['PhysIf-list'][37].delay": "1", -# - "phys-items['PhysIf-list'][37].descr": "Configured by ansible 95", -# + "phys-items['PhysIf-list'][37].descr": "Configured by ansible 20", -# "phys-items['PhysIf-list'][37].dot1qEtherType": "0x8100", -# "phys-items['PhysIf-list'][37].duplex": "auto", -# "phys-items['PhysIf-list'][37].id": "eth1/100", - -# changed: [nxos101] -""" - - -RETURN = """ - -diff_text: - description: The diff in text format. - returned: always - type: str -diff_lines: - description: The I(diff_text) split into lines. - returned: always - type: list - elements: str - -""" diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/modules/update_fact.py b/ansible/collections/ansible_collections/ansible/utils/plugins/modules/update_fact.py deleted file mode 100644 index 687662e5..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/modules/update_fact.py +++ /dev/null @@ -1,343 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2020 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - - -DOCUMENTATION = r""" ---- -module: update_fact -short_description: Update currently set facts -version_added: "1.0.0" -description: - - This module allows updating existing variables. - - Variables are updated on a host-by-host basis. - - Variables are not modified in place, instead they are returned by the module. -options: - updates: - description: - - A list of dictionaries, each a desired update to make. - type: list - elements: dict - required: True - suboptions: - path: - description: - - The path in a currently set variable to update. - - The path can be in dot or bracket notation. - - It should be a valid jinja reference. - type: str - required: True - value: - description: - - The value to be set at the path. - - Can be a simple or complex data structure. - type: raw - required: True - - -notes: - -author: -- Bradley Thornton (@cidrblock) -""" - -EXAMPLES = r""" - -# Update an existing fact, dot or bracket notation -- name: Set a fact - ansible.builtin.set_fact: - a: - b: - c: - - 1 - - 2 - -- name: Update the fact - ansible.utils.update_fact: - updates: - - path: a.b.c.0 - value: 10 - - path: "a['b']['c'][1]" - value: 20 - register: updated - -- debug: - var: updated.a - -# updated: -# a: -# b: -# c: -# - 10 -# - 20 -# changed: true - - -# Lists can be appended, new keys added to dictionaries - -- name: Set a fact - ansible.builtin.set_fact: - a: - b: - b1: - - 1 - - 2 - -- name: Update, add to list, add new key - ansible.utils.update_fact: - updates: - - path: a.b.b1.2 - value: 3 - - path: a.b.b2 - value: - - 10 - - 20 - - 30 - register: updated - -- debug: - var: updated.a - -# updated: -# a: -# b: -# b1: -# - 1 -# - 2 -# - 3 -# b2: -# - 10 -# - 20 -# - 30 -# changed: true - -##################################################################### -# Update every item in a list of dictionaries -# build the update list ahead of time using a loop -# and then apply the changes to the fact -##################################################################### - -- name: Set fact - ansible.builtin.set_fact: - addresses: - - raw: 10.1.1.0/255.255.255.0 - name: servers - - raw: 192.168.1.0/255.255.255.0 - name: printers - - raw: 8.8.8.8 - name: dns - -- name: Build a list of updates - ansible.builtin.set_fact: - update_list: "{{ update_list + update }}" - loop: "{{ addresses }}" - loop_control: - index_var: idx - vars: - update_list: [] - update: - - path: addresses[{{ idx }}].network - value: "{{ item['raw'] | ansible.netcommon.ipaddr('network') }}" - - path: addresses[{{ idx }}].prefix - value: "{{ item['raw'] | ansible.netcommon.ipaddr('prefix') }}" - -- debug: - var: update_list - -# TASK [debug] ******************* -# ok: [localhost] => -# update_list: -# - path: addresses[0].network -# value: 10.1.1.0 -# - path: addresses[0].prefix -# value: '24' -# - path: addresses[1].network -# value: 192.168.1.0 -# - path: addresses[1].prefix -# value: '24' -# - path: addresses[2].network -# value: 8.8.8.8 -# - path: addresses[2].prefix -# value: '32' - -- name: Make the updates - ansible.utils.update_fact: - updates: "{{ update_list }}" - register: updated - -- debug: - var: updated - -# TASK [debug] *********************** -# ok: [localhost] => -# updated: -# addresses: -# - name: servers -# network: 10.1.1.0 -# prefix: '24' -# raw: 10.1.1.0/255.255.255.0 -# - name: printers -# network: 192.168.1.0 -# prefix: '24' -# raw: 192.168.1.0/255.255.255.0 -# - name: dns -# network: 8.8.8.8 -# prefix: '32' -# raw: 8.8.8.8 -# changed: true -# failed: false - - -##################################################################### -# Retrieve, update, and apply interface description change -# use index_of to locate Etherent1/1 -##################################################################### - -- name: Get the current interface config - cisco.nxos.nxos_interfaces: - state: gathered - register: interfaces - -- name: Update the description of Ethernet1/1 - ansible.utils.update_fact: - updates: - - path: "interfaces.gathered[{{ index }}].description" - value: "Configured by ansible" - vars: - index: "{{ interfaces.gathered|ansible.utils.index_of('eq', 'Ethernet1/1', 'name') }}" - register: updated - -- name: Update the configuration - cisco.nxos.nxos_interfaces: - config: "{{ updated.interfaces.gathered }}" - state: overridden - register: result - -- name: Show the commands issued - debug: - msg: "{{ result['commands'] }}" - -# TASK [Show the commands issued] ************************************* -# ok: [nxos101] => { -# "msg": [ -# "interface Ethernet1/1", -# "description Configured by ansible" -# ] -# } - - -##################################################################### -# Retrieve, update, and apply an ipv4 ACL change -# finding the index of AFI ipv4 acls -# finding the index of the ACL named 'test1' -# finding the index of sequence 10 -##################################################################### - -- name: Retrieve the current acls - arista.eos.eos_acls: - state: gathered - register: current - -- name: Update the source of sequence 10 in the IPv4 ACL named test1 - ansible.utils.update_fact: - updates: - - path: current.gathered[{{ afi }}].acls[{{ acl }}].aces[{{ ace }}].source - value: - subnet_address: "192.168.2.0/24" - vars: - afi: "{{ current.gathered|ansible.utils.index_of('eq', 'ipv4', 'afi') }}" - acl: "{{ current.gathered[afi|int].acls|ansible.utils.index_of('eq', 'test1', 'name') }}" - ace: "{{ current.gathered[afi|int].acls[acl|int].aces|ansible.utils.index_of('eq', 10, 'sequence') }}" - register: updated - -- name: Apply the changes - arista.eos.eos_acls: - config: "{{ updated.current.gathered }}" - state: overridden - register: changes - -- name: Show the commands issued - debug: - msg: "{{ changes['commands'] }}" - -# TASK [Show the commands issued] ************************************* -# ok: [eos101] => { -# "msg": [ -# "ip access-list test1", -# "no 10", -# "10 permit ip 192.168.2.0/24 host 10.1.1.2" -# ] -# } - - -##################################################################### -# Disable ip redirects on any layer3 interface -# find the layer 3 interfaces -# use each name to find their index in l3 interface -# build an 'update' list and apply the updates -##################################################################### - -- name: Get the current interface and L3 interface configuration - cisco.nxos.nxos_facts: - gather_subset: min - gather_network_resources: - - interfaces - - l3_interfaces - -- name: Build the list of updates to make - ansible.builtin.set_fact: - updates: "{{ updates + [entry] }}" - vars: - updates: [] - entry: - path: "ansible_network_resources.l3_interfaces[{{ item }}].redirects" - value: false - w_mode: "{{ ansible_network_resources.interfaces|selectattr('mode', 'defined') }}" - m_l3: "{{ w_mode|selectattr('mode', 'eq', 'layer3') }}" - names: "{{ m_l3|map(attribute='name')|list }}" - l3_indicies: "{{ ansible_network_resources.l3_interfaces|ansible.utils.index_of('in', names, 'name', wantlist=True) }}" - loop: "{{ l3_indicies }}" - -# TASK [Build the list of updates to make] **************************** -# ok: [nxos101] => (item=99) => changed=false -# ansible_facts: -# updates: -# - path: ansible_network_resources.l3_interfaces[99].redirects -# value: false -# ansible_loop_var: item -# item: 99 - -- name: Update the l3 interfaces - ansible.utils.update_fact: - updates: "{{ updates }}" - register: updated - -# TASK [Update the l3 interfaces] ************************************* -# changed: [nxos101] => changed=true -# ansible_network_resources: -# l3_interfaces: -# <...> -# - ipv4: -# - address: 10.1.1.1/24 -# name: Ethernet1/100 -# redirects: false - -- name: Apply the configuration changes - cisco.nxos.l3_interfaces: - config: "{{ updated.ansible_network_resources.l3_interfaces }}" - state: overridden - register: changes - -# TASK [Apply the configuration changes] ****************************** -# changed: [nxos101] => changed=true -# commands: -# - interface Ethernet1/100 -# - no ip redirects -""" diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/modules/validate.py b/ansible/collections/ansible_collections/ansible/utils/plugins/modules/validate.py deleted file mode 100644 index 4d0e085c..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/modules/validate.py +++ /dev/null @@ -1,87 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- -# Copyright 2020 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - - -DOCUMENTATION = """ -module: validate -author: -- Bradley Thornton (@cidrblock) -- Ganesh Nalawade (@ganeshrn) -short_description: Validate data with provided criteria -description: -- Validate data with provided criteria based on the validation engine. -version_added: 1.0.0 -options: - data: - type: raw - description: - - Data that will be validated against I(criteria). For the type of data refer to the - documentation of individual validate plugins. - required: True - engine: - type: str - description: - - The name of the validate plugin to use. The engine value should follow - the fully qualified collection name format, that is - ... - default: ansible.utils.jsonschema - criteria: - type: raw - description: - - The criteria used for validation of I(data). For the type of criteria refer to the - documentation of individual validate plugins. - required: True -notes: -- For the type of options I(data) and I(criteria) refer to the individual validate plugin - documentation that is represented in the value of I(engine) option. -- For additional plugin configuration options refer to the individual validate plugin - documentation that is represented by the value of I(engine) option. -- The plugin configuration option can be either passed as task or environment variables. -- The precedence of the validate plugin configurable option is task variables followed - by the environment variables. -""" - -EXAMPLES = r""" -- name: set facts for data and criteria - ansible.builtin.set_fact: - data: "{{ lookup('ansible.builtin.file', './validate/data/show_interfaces_iosxr.json') }}" - criteria: "{{ lookup('ansible.builtin.file', './validate/criteria/jsonschema/show_interfaces_iosxr.json') }}" - -- name: validate data in with jsonschema engine (by passing task vars as configurable plugin options) - ansible.utils.validate: - data: "{{ data }}" - criteria: "{{ criteria }}" - engine: ansible.utils.jsonschema - vars: - ansible_jsonschema_draft: draft7 - -- name: validate configuration with config plugin (see config plugin for criteria examples) - ansible.utils.validate: - data: "{{ lookup('ansible.builtin.file', './backup/eos.config') }}" - criteria: "{{ lookup('ansible.builtin.file', './validate/criteria/config/eos_config_rules.yaml') }}" - engine: ansible.utils.config -""" - -RETURN = r""" -msg: - description: - - The msg indicates if the I(data) is valid as per the I(criteria). - - In case data is valid return success message B(all checks passed). - - In case data is invalid return error message B(Validation errors were found) - along with more information on error is available. - returned: always - type: str -errors: - description: The list of errors in I(data) based on the I(criteria). - returned: when I(data) value is invalid - type: list - elements: str -""" diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/base/cli_parser.py b/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/base/cli_parser.py deleted file mode 100644 index 3433e64e..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/base/cli_parser.py +++ /dev/null @@ -1,18 +0,0 @@ -""" -The base class for cli_parsers -""" -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - - -class CliParserBase: - """The base class for cli parsers - Provides a _debug function to normalize parser debug output - """ - - def __init__(self, task_args, task_vars, debug): - self._debug = debug - self._task_args = task_args - self._task_vars = task_vars diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/base/fact_diff.py b/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/base/fact_diff.py deleted file mode 100644 index 64845681..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/base/fact_diff.py +++ /dev/null @@ -1,16 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2020 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - - -class FactDiffBase: - def __init__(self, task_args, task_vars, debug): - self._debug = debug - self._task_args = task_args - self._task_vars = task_vars diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/base/ipaddr_utils.py b/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/base/ipaddr_utils.py deleted file mode 100644 index 0d75199f..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/base/ipaddr_utils.py +++ /dev/null @@ -1,717 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -The utils file for all ipaddr filters -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - - -import types - -from ansible.errors import AnsibleFilterError -from ansible.module_utils.basic import missing_required_lib -from ansible.utils.display import Display - - -try: - import netaddr -except ImportError: - # in this case, we'll make the filters return error messages (see bottom) - netaddr = None -else: - - class mac_linux(netaddr.mac_unix): - pass - - mac_linux.word_fmt = "%.2x" - -display = Display() - - -# ---- IP address and network query helpers ---- -def _empty_ipaddr_query(v, vtype): - # We don't have any query to process, so just check what type the user - # expects, and return the IP address in a correct format - if v: - if vtype == "address": - return str(v.ip) - elif vtype == "network": - return str(v) - - -def _first_last(v): - if v.size == 2: - first_usable = int(netaddr.IPAddress(v.first)) - last_usable = int(netaddr.IPAddress(v.last)) - return first_usable, last_usable - elif v.size > 1: - first_usable = int(netaddr.IPAddress(v.first + 1)) - last_usable = int(netaddr.IPAddress(v.last - 1)) - return first_usable, last_usable - - -def _6to4_query(v, vtype, value): - if v.version == 4: - if v.size == 1: - ipconv = str(v.ip) - elif v.size > 1: - if v.ip != v.network: - ipconv = str(v.ip) - else: - return False - - if ipaddr(ipconv, "public") or ipaddr(ipconv, "private"): - numbers = list(map(int, ipconv.split("."))) - - try: - return "2002:{:02x}{:02x}:{:02x}{:02x}::1/48".format(*numbers) - except Exception: - pass - - elif v.version == 6: - if vtype == "address": - if ipaddr(str(v), "2002::/16"): - return value - elif vtype == "network": - if v.ip != v.network: - if ipaddr(str(v.ip), "2002::/16"): - return value - - return False - - -def _ip_query(v): - if v.size == 1: - return str(v.ip) - if v.size > 1: - # /31 networks in netaddr have no broadcast address - if v.ip != v.network or not v.broadcast: - return str(v.ip) - # For the first IPv6 address in a network, netaddr will return it as a network address, despite it being a valid host address. - elif v.version == 6 and v.ip == v.network: - return str(v.ip) - - -def _address_prefix_query(v): - if v.size > 2 and v.ip in (v.network, v.broadcast): - return False - return str(v.ip) + "/" + str(v.prefixlen) - - -def _bool_ipaddr_query(v): - if v: - return True - - -def _broadcast_query(v): - if v.size > 2: - return str(v.broadcast) - - -def _cidr_query(v): - return str(v) - - -def _cidr_lookup_query(v, iplist, value): - try: - if v in iplist: - return value - except Exception: - return False - - -def _first_usable_query(v, vtype): - if vtype == "address": - # Does it make sense to raise an error - raise AnsibleFilterError("Not a network address") - elif vtype == "network": - if v.size == 2: - return str(netaddr.IPAddress(int(v.network))) - elif v.size > 1: - return str(netaddr.IPAddress(int(v.network) + 1)) - - -def _host_query(v): - if v.size == 1: - return str(v) - elif v.size > 1: - if v.ip != v.network or not v.broadcast: - return str(v.ip) + "/" + str(v.prefixlen) - - -def _hostmask_query(v): - return str(v.hostmask) - - -def _int_query(v, vtype): - if vtype == "address": - return int(v.ip) - elif vtype == "network": - return str(int(v.ip)) + "/" + str(int(v.prefixlen)) - - -def _ip_prefix_query(v): - if v.size == 2: - return str(v.ip) + "/" + str(v.prefixlen) - elif v.size > 1: - if v.ip != v.network: - return str(v.ip) + "/" + str(v.prefixlen) - - -def _ip_netmask_query(v): - if v.size == 2: - return str(v.ip) + " " + str(v.netmask) - elif v.size > 1: - if v.ip != v.network: - return str(v.ip) + " " + str(v.netmask) - - -def _ipv4_query(v, value): - if v.version == 6: - try: - return str(v.ipv4()) - except Exception: - return False - else: - return value - - -def _ipv6_query(v, value): - if v.version == 4: - return str(v.ipv6()) - else: - return value - - -def _last_usable_query(v, vtype): - if vtype == "address": - # Does it make sense to raise an error - raise AnsibleFilterError("Not a network address") - elif vtype == "network": - if v.size > 1: - first_usable, last_usable = _first_last(v) - return str(netaddr.IPAddress(last_usable)) - - -def _link_local_query(v, value): - v_ip = netaddr.IPAddress(str(v.ip)) - if v.version == 4: - if ipaddr(str(v_ip), "169.254.0.0/16"): - return value - - elif v.version == 6: - if ipaddr(str(v_ip), "fe80::/10"): - return value - - -def _loopback_query(v, value): - v_ip = netaddr.IPAddress(str(v.ip)) - if v_ip.is_loopback(): - return value - - -def _multicast_query(v, value): - if v.is_multicast(): - return value - - -def _net_query(v): - if v.size > 1: - if v.ip == v.network: - return str(v.network) + "/" + str(v.prefixlen) - - -def _netmask_query(v): - return str(v.netmask) - - -def _network_query(v): - """Return the network of a given IP or subnet""" - return str(v.network) - - -def _network_netmask_query(v): - return str(v.network) + " " + str(v.netmask) - - -def _network_wildcard_query(v): - return str(v.network) + " " + str(v.hostmask) - - -def _next_usable_query(v, vtype): - if vtype == "address": - # Does it make sense to raise an error - raise AnsibleFilterError("Not a network address") - elif vtype == "network": - if v.size > 1: - first_usable, last_usable = _first_last(v) - next_ip = int(netaddr.IPAddress(int(v.ip) + 1)) - if next_ip >= first_usable and next_ip <= last_usable: - return str(netaddr.IPAddress(int(v.ip) + 1)) - - -def _peer_query(v, vtype): - if vtype == "address": - raise AnsibleFilterError("Not a network address") - elif vtype == "network": - if v.size == 2: - return str(netaddr.IPAddress(int(v.ip) ^ 1)) - if v.size == 4: - if int(v.ip) % 4 == 0: - raise AnsibleFilterError("Network address of /30 has no peer") - if int(v.ip) % 4 == 3: - raise AnsibleFilterError("Broadcast address of /30 has no peer") - return str(netaddr.IPAddress(int(v.ip) ^ 3)) - raise AnsibleFilterError("Not a point-to-point network") - - -def _prefix_query(v): - return int(v.prefixlen) - - -def _previous_usable_query(v, vtype): - if vtype == "address": - # Does it make sense to raise an error - raise AnsibleFilterError("Not a network address") - elif vtype == "network": - if v.size > 1: - first_usable, last_usable = _first_last(v) - previous_ip = int(netaddr.IPAddress(int(v.ip) - 1)) - if previous_ip >= first_usable and previous_ip <= last_usable: - return str(netaddr.IPAddress(int(v.ip) - 1)) - - -def _private_query(v, value): - if v.is_private(): - return value - - -def _public_query(v, value): - v_ip = netaddr.IPAddress(str(v.ip)) - if all( - [ - v_ip.is_unicast(), - not v_ip.is_private(), - not v_ip.is_loopback(), - not v_ip.is_netmask(), - not v_ip.is_hostmask(), - ], - ): - return value - - -def _range_usable_query(v, vtype): - if vtype == "address": - # Does it make sense to raise an error - raise AnsibleFilterError("Not a network address") - elif vtype == "network": - if v.size > 1: - first_usable, last_usable = _first_last(v) - first_usable = str(netaddr.IPAddress(first_usable)) - last_usable = str(netaddr.IPAddress(last_usable)) - return "{0}-{1}".format(first_usable, last_usable) - - -def _revdns_query(v): - v_ip = netaddr.IPAddress(str(v.ip)) - return v_ip.reverse_dns - - -def _size_query(v): - return v.size - - -def _size_usable_query(v): - if v.size == 1: - return 0 - elif v.size == 2: - return 2 - return v.size - 2 - - -def _subnet_query(v): - return str(v.cidr) - - -def _type_query(v): - if v.size == 1: - return "address" - if v.size > 1: - if v.ip != v.network: - return "address" - else: - return "network" - - -def _unicast_query(v, value): - if v.is_unicast(): - return value - - -def _version_query(v): - return v.version - - -def _wrap_query(v, vtype, value): - if v.version == 6: - if vtype == "address": - return "[" + str(v.ip) + "]" - elif vtype == "network": - return "[" + str(v.ip) + "]/" + str(v.prefixlen) - else: - return value - - -def ipaddr(value, query="", version=False, alias="ipaddr"): - """Check if string is an IP address or network and filter it""" - - query_func_extra_args = { - "": ("vtype",), - "6to4": ("vtype", "value"), - "cidr_lookup": ("iplist", "value"), - "first_usable": ("vtype",), - "int": ("vtype",), - "ipv4": ("value",), - "ipv6": ("value",), - "last_usable": ("vtype",), - "link-local": ("value",), - "loopback": ("value",), - "lo": ("value",), - "multicast": ("value",), - "next_usable": ("vtype",), - "peer": ("vtype",), - "previous_usable": ("vtype",), - "private": ("value",), - "public": ("value",), - "unicast": ("value",), - "range_usable": ("vtype",), - "wrap": ("vtype", "value"), - } - - query_func_map = { - "": _empty_ipaddr_query, - "6to4": _6to4_query, - "address": _ip_query, - "address/prefix": _address_prefix_query, # deprecate - "bool": _bool_ipaddr_query, - "broadcast": _broadcast_query, - "cidr": _cidr_query, - "cidr_lookup": _cidr_lookup_query, - "first_usable": _first_usable_query, - "gateway": _address_prefix_query, # deprecate - "gw": _address_prefix_query, # deprecate - "host": _host_query, - "host/prefix": _address_prefix_query, # deprecate - "hostmask": _hostmask_query, - "hostnet": _address_prefix_query, # deprecate - "int": _int_query, - "ip": _ip_query, - "ip/prefix": _ip_prefix_query, - "ip_netmask": _ip_netmask_query, - # 'ip_wildcard': _ip_wildcard_query, built then could not think of use case - "ipv4": _ipv4_query, - "ipv6": _ipv6_query, - "last_usable": _last_usable_query, - "link-local": _link_local_query, - "lo": _loopback_query, - "loopback": _loopback_query, - "multicast": _multicast_query, - "net": _net_query, - "next_usable": _next_usable_query, - "netmask": _netmask_query, - "network": _network_query, - "network_id": _network_query, - "network/prefix": _subnet_query, - "network_netmask": _network_netmask_query, - "network_wildcard": _network_wildcard_query, - "peer": _peer_query, - "prefix": _prefix_query, - "previous_usable": _previous_usable_query, - "private": _private_query, - "public": _public_query, - "range_usable": _range_usable_query, - "revdns": _revdns_query, - "router": _address_prefix_query, # deprecate - "size": _size_query, - "size_usable": _size_usable_query, - "subnet": _subnet_query, - "type": _type_query, - "unicast": _unicast_query, - "v4": _ipv4_query, - "v6": _ipv6_query, - "version": _version_query, - "wildcard": _hostmask_query, - "wrap": _wrap_query, - } - - vtype = None - - # Check if value is a list and parse each element - if isinstance(value, (list, tuple, types.GeneratorType)): - _ret = [ipaddr(element, str(query), version) for element in value] - return [item for item in _ret if item] - - elif not value or value is True: - # TODO: Remove this check in a major version release of collection with porting guide - # TODO: and raise exception commented out below - display.warning( - "The value '%s' is not a valid IP address or network, passing this value to ipaddr filter" - " might result in breaking change in future." % value, - ) - return False - - # Check if value is a number and convert it to an IP address - elif str(value).isdigit(): - # We don't know what IP version to assume, so let's check IPv4 first, - # then IPv6 - try: - if (not version) or (version and version == 4): - v = netaddr.IPNetwork("0.0.0.0/0") - v.value = int(value) - v.prefixlen = 32 - elif version and version == 6: - v = netaddr.IPNetwork("::/0") - v.value = int(value) - v.prefixlen = 128 - - # IPv4 didn't work the first time, so it definitely has to be IPv6 - except Exception: - try: - v = netaddr.IPNetwork("::/0") - v.value = int(value) - v.prefixlen = 128 - - # The value is too big for IPv6. Are you a nanobot? - except Exception: - return False - - # We got an IP address, let's mark it as such - value = str(v) - vtype = "address" - - # value has not been recognized, check if it's a valid IP string - else: - try: - v = netaddr.IPNetwork(value) - - # value is a valid IP string, check if user specified - # CIDR prefix or just an IP address, this will indicate default - # output format - try: - address, prefix = value.split("/") - vtype = "network" - except Exception: - vtype = "address" - - # value hasn't been recognized, maybe it's a numerical CIDR? - except Exception: - try: - address, prefix = value.split("/") - address.isdigit() - address = int(address) - prefix.isdigit() - prefix = int(prefix) - - # It's not numerical CIDR, give up - except Exception: - return False - - # It is something, so let's try and build a CIDR from the parts - try: - v = netaddr.IPNetwork("0.0.0.0/0") - v.value = address - v.prefixlen = prefix - - # It's not a valid IPv4 CIDR - except Exception: - try: - v = netaddr.IPNetwork("::/0") - v.value = address - v.prefixlen = prefix - - # It's not a valid IPv6 CIDR. Give up. - except Exception: - return False - - # We have a valid CIDR, so let's write it in correct format - value = str(v) - vtype = "network" - - # We have a query string but it's not in the known query types. Check if - # that string is a valid subnet, if so, we can check later if given IP - # address/network is inside that specific subnet - try: - # ?? 6to4 and link-local were True here before. Should they still? - if ( - query - and (query not in query_func_map or query == "cidr_lookup") - and not str(query).isdigit() - and ipaddr(query, "network") - ): - iplist = netaddr.IPSet([netaddr.IPNetwork(query)]) - query = "cidr_lookup" - except Exception: - pass - - # This code checks if value maches the IP version the user wants, ie. if - # it's any version ("ipaddr()"), IPv4 ("ipv4()") or IPv6 ("ipv6()") - # If version does not match, return False - if version and v.version != version: - return False - - extras = [] - for arg in query_func_extra_args.get(query, tuple()): - extras.append(locals()[arg]) - try: - return query_func_map[query](v, *extras) - except KeyError: - try: - float(query) - if v.size == 1: - if vtype == "address": - return str(v.ip) - elif vtype == "network": - return str(v) - - elif v.size > 1: - try: - return str(v[query]) + "/" + str(v.prefixlen) - except Exception: - return False - - else: - return value - - except Exception: - raise AnsibleFilterError(alias + ": unknown filter type: %s" % query) - - return False - - -def _need_netaddr(f_name, *args, **kwargs): - """ - verify python's netaddr for these filters to work - """ - raise AnsibleFilterError(missing_required_lib("netaddr")) - - -def _address_normalizer(value): - """ - Used to validate an address or network type and return it in a consistent format. - This is being used for future use cases not currently available such as an address range. - :param value: The string representation of an address or network. - :return: The address or network in the normalized form. - """ - try: - vtype = ipaddr(value, "type") - if vtype == "address" or vtype == "network": - v = ipaddr(value, "subnet") - else: - return False - except Exception: - return False - - return v - - -def _range_checker(ip_check, first, last): - """ - Tests whether an ip address is within the bounds of the first and last address. - :param ip_check: The ip to test if it is within first and last. - :param first: The first IP in the range to test against. - :param last: The last IP in the range to test against. - :return: bool - """ - if first <= ip_check <= last: - return True - else: - return False - - -# ---- HWaddr query helpers ---- -def _bare_query(v): - v.dialect = netaddr.mac_bare - return str(v) - - -def _bool_hwaddr_query(v): - if v: - return True - - -def _int_hwaddr_query(v): - return int(v) - - -def _cisco_query(v): - v.dialect = netaddr.mac_cisco - return str(v) - - -def _empty_hwaddr_query(v, value): - if v: - return value - - -def _linux_query(v): - v.dialect = mac_linux - return str(v) - - -def _postgresql_query(v): - v.dialect = netaddr.mac_pgsql - return str(v) - - -def _unix_query(v): - v.dialect = netaddr.mac_unix - return str(v) - - -def _win_query(v): - v.dialect = netaddr.mac_eui48 - return str(v) - - -# ---- HWaddr / MAC address filters ---- -def hwaddr(value, query="", alias="hwaddr"): - """Check if string is a HW/MAC address and filter it""" - - query_func_extra_args = {"": ("value",)} - - query_func_map = { - "": _empty_hwaddr_query, - "bare": _bare_query, - "bool": _bool_hwaddr_query, - "int": _int_hwaddr_query, - "cisco": _cisco_query, - "eui48": _win_query, - "linux": _linux_query, - "pgsql": _postgresql_query, - "postgresql": _postgresql_query, - "psql": _postgresql_query, - "unix": _unix_query, - "win": _win_query, - } - - try: - v = netaddr.EUI(value) - except Exception: - v = None - if query and query != "bool": - raise AnsibleFilterError(alias + ": not a hardware address: %s" % value) - - extras = [] - for arg in query_func_extra_args.get(query, tuple()): - extras.append(locals()[arg]) - try: - return query_func_map[query](v, *extras) - except KeyError: - raise AnsibleFilterError(alias + ": unknown filter type: %s" % query) diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/base/ipaddress_utils.py b/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/base/ipaddress_utils.py deleted file mode 100644 index 3693adc6..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/base/ipaddress_utils.py +++ /dev/null @@ -1,90 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -The utils file for all netaddr tests -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -from functools import wraps - -from ansible import errors -from ansible.errors import AnsibleError -from ansible.module_utils.basic import missing_required_lib -from ansible.module_utils.six import ensure_text - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - check_argspec, -) - - -try: - import ipaddress - - HAS_IPADDRESS = True -except ImportError: - HAS_IPADDRESS = False - - -def ip_network(ip): - """PY2 compat shim, PY2 requires unicode""" - - if not HAS_IPADDRESS: - raise AnsibleError(missing_required_lib("ipaddress")) - - return ipaddress.ip_network(ensure_text(ip)) - - -def ip_address(ip): - """PY2 compat shim, PY2 requires unicode""" - - if not HAS_IPADDRESS: - raise AnsibleError(missing_required_lib("ipaddress")) - - return ipaddress.ip_address(ensure_text(ip)) - - -def _need_ipaddress(func): - @wraps(func) - def wrapper(*args, **kwargs): - if not HAS_IPADDRESS: - raise AnsibleError(missing_required_lib("ipaddress")) - return func(*args, **kwargs) - - return wrapper - - -def _is_subnet_of(network_a, network_b): - try: - if network_a._version != network_b._version: - return False - return ( - network_b.network_address <= network_a.network_address - and network_b.broadcast_address >= network_a.broadcast_address - ) - except Exception: - return False - - -def _validate_args(plugin, doc, params): - """argspec validator utility function""" - - valid, argspec_result, updated_params = check_argspec(doc, plugin + " test", **params) - - if not valid: - raise AnsibleError( - "{argspec_result} with errors: {argspec_errors}".format( - argspec_result=argspec_result.get("msg"), - argspec_errors=argspec_result.get("errors"), - ), - ) - - -def _need_netaddr(f_name, *args, **kwargs): - raise errors.AnsibleFilterError(missing_required_lib("netaddr")) diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/base/utils.py b/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/base/utils.py deleted file mode 100644 index a1337581..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/base/utils.py +++ /dev/null @@ -1,33 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -The utils file for all netaddr tests -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -from ansible.errors import AnsibleError - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - check_argspec, -) - - -def _validate_args(plugin, doc, params): - """argspec validator utility function""" - - valid, argspec_result, updated_params = check_argspec(doc, plugin + " test", **params) - - if not valid: - raise AnsibleError( - "{argspec_result} with errors: {argspec_errors}".format( - argspec_result=argspec_result.get("msg"), - argspec_errors=argspec_result.get("errors"), - ), - ) diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/base/validate.py b/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/base/validate.py deleted file mode 100644 index 9e882807..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/base/validate.py +++ /dev/null @@ -1,190 +0,0 @@ -""" -The base class for validator -""" -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import os - -from importlib import import_module - -from ansible.errors import AnsibleError -from ansible.module_utils._text import to_native, to_text -from ansible.module_utils.six import iteritems - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - check_argspec, -) -from ansible_collections.ansible.utils.plugins.module_utils.common.utils import to_list - - -try: - import yaml - - try: - from yaml import CSafeLoader as SafeLoader - except ImportError: - from yaml import SafeLoader - HAS_YAML = True -except ImportError: - HAS_YAML = False - - -class ValidateBase(object): - """The base class for data validators - Provides a _debug function to normalize debug output - """ - - def __init__(self, data, criteria, engine, plugin_vars=None, kwargs=None): - self._data = data - self._criteria = criteria - self._engine = engine - self._plugin_vars = plugin_vars if plugin_vars is not None else {} - self._result = {} - self._kwargs = kwargs if kwargs is not None else {} - self._sub_plugin_options = {} - - cref = dict(zip(["corg", "cname", "plugin"], engine.split("."))) - validatorlib = ( - "ansible_collections.{corg}.{cname}.plugins.sub_plugins.validate.{plugin}".format( - **cref, - ) - ) - - validatordoc = getattr(import_module(validatorlib), "DOCUMENTATION") - if validatordoc: - self._set_sub_plugin_options(validatordoc) - - def _set_sub_plugin_options(self, doc): - params = {} - try: - argspec_obj = yaml.load(doc, SafeLoader) - except Exception as exc: - raise AnsibleError( - "Error '{err}' while reading validate plugin {engine} documentation: '{argspec}'".format( - err=to_text(exc, errors="surrogate_or_strict"), - engine=self._engine, - argspec=doc, - ), - ) - options = argspec_obj.get("options", {}) - - if not options: - return None - - for option_name, option_value in iteritems(options): - option_var_name_list = option_value.get("vars", []) - option_env_name_list = option_value.get("env", []) - - # check if plugin configuration option passed as kwargs - # valid for lookup, filter, test plugins or pass through - # variables if supported by the module. - if option_name in self._kwargs: - params[option_name] = self._kwargs[option_name] - continue - - # check if plugin configuration option passed in task vars eg. - # vars: - # - name: ansible_validate_jsonschema_draft - # - name: ansible_validate_jsonschema_draft_type - if option_var_name_list and (option_name not in params): - for var_name_entry in to_list(option_var_name_list): - if not isinstance(var_name_entry, dict): - raise AnsibleError( - "invalid type '{var_name_type}' for the value of '{var_name_entry}' option," - " should to be type dict".format( - var_name_type=type(var_name_entry), - var_name_entry=var_name_entry, - ), - ) - var_name = var_name_entry.get("name") - if var_name and var_name in self._plugin_vars: - params[option_name] = self._plugin_vars[var_name] - break - - # check if plugin configuration option as passed as enviornment eg. - # env: - # - name: ANSIBLE_VALIDATE_JSONSCHEMA_DRAFT - if option_env_name_list and (option_name not in params): - for env_name_entry in to_list(option_env_name_list): - if not isinstance(env_name_entry, dict): - raise AnsibleError( - "invalid type '{env_name_entry_type}' for the value of '{env_name_entry}' option," - " should to be type dict".format( - env_name_entry_type=type(env_name_entry), - env_name_entry=env_name_entry, - ), - ) - env_name = env_name_entry.get("name") - if env_name in os.environ: - params[option_name] = os.environ[env_name] - break - - valid, argspec_result, updated_params = check_argspec( - yaml.dump(argspec_obj), - self._engine, - **params, - ) - if not valid: - raise AnsibleError( - "{argspec_result} with errors: {argspec_errors}".format( - argspec_result=argspec_result.get("msg"), - argspec_errors=argspec_result.get("errors"), - ), - ) - - if updated_params: - self._sub_plugin_options = updated_params - - def _get_sub_plugin_options(self, name): - return self._sub_plugin_options.get(name) - - -def _load_validator(engine, data, criteria, plugin_vars=None, cls_name="Validate", kwargs=None): - """ - Load the validate plugin from engine name - :param engine: Name of the validate engine in format .. - :param vars: Variables for validate plugins. The variable information for each validate plugins can - be referred in individual plugin documentation. - :param cls_name: Base class name for validate plugin. Defaults to ``Validate``. - :param kwargs: The base name of the class for validate plugin - :return: - """ - result = {} - if plugin_vars is None: - plugin_vars = {} - - if kwargs is None: - kwargs = {} - - if len(engine.split(".")) != 3: - result["failed"] = True - result["msg"] = "Parser name should be provided as a full name including collection" - return None, result - - cref = dict(zip(["corg", "cname", "plugin"], engine.split("."))) - validatorlib = ( - "ansible_collections.{corg}.{cname}.plugins.sub_plugins.validate.{plugin}".format(**cref) - ) - - try: - validatorcls = getattr(import_module(validatorlib), cls_name) - validator = validatorcls( - data=data, - criteria=criteria, - engine=engine, - plugin_vars=plugin_vars, - kwargs=kwargs, - ) - return validator, result - except Exception as exc: - result["failed"] = True - result[ - "msg" - ] = "For engine '{engine}' error loading the corresponding validate plugin: {err}".format( - engine=engine, - err=to_native(exc), - ) - return None, result diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/connection_base.py b/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/connection_base.py deleted file mode 100644 index 7eb25016..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/connection_base.py +++ /dev/null @@ -1,118 +0,0 @@ -# (c) 2012-2014, Michael DeHaan -# (c) 2015 Toshio Kuratomi -# (c) 2017, Peter Sprygada -# (c) 2017 Ansible Project -# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt) -# SPDX-License-Identifier: GPL-3.0-or-later - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import os - -from ansible import constants as C -from ansible.plugins.connection import ConnectionBase -from ansible.plugins.loader import connection_loader -from ansible.utils.display import Display -from ansible.utils.path import unfrackpath - - -display = Display() - - -__all__ = ["PersistentConnectionBase"] - - -class PersistentConnectionBase(ConnectionBase): - """ - A base for simple persistent connections. - """ - - force_persistence = True - # Do not use _remote_is_local in other connections - _remote_is_local = True - - def __init__(self, play_context, new_stdin, *args, **kwargs): - super(PersistentConnectionBase, self).__init__(play_context, new_stdin, *args, **kwargs) - self._messages = [] - self._conn_closed = False - - self._local = connection_loader.get("local", play_context, "/dev/null") - self._local.set_options() - - # reconstruct the socket_path and set instance values accordingly - self._ansible_playbook_pid = kwargs.get("ansible_playbook_pid") - self._update_connection_state() - - def exec_command(self, cmd, in_data=None, sudoable=True): - return self._local.exec_command(cmd, in_data, sudoable) - - def queue_message(self, level, message): - """ - Adds a message to the queue of messages waiting to be pushed back to the controller process. - - :arg level: A string which can either be the name of a method in display, or 'log'. When - the messages are returned to task_executor, a value of log will correspond to - ``display.display(message, log_only=True)``, while another value will call ``display.[level](message)`` - """ - self._messages.append((level, message)) - - def pop_messages(self): - messages, self._messages = self._messages, [] - return messages - - def put_file(self, in_path, out_path): - """Transfer a file from local to remote""" - return self._local.put_file(in_path, out_path) - - def fetch_file(self, in_path, out_path): - """Fetch a file from remote to local""" - return self._local.fetch_file(in_path, out_path) - - def reset(self): - """ - Reset the connection - """ - if self._socket_path: - self.queue_message( - "vvvv", - "resetting persistent connection for socket_path %s" % self._socket_path, - ) - self.close() - self.queue_message("vvvv", "reset call on connection instance") - - def close(self): - self._conn_closed = True - if self._connected: - self._connected = False - - def _update_connection_state(self): - """ - Reconstruct the connection socket_path and check if it exists - - If the socket path exists then the connection is active and set - both the _socket_path value to the path and the _connected value - to True. If the socket path doesn't exist, leave the socket path - value to None and the _connected value to False - """ - ssh = connection_loader.get("ssh", class_only=True) - control_path = ssh._create_control_path( - self._play_context.remote_addr, - self._play_context.port, - self._play_context.remote_user, - self._play_context.connection, - self._ansible_playbook_pid, - ) - - tmp_path = unfrackpath(C.PERSISTENT_CONTROL_PATH_DIR) - socket_path = unfrackpath(control_path % dict(directory=tmp_path)) - - if os.path.exists(socket_path): - self._connected = True - self._socket_path = socket_path - - def _log_messages(self, message): - if self.get_option("persistent_log_messages"): - self.queue_message("log", message) diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/consolidate.py b/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/consolidate.py deleted file mode 100644 index db9ed92c..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/consolidate.py +++ /dev/null @@ -1,188 +0,0 @@ -# -# -*- coding: utf-8 -*- -# Copyright 2022 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -# - -""" -The consolidate plugin code -""" -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import itertools - -from ansible.errors import AnsibleFilterError - - -def _raise_error(err): - """Raise an error message, prepend with filter name - - Args: - filter (str): Filter name - msg (str): Message specific to filter supplied - - Raises: - AnsibleFilterError: AnsibleError with filter name and message - """ - tmp_err = [] - tmplt_err = "Error when using plugin 'consolidate': '{filter}' reported {msg}" - for filter in list(err.keys()): - if err.get(filter): - msg = ", ".join(err.get(filter)) - tmp_err.append(tmplt_err.format(filter=filter, msg=msg)) - error = "; ".join(tmp_err) - raise AnsibleFilterError(error) - - -def fail_on_filter(validator_func): - """Decorator to fail on supplied filters - - Args: - validator_func (func): Function that generates failure messages - - Returns: - raw: Value without errors if generated and not failed - """ - - def update_err(*args, **kwargs): - """Filters return value or raises error as per supplied parameters - - Returns: - any: Return value to the function call - """ - res, err = validator_func(*args, **kwargs) - if any( - [ - err.get("fail_missing_match_key"), - err.get("fail_duplicate"), - err.get("fail_missing_match_value"), - ], - ): - _raise_error(err) - return res - - return update_err - - -@fail_on_filter -def check_missing_match_key_duplicate(data_sources, fail_missing_match_key, fail_duplicate): - """Check if the match_key specified is present in all the supplied data, - also check for duplicate data accross all the data sources - - Args: - data_sources (list): list of dicts as data sources - fail_missing_match_key (bool): Fails if match_keys not present in data set - fail_duplicate (bool): Fails if duplicate data present in a data - Returns: - list: list of unique keys based on specified match_keys - """ - results, errors_match_key, errors_duplicate = [], [], [] - for ds_idx, data_source in enumerate(data_sources, start=1): - match_key = data_source["match_key"] - ds_values = [] - - for dd_idx, data_dict in enumerate(data_source["data"], start=1): - try: - ds_values.append(data_dict[match_key]) - except KeyError: - if fail_missing_match_key: - errors_match_key.append( - "missing match key '{match_key}' in data source {ds_idx} in list entry {dd_idx}".format( - match_key=match_key, - ds_idx=ds_idx, - dd_idx=dd_idx, - ), - ) - continue - - if sorted(set(ds_values)) != sorted(ds_values) and fail_duplicate: - errors_duplicate.append( - "duplicate values in data source {ds_idx}".format(ds_idx=ds_idx), - ) - results.append(set(ds_values)) - return results, { - "fail_missing_match_key": errors_match_key, - "fail_duplicate": errors_duplicate, - } - - -@fail_on_filter -def check_missing_match_values(matched_keys, fail_missing_match_value): - """Checks values to match be consistent over all the whole data source - - Args: - matched_keys (list): list of unique keys based on specified match_keys - fail_missing_match_value (bool): Fail if match_key value is missing in a data set - Returns: - set: set of unique values - """ - all_values = set(itertools.chain.from_iterable(matched_keys)) - if not fail_missing_match_value: - return all_values, {} - errors_match_values = [] - for ds_idx, ds_values in enumerate(matched_keys, start=1): - missing_match = all_values - ds_values - if missing_match: - m_matches = ", ".join(missing_match) - errors_match_values.append( - "missing match value {m_matches} in data source {ds_idx}".format( - ds_idx=ds_idx, - m_matches=m_matches, - ), - ) - return all_values, {"fail_missing_match_value": errors_match_values} - - -def consolidate_facts(data_sources, all_values): - """Iterate over all the data sources and consolidate the data - - Args: - data_sources (list): supplied data sources - all_values (set): a set of keys to iterate over - - Returns: - list: list of consolidated data - """ - - consolidated_facts = {} - for data_source in data_sources: - match_key = data_source["match_key"] - source = data_source["name"] - data_dict = {d[match_key]: d for d in data_source["data"] if match_key in d} - for value in sorted(all_values): - if value not in consolidated_facts: - consolidated_facts[value] = {} - consolidated_facts[value][source] = data_dict.get(value, {}) - return consolidated_facts - - -def consolidate( - data_sources, - fail_missing_match_key, - fail_missing_match_value, - fail_duplicate, -): - """Calls data validation and consolidation functions - - Args: - data_source (list): list of dicts as data sources - fail_missing_match_key (bool, optional): Fails if match_keys not present in data set. Defaults to False. - fail_missing_match_value (bool, optional): Fails if matching attribute missing in a data. Defaults to False. - fail_duplicate (bool, optional): Fails if duplicate data present in a data. Defaults to False. - - Returns: - list: list of dicts of validated and consolidated data - """ - - key_sets = check_missing_match_key_duplicate( - data_sources, - fail_missing_match_key, - fail_duplicate, - ) - key_vals = check_missing_match_values(key_sets, fail_missing_match_value) - consolidated_facts = consolidate_facts(data_sources, key_vals) - return consolidated_facts diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/fact_diff.py b/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/fact_diff.py deleted file mode 100644 index e2d0f820..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/fact_diff.py +++ /dev/null @@ -1,145 +0,0 @@ -# -# -*- coding: utf-8 -*- -# Copyright 2023 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -# - -""" -The fact_diff plugin code -""" -from __future__ import absolute_import, division, print_function - -import difflib -import re - -from collections.abc import MutableMapping - -from ansible.plugins.callback import CallbackBase - - -__metaclass__ = type - - -from ansible.errors import AnsibleFilterError - - -def _raise_error(msg): - """Raise an error message, prepend with filter name - :param msg: The message - :type msg: str - :raises: AnsibleError - """ - error = "Error when using filter plugin 'fact_diff': {msg}".format(msg=msg) - raise AnsibleFilterError(error) - - -def fact_diff(before, after, plugin, common): - """Compare two facts or variables and get a diff. - :param before: The first fact to be used in the comparison. - :type before: raw - :param after: The second fact to be used in the comparison. - :type after: raw - :param plugin: The name of the plugin in collection format - :type plugin: string - """ - if plugin.get("name") == "ansible.utils.native": - result = fact_diff_native().run_diff(before, after, plugin, common) - return result - - -class fact_diff_native(CallbackBase): - def _check_valid_regexes(self, skip_lines): - if skip_lines: - for idx, regex in enumerate(skip_lines): - try: - skip_lines[idx] = re.compile(regex) - except re.error as exc: - msg = "The regex '{regex}', is not valid. The error was {err}.".format( - regex=regex, - err=str(exc), - ) - _raise_error(msg) - - def _xform(self, before, after, skip_lines): - if skip_lines: - if isinstance(before, str): - before = before.splitlines() - if isinstance(after, str): - after = after.splitlines() - before = [ - line for line in before if not any(regex.match(str(line)) for regex in skip_lines) - ] - after = [ - line for line in after if not any(regex.match(str(line)) for regex in skip_lines) - ] - if isinstance(before, list): - before = "\n".join(map(str, before)) + "\n" - if isinstance(after, list): - after = "\n".join(map(str, after)) + "\n" - return before, after, skip_lines - - def get_fact_diff(self, difflist): - if not isinstance(difflist, list): - difflist = [difflist] - ret = [] - for diff in difflist: - if "before" in diff and "after" in diff: - # format complex structures into 'files' - for x in ["before", "after"]: - if isinstance(diff[x], MutableMapping): - diff[x] = self._serialize_diff(diff[x]) - elif diff[x] is None: - diff[x] = "" - if "before_header" in diff: - before_header = "before: %s" % diff["before_header"] - else: - before_header = "before" - if "after_header" in diff: - after_header = "after: %s" % diff["after_header"] - else: - after_header = "after" - before_lines = diff["before"].splitlines(True) - after_lines = diff["after"].splitlines(True) - if before_lines and not before_lines[-1].endswith("\n"): - before_lines[-1] += "\n\\ No newline at end of file\n" - if after_lines and not after_lines[-1].endswith("\n"): - after_lines[-1] += "\n\\ No newline at end of file\n" - diff_context = ( - len(before_lines) if len(before_lines) > len(after_lines) else len(after_lines) - ) - differ = difflib.unified_diff( - before_lines, - after_lines, - fromfile=before_header, - tofile=after_header, - fromfiledate="", - tofiledate="", - n=diff_context, - ) - difflines = list(differ) - has_diff = False - for line in difflines: - has_diff = True - if diff["common"]: - if line.startswith("+") or line.startswith("-"): - pass - else: - ret.append(line) - else: - ret.append(line) - if has_diff: - ret.append("\n") - if "prepared" in diff: - ret.append(diff["prepared"]) - return "".join(ret) - - def run_diff(self, before, after, plugin, common): - skip_lines = plugin["vars"].get("skip_lines") - self._check_valid_regexes(skip_lines=skip_lines) - before, after, skip_lines = self._xform(before, after, skip_lines=skip_lines) - diff = self.get_fact_diff({"before": before, "after": after, "common": common}) - ansi_escape = re.compile(r"\x1B[@-_][0-?]*[ -/]*[@-~]") - diff_text = ansi_escape.sub("", diff) - result = list(diff_text.splitlines()) - return result diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/from_xml.py b/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/from_xml.py deleted file mode 100644 index 9216a057..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/from_xml.py +++ /dev/null @@ -1,55 +0,0 @@ -# -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -# - -""" -The from_xml plugin code -""" -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import json - -from ansible.errors import AnsibleFilterError - - -try: - import xmltodict - - HAS_XMLTODICT = True -except ImportError: - HAS_XMLTODICT = False - - -def _raise_error(msg): - """Raise an error message, prepend with filter name - :param msg: The message - :type msg: str - :raises: AnsibleError - """ - error = "Error when using plugin 'from_xml': {msg}".format(msg=msg) - raise AnsibleFilterError(error) - - -def from_xml(data, engine): - """Convert data which is in xml to json" - :param data: The data passed in (data|from_xml(...)) - :type data: xml - :param engine: Conversion library default=xml_to_dict - """ - if engine == "xmltodict": - if not HAS_XMLTODICT: - _raise_error("Missing required library xmltodict") - try: - res = json.dumps(xmltodict.parse(data)) - except Exception: - _raise_error("Input Xml is not valid") - return res - else: - error = "engine: {engine} is not supported ".format(engine=engine) - _raise_error(error) diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/index_of.py b/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/index_of.py deleted file mode 100644 index 45181cc6..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/index_of.py +++ /dev/null @@ -1,198 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2020 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - - -""" -The index_of plugin common code -""" -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import json - -from ansible.module_utils._text import to_native -from ansible.module_utils.six import integer_types, string_types -from jinja2.exceptions import TemplateSyntaxError - - -# Note, this file can only be used on the control node -# where ansible is installed -# limit imports to filter and lookup plugins -try: - from ansible.errors import AnsibleError -except ImportError: - pass - - -def _raise_error(msg): - """Raise an error message, prepend with filter name - - :param msg: The message - :type msg: str - :raises: AnsibleError - """ - error = "Error when using plugin 'index_of': {msg}".format(msg=msg) - raise AnsibleError(error) - - -def _list_to_and_str(lyst): - """Convert a list to a command delimited string - with the last entry being an and - - :param lyst: The list to turn into a str - :type lyst: list - :return: The nicely formatted string - :rtype: str - """ - res = "{most} and {last}".format(most=", ".join(lyst[:-1]), last=lyst[-1]) - return res - - -def _to_well_known_type(obj): - """Convert an ansible internal type to a well-known type - ie AnsibleUnicode => str - - :param obj: the obj to convert - :type obj: unknown - """ - return json.loads(json.dumps(obj)) - - -def _run_test(entry, test, right, tests): - """Run a test - - :param test: The test to run - :type test: a lambda from the qual_map - :param entry: The x for the lambda - :type entry: str int or bool - :param right: The y for the lambda - :type right: str int bool or list - :return: If the test passed - :rtype: book - """ - msg = ( - "Error encountered when testing value " - "'{entry}' (type={entry_type}) against " - "'{right}' (type={right_type}) with '{test}'. " - ).format( - entry=entry, - entry_type=type(_to_well_known_type(entry)).__name__, - right=right, - right_type=type(_to_well_known_type(entry)).__name__, - test=test, - ) - - if test.startswith("!"): - invert = True - test = test.lstrip("!") - if test == "=": - test = "==" - elif test.startswith("not "): - invert = True - test = test.lstrip("not ") - else: - invert = False - - if not isinstance(right, list) and test == "in": - right = [right] - - # JinjaPluginIntercept.get() raises an exception instead of returning None - # in ansible-core 2.15+ - try: - j2_test = tests.get(test) - except TemplateSyntaxError: - j2_test = None - - if not j2_test: - msg = "{msg} Error was: the test '{test}' was not found.".format(msg=msg, test=test) - _raise_error(msg) - - try: - if right is None: - result = j2_test(entry) - else: - result = j2_test(entry, right) - except Exception as exc: - msg = "{msg} Error was: {error}".format(msg=msg, error=to_native(exc)) - _raise_error(msg) - - if invert: - result = not result - return result - - -def index_of( - data, - test, - value=None, - key=None, - wantlist=False, - fail_on_missing=False, - tests=None, -): - """Find the index or indices of entries in list of objects" - - :param data: The data passed in (data|index_of(...)) - :type data: unknown - :param test: the test to use - :type test: jinja2 test - :param value: The value to use for the test - :type value: unknown - :param key: The key to use when a list of dicts is passed - :type key: valid key type - :param want_list: always return a list, even if 1 index - :type want_list: bool - :param fail_on_missing: Should we fail if key not found? - :type fail_on_missing: bool - :param tests: The jinja tests from the current environment - :type tests: ansible.template.JinjaPluginIntercept - """ - res = list() - if key is None: - for idx, entry in enumerate(data): - result = _run_test(entry, test, value, tests) - if result: - res.append(idx) - - elif isinstance(key, (string_types, integer_types, bool)): - if not all(isinstance(entry, dict) for entry in data): - all_tipes = [type(_to_well_known_type(entry)).__name__ for entry in data] - msg = ( - "When a key name is provided, all list entries are required to " - "be dictionaries, got {str_tipes}" - ).format(str_tipes=_list_to_and_str(all_tipes)) - _raise_error(msg) - errors = [] - for idx, dyct in enumerate(data): - if key in dyct: - entry = dyct.get(key) - result = _run_test(entry, test, value, tests) - if result: - res.append(idx) - elif fail_on_missing: - msg = ("'{key}' was not found in '{dyct}' at [{index}]").format( - key=key, - dyct=dyct, - index=idx, - ) - errors.append(msg) - if errors: - _raise_error( - ("{errors}. fail_on_missing={fom}").format( - errors=_list_to_and_str(errors), - fom=str(fail_on_missing), - ), - ) - else: - msg = "Unknown key type, key ({key}) was a {type}. ".format( - key=key, - type=type(_to_well_known_type(key)).__name__, - ) - _raise_error(msg) - if len(res) == 1 and not wantlist: - return res[0] - return res diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/keep_keys.py b/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/keep_keys.py deleted file mode 100644 index b0f425d0..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/keep_keys.py +++ /dev/null @@ -1,80 +0,0 @@ -# -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -# - -""" -The keep_keys plugin code -""" -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import re - -from ansible.errors import AnsibleFilterError - - -def _raise_error(msg): - """Raise an error message, prepend with filter name - :param msg: The message - :type msg: str - :raises: AnsibleError - """ - error = "Error when using plugin 'keep_keys': {msg}".format(msg=msg) - raise AnsibleFilterError(error) - - -def keep_keys_from_dict_n_list(data, target, matching_parameter): - if isinstance(data, list): - list_data = [keep_keys_from_dict_n_list(each, target, matching_parameter) for each in data] - return list_data - if isinstance(data, dict): - keep = {} - for k, val in data.items(): - for key in target: - match = None - if not isinstance(val, (list, dict)): - if matching_parameter == "regex": - match = re.match(key, k) - if match: - keep[k] = val - elif matching_parameter == "starts_with": - if k.startswith(key): - keep[k], match = val, True - elif matching_parameter == "ends_with": - if k.endswith(key): - keep[k], match = val, True - else: - if k == key: - keep[k], match = val, True - else: - list_data = keep_keys_from_dict_n_list(val, target, matching_parameter) - if isinstance(list_data, list) and not match: - list_data = [r for r in list_data if r not in ([], {})] - if all(isinstance(s, str) for s in list_data): - continue - if list_data in ([], {}): - continue - keep[k] = list_data - return keep - return data - - -def keep_keys(data, target, matching_parameter="equality"): - """keep selective keys recursively from a given data" - :param data: The data passed in (data|keep_keys(...)) - :type data: raw - :param target: List of keys on with operation is to be performed - :type data: list - :type elements: string - :param matching_parameter: matching type of the target keys with data keys - :type data: str - """ - if not isinstance(data, (list, dict)): - _raise_error("Input is not valid for keep operation") - data = keep_keys_from_dict_n_list(data, target, matching_parameter) - return data diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/remove_keys.py b/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/remove_keys.py deleted file mode 100644 index e00598bb..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/remove_keys.py +++ /dev/null @@ -1,85 +0,0 @@ -# -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -# - -""" -The remove_keys plugin code -""" -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import re - -from ansible.errors import AnsibleFilterError - - -def _raise_error(msg): - """Raise an error message, prepend with filter name - :param msg: The message - :type msg: str - :raises: AnsibleError - """ - error = "Error when using plugin 'remove_keys': {msg}".format(msg=msg) - raise AnsibleFilterError(error) - - -def remove_keys_from_dict_n_list(data, target, matching_parameter): - if isinstance(data, dict): - for key in set(target): - for k in list(data.keys()): - if matching_parameter == "regex": - if re.match(key, k): - del data[k] - elif matching_parameter == "starts_with": - if k.startswith(key): - del data[k] - elif matching_parameter == "ends_with": - if k.endswith(key): - del data[k] - else: - if k == key: - del data[k] - for k, v in data.items(): - remove_keys_from_dict_n_list(v, target, matching_parameter) - elif isinstance(data, list): - for i in data: - remove_keys_from_dict_n_list(i, target, matching_parameter) - return data - - -def clear_empty_data(data): - if isinstance(data, dict): - # for k in list(data.keys()): - # if not data.get(k, {}): - # del data[k] - for k, v in data.items(): - data[k] = clear_empty_data(v) - if isinstance(data, list): - temp = [] - for i in data: - if i: - temp.append(clear_empty_data(i)) - return temp - return data - - -def remove_keys(data, target, matching_parameter="equality"): - """Remove unwanted keys recursively from a given data" - :param data: The data passed in (data|remove_keys(...)) - :type data: raw - :param target: List of keys on with operation is to be performed - :type data: list - :type elements: string - :param matching_parameter: matching type of the target keys with data keys - :type data: str - """ - if not isinstance(data, (list, dict)): - _raise_error("Input is not valid for attribute removal") - data = remove_keys_from_dict_n_list(data, target, matching_parameter) - data = clear_empty_data(data) - return data diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/replace_keys.py b/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/replace_keys.py deleted file mode 100644 index abe1a39e..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/replace_keys.py +++ /dev/null @@ -1,69 +0,0 @@ -# -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -# - -""" -The replace_keys plugin code -""" -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import re - -from ansible.errors import AnsibleFilterError - - -def _raise_error(msg): - """Raise an error message, prepend with filter name - :param msg: The message - :type msg: str - :raises: AnsibleError - """ - error = "Error when using plugin 'replace_keys': {msg}".format(msg=msg) - raise AnsibleFilterError(error) - - -def replace_keys_from_dict_n_list(data, target, matching_parameter): - if isinstance(data, dict): - for key in target: - for k in list(data.keys()): - if matching_parameter == "regex": - if re.match(key.get("before"), k): - data[key.get("after")] = data.pop(k) - elif matching_parameter == "starts_with": - if k.startswith(key.get("before")): - data[key.get("after")] = data.pop(k) - elif matching_parameter == "ends_with": - if k.endswith(key.get("before")): - data[key.get("after")] = data.pop(k) - else: - if k == key.get("before"): - data[key.get("after")] = data.pop(k) - for k, v in data.items(): - replace_keys_from_dict_n_list(v, target, matching_parameter) - elif isinstance(data, list): - for i in data: - replace_keys_from_dict_n_list(i, target, matching_parameter) - return data - - -def replace_keys(data, target, matching_parameter="equality"): - """replaces specific keys with mentioned after data" - :param data: The data passed in (data|replace_keys(...)) - :type data: raw - :param target: List of keys on with operation is to be performed - :type data: list - :type elements: string - :param matching_parameter: matching type of the target keys with data keys - :type data: list - :type elements: dict - """ - if not isinstance(data, (list, dict)): - _raise_error("Input is not valid for replace operation") - data = replace_keys_from_dict_n_list(data, target, matching_parameter) - return data diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/to_xml.py b/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/to_xml.py deleted file mode 100644 index e25c095a..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/plugin_utils/to_xml.py +++ /dev/null @@ -1,69 +0,0 @@ -# -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -# - -""" -The to_xml plugin -""" -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -from ansible.errors import AnsibleFilterError - - -try: - import xmltodict - - HAS_XMLTODICT = True -except ImportError: - HAS_XMLTODICT = False - - -def _raise_error(msg): - """Raise an error message, prepend with filter name - - :param msg: The message - :type msg: str - :raises: AnsibleError - """ - error = "Error when using plugin 'to_xml': {msg}".format(msg=msg) - raise AnsibleFilterError(error) - - -def to_xml(data, engine, indent, indent_width, full_document): - """Convert data which is in json to xml" - - :param data: The data passed in (data|to_xml(...)) - :type data: xml - :param engine: Conversion library default=xmltodict - :param indent: Indent char default='tabs' - :param indent_width: Indent char multiplier default=4 - :param full_document: Flag to disable xml declaration - """ - - indent_char = "\t" - - if indent == "spaces": - indent_char = " " * indent_width - - if engine == "xmltodict": - if not HAS_XMLTODICT: - _raise_error("Missing required library xmltodict") - try: - res = xmltodict.unparse( - data, - pretty=True, - indent=indent_char, - full_document=full_document, - ) - except Exception: - _raise_error("Input json is not valid") - return res - else: - error = "engine: {engine} is not supported ".format(engine=engine) - _raise_error(error) diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/sub_plugins/cli_parser/json_parser.py b/ansible/collections/ansible_collections/ansible/utils/plugins/sub_plugins/cli_parser/json_parser.py deleted file mode 100644 index b0c51590..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/sub_plugins/cli_parser/json_parser.py +++ /dev/null @@ -1,75 +0,0 @@ -""" -json parser - -This is the json parser for use with the cli_parse module and action plugin -""" -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -DOCUMENTATION = """ - author: Bradley Thornton (@cidrblock) - name: json - short_description: Define configurable options for B(json) sub-plugin of M(ansible.utils.cli_parse) module - description: - - This plugin documentation provides the configurable options that can be passed - to the M(ansible.utils.cli_parse) plugins when I(ansible.utils.json) is used as a value for - I(name) option. - version_added: 1.0.0 -""" - -EXAMPLES = r""" -- name: "Run command and parse with json" - ansible.utils.cli_parse: - command: "show version | json" - parser: - name: ansible.utils.json - register: nxos_json_command - -- name: "Load text and parse with json" - ansible.utils.cli_parse: - text: "{{ lookup('ansible.builtin.file', './nxos_show_interface_json_text.txt') }}" - parser: - name: ansible.utils.json - register: nxos_json_text -""" - -import json - -from ansible.module_utils._text import to_native -from ansible.module_utils.six import string_types - -from ansible_collections.ansible.utils.plugins.plugin_utils.base.cli_parser import CliParserBase - - -class CliParser(CliParserBase): - """The json parser class - Convert a string containing valid json into an object - """ - - DEFAULT_TEMPLATE_EXTENSION = None - PROVIDE_TEMPLATE_CONTENTS = False - - def parse(self, *_args, **_kwargs): - """Std entry point for a cli_parse parse execution - - :return: Errors or parsed text as structured data - :rtype: dict - - :example: - - The parse function of a parser should return a dict: - {"errors": [a list of errors]} - or - {"parsed": obj} - """ - text = self._task_args.get("text") - try: - if not isinstance(text, string_types): - text = json.dumps(text) - parsed = json.loads(text) - except Exception as exc: - return {"errors": [to_native(exc)]} - - return {"parsed": parsed} diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/sub_plugins/cli_parser/textfsm_parser.py b/ansible/collections/ansible_collections/ansible/utils/plugins/sub_plugins/cli_parser/textfsm_parser.py deleted file mode 100644 index 188465cd..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/sub_plugins/cli_parser/textfsm_parser.py +++ /dev/null @@ -1,114 +0,0 @@ -""" -textfsm parser - -This is the textfsm parser for use with the cli_parse module and action plugin -https://github.com/google/textfsm -""" -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -DOCUMENTATION = """ - author: Bradley Thornton (@cidrblock) - name: textfsm - short_description: Define configurable options for C(textfsm) sub-plugin of M(ansible.utils.cli_parse) module - description: - - This plugin documentation provides the configurable options that can be passed - to the M(ansible.utils.cli_parse) plugins when I(ansible.utils.textfsm) is used as a value for - I(name) option. - version_added: 1.0.0 -""" - -EXAMPLES = r""" -- name: "Run command and parse with textfsm" - ansible.utils.cli_parse: - command: "show version" - parser: - name: ansible.utils.textfsm - register: nxos_textfsm_command - -- name: "Pass text and command" - ansible.utils.cli_parse: - text: "{{ lookup('ansible.builtin.file', '/home/user/files/nxos_show_version.txt') }}" - parser: - name: ansible.utils.textfsm - template_path: "/home/user/templates/nxos_show_version.textfsm" - register: nxos_textfsm_text -""" - -import os - -from ansible.module_utils._text import to_native -from ansible.module_utils.basic import missing_required_lib - -from ansible_collections.ansible.utils.plugins.plugin_utils.base.cli_parser import CliParserBase - - -try: - import textfsm - - HAS_TEXTFSM = True -except ImportError: - HAS_TEXTFSM = False - - -class CliParser(CliParserBase): - """The textfsm parser class - Convert raw text to structured data using textfsm - """ - - DEFAULT_TEMPLATE_EXTENSION = "textfsm" - PROVIDE_TEMPLATE_CONTENTS = False - - @staticmethod - def _check_reqs(): - """Check the prerequisites for the textfsm parser - - :return dict: A dict with errors or a template_path - """ - errors = [] - - if not HAS_TEXTFSM: - errors.append(missing_required_lib("textfsm")) - - return {"errors": errors} - - def parse(self, *_args, **_kwargs): - """Std entry point for a cli_parse parse execution - - :return: Errors or parsed text as structured data - :rtype: dict - - :example: - - The parse function of a parser should return a dict: - {"errors": [a list of errors]} - or - {"parsed": obj} - """ - cli_output = self._task_args.get("text") - res = self._check_reqs() - if res.get("errors"): - return {"errors": res.get("errors")} - - template_path = self._task_args.get("parser").get("template_path") - if template_path and not os.path.isfile(template_path): - return { - "errors": "error while reading template_path file {file}".format( - file=template_path, - ), - } - try: - template = open(self._task_args.get("parser").get("template_path")) - except IOError as exc: - return {"errors": to_native(exc)} - - re_table = textfsm.TextFSM(template) - fsm_results = re_table.ParseText(cli_output) - - results = list() - for item in fsm_results: - results.append(dict(zip(re_table.header, item))) - - return {"parsed": results} diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/sub_plugins/cli_parser/ttp_parser.py b/ansible/collections/ansible_collections/ansible/utils/plugins/sub_plugins/cli_parser/ttp_parser.py deleted file mode 100644 index f8d9c700..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/sub_plugins/cli_parser/ttp_parser.py +++ /dev/null @@ -1,125 +0,0 @@ -""" -ttp parser - -This is the ttp parser for use with the cli_parse module and action plugin -https://github.com/dmulyalin/ttp -""" -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -DOCUMENTATION = """ - author: Bradley Thornton (@cidrblock) - name: ttp - short_description: Define configurable options for C(ttp) sub-plugin of M(ansible.utils.cli_parse) module - description: - - This plugin documentation provides the configurable options that can be passed - to the M(ansible.utils.cli_parse) plugins when I(ansible.utils.ttp) is used as a value for - I(name) option. - version_added: 1.0.0 -""" - -EXAMPLES = r""" -- name: "Run command and parse with textfsm" - ansible.utils.cli_parse: - command: "show version" - parser: - name: ansible.utils.ttp - register: nxos_ttp_command - -- name: "Pass text and command" - ansible.utils.cli_parse: - text: "{{ lookup('ansible.builtin.file', '/home/user/files/nxos_show_version.txt') }}" - parser: - name: ansible.utils.textfsm - template_path: "/home/user/templates/nxos_show_version.ttp" - register: nxos_ttp_text -""" - -import os - -from ansible.module_utils._text import to_native -from ansible.module_utils.basic import missing_required_lib - -from ansible_collections.ansible.utils.plugins.plugin_utils.base.cli_parser import CliParserBase - - -try: - from ttp import ttp - - HAS_TTP = True -except ImportError: - HAS_TTP = False - - -class CliParser(CliParserBase): - """The ttp parser class - Convert raw text to structured data using ttp - """ - - DEFAULT_TEMPLATE_EXTENSION = "ttp" - PROVIDE_TEMPLATE_CONTENTS = False - - @staticmethod - def _check_reqs(): - """Check the prerequisites for the ttp parser - - :return dict: A dict with errors or a template_path - """ - errors = [] - - if not HAS_TTP: - errors.append(missing_required_lib("ttp")) - - return {"errors": errors} - - def parse(self, *_args, **_kwargs): - """Std entry point for a cli_parse parse execution - - :return: Errors or parsed text as structured data - :rtype: dict - - :example: - - The parse function of a parser should return a dict: - {"errors": [a list of errors]} - or - {"parsed": obj} - """ - cli_output = to_native(self._task_args.get("text"), errors="surrogate_then_replace") - res = self._check_reqs() - if res.get("errors"): - return {"errors": res.get("errors")} - - template_path = to_native( - self._task_args.get("parser").get("template_path"), - errors="surrogate_then_replace", - ) - if template_path and not os.path.isfile(template_path): - return { - "errors": "error while reading template_path file {file}".format( - file=template_path, - ), - } - - try: - parser_param = self._task_args.get("parser") - vars = ( - parser_param.get("vars", {}).get("ttp_vars", {}) if parser_param.get("vars") else {} - ) - kwargs = ( - parser_param.get("vars", {}).get("ttp_init", {}) if parser_param.get("vars") else {} - ) - parser = ttp(data=cli_output, template=template_path, vars=vars, **kwargs) - parser.parse(one=True) - ttp_results = ( - parser_param.get("vars", {}).get("ttp_results", {}) - if parser_param.get("vars") - else {} - ) - results = parser.result(**ttp_results) - except Exception as exc: - msg = "Template Text Parser returned an error while parsing. Error: {err}" - return {"errors": [msg.format(err=to_native(exc))]} - return {"parsed": results} diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/sub_plugins/cli_parser/xml_parser.py b/ansible/collections/ansible_collections/ansible/utils/plugins/sub_plugins/cli_parser/xml_parser.py deleted file mode 100644 index 6e532013..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/sub_plugins/cli_parser/xml_parser.py +++ /dev/null @@ -1,107 +0,0 @@ -""" -xml parser - -This is the xml parser for use with the cli_parse module and action plugin -https://github.com/martinblech/xmltodict -""" -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -DOCUMENTATION = """ - author: Bradley Thornton (@cidrblock) - name: xml - short_description: Define configurable options for C(xml) sub-plugin of M(ansible.utils.cli_parse) module - description: - - This plugin documentation provides the configurable options that can be passed - to the M(ansible.utils.cli_parse) plugins when I(ansible.utils.xml) is used as a value for - I(name) option. - version_added: 1.0.0 -""" - -EXAMPLES = r""" -- name: "Run command and parse with xml" - ansible.utils.cli_parse: - command: "show interface | xml" - parser: - name: ansible.utils.xml - register: nxos_xml_command - -- name: "Pass text and parse with xml" - ansible.utils.cli_parse: - text: "{{ lookup('ansible.builtin.file', '/home/user/files/nxos_show_interface.xml') }}" - parser: - name: ansible.utils.xml - os: nxos - register: nxos_xml_text -""" - -from ansible.module_utils._text import to_native -from ansible.module_utils.basic import missing_required_lib - -from ansible_collections.ansible.utils.plugins.plugin_utils.base.cli_parser import CliParserBase - - -try: - import xmltodict - - HAS_XMLTODICT = True -except ImportError: - HAS_XMLTODICT = False - - -class CliParser(CliParserBase): - """The xml parser class - Convert an xml string to structured data using xmltodict - """ - - DEFAULT_TEMPLATE_EXTENSION = None - PROVIDE_TEMPLATE_CONTENTS = False - - @staticmethod - def _check_reqs(): - """Check the prerequisites for the xml parser""" - errors = [] - if not HAS_XMLTODICT: - errors.append(missing_required_lib("xmltodict")) - - return errors - - def parse(self, *_args, **_kwargs): - """Std entry point for a cli_parse parse execution - - :return: Errors or parsed text as structured data - :rtype: dict - - :example: - - The parse function of a parser should return a dict: - {"errors": [a list of errors]} - or - {"parsed": obj} - """ - errors = self._check_reqs() - if errors: - return {"errors": errors} - - cli_output = self._task_args.get("text") - - network_os = self._task_args.get("parser").get("os") or self._task_vars.get( - "ansible_network_os", - ) - # the nxos | xml includes a odd garbage line at the end, so remove it - if not network_os: - self._debug("network_os value is not set") - - if network_os and "nxos" in network_os: - splitted = cli_output.splitlines() - if splitted[-1] == "]]>]]>": - cli_output = "\n".join(splitted[:-1]) - - try: - parsed = xmltodict.parse(cli_output) - return {"parsed": parsed} - except Exception as exc: - msg = "XML parser returned an error while parsing. Error: {err}" - return {"errors": [msg.format(err=to_native(exc))]} diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/sub_plugins/fact_diff/native.py b/ansible/collections/ansible_collections/ansible/utils/plugins/sub_plugins/fact_diff/native.py deleted file mode 100644 index cf02bf0a..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/sub_plugins/fact_diff/native.py +++ /dev/null @@ -1,87 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2020 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -DOCUMENTATION = """ - author: Bradley Thornton (@cidrblock) - name: native - short_description: Define configurable options for C(native) sub-plugin of M(ansible.utils.fact_diff) module - description: - - This plugin documentation provides the configurable options that can be passed - to the I(ansible.utils.fact_diff) plugins when I(ansible.utils.native) is used as a value for - I(name) option of the module. - version_added: 1.0.0 -""" - -EXAMPLES = r""" -- name: Show the difference in json format - ansible.utils.fact_diff: - before: "{{ before }}" - after: "{{ after }}" - plugin: - name: ansible.utils.native -""" - -import re - -from ansible.plugins.callback import CallbackBase - -from ansible_collections.ansible.utils.plugins.plugin_utils.base.fact_diff import FactDiffBase - - -class FactDiff(FactDiffBase): - def _check_valid_regexes(self): - if self._skip_lines: - self._debug("Checking regex in 'split_lines' for validity") - for idx, regex in enumerate(self._skip_lines): - try: - self._skip_lines[idx] = re.compile(regex) - except re.error as exc: - msg = "The regex '{regex}', is not valid. The error was {err}.".format( - regex=regex, - err=str(exc), - ) - self._errors.append(msg) - - def _xform(self): - if self._skip_lines: - if isinstance(self._before, str): - self._debug("'before' is a string, splitting lines") - self._before = self._before.splitlines() - if isinstance(self._after, str): - self._debug("'after' is a string, splitting lines") - self._after = self._after.splitlines() - self._before = [ - line - for line in self._before - if not any(regex.match(str(line)) for regex in self._skip_lines) - ] - self._after = [ - line - for line in self._after - if not any(regex.match(str(line)) for regex in self._skip_lines) - ] - if isinstance(self._before, list): - self._debug("'before' is a list, joining with \n") - self._before = "\n".join(map(str, self._before)) + "\n" - if isinstance(self._after, list): - self._debug("'after' is a list, joining with \n") - self._after = "\n".join(map(str, self._after)) + "\n" - - def diff(self): - self._after = self._task_args["after"] - self._before = self._task_args["before"] - self._errors = [] - self._skip_lines = self._task_args["plugin"]["vars"].get("skip_lines") - self._check_valid_regexes() - if self._errors: - return {"errors": " ".join(self._errors)} - self._xform() - diff = CallbackBase()._get_diff({"before": self._before, "after": self._after}) - return {"diff": diff} diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/sub_plugins/validate/config.py b/ansible/collections/ansible_collections/ansible/utils/plugins/sub_plugins/validate/config.py deleted file mode 100644 index eff3044b..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/sub_plugins/validate/config.py +++ /dev/null @@ -1,182 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -DOCUMENTATION = """ - author: Nathaniel Case (@Qalthos) - name: config - short_description: Define configurable options for configuration validate plugin - description: - - This sub plugin documentation provides the configurable options that can be passed - to the validate plugins when C(ansible.utils.config) is used as a value for - engine option. - version_added: 2.1.0 - notes: - - The value of I(data) option should be a candidate device configuration. - - The value of I(criteria) should be a B(list) of rules the candidate configuration - will be checked against, or a yaml document containing those rules. -""" - - -EXAMPLES = r""" -- name: Interface description should not be more than 8 chars - example: "Matches description this-is-a-long-description" - rule: 'description\s(.{9,})' - action: warn - -- name: Ethernet interface names should be in format Ethernet[Slot/chassis number].[sub-intf number (optional)] - example: "Matches interface Eth1/1, interface Eth 1/1, interface Ethernet 1/1, interface Ethernet 1/1.100" - rule: 'interface\s[eE](?!\w{7}\d/\d(.\d+)?)' - action: fail - -- name: Loopback interface names should be in format loopback[Virtual Interface Number] - example: "Matches interface Lo10, interface Loopback 10" - rule: 'interface\s[lL](?!\w{7}\d)' - action: fail - -- name: Port Channel names should be in format port-channel[Port Channel number].[sub-intf number (optional)] - example: "Matches interface port-channel 10, interface po10, interface port-channel 10.1" - rule: 'interface\s[pP](?!\w{3}-\w{7}\d(.\d+)?)' - action: fail -""" - -import re - -from io import StringIO - -from ansible.errors import AnsibleError -from ansible.module_utils._text import to_text -from ansible.module_utils.six import string_types - -from ansible_collections.ansible.utils.plugins.module_utils.common.utils import to_list -from ansible_collections.ansible.utils.plugins.plugin_utils.base.validate import ValidateBase - - -try: - import yaml - - # use C version if possible for speedup - try: - from yaml import CSafeLoader as SafeLoader - except ImportError: - from yaml import SafeLoader - HAS_YAML = True -except ImportError: - HAS_YAML = False - - -def format_message(match, line_number, criteria): - """Format warning or error message based on given line and criteria.""" - return 'At line {line_number}: {message}\nFound "{line}"'.format( - line_number=line_number + 1, - message=criteria["name"], - line=match.string, - ) - - -class Validate(ValidateBase): - def _check_args(self): - """Ensure specific args are set - - :return: None: In case all arguments passed are valid - """ - - try: - if isinstance(self._criteria, string_types): - self._criteria = yaml.load(StringIO(self._criteria), Loader=SafeLoader) - except yaml.parser.ParserError as exc: - msg = ( - "'criteria' option value is invalid, value should be valid YAML." - " Failed to read with error '{err}'".format( - err=to_text(exc, errors="surrogate_then_replace"), - ) - ) - raise AnsibleError(msg) - - issues = [] - for item in to_list(self._criteria): - if "name" not in item: - issues.append('Criteria {item} missing "name" key'.format(item=item)) - if "action" not in item: - issues.append('Criteria {item} missing "action" key'.format(item=item)) - elif item["action"] not in ("warn", "fail"): - issues.append( - 'Action in criteria {item} is not one of "warn" or "fail"'.format( - item=item, - ), - ) - if "rule" not in item: - issues.append('Criteria {item} missing "rule" key'.format(item=item)) - else: - try: - item["rule"] = re.compile(item["rule"]) - except re.error as exc: - issues.append( - 'Failed to compile regex "{rule}": {exc}'.format( - rule=item["rule"], - exc=exc, - ), - ) - - if issues: - msg = "\n".join(issues) - raise AnsibleError(msg) - - def validate(self): - """Std entry point for a validate execution - - :return: Errors or parsed text as structured data - :rtype: dict - - :example: - - The parse function of a parser should return a dict: - {"errors": [a list of errors]} - or - {"parsed": obj} - """ - self._check_args() - - try: - self._validate_config() - except Exception as exc: - return {"errors": to_text(exc, errors="surrogate_then_replace")} - - return self._result - - def _validate_config(self): - warnings = [] - errors = [] - error_messages = [] - - for criteria in self._criteria: - for line_number, line in enumerate(self._data.split("\n")): - match = criteria["rule"].search(line) - if match: - if criteria["action"] == "warn": - warnings.append(format_message(match, line_number, criteria)) - if criteria["action"] == "fail": - errors.append({"message": criteria["name"], "found": line}) - error_messages.append( - format_message(match, line_number, criteria), - ) - - if errors: - if "errors" not in self._result: - self._result["errors"] = [] - self._result["errors"].extend(errors) - if error_messages: - if "msg" not in self._result: - self._result["msg"] = "\n".join(error_messages) - else: - self._result["msg"] += "\n".join(error_messages) - if warnings: - if "warnings" not in self._result: - self._result["warnings"] = [] - self._result["warnings"].extend(warnings) diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/sub_plugins/validate/jsonschema.py b/ansible/collections/ansible_collections/ansible/utils/plugins/sub_plugins/validate/jsonschema.py deleted file mode 100644 index 1fda0af6..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/sub_plugins/validate/jsonschema.py +++ /dev/null @@ -1,290 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2020 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -DOCUMENTATION = """ - author: Ganesh Nalawade (@ganeshrn) - name: jsonschema - short_description: Define configurable options for jsonschema validate plugin - description: - - This sub plugin documentation provides the configurable options that can be passed - to the validate plugins when C(ansible.utils.jsonschema) is used as a value for - engine option. - version_added: 1.0.0 - options: - draft: - description: - - This option provides the jsonschema specification that should be used - for the validating the data. The I(criteria) option in the validate - plugin should follow the specification as mentioned by this option. - If this option is not specified, jsonschema will use the best validator - for the I($schema) field in the criteria. Specifications 2019-09 and - 2020-12 are only available from jsonschema version 4.0 onwards. - choices: - - draft3 - - draft4 - - draft6 - - draft7 - - 2019-09 - - 2020-12 - env: - - name: ANSIBLE_VALIDATE_JSONSCHEMA_DRAFT - vars: - - name: ansible_validate_jsonschema_draft - check_format: - description: If enabled, validate the I(format) specification in the criteria. - type: bool - default: true - env: - - name: ANSIBLE_VALIDATE_JSONSCHEMA_CHECK_FORMAT - vars: - - name: ansible_validate_jsonschema_check_format - notes: - - The value of I(data) option should be either a valid B(JSON) object or a B(JSON) string. - - The value of I(criteria) should be B(list) of B(dict) or B(list) of B(strings) and each - B(string) within the B(list) entry should be a valid B(dict) when read in python. -""" - -import json - -from ansible.errors import AnsibleError -from ansible.module_utils._text import to_text -from ansible.module_utils.basic import missing_required_lib -from ansible.module_utils.six import string_types -from ansible.utils.display import Display - -from ansible_collections.ansible.utils.plugins.module_utils.common.utils import to_list -from ansible_collections.ansible.utils.plugins.plugin_utils.base.validate import ValidateBase - - -display = Display() - -# PY2 compatibility for JSONDecodeError -try: - from json.decoder import JSONDecodeError -except ImportError: - JSONDecodeError = ValueError - -try: - import jsonschema - import jsonschema.validators - - HAS_JSONSCHEMA = True -except ImportError: - HAS_JSONSCHEMA = False - - -def to_path(fpath): - return ".".join(str(index) for index in fpath) - - -def json_path(absolute_path): - path = "$" - for elem in absolute_path: - if isinstance(elem, int): - path += "[" + str(elem) + "]" - else: - path += "." + elem - return path - - -class Validate(ValidateBase): - # All available schema versions with the format_check and validator class names. - _JSONSCHEMA_DRAFTS = { - "draft3": { - "validator_name": "Draft3Validator", - "format_checker_name": "draft3_format_checker", - }, - "draft4": { - "validator_name": "Draft4Validator", - "format_checker_name": "draft4_format_checker", - }, - "draft6": { - "validator_name": "Draft6Validator", - "format_checker_name": "draft6_format_checker", - }, - "draft7": { - "validator_name": "Draft7Validator", - "format_checker_name": "draft7_format_checker", - }, - "2019-09": { - "validator_name": "Draft201909Validator", - "format_checker_name": "draft201909_format_checker", - }, - "2020-12": { - "validator_name": "Draft202012Validator", - "format_checker_name": "draft202012_format_checker", - }, - } - - @staticmethod - def _check_reqs(): - """Check the prerequisites are installed for jsonschema - - :return None: In case all prerequisites are satisfied - """ - if not HAS_JSONSCHEMA: - raise AnsibleError(missing_required_lib("jsonschema")) - - def _check_args(self): - """Ensure specific args are set - - :return: None: In case all arguments passed are valid - """ - try: - if isinstance(self._data, string_types): - self._data = json.loads(self._data) - else: - self._data = json.loads(json.dumps(self._data)) - - except (TypeError, JSONDecodeError) as exe: - msg = ( - "'data' option value is invalid, value should a valid JSON." - " Failed to read with error '{err}'".format( - err=to_text(exe, errors="surrogate_then_replace"), - ) - ) - raise AnsibleError(msg) - - try: - criteria = [] - for item in to_list(self._criteria): - if isinstance(self._criteria, string_types): - criteria.append(json.loads(item)) - else: - criteria.append(json.loads(json.dumps(item))) - - self._criteria = criteria - except (TypeError, JSONDecodeError) as exe: - msg = ( - "'criteria' option value is invalid, value should a valid JSON." - " Failed to read with error '{err}'".format( - err=to_text(exe, errors="surrogate_then_replace"), - ) - ) - raise AnsibleError(msg) - - def _check_drafts(self): - """For every possible draft check if our jsonschema version supports it and exchange the class names with - the actual classes. If it is not supported the draft is removed from the list. - """ - for draft in list(self._JSONSCHEMA_DRAFTS.keys()): - draft_config = self._JSONSCHEMA_DRAFTS[draft] - try: - validator_class = getattr(jsonschema, draft_config["validator_name"]) - except AttributeError: - display.vvv( - 'jsonschema draft "{draft}" not supported in this version'.format(draft=draft), - ) - del self._JSONSCHEMA_DRAFTS[draft] - continue - draft_config["validator"] = validator_class - try: - format_checker_class = validator_class.FORMAT_CHECKER - except AttributeError: - # Older jsonschema version - format_checker_class = getattr(jsonschema, draft_config["format_checker_name"]) - draft_config["format_checker"] = format_checker_class - - def validate(self): - """Std entry point for a validate execution - - :return: Errors or parsed text as structured data - :rtype: dict - - :example: - - The parse function of a parser should return a dict: - {"errors": [a list of errors]} - or - {"parsed": obj} - """ - self._check_reqs() - self._check_args() - self._check_drafts() - - try: - self._validate_jsonschema() - except Exception as exc: - return {"errors": to_text(exc, errors="surrogate_then_replace")} - - return self._result - - def _validate_jsonschema(self): - error_messages = None - - draft = self._get_sub_plugin_options("draft") - check_format = self._get_sub_plugin_options("check_format") - error_messages = [] - - for criteria in self._criteria: - format_checker = None - validator_class = None - if draft is not None: - try: - validator_class = self._JSONSCHEMA_DRAFTS[draft]["validator"] - except KeyError: - display.warning( - 'No validator available for "{draft}", falling back to autodetection. A newer version of jsonschema might support this draft.'.format( - draft=draft, - ), - ) - if validator_class is None: - # Either no draft was specified or specified draft has no validator class - # in installed jsonschema version. Do autodetection instead. - validator_class = jsonschema.validators.validator_for(criteria) - - if check_format: - try: - format_checker = validator_class.FORMAT_CHECKER - except AttributeError: - # TODO: Remove when Python 3.6 support is dropped. - # On jsonschema<4.5, there is no connection between a validator and the correct format checker. - # So we iterate through our known list of validators and if one matches the current class - # we use the format_checker from that validator. - for draft, draft_config in self._JSONSCHEMA_DRAFTS.items(): - if validator_class == draft_config["validator"]: - display.vvv( - "Using format_checker for {draft} validator".format(draft=draft), - ) - format_checker = draft_config["format_checker"] - break - else: - display.warning("jsonschema format checks not available") - - validator = validator_class(criteria, format_checker=format_checker) - validation_errors = sorted(validator.iter_errors(self._data), key=lambda e: e.path) - - if validation_errors: - if "errors" not in self._result: - self._result["errors"] = [] - - for validation_error in validation_errors: - if isinstance(validation_error, jsonschema.ValidationError): - error = { - "message": validation_error.message, - "data_path": to_path(validation_error.absolute_path), - "json_path": json_path(validation_error.absolute_path), - "schema_path": to_path(validation_error.relative_schema_path), - "relative_schema": validation_error.schema, - "expected": validation_error.validator_value, - "validator": validation_error.validator, - "found": validation_error.instance, - } - self._result["errors"].append(error) - error_message = "At '{schema_path}' {message}. ".format( - schema_path=error["schema_path"], - message=error["message"], - ) - error_messages.append(error_message) - if error_messages: - if "msg" not in self._result: - self._result["msg"] = "\n".join(error_messages) - else: - self._result["msg"] += "\n".join(error_messages) diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/test/in_any_network.py b/ansible/collections/ansible_collections/ansible/utils/plugins/test/in_any_network.py deleted file mode 100644 index 10bc2461..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/test/in_any_network.py +++ /dev/null @@ -1,109 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Test plugin file for netaddr tests: in_any_network -""" - -from __future__ import absolute_import, division, print_function - -from ansible_collections.ansible.utils.plugins.plugin_utils.base.utils import _validate_args -from ansible_collections.ansible.utils.plugins.test.in_network import _in_network - - -__metaclass__ = type - -DOCUMENTATION = """ - name: in_any_network - author: Priyam Sahoo (@priyamsahoo) - version_added: "2.2.0" - short_description: Test if an IP or network falls in any network - description: - - This plugin checks if the provided IP or network address belongs to the provided list network addresses - options: - ip: - description: - - A string that represents an IP address of a host or network - - 'For example: C(10.1.1.1)' - type: str - required: True - networks: - description: - - A list of string and each string represents a network address in CIDR form - - "For example: C(['10.0.0.0/8', '192.168.1.0/24'])" - type: list - required: True - notes: -""" - -EXAMPLES = r""" - -#### Simple examples - -- name: Set network list - ansible.builtin.set_fact: - networks: - - "10.0.0.0/8" - - "192.168.1.0/24" - -- name: Check if 10.1.1.1 is in the provided network list - ansible.builtin.set_fact: - data: "{{ '10.1.1.1' is ansible.utils.in_any_network networks }}" - -# TASK [Check if 10.1.1.1 is in the provided network list] ************************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Set network list - ansible.builtin.set_fact: - networks: - - "10.0.0.0/8" - - "192.168.1.0/24" - - "172.16.0.0/16" - -- name: Check if 8.8.8.8 is not in the provided network list - ansible.builtin.set_fact: - data: "{{ '8.8.8.8' is not ansible.utils.in_any_network networks }}" - -# TASK [Check if 8.8.8.8 is not in the provided network list] ************************ -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } -""" - -RETURN = """ - data: - description: - - If jinja test satisfies plugin expression C(true) - - If jinja test does not satisfy plugin expression C(false) -""" - - -def _in_any_network(ip, networks): - """Test if an IP or network is in any network""" - - params = {"ip": ip, "networks": networks} - _validate_args("in_any_network", DOCUMENTATION, params) - - bools = [_in_network(ip, network) for network in networks] - if True in bools: - return True - return False - - -class TestModule(object): - """network jinja test""" - - test_map = {"in_any_network": _in_any_network} - - def tests(self): - return self.test_map diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/test/in_network.py b/ansible/collections/ansible_collections/ansible/utils/plugins/test/in_network.py deleted file mode 100644 index df693adb..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/test/in_network.py +++ /dev/null @@ -1,127 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Test plugin file for netaddr tests: in_network -""" - -from __future__ import absolute_import, division, print_function - -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddress_utils import ( - _is_subnet_of, - _need_ipaddress, - ip_network, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.base.utils import _validate_args - - -__metaclass__ = type - -DOCUMENTATION = """ - name: in_network - author: Priyam Sahoo (@priyamsahoo) - version_added: "2.2.0" - short_description: Test if IP address falls in the network - description: - - This plugin checks if the provided IP address belongs to the provided network - options: - ip: - description: - - A string that represents an IP address - - 'For example: C(10.1.1.1)' - type: str - required: True - network: - description: - - A string that represents the network address in CIDR form - - 'For example: C(10.0.0.0/8)' - type: str - required: True - notes: -""" - -EXAMPLES = r""" - -#### Simple examples - -- name: Check if 10.1.1.1 is in 10.0.0.0/8 - ansible.builtin.set_fact: - data: "{{ '10.1.1.1' is ansible.utils.in_network '10.0.0.0/8' }}" - -# TASK [Check if 10.1.1.1 is in 10.0.0.0/8] *********************************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Check if 10.1.1.1 is not in 192.168.1.0/24 - ansible.builtin.set_fact: - data: "{{ '10.1.1.1' is not ansible.utils.in_network '192.168.1.0/24' }}" - -# TASK [Check if 10.1.1.1 is not in 192.168.1.0/24] **************************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Check if 2001:db8:a::123 is in 2001:db8:a::/64 - ansible.builtin.set_fact: - data: "{{ '2001:db8:a::123' is ansible.utils.in_network '2001:db8:a::/64' }}" - -# TASK [Check if 2001:db8:a::123 is in 2001:db8:a::/64] **************************** -# task path: /home/prsahoo/playbooks/collections/localhost_test/utils_in_network.yml:16 -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Check if 2001:db8:a::123 is not in 10.0.0.0/8 - ansible.builtin.set_fact: - data: "{{ '2001:db8:a::123' is not ansible.utils.in_network '10.0.0.0/8' }}" - -# TASK [Check if 2001:db8:a::123 is not in 10.0.0.0/8] ********************************* -# task path: /home/prsahoo/playbooks/collections/localhost_test/utils_in_network.yml:20 -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } -""" - -RETURN = """ - data: - description: - - If jinja test satisfies plugin expression C(true) - - If jinja test does not satisfy plugin expression C(false) -""" - - -@_need_ipaddress -def _in_network(ip, network): - """Test if an address or network is in a network""" - - params = {"ip": ip, "network": network} - _validate_args("in_network", DOCUMENTATION, params) - - try: - return _is_subnet_of(ip_network(ip), ip_network(network)) - except Exception: - return False - - -class TestModule(object): - """network jinja test""" - - test_map = {"in_network": _in_network} - - def tests(self): - return self.test_map diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/test/in_one_network.py b/ansible/collections/ansible_collections/ansible/utils/plugins/test/in_one_network.py deleted file mode 100644 index a1e2fe07..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/test/in_one_network.py +++ /dev/null @@ -1,109 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Test plugin file for netaddr tests: in_one_network -""" - -from __future__ import absolute_import, division, print_function - -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddress_utils import ( - _validate_args, -) -from ansible_collections.ansible.utils.plugins.test.in_network import _in_network - - -__metaclass__ = type - -DOCUMENTATION = """ - name: in_one_network - author: Priyam Sahoo (@priyamsahoo) - version_added: "2.2.0" - short_description: Test if IP address belongs in any one of the networks in the list - description: - - This plugin checks if the provided IP address belongs to the provided list network addresses - options: - ip: - description: - - A string that represents an IP address - - 'For example: C(10.1.1.1)' - type: str - required: True - networks: - description: - - A list of string and each string represents a network address in CIDR form - - "For example: C(['10.0.0.0/8', '192.168.1.0/24'])" - type: list - required: True - notes: -""" - -EXAMPLES = r""" - -#### Simple examples - -- name: Set network list - ansible.builtin.set_fact: - networks: - - "10.0.0.0/8" - - "192.168.1.0/24" - -- name: Check if 10.1.1.1 is in the provided network list - ansible.builtin.set_fact: - data: "{{ '10.1.1.1' is ansible.utils.in_one_network networks }}" - -# TASK [Check if 10.1.1.1 is in the provided network list] ********************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false - -- name: Set network list - ansible.builtin.set_fact: - networks: - - "10.0.0.0/8" - - "10.1.1.0/24" - -- name: Check if 10.1.1.1 is not in the provided network list - ansible.builtin.set_fact: - data: "{{ '10.1.1.1' is not ansible.utils.in_one_network networks }}" - -# TASK [Check if 10.1.1.1 is in not the provided network list] ************************ -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } -""" - -RETURN = """ - data: - description: - - If jinja test satisfies plugin expression C(true) - - If jinja test does not satisfy plugin expression C(false) -""" - - -def _in_one_network(ip, networks): - """Test if an IP or network is in one network""" - - params = {"ip": ip, "networks": networks} - _validate_args("in_one_network", DOCUMENTATION, params) - - bools = [_in_network(ip, network) for network in networks] - if bools.count(True) == 1: - return True - return False - - -class TestModule(object): - """network jinja test""" - - test_map = {"in_one_network": _in_one_network} - - def tests(self): - return self.test_map diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/test/ip.py b/ansible/collections/ansible_collections/ansible/utils/plugins/test/ip.py deleted file mode 100644 index e2be3ab5..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/test/ip.py +++ /dev/null @@ -1,131 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Test plugin file for netaddr tests: ip -""" - -from __future__ import absolute_import, division, print_function - -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddress_utils import ( - _need_ipaddress, - ip_network, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.base.utils import _validate_args - - -__metaclass__ = type - -DOCUMENTATION = """ - name: ip - author: Priyam Sahoo (@priyamsahoo) - version_added: "2.2.0" - short_description: Test if something in an IP address or network - description: - - This plugin checks if the provided value is a valid host or network IP address - options: - ip: - description: - - A string that represents the value against which the test is going to be performed - - 'For example: C(10.1.1.1), C(2001:db8:a::123), or C("hello-world")' - type: str - required: True - notes: -""" - -EXAMPLES = r""" - -#### Simple examples - -- name: Check if 10.1.1.1 is a valid IP address - ansible.builtin.set_fact: - data: "{{ '10.1.1.1' is ansible.utils.ip }}" - -# TASK [Check if 10.1.1.1 is a valid IP address] ***************************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Check if 2001:db8:a::123 is a valid IP address - ansible.builtin.set_fact: - data: "{{ '2001:db8:a::123' is ansible.utils.ip }}" - -# TASK [Check if 2001:db8:a::123 is a valid IP address] ********************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Check if "hello-world" is not a valid IP address - ansible.builtin.set_fact: - data: "{{ 'hello-world' is not ansible.utils.ip }}" - -# TASK [Check if "hello-world" is not a valid IP address] ******************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Check if 300.1.1.1 is a valid IP address - ansible.builtin.set_fact: - data: "{{ '300.1.1.1' is ansible.utils.ip }}" - -# TASK [Check if 300.1.1.1 is a valid IP address] **************************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": false -# }, -# "changed": false -# } - -- name: Check if 10.0.0.0/8 is a valid IP address - ansible.builtin.set_fact: - data: "{{ '10.0.0.0/8' is ansible.utils.ip }}" - -# TASK [Check if 10.0.0.0/8 is a valid IP address] *************************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } -""" - -RETURN = """ - data: - description: - - If jinja test satisfies plugin expression C(true) - - If jinja test does not satisfy plugin expression C(false) -""" - - -@_need_ipaddress -def _ip(ip): - """Test if something in an IP address or network""" - - params = {"ip": ip} - _validate_args("ip", DOCUMENTATION, params) - - try: - ip_network(ip) - return True - except Exception: - return False - - -class TestModule(object): - """network jinja test""" - - test_map = {"ip": _ip} - - def tests(self): - return self.test_map diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/test/ip_address.py b/ansible/collections/ansible_collections/ansible/utils/plugins/test/ip_address.py deleted file mode 100644 index 90a2788d..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/test/ip_address.py +++ /dev/null @@ -1,107 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Test plugin file for netaddr tests: ip_address -""" - -from __future__ import absolute_import, division, print_function - -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddress_utils import ( - _need_ipaddress, - ip_address, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.base.utils import _validate_args - - -__metaclass__ = type - -DOCUMENTATION = """ - name: ip_address - author: Priyam Sahoo (@priyamsahoo) - version_added: "2.2.0" - short_description: Test if something in an IP address - description: - - This plugin checks if the provided value is a valid host IP address - options: - ip: - description: - - A string that represents the value against which the test is going to be performed - - 'For example: C(10.1.1.1) or C("hello-world")' - type: str - required: True - notes: -""" - -EXAMPLES = r""" - -#### Simple examples - -- name: Check if 10.1.1.1 is a valid IP address - ansible.builtin.set_fact: - data: "{{ '10.1.1.1' is ansible.utils.ip_address }}" - -# TASK [Check if 10.1.1.1 is a valid IP address] ************************************* -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Check if "hello-world" is not a valid IP address - ansible.builtin.set_fact: - data: "{{ 'hello-world' is not ansible.utils.ip_address }}" - -# TASK [Check if "hello-world" is not a valid IP address] **************************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Check if 10.0.0.0/8 is a valid IP address - ansible.builtin.set_fact: - data: "{{ '10.0.0.0/8' is ansible.utils.ip_address }}" - -# TASK [Check if 10.0.0.0/8 is a valid IP address] *********************************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": false -# }, -# "changed": false -# } -""" - -RETURN = """ - data: - description: - - If jinja test satisfies plugin expression C(true) - - If jinja test does not satisfy plugin expression C(false) -""" - - -@_need_ipaddress -def _ip_address(ip): - """Test if something in an IP address""" - - params = {"ip": ip} - _validate_args("ip_address", DOCUMENTATION, params) - - try: - ip_address(ip) - return True - except Exception: - return False - - -class TestModule(object): - """network jinja test""" - - test_map = {"ip_address": _ip_address} - - def tests(self): - return self.test_map diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/test/ipv4.py b/ansible/collections/ansible_collections/ansible/utils/plugins/test/ipv4.py deleted file mode 100644 index 49a0469b..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/test/ipv4.py +++ /dev/null @@ -1,106 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Test plugin file for netaddr tests: ipv4 -""" - -from __future__ import absolute_import, division, print_function - -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddress_utils import ( - _need_ipaddress, - _validate_args, - ip_network, -) - - -__metaclass__ = type - -DOCUMENTATION = """ - name: ipv4 - author: Priyam Sahoo (@priyamsahoo) - version_added: "2.2.0" - short_description: Test if something is an IPv4 address or network - description: - - This plugin checks if the provided value is a valid host or network IP address with IPv4 addressing scheme - options: - ip: - description: - - A string that represents the value against which the test is going to be performed - - 'For example: C(10.1.1.1), C(10.0.0.0/8), or C(fe80::216:3eff:fee4:16f3)' - type: str - required: True - notes: -""" - -EXAMPLES = r""" - -#### Simple examples - -- name: Check if 10.0.0.0/8 is a valid IPv4 address - ansible.builtin.set_fact: - data: "{{ '10.0.0.0/8' is ansible.utils.ipv4 }}" - -# TASK [Check if 10.0.0.0/8 is a valid IPv4 address] *************************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Check if 192.168.1.250 is a valid IPv4 address - ansible.builtin.set_fact: - data: "{{ '192.168.1.250' is ansible.utils.ipv4 }}" - -# TASK [Check if 192.168.1.250 is a valid IPv4 address] ******************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Check if fe80::216:3eff:fee4:16f3 is not a valid IPv4 address - ansible.builtin.set_fact: - data: "{{ 'fe80::216:3eff:fee4:16f3' is not ansible.utils.ipv4 }}" - -# TASK [Check if fe80::216:3eff:fee4:16f3 is not a valid IPv4 address] ********* -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } -""" - -RETURN = """ - data: - description: - - If jinja test satisfies plugin expression C(true) - - If jinja test does not satisfy plugin expression C(false) -""" - - -@_need_ipaddress -def _ipv4(ip): - """Test if something in an IPv4 address or network""" - - params = {"ip": ip} - _validate_args("ipv4", DOCUMENTATION, params) - - try: - return ip_network(ip).version == 4 - except Exception: - return False - - -class TestModule(object): - """network jinja test""" - - test_map = {"ipv4": _ipv4} - - def tests(self): - return self.test_map diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/test/ipv4_address.py b/ansible/collections/ansible_collections/ansible/utils/plugins/test/ipv4_address.py deleted file mode 100644 index 60b2012b..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/test/ipv4_address.py +++ /dev/null @@ -1,106 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Test plugin file for netaddr tests: ipv4_address -""" - -from __future__ import absolute_import, division, print_function - -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddress_utils import ( - _need_ipaddress, - ip_address, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.base.utils import _validate_args - - -__metaclass__ = type - -DOCUMENTATION = """ - name: ipv4_address - author: Priyam Sahoo (@priyamsahoo) - version_added: "2.2.0" - short_description: Test if something is an IPv4 address - description: - - This plugin checks if the provided value is a valid host IP address with IPv4 addressing scheme - options: - ip: - description: - - A string that represents the value against which the test is going to be performed - - 'For example: C(10.1.1.1), C(10.0.0.0/8), or C(fe80::216:3eff:fee4:16f3)' - type: str - required: True - notes: -""" - -EXAMPLES = r""" - -#### Simple examples - -- name: Check if 10.1.1.1 is a valid IPv4 address - ansible.builtin.set_fact: - data: "{{ '10.1.1.1' is ansible.utils.ipv4_address }}" - -# TASK [Check if 10.1.1.1 is a valid IPv4 address] ************************************* -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Check if 10.1.1.1/31 is not a valid IPv4 address - ansible.builtin.set_fact: - data: "{{ '10.1.1.1/31' is not ansible.utils.ipv4_address }}" - -# TASK [Check if 10.1.1.1/31 is a valid IPv4 address] ********************************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Check if fe80::216:3eff:fee4:16f3 is not a valid IPv4 address - ansible.builtin.set_fact: - data: "{{ 'fe80::216:3eff:fee4:16f3' is not ansible.utils.ipv4_address }}" - -# TASK [Check if fe80::216:3eff:fee4:16f3 is not a valid IPv4 address] ********* -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } -""" - -RETURN = """ - data: - description: - - If jinja test satisfies plugin expression C(true) - - If jinja test does not satisfy plugin expression C(false) -""" - - -@_need_ipaddress -def _ipv4_address(ip): - """Test if something in an IPv4 address""" - - params = {"ip": ip} - _validate_args("ipv4_address", DOCUMENTATION, params) - - try: - return ip_address(ip).version == 4 - except Exception: - return False - - -class TestModule(object): - """network jinja test""" - - test_map = {"ipv4_address": _ipv4_address} - - def tests(self): - return self.test_map diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/test/ipv4_hostmask.py b/ansible/collections/ansible_collections/ansible/utils/plugins/test/ipv4_hostmask.py deleted file mode 100644 index affdce95..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/test/ipv4_hostmask.py +++ /dev/null @@ -1,95 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Test plugin file for netaddr tests: ipv4_hostmask -""" - -from __future__ import absolute_import, division, print_function - -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddress_utils import ( - _need_ipaddress, - ip_network, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.base.utils import _validate_args - - -__metaclass__ = type - -DOCUMENTATION = """ - name: ipv4_hostmask - author: Priyam Sahoo (@priyamsahoo) - version_added: "2.2.0" - short_description: Test if an address is a valid hostmask - description: - - This plugin checks if the provided ip address is a IPv4 hostmask or not - options: - ip: - description: - - A string that represents the value against which the test is going to be performed - - 'For example: C(0.1.255.255) or C(255.255.255.0)' - type: str - required: True - notes: -""" - -EXAMPLES = r""" - -#### Simple examples - -- name: Check if 0.0.0.255 is a hostmask - ansible.builtin.set_fact: - data: "{{ '0.0.0.255' is ansible.utils.ipv4_hostmask }}" - -# TASK [Check if 0.0.0.255 is a hostmask] *********************************************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Check if 255.255.255.0 is not a hostmask - ansible.builtin.set_fact: - data: "{{ '255.255.255.0' is not ansible.utils.ipv4_hostmask }}" - -# TASK [Check if 255.255.255.0 is a hostmask] ********************************* -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } -""" - -RETURN = """ - data: - description: - - If jinja test satisfies plugin expression C(true) - - If jinja test does not satisfy plugin expression C(false) -""" - - -@_need_ipaddress -def _ipv4_hostmask(ip): - """Test if an address is a hostmask""" - - params = {"ip": ip} - _validate_args("ipv4_hostmask", DOCUMENTATION, params) - - try: - ipaddr = ip_network("10.0.0.0/{ip}".format(ip=ip)) - return str(ipaddr.hostmask) == ip - except Exception: - return False - - -class TestModule(object): - """network jinja test""" - - test_map = {"ipv4_hostmask": _ipv4_hostmask} - - def tests(self): - return self.test_map diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/test/ipv4_netmask.py b/ansible/collections/ansible_collections/ansible/utils/plugins/test/ipv4_netmask.py deleted file mode 100644 index 4dab4383..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/test/ipv4_netmask.py +++ /dev/null @@ -1,107 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Test plugin file for netaddr tests: ipv4_netmask -""" - -from __future__ import absolute_import, division, print_function - -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddress_utils import ( - _need_ipaddress, - ip_network, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.base.utils import _validate_args - - -__metaclass__ = type - -DOCUMENTATION = """ - name: ipv4_netmask - author: Priyam Sahoo (@priyamsahoo) - version_added: "2.2.0" - short_description: Test if an address is a valid netmask - description: - - This plugin checks if the provided ip address is a valid IPv4 netmask or not - options: - mask: - description: - - A string that represents the value against which the test is going to be performed - - 'For example: C(0.1.255.255) or C(255.255.255.0)' - type: str - required: True - notes: -""" - -EXAMPLES = r""" - -#### Simple examples - -- name: Check if 255.255.255.0 is a netmask - ansible.builtin.set_fact: - data: "{{ '255.255.255.0' is ansible.utils.ipv4_netmask }}" - -# TASK [Check if 255.255.255.0 is a netmask] ******************************************* -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Check if 255.255.255.128 is a netmask - ansible.builtin.set_fact: - data: "{{ '255.255.255.128' is ansible.utils.ipv4_netmask }}" - -# TASK [Check if 255.255.255.128 is a netmask] ***************************************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Check if 255.255.255.127 is not a netmask - ansible.builtin.set_fact: - data: "{{ '255.255.255.127' is not ansible.utils.ipv4_netmask }}" - -# TASK [Check if 255.255.255.127 is not a netmask] ************************************* -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } -""" - -RETURN = """ - data: - description: - - If jinja test satisfies plugin expression C(true) - - If jinja test does not satisfy plugin expression C(false) -""" - - -@_need_ipaddress -def _ipv4_netmask(mask): - """Test for a valid IPv4 netmask""" - - params = {"mask": mask} - _validate_args("ipv4_netmask", DOCUMENTATION, params) - - try: - network = ip_network("10.0.0.0/{mask}".format(mask=mask)) - return str(network.netmask) == mask - except Exception: - return False - - -class TestModule(object): - """network jinja test""" - - test_map = {"ipv4_netmask": _ipv4_netmask} - - def tests(self): - return self.test_map diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/test/ipv6.py b/ansible/collections/ansible_collections/ansible/utils/plugins/test/ipv6.py deleted file mode 100644 index ddfb07c8..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/test/ipv6.py +++ /dev/null @@ -1,106 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Test plugin file for netaddr tests: ipv6 -""" - -from __future__ import absolute_import, division, print_function - -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddress_utils import ( - _need_ipaddress, - ip_network, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.base.utils import _validate_args - - -__metaclass__ = type - -DOCUMENTATION = """ - name: ipv6 - author: Priyam Sahoo (@priyamsahoo) - version_added: "2.2.0" - short_description: Test if something is an IPv6 address or network - description: - - This plugin checks if the provided value is a valid host or network IP address with IPv6 addressing scheme - options: - ip: - description: - - A string that represents the value against which the test is going to be performed - - 'For example: C(10.1.1.1), C(10.0.0.0/8), or C(fe80::216:3eff:fee4:16f3)' - type: str - required: True - notes: -""" - -EXAMPLES = r""" - -#### Simple examples - -- name: Check if fe80::216:3eff:fee4:16f3 is a valid IPv6 address - ansible.builtin.set_fact: - data: "{{ 'fe80::216:3eff:fee4:16f3' is ansible.utils.ipv6 }}" - -# TASK [Check if fe80::216:3eff:fee4:16f3 is a valid IPv6 address] ************* -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Check if 2001:db8:a::/64 is a valid IPv6 address - ansible.builtin.set_fact: - data: "{{ '2001:db8:a::/64' is ansible.utils.ipv6 }}" - -# TASK [Check if 2001:db8:a::/64 is a valid IPv6 address] ********************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Check if 192.169.1.250 is not a valid IPv6 address - ansible.builtin.set_fact: - data: "{{ '192.169.1.250' is not ansible.utils.ipv6 }}" - -# TASK [Check if 192.169.1.250 is not a valid IPv6 address] ******************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } -""" - -RETURN = """ - data: - description: - - If jinja test satisfies plugin expression C(true) - - If jinja test does not satisfy plugin expression C(false) -""" - - -@_need_ipaddress -def _ipv6(ip): - """Test if something in an IPv6 address or network""" - - params = {"ip": ip} - _validate_args("ipv6", DOCUMENTATION, params) - - try: - return ip_network(ip).version == 6 - except Exception: - return False - - -class TestModule(object): - """network jinja test""" - - test_map = {"ipv6": _ipv6} - - def tests(self): - return self.test_map diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/test/ipv6_address.py b/ansible/collections/ansible_collections/ansible/utils/plugins/test/ipv6_address.py deleted file mode 100644 index 80fe17b1..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/test/ipv6_address.py +++ /dev/null @@ -1,106 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Test plugin file for netaddr tests: ipv6_address -""" - -from __future__ import absolute_import, division, print_function - -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddress_utils import ( - _need_ipaddress, - ip_address, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.base.utils import _validate_args - - -__metaclass__ = type - -DOCUMENTATION = """ - name: ipv6_address - author: Priyam Sahoo (@priyamsahoo) - version_added: "2.2.0" - short_description: Test if something is an IPv6 address - description: - - This plugin checks if the provided value is a valid host IP address with IPv6 addressing scheme - options: - ip: - description: - - A string that represents the value against which the test is going to be performed - - 'For example: C(10.1.1.1), C(10.0.0.0/8), or C(fe80::216:3eff:fee4:16f3)' - type: str - required: True - notes: -""" - -EXAMPLES = r""" - -#### Simple examples - -- name: Check if fe80::216:3eff:fee4:16f3 is a valid IPv6 address - ansible.builtin.set_fact: - data: "{{ 'fe80::216:3eff:fee4:16f3' is ansible.utils.ipv6_address }}" - -# TASK [Check if fe80::216:3eff:fee4:16f3 is a valid IPv6 address] ********************* -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Check if 2001:db8:a::123/64 is not a valid IPv6 address - ansible.builtin.set_fact: - data: "{{ '2001:db8:a::123/64' is not ansible.utils.ipv6_address }}" - -# TASK [Check if 2001:db8:a::123/64 is not a valid IPv6 address] *********************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Check if 192.169.1.250 is not a valid IPv6 address - ansible.builtin.set_fact: - data: "{{ '192.169.1.250' is not ansible.utils.ipv6_address }}" - -# TASK [Check if 192.169.1.250 is not a valid IPv6 address] **************************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } -""" - -RETURN = """ - data: - description: - - If jinja test satisfies plugin expression C(true) - - If jinja test does not satisfy plugin expression C(false) -""" - - -@_need_ipaddress -def _ipv6_address(ip): - """Test if something in an IPv6 address""" - - params = {"ip": ip} - _validate_args("ipv6_address", DOCUMENTATION, params) - - try: - return ip_address(ip).version == 6 - except Exception: - return False - - -class TestModule(object): - """network jinja test""" - - test_map = {"ipv6_address": _ipv6_address} - - def tests(self): - return self.test_map diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/test/ipv6_ipv4_mapped.py b/ansible/collections/ansible_collections/ansible/utils/plugins/test/ipv6_ipv4_mapped.py deleted file mode 100644 index 9270589b..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/test/ipv6_ipv4_mapped.py +++ /dev/null @@ -1,108 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Test plugin file for netaddr tests: ipv6_ipv4_mapped -""" - -from __future__ import absolute_import, division, print_function - -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddress_utils import ( - _need_ipaddress, - _validate_args, - ip_address, -) - - -__metaclass__ = type - -DOCUMENTATION = """ - name: ipv6_ipv4_mapped - author: Priyam Sahoo (@priyamsahoo) - version_added: "2.2.0" - short_description: Test if something appears to be a mapped IPv6 to IPv4 mapped address - description: - - This plugin checks if the provided value is a valid IPv4-mapped IPv6 address - options: - ip: - description: - - A string that represents the value against which the test is going to be performed - - 'For example: C(::FFFF:10.1.1.1), C(::AAAA:10.1.1.1), or C("helloworld")' - type: str - required: True - notes: -""" - -EXAMPLES = r""" - -#### Simple examples - -- name: Check if ::FFFF:10.1.1.1 is a valid IPv4-mapped IPv6 address - ansible.builtin.set_fact: - data: "{{ '::FFFF:10.1.1.1' is ansible.utils.ipv6_ipv4_mapped }}" - -# TASK [Check if ::FFFF:10.1.1.1 is a valid IPv4-mapped IPv6 address] ************* -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Check if ::AAAA:10.1.1.1 is not a valid IPv4-mapped IPv6 address - ansible.builtin.set_fact: - data: "{{ '::AAAA:10.1.1.1' is not ansible.utils.ipv6_ipv4_mapped }}" - -# TASK [Check if ::AAAA:10.1.1.1 is not a valid IPv4-mapped IPv6 address] ****************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Check if helloworld is not a valid IPv4-mapped IPv6 address - ansible.builtin.set_fact: - data: "{{ 'helloworld' is not ansible.utils.ipv6_ipv4_mapped }}" - -# TASK [Check if helloworld is not a valid IPv4-mapped IPv6 address] *********************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } -""" - -RETURN = """ - data: - description: - - If jinja test satisfies plugin expression C(true) - - If jinja test does not satisfy plugin expression C(false) -""" - - -@_need_ipaddress -def _ipv6_ipv4_mapped(ip): - """Test if something appears to be a mapped IPv6 to IPv4 mapped address""" - - params = {"ip": ip} - _validate_args("ipv6_ipv4_mapped", DOCUMENTATION, params) - - try: - if ip_address(ip).ipv4_mapped is None: - return False - return True - except Exception: - return False - - -class TestModule(object): - """network jinja test""" - - test_map = {"ipv6_ipv4_mapped": _ipv6_ipv4_mapped} - - def tests(self): - return self.test_map diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/test/ipv6_sixtofour.py b/ansible/collections/ansible_collections/ansible/utils/plugins/test/ipv6_sixtofour.py deleted file mode 100644 index f94612ce..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/test/ipv6_sixtofour.py +++ /dev/null @@ -1,108 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Test plugin file for netaddr tests: ipv6_sixtofour -""" - -from __future__ import absolute_import, division, print_function - -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddress_utils import ( - _need_ipaddress, - ip_address, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.base.utils import _validate_args - - -__metaclass__ = type - -DOCUMENTATION = """ - name: ipv6_sixtofour - author: Priyam Sahoo (@priyamsahoo) - version_added: "2.2.0" - short_description: Test if something appears to be a 6to4 address - description: - - This plugin checks if the provided value is a valid 6to4 address - options: - ip: - description: - - A string that represents the value against which the test is going to be performed - - 'For example: C(2002:c0a8:6301:1::1), C(::AAAA:10.1.1.1), or C("hello_world")' - type: str - required: True - notes: -""" - -EXAMPLES = r""" - -#### Simple examples - -- name: Check if 2002:c0a8:6301:1::1 is a valid 6to4 address - ansible.builtin.set_fact: - data: "{{ '2002:c0a8:6301:1::1' is ansible.utils.ipv6_sixtofour }}" - -# TASK [Check if 2002:c0a8:6301:1::1 is a valid 6to4 address] **************************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Check if 2001:c0a8:6301:1::1 is not a valid 6to4 address - ansible.builtin.set_fact: - data: "{{ '2001:c0a8:6301:1::1' is not ansible.utils.ipv6_sixtofour }}" - -# TASK [Check if 2001:c0a8:6301:1::1 is not a valid 6to4 address] ************************ -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Check if helloworld is not a valid 6to4 address - ansible.builtin.set_fact: - data: "{{ 'helloworld' is not ansible.utils.ipv6_sixtofour }}" - -# TASK [Check if helloworld is not a valid 6to4 address] ********************************* -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } -""" - -RETURN = """ - data: - description: - - If jinja test satisfies plugin expression C(true) - - If jinja test does not satisfy plugin expression C(false) -""" - - -@_need_ipaddress -def _ipv6_sixtofour(ip): - """Test if something appears to be a 6to4 address""" - - params = {"ip": ip} - _validate_args("ipv6_sixtofour", DOCUMENTATION, params) - - try: - if ip_address(ip).sixtofour is None: - return False - return True - except Exception: - return False - - -class TestModule(object): - """network jinja test""" - - test_map = {"ipv6_sixtofour": _ipv6_sixtofour} - - def tests(self): - return self.test_map diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/test/ipv6_teredo.py b/ansible/collections/ansible_collections/ansible/utils/plugins/test/ipv6_teredo.py deleted file mode 100644 index bfccc67f..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/test/ipv6_teredo.py +++ /dev/null @@ -1,108 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Test plugin file for netaddr tests: ipv6_teredo -""" - -from __future__ import absolute_import, division, print_function - -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddress_utils import ( - _need_ipaddress, - ip_address, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.base.utils import _validate_args - - -__metaclass__ = type - -DOCUMENTATION = """ - name: ipv6_teredo - author: Priyam Sahoo (@priyamsahoo) - version_added: "2.2.0" - short_description: Test if something appears to be an IPv6 teredo address - description: - - This plugin checks if the provided value is a valid IPv6 teredo address - options: - ip: - description: - - A string that represents the value against which the test is going to be performed - - 'For example: C(2001::c0a8:6301:1), C(2002::c0a8:6301:1), or C("hello_world")' - type: str - required: True - notes: -""" - -EXAMPLES = r""" - -#### Simple examples - -- name: Check if 2001::c0a8:6301:1 is a valid IPv6 teredo address - ansible.builtin.set_fact: - data: "{{ '2001::c0a8:6301:1' is ansible.utils.ipv6_teredo }}" - -# TASK [Check if 2001::c0a8:6301:1 is a valid IPv6 teredo address] ******************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Check if 2002::c0a8:6301:1 is not a valid IPv6 teredo address - ansible.builtin.set_fact: - data: "{{ '2002::c0a8:6301:1' is not ansible.utils.ipv6_teredo }}" - -# TASK [Check if 2002::c0a8:6301:1 is not a valid IPv6 teredo address] **************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Check if hello_world is not a valid IPv6 teredo address - ansible.builtin.set_fact: - data: "{{ 'hello_world' is not ansible.utils.ipv6_teredo }}" - -# TASK [Check if hello_world is not a valid IPv6 teredo address] ********************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } -""" - -RETURN = """ - data: - description: - - If jinja test satisfies plugin expression C(true) - - If jinja test does not satisfy plugin expression C(false) -""" - - -@_need_ipaddress -def _ipv6_teredo(ip): - """Test if something is an IPv6 teredo address""" - - params = {"ip": ip} - _validate_args("ipv6_teredo", DOCUMENTATION, params) - - try: - if ip_address(ip).teredo is None: - return False - return True - except Exception: - return False - - -class TestModule(object): - """network jinja test""" - - test_map = {"ipv6_teredo": _ipv6_teredo} - - def tests(self): - return self.test_map diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/test/loopback.py b/ansible/collections/ansible_collections/ansible/utils/plugins/test/loopback.py deleted file mode 100644 index 7ce971a1..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/test/loopback.py +++ /dev/null @@ -1,104 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Test plugin file for netaddr tests: loopback -""" - -from __future__ import absolute_import, division, print_function - -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddress_utils import ( - _need_ipaddress, - _validate_args, - ip_address, -) - - -__metaclass__ = type - -DOCUMENTATION = """ - name: loopback - author: Priyam Sahoo (@priyamsahoo) - version_added: "2.2.0" - short_description: Test if an IP address is a loopback - description: - - This plugin checks if the provided value is a valid loopback IP address - options: - ip: - description: - - A string that represents the value against which the test is going to be performed - - 'For example: C(127.0.0.1) or C(2002::c0a8:6301:1)' - type: str - required: True - notes: -""" - -EXAMPLES = r""" - -- name: Check if 127.10.10.10 is a valid loopback address - ansible.builtin.set_fact: - data: "{{ '127.10.10.10' is ansible.utils.loopback }}" - -# TASK [Check if 127.10.10.10 is a valid loopback address] ************************* -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Check if 10.1.1.1 is not a valid loopback address - ansible.builtin.set_fact: - data: "{{ '10.1.1.1' is not ansible.utils.loopback }}" - -# TASK [Check if 10.1.1.1 is not a valid loopback address] ************************* -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Check if ::1 is a valid loopback address - ansible.builtin.set_fact: - data: "{{ '::1' is ansible.utils.loopback }}" - -# TASK [Check if ::1 is a valid loopback address] ********************************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } -""" - -RETURN = """ - data: - description: - - If jinja test satisfies plugin expression C(true) - - If jinja test does not satisfy plugin expression C(false) -""" - - -@_need_ipaddress -def _loopback(ip): - """Test if an IP address is a loopback""" - - params = {"ip": ip} - _validate_args("loopback", DOCUMENTATION, params) - - try: - return ip_address(ip).is_loopback - except Exception: - return False - - -class TestModule(object): - """network jinja test""" - - test_map = {"loopback": _loopback} - - def tests(self): - return self.test_map diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/test/mac.py b/ansible/collections/ansible_collections/ansible/utils/plugins/test/mac.py deleted file mode 100644 index c65764a2..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/test/mac.py +++ /dev/null @@ -1,129 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Test plugin file for netaddr tests: mac -""" - -from __future__ import absolute_import, division, print_function - -import re - -from ansible_collections.ansible.utils.plugins.plugin_utils.base.utils import _validate_args - - -__metaclass__ = type - -DOCUMENTATION = """ - name: mac - author: Priyam Sahoo (@priyamsahoo) - version_added: "2.2.0" - short_description: Test if something appears to be a valid MAC address - description: - - This plugin checks if the provided value is a valid MAC address that follows the industry level standards - options: - mac: - description: - - A string that represents the value against which the test is going to be performed - - 'For example: C(02:16:3e:e4:16:f3), C(02-16-3e-e4-16-f3), C(0216.3ee4.16f3), or C(02163ee416f3)' - type: str - required: True - notes: -""" - -EXAMPLES = r""" - -- name: Check if 02:16:3e:e4:16:f3 is a valid MAC address - ansible.builtin.set_fact: - data: "{{ '02:16:3e:e4:16:f3' is ansible.utils.mac }}" - -# TASK [Check if 02:16:3e:e4:16:f3 is a valid MAC address] ******************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Check if 02-16-3e-e4-16-f3 is a valid MAC address - ansible.builtin.set_fact: - data: "{{ '02-16-3e-e4-16-f3' is ansible.utils.mac }}" - -# TASK [Check if 02-16-3e-e4-16-f3 is a valid MAC address] ******************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Check if 0216.3ee4.16f3 is a valid MAC address - ansible.builtin.set_fact: - data: "{{ '0216.3ee4.16f3' is ansible.utils.mac }}" - -# TASK [Check if 0216.3ee4.16f3 is a valid MAC address] *********************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Check if 02163ee416f3 is a valid MAC address - ansible.builtin.set_fact: - data: "{{ '02163ee416f3' is ansible.utils.mac }}" - -# TASK [Check if 02163ee416f3 is a valid MAC address] ************************* -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Check if helloworld is not a valid MAC address - ansible.builtin.set_fact: - data: "{{ 'helloworld' is not ansible.utils.mac }}" - -# TASK [Check if helloworld is not a valid MAC address] *********************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } -""" - -RETURN = """ - data: - description: - - If jinja test satisfies plugin expression C(true) - - If jinja test does not satisfy plugin expression C(false) -""" - - -def _mac(mac): - """Test if something appears to be a valid mac address""" - - params = {"mac": mac} - _validate_args("mac", DOCUMENTATION, params) - - # IEEE EUI-48 upper and lower, commom unix - re1 = r"^([0-9a-f]{2}[:-]){5}[0-9a-f]{2}$" - # Cisco triple hextex - re2 = r"^([0-9a-f]{4}\.[0-9a-f]{4}\.[0-9a-f]{4})$" - # Bare - re3 = r"^[0-9a-f]{12}$" - regex = "(?i){re1}|{re2}|{re3}".format(re1=re1, re2=re2, re3=re3) - return bool(re.match(regex, mac)) - - -class TestModule(object): - """network jinja test""" - - test_map = {"mac": _mac} - - def tests(self): - return self.test_map diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/test/multicast.py b/ansible/collections/ansible_collections/ansible/utils/plugins/test/multicast.py deleted file mode 100644 index f40827b5..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/test/multicast.py +++ /dev/null @@ -1,116 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Test plugin file for netaddr tests: multicast -""" - -from __future__ import absolute_import, division, print_function - -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddress_utils import ( - _need_ipaddress, - ip_address, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.base.utils import _validate_args - - -__metaclass__ = type - -DOCUMENTATION = """ - name: multicast - author: Priyam Sahoo (@priyamsahoo) - version_added: "2.2.0" - short_description: Test for a multicast IP address - description: - - This plugin checks if the provided value is a valid multicast IP address - options: - ip: - description: - - A string that represents the value against which the test is going to be performed - - 'For example: C(224.0.0.1) or C(127.0.0.1)' - type: str - required: True - notes: -""" - -EXAMPLES = r""" - -- name: Check if 224.0.0.1 is a valid multicast IP address - ansible.builtin.set_fact: - data: "{{ '224.0.0.1' is ansible.utils.multicast }}" - -# TASK [Check if 224.0.0.1 is a valid multicast IP address] ********************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Check if ff02::1 is a valid multicast IP address - ansible.builtin.set_fact: - data: "{{ 'ff02::1' is ansible.utils.multicast }}" - -# TASK [Check if ff02::1 is a valid multicast IP address] *************************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Check if 127.0.0.1 is not a valid multicast IP address - ansible.builtin.set_fact: - data: "{{ '127.0.0.1' is not ansible.utils.multicast }}" - -# TASK [Check if 127.0.0.1 is not a valid multicast IP address] ********************* -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Check if helloworld is not a valid multicast IP address - ansible.builtin.set_fact: - data: "{{ 'helloworld' is not ansible.utils.multicast }}" - -# TASK [Check if helloworld is not a valid multicast IP address] ******************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } -""" - -RETURN = """ - data: - description: - - If jinja test satisfies plugin expression C(true) - - If jinja test does not satisfy plugin expression C(false) -""" - - -@_need_ipaddress -def _multicast(ip): - """Test for a multicast IP address""" - - params = {"ip": ip} - _validate_args("multicast", DOCUMENTATION, params) - - try: - return ip_address(ip).is_multicast - except Exception: - return False - - -class TestModule(object): - """network jinja test""" - - test_map = {"multicast": _multicast} - - def tests(self): - return self.test_map diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/test/private.py b/ansible/collections/ansible_collections/ansible/utils/plugins/test/private.py deleted file mode 100644 index 4dc2a4c5..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/test/private.py +++ /dev/null @@ -1,92 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Test plugin file for netaddr tests: private -""" - -from __future__ import absolute_import, division, print_function - -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddress_utils import ( - _need_ipaddress, - ip_address, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.base.utils import _validate_args - - -__metaclass__ = type - -DOCUMENTATION = """ - name: private - author: Priyam Sahoo (@priyamsahoo) - version_added: "2.2.0" - short_description: Test if an IP address is private - description: - - This plugin checks if the provided value is a private IP address - options: - ip: - description: - - A string that represents the value against which the test is going to be performed - - 'For example: C(10.1.1.1), C(8.8.8.8), or C(192.168.1.250)' - type: str - required: True - notes: -""" - -EXAMPLES = r""" - -- name: Check if 10.1.1.1 is a private IP address - ansible.builtin.set_fact: - data: "{{ '10.1.1.1' is ansible.utils.private }}" - -# TASK [Check if 10.1.1.1 is a private IP address] ******************************* -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Check if 8.8.8.8 is not a private IP address - ansible.builtin.set_fact: - data: "{{ '8.8.8.8' is not ansible.utils.private }}" - -# TASK [Check if 8.8.8.8 is not a private IP address] ****************************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } -""" - -RETURN = """ - data: - description: - - If jinja test satisfies plugin expression C(true) - - If jinja test does not satisfy plugin expression C(false) -""" - - -@_need_ipaddress -def _private(ip): - """Test if an IP address is private""" - - params = {"ip": ip} - _validate_args("private", DOCUMENTATION, params) - - try: - return ip_address(ip).is_private - except Exception: - return False - - -class TestModule(object): - """network jinja test""" - - test_map = {"private": _private} - - def tests(self): - return self.test_map diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/test/public.py b/ansible/collections/ansible_collections/ansible/utils/plugins/test/public.py deleted file mode 100644 index b5c19c8a..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/test/public.py +++ /dev/null @@ -1,92 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Test plugin file for netaddr tests: public -""" - -from __future__ import absolute_import, division, print_function - -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddress_utils import ( - _need_ipaddress, - _validate_args, - ip_address, -) - - -__metaclass__ = type - -DOCUMENTATION = """ - name: public - author: Priyam Sahoo (@priyamsahoo) - version_added: "2.2.0" - short_description: Test if an IP address is public - description: - - This plugin checks if the provided value is a public IP address - options: - ip: - description: - - A string that represents the value against which the test is going to be performed - - 'For example: C(8.8.8.8), C(10.1.1.1), or C(192.168.1.250)' - type: str - required: True - notes: -""" - -EXAMPLES = r""" - -- name: Check if 8.8.8.8 is a public IP address - ansible.builtin.set_fact: - data: "{{ '8.8.8.8' is ansible.utils.public }}" - -# TASK [Check if 8.8.8.8 is a public IP address] ********************************* -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Check if 10.1.1.1 is not a public IP address - ansible.builtin.set_fact: - data: "{{ '10.1.1.1' is not ansible.utils.public }}" - -# TASK [Check if 10.1.1.1 is not a public IP address] ****************************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } -""" - -RETURN = """ - data: - description: - - If jinja test satisfies plugin expression C(true) - - If jinja test does not satisfy plugin expression C(false) -""" - - -@_need_ipaddress -def _public(ip): - """Test if an IP address is public""" - - params = {"ip": ip} - _validate_args("public", DOCUMENTATION, params) - - try: - return ip_address(ip).is_global - except Exception: - return False - - -class TestModule(object): - """network jinja test""" - - test_map = {"public": _public} - - def tests(self): - return self.test_map diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/test/reserved.py b/ansible/collections/ansible_collections/ansible/utils/plugins/test/reserved.py deleted file mode 100644 index 9ba3670f..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/test/reserved.py +++ /dev/null @@ -1,92 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Test plugin file for netaddr tests: reserved -""" - -from __future__ import absolute_import, division, print_function - -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddress_utils import ( - _need_ipaddress, - ip_address, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.base.utils import _validate_args - - -__metaclass__ = type - -DOCUMENTATION = """ - name: reserved - author: Priyam Sahoo (@priyamsahoo) - version_added: "2.2.0" - short_description: Test for a reserved IP address - description: - - This plugin checks if the provided value is a reserved IP address - options: - ip: - description: - - A string that represents the value against which the test is going to be performed - - 'For example: C(253.0.0.1) or C(128.146.1.7)' - type: str - required: True - notes: -""" - -EXAMPLES = r""" - -- name: Check if 253.0.0.1 is a reserved IP address - ansible.builtin.set_fact: - data: "{{ '253.0.0.1' is ansible.utils.reserved }}" - -# TASK [Check if 253.0.0.1 is a reserved IP address] ***************************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Check if 128.146.1.7 is not a reserved IP address - ansible.builtin.set_fact: - data: "{{ '128.146.1.7' is not ansible.utils.reserved }}" - -# TASK [Check if 128.146.1.7 is not a reserved IP address] *********************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } -""" - -RETURN = """ - data: - description: - - If jinja test satisfies plugin expression C(true) - - If jinja test does not satisfy plugin expression C(false) -""" - - -@_need_ipaddress -def _reserved(ip): - """Test for a reserved IP address""" - - params = {"ip": ip} - _validate_args("reserved", DOCUMENTATION, params) - - try: - return ip_address(ip).is_reserved - except Exception: - return False - - -class TestModule(object): - """network jinja test""" - - test_map = {"reserved": _reserved} - - def tests(self): - return self.test_map diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/test/resolvable.py b/ansible/collections/ansible_collections/ansible/utils/plugins/test/resolvable.py deleted file mode 100644 index c7ef7123..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/test/resolvable.py +++ /dev/null @@ -1,152 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Test plugin file for netaddr tests: resolvable -""" -from __future__ import absolute_import, division, print_function - -import socket - -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddress_utils import ( - _need_ipaddress, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.base.utils import _validate_args - - -try: - import ipaddress - - HAS_IPADDRESS = True -except ImportError: - HAS_IPADDRESS = False - -__metaclass__ = type - -DOCUMENTATION = """ - name: resolvable - author: Priyam Sahoo (@priyamsahoo) - version_added: "2.2.0" - short_description: Test if an IP or name can be resolved via /etc/hosts or DNS - description: - - This plugin checks if the provided IP address of host name can be resolved using /etc/hosts or DNS - options: - host: - description: - - A string that represents the IP address or the host name - - 'For example: C("docs.ansible.com"), C(127.0.0.1), or C(::1)' - type: str - required: True - notes: -""" - -EXAMPLES = r""" - -#### Simple examples - -- name: Check if docs.ansible.com is resolvable or not - ansible.builtin.set_fact: - data: "{{ 'docs.ansible.com' is ansible.utils.resolvable }}" - -# TASK [Check if docs.ansible.com is resolvable or not] ********************************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Set host name variables - ansible.builtin.set_fact: - good_name: www.google.com - bad_name: foo.google.com - -- name: Assert good_name's resolvability - assert: - that: "{{ 'www.google.com' is ansible.utils.resolvable }}" - -- name: Assert bad_name's resolvability - assert: - that: "{{ 'foo.google.com' is not ansible.utils.resolvable }}" - -# TASK [Assert good_name's resolvability] ************************************************ -# ok: [localhost] => { -# "changed": false, -# "msg": "All assertions passed" -# } - -# TASK [Assert bad_name's resolvability] ************************************************* -# ok: [localhost] => { -# "changed": false, -# "msg": "All assertions passed" -# } - -- name: Set ip variables - ansible.builtin.set_fact: - ipv4_localhost: "127.0.0.1" - ipv6_localhost: "::1" - -- name: Assert ipv4_localhost's resolvability - assert: - that: "{{ ipv4_localhost is ansible.utils.resolvable }}" - -- name: Assert ipv6_localhost's resolvability - assert: - that: "{{ ipv6_localhost is ansible.utils.resolvable }}" - -# TASK [Assert ipv4_localhost's resolvability] ******************************************* -# ok: [localhost] => { -# "changed": false, -# "msg": "All assertions passed" -# } - -# TASK [Assert ipv6_localhost's resolvability] ******************************************* -# ok: [localhost] => { -# "changed": false, -# "msg": "All assertions passed" -# } -""" - -RETURN = """ - data: - description: - - If jinja test satisfies plugin expression C(true) - - If jinja test does not satisfy plugin expression C(false) -""" - - -@_need_ipaddress -def _resolvable(host): - """Test if an IP or name can be resolved via /etc/hosts or DNS""" - - params = {"host": host} - _validate_args("resolvable", DOCUMENTATION, params) - - try: - ipaddress.ip_address(host) - ip = True - except Exception: - ip = False - if ip: - try: - socket.gethostbyaddr(host) - return True - except Exception: - return False - else: - try: - socket.getaddrinfo(host, None) - return True - except Exception: - return False - - -class TestModule(object): - """network jinja tests""" - - test_map = {"resolvable": _resolvable} - - def tests(self): - return self.test_map diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/test/subnet_of.py b/ansible/collections/ansible_collections/ansible/utils/plugins/test/subnet_of.py deleted file mode 100644 index 8b835ac1..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/test/subnet_of.py +++ /dev/null @@ -1,99 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Test plugin file for netaddr tests: subnet_of -""" - -from __future__ import absolute_import, division, print_function - -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddress_utils import ( - _is_subnet_of, - _need_ipaddress, - _validate_args, - ip_network, -) - - -__metaclass__ = type - -DOCUMENTATION = """ - name: subnet_of - author: Priyam Sahoo (@priyamsahoo) - version_added: "2.2.0" - short_description: Test if a network is a subnet of another network - description: - - This plugin checks if the first network is a subnet of the second network amongst the provided network addresses - options: - network_a: - description: - - A string that represents the first network address - - 'For example: C(10.1.1.0/24)' - type: str - required: True - network_b: - description: - - A string that represents the second network address - - 'For example: C(10.0.0.0/8)' - type: str - required: True - notes: -""" - -EXAMPLES = r""" - -- name: Check if 10.1.1.0/24 is a subnet of 10.0.0.0/8 - ansible.builtin.set_fact: - data: "{{ '10.1.1.0/24' is ansible.utils.subnet_of '10.0.0.0/8' }}" - -# TASK [Check if 10.1.1.0/24 is a subnet of 10.0.0.0/8] ************************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Check if 192.168.1.0/24 is not a subnet of 10.0.0.0/8 - ansible.builtin.set_fact: - data: "{{ '192.168.1.0/24' is not ansible.utils.subnet_of '10.0.0.0/8' }}" - -# TASK [Check if 192.168.1.0/24 is not a subnet of 10.0.0.0/8] ******************* -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } -""" - -RETURN = """ - data: - description: - - If jinja test satisfies plugin expression C(true) - - If jinja test does not satisfy plugin expression C(false) -""" - - -@_need_ipaddress -def _subnet_of(network_a, network_b): - """Test if a network is a subnet of another network""" - - params = {"network_a": network_a, "network_b": network_b} - _validate_args("subnet_of", DOCUMENTATION, params) - - try: - return _is_subnet_of(ip_network(network_a), ip_network(network_b)) - except Exception: - return False - - -class TestModule(object): - """network jinja test""" - - test_map = {"subnet_of": _subnet_of} - - def tests(self): - return self.test_map diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/test/supernet_of.py b/ansible/collections/ansible_collections/ansible/utils/plugins/test/supernet_of.py deleted file mode 100644 index 0d497c9f..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/test/supernet_of.py +++ /dev/null @@ -1,99 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Test plugin file for netaddr tests: supernet_of -""" - -from __future__ import absolute_import, division, print_function - -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddress_utils import ( - _is_subnet_of, - _need_ipaddress, - ip_network, -) -from ansible_collections.ansible.utils.plugins.plugin_utils.base.utils import _validate_args - - -__metaclass__ = type - -DOCUMENTATION = """ - name: supernet_of - author: Priyam Sahoo (@priyamsahoo) - version_added: "2.2.0" - short_description: Test if a network is a supernet of another network - description: - - This plugin checks if the first network is a supernet of the second network amongst the provided network addresses - options: - network_a: - description: - - A string that represents the first network address - - 'For example: C(10.1.1.0/24)' - type: str - required: True - network_b: - description: - - A string that represents the second network address - - 'For example: C(10.0.0.0/8)' - type: str - required: True - notes: -""" - -EXAMPLES = r""" - -- name: Check if 10.0.0.0/8 is a supernet of 10.1.1.0/24 - ansible.builtin.set_fact: - data: "{{ '10.0.0.0/8' is ansible.utils.supernet_of '10.1.1.0/24' }}" - -# TASK [Check if 10.0.0.0/8 is a supernet of 10.1.1.0/24] ************************ -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Check if 10.0.0.0/8 is not a supernet of 192.168.1.0/24 - ansible.builtin.set_fact: - data: "{{ '10.0.0.0/8' is not ansible.utils.supernet_of '192.168.1.0/24' }}" - -# TASK [Check if 10.0.0.0/8 is not a supernet of 192.168.1.0/24] ***************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } -""" - -RETURN = """ - data: - description: - - If jinja test satisfies plugin expression C(true) - - If jinja test does not satisfy plugin expression C(false) -""" - - -@_need_ipaddress -def _supernet_of(network_a, network_b): - """Test if an network is a supernet of another network""" - - params = {"network_a": network_a, "network_b": network_b} - _validate_args("supernet_of", DOCUMENTATION, params) - - try: - return _is_subnet_of(ip_network(network_b), ip_network(network_a)) - except Exception: - return False - - -class TestModule(object): - """network jinja test""" - - test_map = {"supernet_of": _supernet_of} - - def tests(self): - return self.test_map diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/test/unspecified.py b/ansible/collections/ansible_collections/ansible/utils/plugins/test/unspecified.py deleted file mode 100644 index 7526c301..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/test/unspecified.py +++ /dev/null @@ -1,118 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Test plugin file for netaddr tests: unspecified -""" - -from __future__ import absolute_import, division, print_function - -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddress_utils import ( - _need_ipaddress, - _validate_args, - ip_address, -) - - -__metaclass__ = type - -DOCUMENTATION = """ - name: unspecified - author: Priyam Sahoo (@priyamsahoo) - version_added: "2.2.0" - short_description: Test for an unspecified IP address - description: - - This plugin checks if the provided value is an unspecified IP address - options: - ip: - description: - - A string that represents the value against which the test is going to be performed - - 'For example: C(0.0.0.0), C(0:0:0:0:0:0:0:0), C(::), or C(::1)' - type: str - required: True - notes: -""" - -EXAMPLES = r""" - -#### Simple examples - -- name: Check if 0.0.0.0 is an unspecified IP address - ansible.builtin.set_fact: - data: "{{ '0.0.0.0' is ansible.utils.unspecified }}" - -# TASK [Check if 0.0.0.0 is an unspecified IP address] *************************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Check if 0:0:0:0:0:0:0:0 is an unspecified IP address - ansible.builtin.set_fact: - data: "{{ '0:0:0:0:0:0:0:0' is ansible.utils.unspecified }}" - -# TASK [Check if 0:0:0:0:0:0:0:0 is an unspecified IP address] ******************* -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Check if "::" is an unspecified IP address - ansible.builtin.set_fact: - data: "{{ '::' is ansible.utils.unspecified }}" - -# TASK [Check if "::" is an unspecified IP address] ****************************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } - -- name: Check if ::1 is not an unspecified IP address - ansible.builtin.set_fact: - data: "{{ '::1' is not ansible.utils.unspecified }}" - -# TASK [Check if ::1 is not an unspecified IP address] *************************** -# ok: [localhost] => { -# "ansible_facts": { -# "data": true -# }, -# "changed": false -# } -""" - -RETURN = """ - data: - description: - - If jinja test satisfies plugin expression C(true) - - If jinja test does not satisfy plugin expression C(false) -""" - - -@_need_ipaddress -def _unspecified(ip): - """Test for an unspecified IP address""" - - params = {"ip": ip} - _validate_args("unspecified", DOCUMENTATION, params) - - try: - return ip_address(ip).is_unspecified - except Exception: - return False - - -class TestModule(object): - """network jinja test""" - - test_map = {"unspecified": _unspecified} - - def tests(self): - return self.test_map diff --git a/ansible/collections/ansible_collections/ansible/utils/plugins/test/validate.py b/ansible/collections/ansible_collections/ansible/utils/plugins/test/validate.py deleted file mode 100644 index 9873af8d..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/plugins/test/validate.py +++ /dev/null @@ -1,152 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2020 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type -DOCUMENTATION = """ - name: validate - author: Ganesh Nalawade (@ganeshrn) - version_added: "1.0.0" - short_description: Validate data with provided criteria - description: - - Validate I(data) with provided I(criteria) based on the validation I(engine). - options: - data: - type: raw - description: - - A data that will be validated against I(criteria). - - This option represents the value that is passed to test plugin as check. - For example C(config_data is ansible.utils.validate(criteria=criteria), in this case B(config_data) - represents this option. - - For the type of I(data) that represents this value refer documentation of individual validate plugins. - required: True - criteria: - type: raw - description: - - The criteria used for validation of value that represents I(data) options. - - This option is passed to the test plugin as key, value pair - For example C(config_data is ansible.utils.validate(criteria=criteria)), in - this case the value of I(criteria) key represents this criteria for data validation. - - For the type of I(criteria) that represents this value refer documentation of individual validate plugins. - required: True - engine: - type: str - description: - - The name of the validate plugin to use. - - This option can be passed in test plugin as a key, value pair - For example C(config_data is ansible.utils.validate(engine='ansible.utils.jsonschema', criteria=criteria)), in - this case the value of I(engine) key represents the engine to be use for data validation. - If the value is not provided the default value that is C(ansible.utils.jsonschema) will be used. - - The value should be in fully qualified collection name format that is - B(..). - default: ansible.utils.jsonschema - notes: - - For the type of options I(data) and I(criteria) refer the individual validate plugin - documentation that is represented in the value of I(engine) option. - - For additional plugin configuration options refer the individual validate plugin - documentation that is represented by the value of I(engine) option. - - The plugin configuration option can be either passed as C(key=value) pairs within test plugin - or set as environment variables. - - The precedence the validate plugin configurable option is the variable passed within test plugin - as C(key=value) pairs followed by task variables followed by environment variables. -""" - -EXAMPLES = r""" -- name: set facts for data and criteria - ansible.builtin.set_fact: - data: "{{ lookup('ansible.builtin.file', './validate/data/show_interfaces_iosxr.json')}}" - criteria: "{{ lookup('ansible.builtin.file', './validate/criteria/jsonschema/show_interfaces_iosxr.json')}}" - -- name: validate data in json format using jsonschema with test plugin - ansible.builtin.set_fact: - is_data_valid: "{{ data is ansible.utils.validate(engine='ansible.utils.jsonschema', criteria=criteria, draft='draft7') }}" -""" - -RETURN = """ - _raw: - description: - - If data is valid return C(true) - - If data is invalid return C(false) -""" - -from ansible.errors import AnsibleError -from ansible.module_utils._text import to_text - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - check_argspec, -) -from ansible_collections.ansible.utils.plugins.module_utils.common.utils import to_list -from ansible_collections.ansible.utils.plugins.plugin_utils.base.validate import _load_validator - - -ARGSPEC_CONDITIONALS = {} - - -def validate(*args, **kwargs): - if not len(args): - raise AnsibleError( - "Missing either 'data' value in test plugin input," - "refer ansible.utils.validate test plugin documentation for details", - ) - - params = {"data": args[0]} - - for item in ["engine", "criteria"]: - if kwargs.get(item): - params.update({item: kwargs[item]}) - - valid, argspec_result, updated_params = check_argspec( - DOCUMENTATION, - "validate test", - schema_conditionals=ARGSPEC_CONDITIONALS, - **params, - ) - if not valid: - raise AnsibleError( - "{argspec_result} with errors: {argspec_errors}".format( - argspec_result=argspec_result.get("msg"), - argspec_errors=argspec_result.get("errors"), - ), - ) - - validator_engine, validator_result = _load_validator( - engine=updated_params["engine"], - data=updated_params["data"], - criteria=updated_params["criteria"], - kwargs=kwargs, - ) - if validator_result.get("failed"): - raise AnsibleError( - "validate lookup plugin failed with errors: %s" % validator_result.get("msg"), - ) - - try: - result = validator_engine.validate() - except AnsibleError as exc: - raise AnsibleError(to_text(exc, errors="surrogate_then_replace")) - except Exception as exc: - raise AnsibleError( - "Unhandled exception from validator '{validator}'. Error: {err}".format( - validator=updated_params["engine"], - err=to_text(exc, errors="surrogate_then_replace"), - ), - ) - - errors = to_list(result.get("errors", [])) - if len(errors): - return False - - return True - - -class TestModule(object): - """data validation test""" - - test_map = {"validate": validate} - - def tests(self): - return self.test_map diff --git a/ansible/collections/ansible_collections/ansible/utils/pyproject.toml b/ansible/collections/ansible_collections/ansible/utils/pyproject.toml deleted file mode 100644 index 1662755f..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/pyproject.toml +++ /dev/null @@ -1,16 +0,0 @@ -[tool.black] -line-length = 100 - -[tool.pytest.ini_options] -addopts = [ - "--integration-tests-path=tests/integration/targets", - "-vvv", - "-n", - "2", - "--log-level", - "WARNING", - "--color", - "yes" -] -testpaths = ["tests"] -filterwarnings = ['ignore:AnsibleCollectionFinder has already been configured'] diff --git a/ansible/collections/ansible_collections/ansible/utils/requirements.txt b/ansible/collections/ansible_collections/ansible/utils/requirements.txt deleted file mode 100644 index 8988c14c..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/requirements.txt +++ /dev/null @@ -1,5 +0,0 @@ -jsonschema -textfsm -ttp -xmltodict -netaddr diff --git a/ansible/collections/ansible_collections/ansible/utils/test-requirements.txt b/ansible/collections/ansible_collections/ansible/utils/test-requirements.txt deleted file mode 100644 index 4e77e6b2..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/test-requirements.txt +++ /dev/null @@ -1,15 +0,0 @@ -# For ansible-tox-linters -black==23.3.0 ; python_version >= '3.7' -flake8 -yamllint - -# Unit test runner -pytest-ansible ; python_version >= '3.9' -git+https://github.com/ansible-community/pytest-ansible-units.git ; python_version < '3.9' -pytest-xdist - -# For integration tests -pexpect -git+https://github.com/ansible-network/pytest-ansible-network-integration.git -ipaddress ; python_version < '3.0' -netaddr diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/config.yml b/ansible/collections/ansible_collections/ansible/utils/tests/config.yml deleted file mode 100644 index c26ea596..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/config.yml +++ /dev/null @@ -1,3 +0,0 @@ ---- -modules: - python_requires: ">=3.9" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/requirements.txt b/ansible/collections/ansible_collections/ansible/utils/tests/integration/requirements.txt deleted file mode 100644 index 529a4143..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/requirements.txt +++ /dev/null @@ -1,4 +0,0 @@ -jsonschema -netaddr -ttp -textfsm diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/files/nxos_show_interface.txt b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/files/nxos_show_interface.txt deleted file mode 100644 index a4234bfe..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/files/nxos_show_interface.txt +++ /dev/null @@ -1,98 +0,0 @@ -mgmt0 is up -admin state is up, - Hardware: Ethernet, address: 0000.000a.0000 (bia 0000.000a.0000) - Internet Address is 192.168.0.38/24 - MTU 1500 bytes, BW 1000000 Kbit, DLY 10 usec - reliability 189/255, txload 1/255, rxload 1/255 - Encapsulation ARPA, medium is broadcast - full-duplex, 1000 Mb/s - Auto-Negotiation is turned on - Auto-mdix is turned off - EtherType is 0x0000 - 1 minute input rate 944 bits/sec, 0 packets/sec - 1 minute output rate 400 bits/sec, 0 packets/sec - Rx - 7006741 input packets 2790464 unicast packets 1157599 multicast packets - 3058678 broadcast packets 840241052 bytes - Tx - 2942644 output packets 2790426 unicast packets 152126 multicast packets - 92 broadcast packets 320387552 bytes - -Ethernet1/1 is up -admin state is up, Dedicated Interface - Belongs to Po10 - Hardware: 100/1000/10000 Ethernet, address: 0000.000a.0008 (bia 0000.000a.0008) - MTU 1500 bytes, BW 1000000 Kbit, DLY 10 usec - reliability 255/255, txload 1/255, rxload 1/255 - Encapsulation ARPA, medium is broadcast - Port mode is access - full-duplex, 1000 Mb/s - Beacon is turned off - Auto-Negotiation is turned on FEC mode is Auto - Input flow-control is off, output flow-control is off - Auto-mdix is turned off - Switchport monitor is off - EtherType is 0x8100 - EEE (efficient-ethernet) : n/a - Last link flapped 9week(s) 0day(s) - Last clearing of "show interface" counters never - 4 interface resets - 30 seconds input rate 0 bits/sec, 0 packets/sec - 30 seconds output rate 0 bits/sec, 0 packets/sec - Load-Interval #2: 5 minute (300 seconds) - input rate 0 bps, 0 pps; output rate 0 bps, 0 pps - RX - 0 unicast packets 0 multicast packets 0 broadcast packets - 0 input packets 0 bytes - 0 jumbo packets 0 storm suppression packets - 0 runts 0 giants 0 CRC 0 no buffer - 0 input error 0 short frame 0 overrun 0 underrun 0 ignored - 0 watchdog 0 bad etype drop 0 bad proto drop 0 if down drop - 0 input with dribble 0 input discard - 0 Rx pause - TX - 0 unicast packets 0 multicast packets 0 broadcast packets - 0 output packets 0 bytes - 0 jumbo packets - 0 output error 0 collision 0 deferred 0 late collision - 0 lost carrier 0 no carrier 0 babble 0 output discard - 0 Tx pause - -Ethernet1/8 is down (Link not connected) -admin state is up, Dedicated Interface - Hardware: 100/1000/10000 Ethernet, address: 0000.000a.000f (bia 0000.000a.000f) - MTU 1500 bytes, BW 10000000 Kbit, DLY 10 usec - reliability 255/255, txload 1/255, rxload 1/255 - Encapsulation ARPA, medium is broadcast - Port mode is access - auto-duplex, auto-speed - Beacon is turned off - Auto-Negotiation is turned on FEC mode is Auto - Input flow-control is off, output flow-control is off - Auto-mdix is turned off - Switchport monitor is off - EtherType is 0x8100 - EEE (efficient-ethernet) : n/a - Last link flapped never - Last clearing of "show interface" counters never - 0 interface resets - 30 seconds input rate 0 bits/sec, 0 packets/sec - 30 seconds output rate 0 bits/sec, 0 packets/sec - Load-Interval #2: 5 minute (300 seconds) - input rate 0 bps, 0 pps; output rate 0 bps, 0 pps - RX - 0 unicast packets 0 multicast packets 0 broadcast packets - 0 input packets 0 bytes - 0 jumbo packets 0 storm suppression packets - 0 runts 0 giants 0 CRC 0 no buffer - 0 input error 0 short frame 0 overrun 0 underrun 0 ignored - 0 watchdog 0 bad etype drop 0 bad proto drop 0 if down drop - 0 input with dribble 0 input discard - 0 Rx pause - TX - 0 unicast packets 0 multicast packets 0 broadcast packets - 0 output packets 0 bytes - 0 jumbo packets - 0 output error 0 collision 0 deferred 0 late collision - 0 lost carrier 0 no carrier 0 babble 0 output discard - 0 Tx pause diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/files/nxos_show_interface.xml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/files/nxos_show_interface.xml deleted file mode 100644 index a7243a4a..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/files/nxos_show_interface.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - <__XML__OPT_Cmd_show_interface___readonly__> - <__readonly__> - - - mgmt0 - up - up - Ethernet - 5e00.000b.0000 - 5e00.000b.0000 - 10.8.38.74 - 24 - 10.8.38.0 - 1500 - 1000000 - 10 - 188 - 1 - 1 - broadcast - routed - full - 1000 Mb/s - on - off - 0x0000 - 816 - 0 - 272 - 0 - 7716327 - 2848860 - 1743445 - 3124022 - 966991855 - 3004554 - 2849173 - 155378 - 3 - 325131723 - - - - - - - - diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/files/nxos_show_version.txt b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/files/nxos_show_version.txt deleted file mode 100644 index 47ade78b..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/files/nxos_show_version.txt +++ /dev/null @@ -1,37 +0,0 @@ -Cisco Nexus Operating System (NX-OS) Software -TAC support: http://www.cisco.com/tac -Documents: http://www.cisco.com/en/US/products/ps9372/tsd_products_support_series_home.html -Copyright (c) 2002-2016, Cisco Systems, Inc. All rights reserved. -The copyrights to certain works contained herein are owned by -other third parties and are used and distributed under license. -Some parts of this software are covered under the GNU Public -License. A copy of the license is available at -http://www.gnu.org/licenses/gpl.html. - -NX-OSv is a demo version of the Nexus Operating System - -Software - loader: version N/A - kickstart: version 7.3(0)D1(1) - system: version 7.3(0)D1(1) - kickstart image file is: bootflash:///titanium-d1-kickstart.7.3.0.D1.1.bin - kickstart compile time: 1/11/2016 16:00:00 [02/11/2016 10:30:12] - system image file is: bootflash:///titanium-d1.7.3.0.D1.1.bin - system compile time: 1/11/2016 16:00:00 [02/11/2016 13:08:11] - - -Hardware - cisco NX-OSv Chassis ("NX-OSv Supervisor Module") - QEMU Virtual CPU version 2.5 with 3064740 kB of memory. - Processor Board ID TM000B0000B - - Device name: an-nxos-02 - bootflash: 3184776 kB - -Kernel uptime is 110 day(s), 12 hour(s), 32 minute(s), 10 second(s) - - -plugin - Core Plugin, Ethernet Plugin - -Active Package(s) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/output/nxos_show_interface_json_text.txt b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/output/nxos_show_interface_json_text.txt deleted file mode 100644 index 3d3c3838..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/output/nxos_show_interface_json_text.txt +++ /dev/null @@ -1,18 +0,0 @@ -[ - [ - [ - { - "admin_state": "up,", - "interface": "mgmt0", - "state": "up", - "var": "extra_var" - }, - { - "admin_state": "up,", - "interface": "Ethernet1/1", - "state": "up", - "var": "extra_var" - } - ] - ] -] diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/output/nxos_show_interface_ttp_parsed.json b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/output/nxos_show_interface_ttp_parsed.json deleted file mode 100644 index 3a91ffbc..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/output/nxos_show_interface_ttp_parsed.json +++ /dev/null @@ -1,18 +0,0 @@ -[ - [ - [ - { - "admin_state": "up,", - "interface": "mgmt0", - "state": "up", - "var": "extra_var" - }, - { - "admin_state": "up,", - "interface": "Ethernet1/1", - "state": "up", - "var": "extra_var" - } - ] - ] -] diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/output/nxos_show_interface_xml_parsed.json b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/output/nxos_show_interface_xml_parsed.json deleted file mode 100644 index 00570092..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/output/nxos_show_interface_xml_parsed.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "nf:rpc-reply": { - "@xmlns": "http://www.cisco.com/nxos:1.0:if_manager", - "@xmlns:nf": "urn:ietf:params:xml:ns:netconf:base:1.0", - "nf:data": { - "show": { - "interface": { - "__XML__OPT_Cmd_show_interface___readonly__": { - "__readonly__": { - "TABLE_interface": { - "ROW_interface": { - "admin_state": "up", - "eth_autoneg": "on", - "eth_bia_addr": "5e00.000b.0000", - "eth_bw": "1000000", - "eth_dly": "10", - "eth_duplex": "full", - "eth_ethertype": "0x0000", - "eth_hw_addr": "5e00.000b.0000", - "eth_hw_desc": "Ethernet", - "eth_ip_addr": "10.8.38.74", - "eth_ip_mask": "24", - "eth_ip_prefix": "10.8.38.0", - "eth_mdix": "off", - "eth_mode": "routed", - "eth_mtu": "1500", - "eth_reliability": "188", - "eth_rxload": "1", - "eth_speed": "1000 Mb/s", - "eth_txload": "1", - "interface": "mgmt0", - "medium": "broadcast", - "state": "up", - "vdc_lvl_in_avg_bytes": "816", - "vdc_lvl_in_avg_pkts": "0", - "vdc_lvl_in_bcast": "3124022", - "vdc_lvl_in_bytes": "966991855", - "vdc_lvl_in_mcast": "1743445", - "vdc_lvl_in_pkts": "7716327", - "vdc_lvl_in_ucast": "2848860", - "vdc_lvl_out_avg_bytes": "272", - "vdc_lvl_out_avg_pkts": "0", - "vdc_lvl_out_bcast": "3", - "vdc_lvl_out_bytes": "325131723", - "vdc_lvl_out_mcast": "155378", - "vdc_lvl_out_pkts": "3004554", - "vdc_lvl_out_ucast": "2849173" - } - } - } - } - } - } - } - } -} diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/output/nxos_show_version_textfsm_parsed.json b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/output/nxos_show_version_textfsm_parsed.json deleted file mode 100644 index 4ce21627..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/output/nxos_show_version_textfsm_parsed.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "BOOT_IMAGE": "bootflash:///titanium-d1-kickstart.7.3.0.D1.1.bin", - "LAST_REBOOT_REASON": "", - "OS": "7.3(0)D1(1)", - "PLATFORM": "OSv", - "UPTIME": "110 day(s), 12 hour(s), 32 minute(s), 10 second(s)" -} diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/tasks/argspec.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/tasks/argspec.yaml deleted file mode 100644 index 4e4a8635..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/tasks/argspec.yaml +++ /dev/null @@ -1,61 +0,0 @@ ---- -- name: "Validate argspec {{ parser }}" - ansible.utils.cli_parse: - text: "" - parser: - name: ansible.utils.json - template_path: "" - command: ls - register: argfail - ignore_errors: true - -- name: "Check argspec fail {{ parser }}" - ansible.builtin.assert: - that: "{{ msg in argfail.errors }}" - vars: - msg: "parameters are mutually exclusive: command|template_path found in parser" - -- name: "Validate argspec {{ parser }}" - ansible.utils.cli_parse: - text: "" - command: ls - parser: - name: ansible.utils.json - command: "" - register: argfail - ignore_errors: true - -- name: "Check argspec fail {{ parser }}" - ansible.builtin.assert: - that: "{{ msg in argfail.errors }}" - vars: - msg: "parameters are mutually exclusive: command|text" - -- name: "Validate argspec {{ parser }}" - ansible.utils.cli_parse: - parser: - name: ansible.netcommon.json - command: "" - register: argfail - ignore_errors: true - -- name: "Check argspec fail {{ parser }}" - ansible.builtin.assert: - that: "{{ msg in argfail.errors }}" - vars: - msg: "one of the following is required: command, text" - -- name: "Validate argspec {{ parser }}" - ansible.utils.cli_parse: - text: "" - parser: - name: not_fqdn - command: "" - register: argfail - ignore_errors: true - -- name: "Check arspec fail {{ parser }}" - ansible.builtin.assert: - that: "{{ msg in argfail.msg }}" - vars: - msg: "Parser name should be provided as a full name including collection" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/tasks/centos_textfsm.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/tasks/centos_textfsm.yaml deleted file mode 100644 index 626acca6..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/tasks/centos_textfsm.yaml +++ /dev/null @@ -1,18 +0,0 @@ ---- -- name: "Run command and parse with textfsm {{ parser }}" - ansible.utils.cli_parse: - command: "ifconfig" - parser: - name: ansible.utils.textfsm - ansible.builtin.set_fact: myfact - register: ifconfig_out - -- name: "Check parser output {{ parser }}" - ansible.builtin.assert: - that: "{{ item }}" - with_items: - - "{{ myfact is defined }}" - - "{{ ifconfig_out['stdout'] is defined }}" - - "{{ ifconfig_out['stdout_lines'] is defined }}" - - "{{ ifconfig_out['parsed'] is defined }}" - - "{{ ifconfig_out['parsed'][0]['Interface'] is defined }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/tasks/centos_ttp.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/tasks/centos_ttp.yaml deleted file mode 100644 index 6868d4f4..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/tasks/centos_ttp.yaml +++ /dev/null @@ -1,18 +0,0 @@ ---- -- name: "Run command and parse with ttp {{ parser }}" - ansible.utils.cli_parse: - command: "df -h" - parser: - name: ansible.utils.ttp - ansible.builtin.set_fact: myfact - register: df_h_out - -- name: "Check parser output {{ parser }}" - ansible.builtin.assert: - that: "{{ item }}" - with_items: - - "{{ myfact is defined }}" - - "{{ df_h_out['stdout'] is defined }}" - - "{{ df_h_out['stdout_lines'] is defined }}" - - "{{ df_h_out['parsed'] is defined }}" - - "{{ df_h_out['parsed'][0][0][0]['Filesystem'] is defined }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/tasks/fedora_textfsm.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/tasks/fedora_textfsm.yaml deleted file mode 100644 index 626acca6..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/tasks/fedora_textfsm.yaml +++ /dev/null @@ -1,18 +0,0 @@ ---- -- name: "Run command and parse with textfsm {{ parser }}" - ansible.utils.cli_parse: - command: "ifconfig" - parser: - name: ansible.utils.textfsm - ansible.builtin.set_fact: myfact - register: ifconfig_out - -- name: "Check parser output {{ parser }}" - ansible.builtin.assert: - that: "{{ item }}" - with_items: - - "{{ myfact is defined }}" - - "{{ ifconfig_out['stdout'] is defined }}" - - "{{ ifconfig_out['stdout_lines'] is defined }}" - - "{{ ifconfig_out['parsed'] is defined }}" - - "{{ ifconfig_out['parsed'][0]['Interface'] is defined }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/tasks/fedora_ttp.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/tasks/fedora_ttp.yaml deleted file mode 100644 index 6868d4f4..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/tasks/fedora_ttp.yaml +++ /dev/null @@ -1,18 +0,0 @@ ---- -- name: "Run command and parse with ttp {{ parser }}" - ansible.utils.cli_parse: - command: "df -h" - parser: - name: ansible.utils.ttp - ansible.builtin.set_fact: myfact - register: df_h_out - -- name: "Check parser output {{ parser }}" - ansible.builtin.assert: - that: "{{ item }}" - with_items: - - "{{ myfact is defined }}" - - "{{ df_h_out['stdout'] is defined }}" - - "{{ df_h_out['stdout_lines'] is defined }}" - - "{{ df_h_out['parsed'] is defined }}" - - "{{ df_h_out['parsed'][0][0][0]['Filesystem'] is defined }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/tasks/main.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/tasks/main.yaml deleted file mode 100644 index 04d29c17..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/tasks/main.yaml +++ /dev/null @@ -1,89 +0,0 @@ ---- -- name: Set a short name - ansible.builtin.set_fact: - os: "{{ ansible_distribution | d }}" - -- name: Include argspec.yaml - ansible.builtin.include_tasks: argspec.yaml - vars: - parser: "({{ inventory_hostname }}/argspec)" - -- name: Include nxos_json.yaml - ansible.builtin.include_tasks: "nxos_json.yaml" - vars: - parser: "(nxos/json)" - tags: - - json - -- name: Include nxos_textfsm.yaml - ansible.builtin.include_tasks: "nxos_textfsm.yaml" - vars: - parser: "(nxos/textfsm)" - tags: - - textfsm - -- name: Include nxos_ttp.yaml - ansible.builtin.include_tasks: "nxos_ttp.yaml" - vars: - parser: "(nxos/ttp)" - tags: - - ttp - -- name: Include nxos_xml.yaml - ansible.builtin.include_tasks: "nxos_xml.yaml" - vars: - parser: "(nxos/xml)" - tags: - - xml - -- name: Debug os - ansible.builtin.debug: - msg: "{{ os }}" - -- name: Include centos_textfsm.yaml - ansible.builtin.include_tasks: "centos_textfsm.yaml" - vars: - parser: "(centos/textfsm)" - when: os == 'centos' - tags: - - textfsm - -- name: Include centos_ttp.yaml - ansible.builtin.include_tasks: "centos_ttp.yaml" - vars: - parser: "(centos/ttp)" - when: os == 'centos' - tags: - - ttp - -- name: Include fedora_textfsm.yaml - ansible.builtin.include_tasks: "fedora_textfsm.yaml" - vars: - parser: "(fedora/textfsm)" - when: os == 'fedora' - tags: - - textfsm - -- name: Include fedora_ttp.yaml - ansible.builtin.include_tasks: "fedora_ttp.yaml" - vars: - parser: "(fedora/ttp)" - when: os == 'fedora' - tags: - - ttp - -- name: Include ubuntu_textfsm.yaml - ansible.builtin.include_tasks: "ubuntu_textfsm.yaml" - vars: - parser: "(ubuntu/textfsm)" - when: os == 'ubuntu' - tags: - - textfsm - -- name: Include ubuntu_ttp.yaml - ansible.builtin.include_tasks: "ubuntu_ttp.yaml" - vars: - parser: "(ubuntu/ttp)" - when: os == 'ubuntu' - tags: - - ttp diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/tasks/nxos_json.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/tasks/nxos_json.yaml deleted file mode 100644 index 32e12331..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/tasks/nxos_json.yaml +++ /dev/null @@ -1,19 +0,0 @@ ---- -- name: Set fact - ansible.builtin.set_fact: - nxos_json_text_parsed: "{{ lookup('ansible.builtin.file', '{{ role_path }}/output/nxos_show_interface_json_text.txt') }}" - -- name: "Run command and parse with json {{ parser }}" - ansible.utils.cli_parse: - text: "{{ lookup('ansible.builtin.file', '{{ role_path }}/output/nxos_show_interface_json_text.txt') }}" - parser: - name: ansible.utils.json - register: nxos_json_text - -- name: "Confirm response {{ parser }}" - ansible.builtin.assert: - that: "{{ item }}" - with_items: - - "{{ nxos_json_text['parsed'] is defined }}" - - "{{ nxos_json_text['parsed'][0][0][0]['admin_state'] is defined }}" - - "{{ nxos_json_text['parsed'] == nxos_json_text_parsed }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/tasks/nxos_textfsm.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/tasks/nxos_textfsm.yaml deleted file mode 100644 index 8c0ccf27..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/tasks/nxos_textfsm.yaml +++ /dev/null @@ -1,20 +0,0 @@ ---- -- name: Set fact - ansible.builtin.set_fact: - nxos_textfsm_text_parsed: "{{ lookup('ansible.builtin.file', '{{ role_path }}/output/nxos_show_version_textfsm_parsed.json') | from_json }}" - -- name: "Pass text and command {{ parser }}" - ansible.utils.cli_parse: - text: "{{ lookup('ansible.builtin.file', '{{ role_path }}/files/nxos_show_version.txt') }}" - parser: - name: ansible.utils.textfsm - template_path: "{{ role_path }}/templates/nxos_show_version.textfsm" - register: nxos_textfsm_text - -- name: "Confirm response {{ parser }}" - ansible.builtin.assert: - that: "{{ item }}" - with_items: - - "{{ nxos_textfsm_text['parsed'] == nxos_textfsm_text['parsed'] }}" - - "{{ nxos_textfsm_text['parsed'][0]['BOOT_IMAGE'] is defined }}" - - "{{ nxos_textfsm_text['parsed'][0] == nxos_textfsm_text_parsed }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/tasks/nxos_ttp.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/tasks/nxos_ttp.yaml deleted file mode 100644 index f6a04ad2..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/tasks/nxos_ttp.yaml +++ /dev/null @@ -1,54 +0,0 @@ ---- -- name: Set fact - ansible.builtin.set_fact: - nxos_ttp_text_parsed: "{{ lookup('ansible.builtin.file', '{{ role_path }}/output/nxos_show_interface_ttp_parsed.json') | from_json }}" - -- name: "Pass text and template_path {{ parser }}" - ansible.utils.cli_parse: - text: "{{ lookup('ansible.builtin.file', '{{ role_path }}/files/nxos_show_interface.txt') }}" - parser: - name: ansible.utils.ttp - template_path: "{{ role_path }}/templates/nxos_show_interface.ttp" - set_fact: POpqMQoJWTiDpEW - register: nxos_ttp_text - -- name: "Confirm response {{ parser }}" - ansible.builtin.assert: - that: - - "{{ POpqMQoJWTiDpEW is defined }}" - - nxos_ttp_text['parsed'][0][0] | selectattr('interface', 'search', 'mgmt0') | list | length - - "{{ nxos_ttp_text['parsed'] == nxos_ttp_text_parsed }}" - -- name: "Pass text and custom variable {{ parser }}" - ansible.utils.cli_parse: - text: "{{ lookup('ansible.builtin.file', '{{ role_path }}/files/nxos_show_interface.txt') }}" - parser: - name: ansible.utils.ttp - template_path: "{{ role_path }}/templates/nxos_show_interface.ttp" - vars: - ttp_vars: - extra_var: some_text - register: nxos_ttp_vars - -- name: "Confirm modified results {{ parser }}" - ansible.builtin.assert: - that: "{{ item }}" - with_items: - - "{{ nxos_ttp_vars['parsed'][0][0][0]['var'] == 'some_text' }}" - -- name: "Pass text and ttp_results modified {{ parser }}" - ansible.utils.cli_parse: - text: "{{ lookup('ansible.builtin.file', '{{ role_path }}/files/nxos_show_interface.txt') }}" - parser: - name: ansible.utils.ttp - template_path: "{{ role_path }}/templates/nxos_show_interface.ttp" - vars: - ttp_results: - format: yaml - register: nxos_ttp_results - -- name: "Confirm modified results {{ parser }}" - ansible.builtin.assert: - that: item - with_items: - - "{{ (nxos_ttp_results['parsed'][0] | from_yaml)[0] | selectattr('interface', 'search', 'mgmt0') | list | length }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/tasks/nxos_xml.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/tasks/nxos_xml.yaml deleted file mode 100644 index a615c57d..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/tasks/nxos_xml.yaml +++ /dev/null @@ -1,19 +0,0 @@ ---- -- name: Set fact - ansible.builtin.set_fact: - nxos_xml_text_parsed: "{{ lookup('ansible.builtin.file', '{{ role_path }}/output/nxos_show_interface_xml_parsed.json') | from_json }}" - -- name: "Pass text and parse with xml {{ parser }}" - ansible.utils.cli_parse: - text: "{{ lookup('ansible.builtin.file', '{{ role_path }}/files/nxos_show_interface.xml') }}" - parser: - name: ansible.utils.xml - os: nxos - register: nxos_xml_text - -- name: "Confirm response {{ parser }}" - ansible.builtin.assert: - that: "{{ item }}" - with_items: - - "{{ nxos_xml_text['parsed'] == nxos_xml_text_parsed }}" - - "{{ nxos_xml_text['parsed']['nf:rpc-reply'] is defined }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/tasks/ubuntu_textfsm.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/tasks/ubuntu_textfsm.yaml deleted file mode 100644 index 626acca6..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/tasks/ubuntu_textfsm.yaml +++ /dev/null @@ -1,18 +0,0 @@ ---- -- name: "Run command and parse with textfsm {{ parser }}" - ansible.utils.cli_parse: - command: "ifconfig" - parser: - name: ansible.utils.textfsm - ansible.builtin.set_fact: myfact - register: ifconfig_out - -- name: "Check parser output {{ parser }}" - ansible.builtin.assert: - that: "{{ item }}" - with_items: - - "{{ myfact is defined }}" - - "{{ ifconfig_out['stdout'] is defined }}" - - "{{ ifconfig_out['stdout_lines'] is defined }}" - - "{{ ifconfig_out['parsed'] is defined }}" - - "{{ ifconfig_out['parsed'][0]['Interface'] is defined }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/tasks/ubuntu_ttp.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/tasks/ubuntu_ttp.yaml deleted file mode 100644 index 6868d4f4..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/tasks/ubuntu_ttp.yaml +++ /dev/null @@ -1,18 +0,0 @@ ---- -- name: "Run command and parse with ttp {{ parser }}" - ansible.utils.cli_parse: - command: "df -h" - parser: - name: ansible.utils.ttp - ansible.builtin.set_fact: myfact - register: df_h_out - -- name: "Check parser output {{ parser }}" - ansible.builtin.assert: - that: "{{ item }}" - with_items: - - "{{ myfact is defined }}" - - "{{ df_h_out['stdout'] is defined }}" - - "{{ df_h_out['stdout_lines'] is defined }}" - - "{{ df_h_out['parsed'] is defined }}" - - "{{ df_h_out['parsed'][0][0][0]['Filesystem'] is defined }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/templates/centos_df_-h.ttp b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/templates/centos_df_-h.ttp deleted file mode 100644 index 75b4875a..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/templates/centos_df_-h.ttp +++ /dev/null @@ -1 +0,0 @@ -Filesystem Size Used Avail Use Mounted_on {{ _headers_ }} diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/templates/centos_ifconfig.textfsm b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/templates/centos_ifconfig.textfsm deleted file mode 100644 index b16da4e2..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/templates/centos_ifconfig.textfsm +++ /dev/null @@ -1,19 +0,0 @@ -# template from https://github.com/google/textfsm/blob/master/examples/unix_ifcfg_template -Value Required Interface ([^:]+) -Value MTU (\d+) -Value State ((in)?active) -Value MAC ([\d\w:]+) -Value List Inet ([\d\.]+) -Value List Netmask (\S+) -# Don't match interface local (fe80::/10) - achieved with excluding '%'. -Value List Inet6 ([^%]+) -Value List Prefix (\d+) - -Start - # Record interface record (if we have one). - ^\S+:.* -> Continue.Record - # Collect data for new interface. - ^${Interface}:.* mtu ${MTU} - ^\s+ether ${MAC} - ^\s+inet6 ${Inet6} prefixlen ${Prefix} - ^\s+inet ${Inet} netmask ${Netmask} diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/templates/fedora_df_-h.ttp b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/templates/fedora_df_-h.ttp deleted file mode 100644 index 75b4875a..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/templates/fedora_df_-h.ttp +++ /dev/null @@ -1 +0,0 @@ -Filesystem Size Used Avail Use Mounted_on {{ _headers_ }} diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/templates/fedora_ifconfig.textfsm b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/templates/fedora_ifconfig.textfsm deleted file mode 100644 index b16da4e2..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/templates/fedora_ifconfig.textfsm +++ /dev/null @@ -1,19 +0,0 @@ -# template from https://github.com/google/textfsm/blob/master/examples/unix_ifcfg_template -Value Required Interface ([^:]+) -Value MTU (\d+) -Value State ((in)?active) -Value MAC ([\d\w:]+) -Value List Inet ([\d\.]+) -Value List Netmask (\S+) -# Don't match interface local (fe80::/10) - achieved with excluding '%'. -Value List Inet6 ([^%]+) -Value List Prefix (\d+) - -Start - # Record interface record (if we have one). - ^\S+:.* -> Continue.Record - # Collect data for new interface. - ^${Interface}:.* mtu ${MTU} - ^\s+ether ${MAC} - ^\s+inet6 ${Inet6} prefixlen ${Prefix} - ^\s+inet ${Inet} netmask ${Netmask} diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/templates/nxos_show_interface.ttp b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/templates/nxos_show_interface.ttp deleted file mode 100644 index 7ec545d7..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/templates/nxos_show_interface.ttp +++ /dev/null @@ -1,3 +0,0 @@ -{{ interface }} is {{ state }} -admin state is {{ admin_state }}{{ ignore(".*") }} -{{ var | set("extra_var") }} diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/templates/nxos_show_interface.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/templates/nxos_show_interface.yaml deleted file mode 100644 index fa3ad799..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/templates/nxos_show_interface.yaml +++ /dev/null @@ -1,24 +0,0 @@ ---- -- example: Ethernet1/1 is up - getval: '(?P\S+) is (?P\S+)' - result: - "{{ name }}": - name: "{{ name }}" - state: - operating: "{{ oper_state }}" - shared: true - -- example: admin state is up, Dedicated Interface - getval: 'admin state is (?P\S+)' - result: - "{{ name }}": - name: "{{ name }}" - state: - admin: "{{ admin_state }}" - -- example: " Hardware: Ethernet, address: 5254.005a.f8b5 (bia 5254.005a.f8b5)" - getval: '\s+Hardware: (?P.*), address: (?P\S+)' - result: - "{{ name }}": - hardware: "{{ hardware }}" - mac_address: "{{ mac }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/templates/nxos_show_version.textfsm b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/templates/nxos_show_version.textfsm deleted file mode 100644 index 06fb92b5..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/templates/nxos_show_version.textfsm +++ /dev/null @@ -1,16 +0,0 @@ -Value UPTIME ((\d+\s\w+.s.,?\s?){4}) -Value LAST_REBOOT_REASON (.+) -Value OS (\d+.\d+(.+)?) -Value BOOT_IMAGE (.*) -Value PLATFORM (\w+) - -Start - ^\s+(NXOS: version|system:\s+version)\s+${OS}\s*$$ - ^\s+(NXOS|kickstart)\s+image\s+file\s+is:\s+${BOOT_IMAGE}\s*$$ - ^\s+cisco\s+${PLATFORM}\s+[cC]hassis - ^\s+cisco\s+Nexus\d+\s+${PLATFORM} - # Cisco N5K platform - ^\s+cisco\s+Nexus\s+${PLATFORM}\s+[cC]hassis - ^\s+cisco\s+.+-${PLATFORM}\s* - ^Kernel\s+uptime\s+is\s+${UPTIME} - ^\s+Reason:\s${LAST_REBOOT_REASON} -> Record diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/templates/ubuntu_df_-h.ttp b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/templates/ubuntu_df_-h.ttp deleted file mode 100644 index 75b4875a..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/templates/ubuntu_df_-h.ttp +++ /dev/null @@ -1 +0,0 @@ -Filesystem Size Used Avail Use Mounted_on {{ _headers_ }} diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/templates/ubuntu_ifconfig.textfsm b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/templates/ubuntu_ifconfig.textfsm deleted file mode 100644 index b16da4e2..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_cli_parse/templates/ubuntu_ifconfig.textfsm +++ /dev/null @@ -1,19 +0,0 @@ -# template from https://github.com/google/textfsm/blob/master/examples/unix_ifcfg_template -Value Required Interface ([^:]+) -Value MTU (\d+) -Value State ((in)?active) -Value MAC ([\d\w:]+) -Value List Inet ([\d\.]+) -Value List Netmask (\S+) -# Don't match interface local (fe80::/10) - achieved with excluding '%'. -Value List Inet6 ([^%]+) -Value List Prefix (\d+) - -Start - # Record interface record (if we have one). - ^\S+:.* -> Continue.Record - # Collect data for new interface. - ^${Interface}:.* mtu ${MTU} - ^\s+ether ${MAC} - ^\s+inet6 ${Inet6} prefixlen ${Prefix} - ^\s+inet ${Inet} netmask ${Netmask} diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_consolidate/tasks/main.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_consolidate/tasks/main.yaml deleted file mode 100644 index 333bee8c..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_consolidate/tasks/main.yaml +++ /dev/null @@ -1,15 +0,0 @@ ---- -- name: Recursively find all test files - ansible.builtin.find: - file_type: file - paths: "{{ role_path }}/tasks" - recurse: false - use_regex: true - patterns: - - "^(?!_|main).+$" - delegate_to: localhost - register: found - -- name: Include tasks - ansible.builtin.include_tasks: "{{ item.path }}" - loop: "{{ found.files }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_consolidate/tasks/simple.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_consolidate/tasks/simple.yaml deleted file mode 100644 index 4056c1f6..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_consolidate/tasks/simple.yaml +++ /dev/null @@ -1,32 +0,0 @@ ---- -- name: Build the data structure - ansible.builtin.set_fact: - data_sources: - - data: - [{ "name": "GigabitEthernet0/1" }, { "name": "GigabitEthernet0/2" }] - match_key: name - name: acl_interfaces - - data: - [ - { - "description": "This is a user template", - "enabled": true, - "name": "GigabitEthernet0/1", - }, - { - "description": "This is a user template", - "enabled": true, - "name": "GigabitEthernet0/2", - }, - ] - match_key: name - name: interfaces - -- name: Combine all the dictionaries based on match_keys - ansible.builtin.set_fact: - combined: "{{ data_sources | ansible.utils.consolidate(fail_missing_match_value=False) }}" - -- name: Assert result dicts - ansible.builtin.assert: - that: - - combined == combined_facts diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_consolidate/vars/main.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_consolidate/vars/main.yaml deleted file mode 100644 index 69523266..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_consolidate/vars/main.yaml +++ /dev/null @@ -1,16 +0,0 @@ ---- -combined_facts: - GigabitEthernet0/1: - acl_interfaces: - name: GigabitEthernet0/1 - interfaces: - description: This is a user template - enabled: true - name: GigabitEthernet0/1 - GigabitEthernet0/2: - acl_interfaces: - name: GigabitEthernet0/2 - interfaces: - description: This is a user template - enabled: true - name: GigabitEthernet0/2 diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_fact_diff/tasks/argspec.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_fact_diff/tasks/argspec.yaml deleted file mode 100644 index 0f5a2122..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_fact_diff/tasks/argspec.yaml +++ /dev/null @@ -1,44 +0,0 @@ ---- -- name: Check argspec validation - ansible.utils.fact_diff: - ignore_errors: true - register: result - -- name: Assert - ansible.builtin.assert: - that: "{{ string in result.msg }}" - loop: - - "missing required arguments:" - - before - - after - loop_control: - loop_var: string - when: "result.msg | type_debug != 'list'" - -- name: Assert - ansible.builtin.assert: - that: "{{ msg in result.msg }}" - vars: - msg: "missing required arguments: after, before" - when: "result.msg | type_debug == 'list'" - -- name: Check argspec validation, skip_lines must be a dict - ansible.utils.fact_diff: - before: hostvars[inventory_hostname] - after: hostvars[inventory_hostname] - plugin: - vars: - skip_lines: - a_dict: false - ignore_errors: true - register: result - -- name: Assert - ansible.builtin.assert: - that: "{{ 'unable to convert to list' in result.msg }}" - when: "result.msg | type_debug != 'list'" - -- name: Assert - ansible.builtin.assert: - that: "{{ 'unable to convert to list' in result.msg[0] }}" - when: "result.msg | type_debug == 'list'" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_fact_diff/tasks/examples.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_fact_diff/tasks/examples.yaml deleted file mode 100644 index 920eeeb6..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_fact_diff/tasks/examples.yaml +++ /dev/null @@ -1,128 +0,0 @@ ---- -- name: Set fact - ansible.builtin.set_fact: - before: - a: - b: - c: - d: - - 0 - - 1 - after: - a: - b: - c: - d: - - 2 - - 3 - -- name: Show the difference in json format - ansible.utils.fact_diff: - before: "{{ before }}" - after: "{{ after }}" - -# TASK [ansible.utils.fact_diff] ************************************** -# --- before -# +++ after -# @@ -3,8 +3,8 @@ -# "b": { -# "c": { -# "d": [ -# - 0, -# - 1 -# + 2, -# + 3 -# ] -# } -# } -# -# changed: [localhost] - -- name: Show the difference in path format - ansible.utils.fact_diff: - before: "{{ before | ansible.utils.to_paths }}" - after: "{{ after | ansible.utils.to_paths }}" - -# TASK [ansible.utils.fact_diff] ************************************** -# --- before -# +++ after -# @@ -1,4 +1,4 @@ -# { -# - "a.b.c.d[0]": 0, -# - "a.b.c.d[1]": 1 -# + "a.b.c.d[0]": 2, -# + "a.b.c.d[1]": 3 -# } -# -# changed: [localhost] - -- name: Show the difference in yaml format - ansible.utils.fact_diff: - before: "{{ before | to_nice_yaml }}" - after: "{{ after | to_nice_yaml }}" -# TASK [ansible.utils.fact_diff] ************************************** -# --- before -# +++ after -# @@ -2,5 +2,5 @@ -# b: -# c: -# d: -# - - 0 -# - - 1 -# + - 2 -# + - 3 - -# changed: [localhost] - -#### Show the difference between complex object using restconf -# ansible_connection: ansible.netcommon.httpapi -# ansible_httpapi_use_ssl: true -# ansible_httpapi_validate_certs: False -# ansible_network_os: ansible.netcommon.restconf - -# - name: Get the current interface config prior to changes -# ansible.netcommon.restconf_get: -# content: config -# path: /data/Cisco-NX-OS-device:System/intf-items/phys-items -# register: pre - -# - name: Update the description of eth1/100 -# ansible.utils.update_fact: -# updates: -# - path: "pre['response']['phys-items']['PhysIf-list'][{{ index }}]['descr']" -# value: "Configured by ansible {{ 100 | random }}" -# vars: -# index: "{{ pre['response']['phys-items']['PhysIf-list']|ansible.utils.index_of('eq', 'eth1/100', 'id') }}" -# register: updated - -# - name: Apply the configuration -# ansible.netcommon.restconf_config: -# path: 'data/Cisco-NX-OS-device:System/intf-items/' -# content: "{{ updated.pre.response}}" -# method: patch - -# - name: Get the current interface config after changes -# ansible.netcommon.restconf_get: -# content: config -# path: /data/Cisco-NX-OS-device:System/intf-items/phys-items -# register: post - -# - name: Show the difference -# ansible.utils.fact_diff: -# before: "{{ pre.response|ansible.utils.to_paths }}" -# after: "{{ post.response|ansible.utils.to_paths }}" - -# TASK [ansible.utils.fact_diff] ********************************************* -# --- before -# +++ after -# @@ -3604,7 +3604,7 @@ -# "phys-items['PhysIf-list'][37].bw": "0", -# "phys-items['PhysIf-list'][37].controllerId": "", -# "phys-items['PhysIf-list'][37].delay": "1", -# - "phys-items['PhysIf-list'][37].descr": "Configured by ansible 95", -# + "phys-items['PhysIf-list'][37].descr": "Configured by ansible 20", -# "phys-items['PhysIf-list'][37].dot1qEtherType": "0x8100", -# "phys-items['PhysIf-list'][37].duplex": "auto", -# "phys-items['PhysIf-list'][37].id": "eth1/100", - -# changed: [nxos101] diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_fact_diff/tasks/filter.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_fact_diff/tasks/filter.yaml deleted file mode 100644 index bd6e02c8..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_fact_diff/tasks/filter.yaml +++ /dev/null @@ -1,92 +0,0 @@ ---- -- name: Set fact - ansible.builtin.set_fact: - before: [0, 1, 2] - after: [0, 1, 2, 3] - plugin: - vars: - skip_lines: - - "+" - -- name: Check for graceful fail of invalid regex - ansible.builtin.set_fact: "{{ before | ansible.utils.fact_diff(after, plugin) }}" - ignore_errors: true - register: result - -- name: Assert - ansible.builtin.assert: - that: "{{ msg in result.msg }}" - vars: - msg: "The regex '+', is not valid" - -- name: Check argspec validation - ansible.builtin.set_fact: - result: "{{ [1, 2, 3] | ansible.utils.fact_diff() }}" - register: error - ignore_errors: true - -- name: Assert - ansible.builtin.assert: - that: "{{ msg in error.msg }}" - vars: - msg: "missing required arguments: after" - -- name: Set fact - ansible.builtin.set_fact: - before: - a: - b: - c: - d: - - 0 - - 1 - after: - a: - b: - c: - d: - - 2 - - 3 - -- name: Show the difference in json format - ansible.builtin.set_fact: - result: "{{ before | ansible.utils.fact_diff(after) }}" - -- name: Show the difference in path format - ansible.builtin.set_fact: - before: "{{ before | ansible.utils.to_paths }}" - after: "{{ after | ansible.utils.to_paths }}" - -- name: Show the difference in path format - ansible.builtin.set_fact: - result: "{{ before | ansible.utils.fact_diff(after) }}" - -- name: Show the difference in yaml format - ansible.builtin.set_fact: - before: "{{ before | to_nice_yaml }}" - after: "{{ after | to_nice_yaml }}" - -- name: Show the difference in yaml format - ansible.builtin.set_fact: - result: "{{ before | ansible.utils.fact_diff(after) }}" - -- name: Set fact - ansible.builtin.set_fact: - before: - a: - b: - c: - d: - - 0 - - 1 - after: - a: - b: - c: - d: - - 2 - - 3 - -- name: Show the common lines in json format - ansible.builtin.set_fact: - result: "{{ before | ansible.utils.fact_diff(after, common=true) }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_fact_diff/tasks/main.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_fact_diff/tasks/main.yaml deleted file mode 100644 index 333bee8c..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_fact_diff/tasks/main.yaml +++ /dev/null @@ -1,15 +0,0 @@ ---- -- name: Recursively find all test files - ansible.builtin.find: - file_type: file - paths: "{{ role_path }}/tasks" - recurse: false - use_regex: true - patterns: - - "^(?!_|main).+$" - delegate_to: localhost - register: found - -- name: Include tasks - ansible.builtin.include_tasks: "{{ item.path }}" - loop: "{{ found.files }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_fact_diff/tasks/simple.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_fact_diff/tasks/simple.yaml deleted file mode 100644 index 4a2ed729..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_fact_diff/tasks/simple.yaml +++ /dev/null @@ -1,17 +0,0 @@ ---- -- name: Check for graceful fail of invalid regex - ansible.utils.fact_diff: - before: [0, 1, 2] - after: [0, 1, 2, 3] - plugin: - vars: - skip_lines: - - "+" - ignore_errors: true - register: result - -- name: Assert - ansible.builtin.assert: - that: "{{ msg in result.msg }}" - vars: - msg: "The regex '+', is not valid" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_from_xml/tasks/main.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_from_xml/tasks/main.yaml deleted file mode 100644 index 333bee8c..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_from_xml/tasks/main.yaml +++ /dev/null @@ -1,15 +0,0 @@ ---- -- name: Recursively find all test files - ansible.builtin.find: - file_type: file - paths: "{{ role_path }}/tasks" - recurse: false - use_regex: true - patterns: - - "^(?!_|main).+$" - delegate_to: localhost - register: found - -- name: Include tasks - ansible.builtin.include_tasks: "{{ item.path }}" - loop: "{{ found.files }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_from_xml/tasks/simple.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_from_xml/tasks/simple.yaml deleted file mode 100644 index edc529e7..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_from_xml/tasks/simple.yaml +++ /dev/null @@ -1,41 +0,0 @@ ---- -- name: Setup xml and expected json - ansible.builtin.set_fact: - data: ' - - ' - output: - { - "netconf-state": - { - "@xmlns": "urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring", - "schemas": { "schema": null }, - }, - } - -- name: Debug - ansible.builtin.debug: - msg: "{{ data | ansible.utils.from_xml() }}" - -- name: Integration tests with and without default engine as xmltodict and - ansible.builtin.assert: - that: "{{ output == item.test }}" - loop: - - test: "{{ data | ansible.utils.from_xml() }}" - - test: "{{ data | ansible.utils.from_xml('xmltodict') }}" - -- name: Setup invalid xml as input to ansible.utils.from_xml. - ansible.builtin.set_fact: - data: '' - -- name: Validate input xml - ansible.builtin.set_fact: - _result: "{{ data | ansible.utils.from_xml() }}" - ignore_errors: true - register: result - -- name: Assert - ansible.builtin.assert: - that: "{{ msg in result.msg }}" - vars: - msg: "Error when using plugin 'from_xml': Input Xml is not valid" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_get_path/tasks/argspec.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_get_path/tasks/argspec.yaml deleted file mode 100644 index d21d6077..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_get_path/tasks/argspec.yaml +++ /dev/null @@ -1,35 +0,0 @@ ---- -- name: Set fact - ansible.builtin.set_fact: - a: - b: - c: - d: - - 0 - - 1 - -- name: Check argspec validation with filter - ansible.builtin.set_fact: - _result: "{{ a | ansible.utils.get_path() }}" - ignore_errors: true - register: result - -- name: Assert - ansible.builtin.assert: - that: "{{ msg in result.msg }}" - vars: - msg: "missing required arguments: path" - -- name: Check argspec validation with lookup - ansible.builtin.set_fact: - _result: "{{ lookup('ansible.utils.get_path') }}" - ignore_errors: true - register: result - -- name: Assert - ansible.builtin.assert: - that: "{{ item in result.msg }}" - loop: - - "missing required arguments:" - - path - - var diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_get_path/tasks/examples_filter.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_get_path/tasks/examples_filter.yaml deleted file mode 100644 index 1d9d0061..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_get_path/tasks/examples_filter.yaml +++ /dev/null @@ -1,98 +0,0 @@ ---- -- name: Set fact - ansible.builtin.set_fact: - a: - b: - c: - d: - - 0 - - 1 - e: - - true - - false - -- name: Retrieve a value deep inside a using a path - ansible.builtin.set_fact: - value: "{{ a | ansible.utils.get_path(path) }}" - vars: - path: b.c.d[0] - -# TASK [Retrieve a value deep inside a using a path] ****************** -# ok: [localhost] => changed=false -# ansible_facts: -# value: '0' - -#### Working with hostvars - -- name: Retrieve a value deep inside all of the host's vars - ansible.builtin.set_fact: - value: "{{ look_in | ansible.utils.get_path(look_for) }}" - vars: - look_in: "{{ hostvars[inventory_hostname] }}" - look_for: a.b.c.d[0] - -# TASK [Retrieve a value deep inside all of the host's vars] ******** -# ok: [nxos101] => changed=false -# ansible_facts: -# as_filter: '0' -# as_lookup: '0' - -#### Used alongside ansible.utils.to_paths - -- name: Get the paths for the object - ansible.builtin.set_fact: - paths: "{{ a | ansible.utils.to_paths(prepend='a') }}" - -- name: Retrieve the value of each path from vars - ansible.builtin.debug: - msg: "The value of path {{ path }} in vars is {{ value }}" - loop: "{{ paths.keys() | list }}" - loop_control: - label: "{{ item }}" - vars: - path: "{{ item }}" - value: "{{ vars | ansible.utils.get_path(item) }}" -# TASK [Get the paths for the object] ******************************* -# ok: [nxos101] => changed=false -# ansible_facts: -# paths: -# a.b.c.d[0]: 0 -# a.b.c.d[1]: 1 -# a.b.c.e[0]: true -# a.b.c.e[1]: false - -# TASK [Retrieve the value of each path from vars] ****************** -# ok: [nxos101] => (item=a.b.c.d[0]) => -# msg: The value of path a.b.c.d[0] in vars is 0 -# ok: [nxos101] => (item=a.b.c.d[1]) => -# msg: The value of path a.b.c.d[1] in vars is 1 -# ok: [nxos101] => (item=a.b.c.e[0]) => -# msg: The value of path a.b.c.e[0] in vars is true -# ok: [nxos101] => (item=a.b.c.e[1]) => -# msg: The value of path a.b.c.e[1] in vars is False - -#### Working with complex structures and transforming results - -# - name: Retrieve the current interface config -# cisco.nxos.nxos_interfaces: -# state: gathered -# register: interfaces - -# - name: Get the description of several interfaces -# ansible.builtin.debug: -# msg: "{{ rekeyed|ansible.utils.get_path(item) }}" -# vars: -# rekeyed: -# by_name: "{{ interfaces.gathered|ansible.builtin.rekey_on_member('name') }}" -# loop: -# - by_name['Ethernet1/1'].description -# - by_name['Ethernet1/2'].description|upper -# - by_name['Ethernet1/3'].description|default('') - -# TASK [Get the description of several interfaces] ****************** -# ok: [nxos101] => (item=by_name['Ethernet1/1'].description) => changed=false -# msg: Configured by ansible -# ok: [nxos101] => (item=by_name['Ethernet1/2'].description|upper) => changed=false -# msg: CONFIGURED BY ANSIBLE -# ok: [nxos101] => (item=by_name['Ethernet1/3'].description|default('')) => changed=false -# msg: '' diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_get_path/tasks/examples_lookup.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_get_path/tasks/examples_lookup.yaml deleted file mode 100644 index 4d365233..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_get_path/tasks/examples_lookup.yaml +++ /dev/null @@ -1,95 +0,0 @@ ---- -- name: Set fact - ansible.builtin.set_fact: - a: - b: - c: - d: - - 0 - - 1 - e: - - true - - false - -- name: Retrieve a value deep inside a using a path - ansible.builtin.set_fact: - value: "{{ lookup('ansible.utils.get_path', a, path) }}" - vars: - path: b.c.d[0] - -# TASK [Retrieve a value deep inside a using a path] ****************** -# ok: [localhost] => changed=false -# ansible_facts: -# value: '0' - -#### Working with hostvars - -- name: Retrieve a value deep inside all of the host's vars - ansible.builtin.set_fact: - value: "{{ lookup('ansible.utils.get_path', look_in, look_for) }}" - vars: - look_in: "{{ hostvars[inventory_hostname] }}" - look_for: a.b.c.d[0] - -# TASK [Retrieve a value deep inside all of the host's vars] ******** -# ok: [nxos101] => changed=false -# ansible_facts: -# as_filter: '0' -# as_lookup: '0' - -#### Used alongside ansible.utils.to_paths - -- name: Get the paths for the object - ansible.builtin.set_fact: - paths: "{{ lookup('ansible.utils.to_paths', a, prepend='a') }}" - -- name: Retrieve the value of each path from vars - ansible.builtin.debug: - msg: "The value of path {{ path }} in vars is {{ lookup('ansible.utils.get_path', hostvars[inventory_hostname], path) }}" - loop: "{{ paths.keys() | list }}" - loop_control: - loop_var: path -# TASK [Get the paths for the object] ******************************* -# ok: [nxos101] => changed=false -# ansible_facts: -# paths: -# a.b.c.d[0]: 0 -# a.b.c.d[1]: 1 -# a.b.c.e[0]: true -# a.b.c.e[1]: false - -# TASK [Retrieve the value of each path from vars] ****************** -# ok: [nxos101] => (item=a.b.c.d[0]) => -# msg: The value of path a.b.c.d[0] in vars is 0 -# ok: [nxos101] => (item=a.b.c.d[1]) => -# msg: The value of path a.b.c.d[1] in vars is 1 -# ok: [nxos101] => (item=a.b.c.e[0]) => -# msg: The value of path a.b.c.e[0] in vars is true -# ok: [nxos101] => (item=a.b.c.e[1]) => -# msg: The value of path a.b.c.e[1] in vars is False - -#### Working with complex structures and transforming results - -# - name: Retrieve the current interface config -# cisco.nxos.nxos_interfaces: -# state: gathered -# register: interfaces - -# - name: Get the description of several interfaces -# ansible.builtin.debug: -# msg: "{{ lookup('ansible.utils.get_path', rekeyed, item) }}" -# vars: -# rekeyed: -# by_name: "{{ interfaces.gathered|ansible.builtin.rekey_on_member('name') }}" -# loop: -# - by_name['Ethernet1/1'].description -# - by_name['Ethernet1/2'].description|upper -# - by_name['Ethernet1/3'].description|default('') - -# TASK [Get the description of several interfaces] ****************** -# ok: [nxos101] => (item=by_name['Ethernet1/1'].description) => changed=false -# msg: Configured by ansible -# ok: [nxos101] => (item=by_name['Ethernet1/2'].description|upper) => changed=false -# msg: CONFIGURED BY ANSIBLE -# ok: [nxos101] => (item=by_name['Ethernet1/3'].description|default('')) => changed=false -# msg: '' diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_get_path/tasks/main.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_get_path/tasks/main.yaml deleted file mode 100644 index 333bee8c..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_get_path/tasks/main.yaml +++ /dev/null @@ -1,15 +0,0 @@ ---- -- name: Recursively find all test files - ansible.builtin.find: - file_type: file - paths: "{{ role_path }}/tasks" - recurse: false - use_regex: true - patterns: - - "^(?!_|main).+$" - delegate_to: localhost - register: found - -- name: Include tasks - ansible.builtin.include_tasks: "{{ item.path }}" - loop: "{{ found.files }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_get_path/tasks/simple.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_get_path/tasks/simple.yaml deleted file mode 100644 index 9a0978a2..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_get_path/tasks/simple.yaml +++ /dev/null @@ -1,61 +0,0 @@ ---- -- name: Set fact - ansible.builtin.set_fact: - a: - b: - c: - d: - - 0 - - 1 - -- name: Simple test filter and lookup - ansible.builtin.assert: - that: "{{ item.result == item.expected }}" - loop: - - result: "{{ vars | ansible.utils.get_path('a') }}" - expected: "{{ a }}" - - result: "{{ a | ansible.utils.get_path('b') }}" - expected: "{{ a.b }}" - - result: "{{ a | ansible.utils.get_path('b.c') }}" - expected: "{{ a.b.c }}" - - result: "{{ a | ansible.utils.get_path('b.c.d') }}" - expected: "{{ a.b.c.d }}" - - result: "{{ a | ansible.utils.get_path('b.c.d[0]') }}" - expected: "{{ a.b.c.d[0] }}" - - result: "{{ a | ansible.utils.get_path('b.c.d[1]') }}" - expected: "{{ a.b.c.d[1] }}" - - result: '{{ a | ansible.utils.get_path(''b["c"]'') }}' - expected: "{{ a.b.c }}" - - result: "{{ lookup('ansible.utils.get_path', vars, 'a') }}" - expected: "{{ a }}" - - result: "{{ lookup('ansible.utils.get_path', a, 'b') }}" - expected: "{{ a.b }}" - - result: "{{ lookup('ansible.utils.get_path', a, 'b.c') }}" - expected: "{{ a.b.c }}" - - result: "{{ lookup('ansible.utils.get_path', a, 'b.c.d') }}" - expected: "{{ a.b.c.d }}" - - result: "{{ lookup('ansible.utils.get_path', a, 'b.c.d[0]') }}" - expected: "{{ a.b.c.d[0] }}" - - result: "{{ lookup('ansible.utils.get_path', a, 'b.c.d[1]') }}" - expected: "{{ a.b.c.d[1] }}" - - result: '{{ lookup(''ansible.utils.get_path'', a, ''b["c"]'') }}' - expected: "{{ a.b.c }}" - -- name: Set fact - ansible.builtin.set_fact: - a: - b: - c: - d: - - 0 - -- name: Simple test filter and lookup w/ wantlist - ansible.builtin.assert: - that: "{{ item.result == item.expected }}" - loop: - - result: "{{ vars | ansible.utils.get_path('a.b.c.d[0]', wantlist=true) }}" - expected: - - "{{ a.b.c.d[0] }}" - - result: "{{ lookup('ansible.utils.get_path', vars, 'a.b.c.d[0]', wantlist=true) }}" - expected: - - "{{ a.b.c.d[0] }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_index_of/tasks/argspec.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_index_of/tasks/argspec.yaml deleted file mode 100644 index 577166e1..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_index_of/tasks/argspec.yaml +++ /dev/null @@ -1,63 +0,0 @@ ---- -- name: Set fact - ansible.builtin.set_fact: - complex: - a: - b: - c: - d: - - e0: 0 - e1: ansible - e2: true - - e0: 1 - e1: redhat - -- name: Check argspec validation with filter (not a list) - ansible.builtin.set_fact: - _result: "{{ complex | ansible.utils.index_of('eq', 2) }}" - ignore_errors: true - register: result - -- name: Assert - ansible.builtin.assert: - that: "{{ msg in result.msg }}" - vars: - msg: "cannot be converted to a list" - -- name: Check argspec validation with filter (missing params) - ansible.builtin.set_fact: - _result: "{{ complex.a.b.c.d | ansible.utils.index_of() }}" - ignore_errors: true - register: result - -- name: Assert - ansible.builtin.assert: - that: "{{ msg in result.msg }}" - vars: - msg: "missing required arguments: test" - -- name: Check argspec validation with lookup (not a list) - ansible.builtin.set_fact: - _result: "{{ lookup('ansible.utils.index_of', complex, 'eq', 2) }}" - ignore_errors: true - register: result - -- name: Assert - ansible.builtin.assert: - that: "{{ msg in result.msg }}" - vars: - msg: "cannot be converted to a list" - -- name: Check argspec validation with lookup (missing params) - ansible.builtin.set_fact: - _result: "{{ lookup('ansible.utils.index_of') }}" - ignore_errors: true - register: result - -- name: Assert - ansible.builtin.assert: - that: "{{ item in result.msg }}" - loop: - - "missing required arguments:" - - data - - test diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_index_of/tasks/examples_filter.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_index_of/tasks/examples_filter.yaml deleted file mode 100644 index 08836ac4..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_index_of/tasks/examples_filter.yaml +++ /dev/null @@ -1,226 +0,0 @@ ---- -#### Simple examples -- name: Set fact - ansible.builtin.set_fact: - data: - - 1 - - 2 - - 3 - -- name: Find the index of 2 - ansible.builtin.set_fact: - indices: "{{ data | ansible.utils.index_of('eq', 2) }}" - -# TASK [Find the index of 2] ************************************************* -# ok: [nxos101] => changed=false -# ansible_facts: -# indices: '1' - -- name: Find the index of 2, ensure list is returned - ansible.builtin.set_fact: - indices: "{{ data | ansible.utils.index_of('eq', 2, wantlist=true) }}" - -# TASK [Find the index of 2, ensure list is returned] ************************ -# ok: [nxos101] => changed=false -# ansible_facts: -# indices: -# - 1 - -- name: Find the index of 3 using the long format - ansible.builtin.set_fact: - indices: "{{ data | ansible.utils.index_of(test='eq', value=value, wantlist=true) }}" - vars: - value: 3 - -# TASK [Find the index of 3 using the long format] *************************** -# ok: [nxos101] => changed=false -# ansible_facts: -# indices: -# - 2 - -# - name: Find numbers greater than 1, using loop -# ansible.builtin.debug: -# msg: "{{ data[item] }} is {{ test }} than {{ value }}" -# loop: "{{ data|ansible.utils.index_of(test, value) }}" -# vars: -# test: '>' -# value: 1 - -# TASK [Find numbers great than 1, using loop] ******************************* -# ok: [sw01] => (item=1) => -# msg: 2 is > than 1 -# ok: [sw01] => (item=2) => -# msg: 3 is > than 1 - -#### Working with lists of dictionaries - -- name: Set fact - ansible.builtin.set_fact: - data: - - name: sw01.example.lan - type: switch - - name: rtr01.example.lan - type: router - - name: fw01.example.corp - type: firewall - - name: fw02.example.corp - type: firewall - -- name: Find the index of all firewalls using the type key - ansible.builtin.set_fact: - firewalls: "{{ data | ansible.utils.index_of('eq', 'firewall', 'type') }}" - -# TASK [Find the index of all firewalls using the type key] ****************** -# ok: [nxos101] => changed=false -# ansible_facts: -# firewalls: -# - 2 -# - 3 - -- name: Find the index of all firewalls, use in a loop - ansible.builtin.debug: - msg: "The type of {{ device_type }} at index {{ item }} has name {{ data[item].name }}." - loop: "{{ data | ansible.utils.index_of('eq', device_type, 'type') }}" - vars: - device_type: firewall - -# TASK [Find the index of all firewalls, use in a loop, as a filter] ********* -# ok: [nxos101] => (item=2) => -# msg: The type of firewall at index 2 has name fw01.example.corp. -# ok: [nxos101] => (item=3) => -# msg: The type of firewall at index 3 has name fw02.example.corp. - -- name: Find the index of all devices with a .corp name - ansible.builtin.debug: - msg: "The device named {{ data[item].name }} is a {{ data[item].type }}" - loop: "{{ data | ansible.utils.index_of('regex', expression, 'name') }}" - vars: - expression: '\.corp$' -# ends with .corp - -# TASK [Find the index of all devices with a .corp name] ********************* -# ok: [nxos101] => (item=2) => -# msg: The device named fw01.example.corp is a firewall -# ok: [nxos101] => (item=3) => -# msg: The device named fw02.example.corp is a firewall - -#### Working with complex structures from resource modules - -# - name: Retrieve the current L3 interface configuration -# cisco.nxos.nxos_l3_interfaces: -# state: gathered -# register: current_l3 - -# TASK [Retrieve the current L3 interface configuration] ********************* -# ok: [sw01] => changed=false -# gathered: -# - name: Ethernet1/1 -# - name: Ethernet1/2 -# <...> -# - name: Ethernet1/128 -# - ipv4: -# - address: 192.168.101.14/24 -# name: mgmt0 - -# - name: Find the indices interfaces with a 192.168.101.xx ip address -# ansible.builtin.set_fact: -# found: "{{ found + entry }}" -# with_indexed_items: "{{ current_l3.gathered }}" -# vars: -# found: [] -# ip: '192.168.101.' -# address: "{{ item.1.ipv4|d([])|ansible.utils.index_of('search', ip, 'address', wantlist=true) }}" -# entry: -# - interface_idx: "{{ item.0 }}" -# address_idxs: "{{ address }}" -# when: address - -# TASK [debug] *************************************************************** -# ok: [sw01] => -# found: -# - address_idxs: -# - 0 -# interface_idx: '128' - -# - name: Show all interfaces and their address -# ansible.builtin.debug: -# msg: "{{ interface.name }} has ip {{ address }}" -# loop: "{{ found|subelements('address_idxs') }}" -# vars: -# interface: "{{ current_l3.gathered[item.0.interface_idx|int] }}" -# address: "{{ interface.ipv4[item.1].address }}" - -# TASK [Show all interfaces and their address] ******************************* -# ok: [nxos101] => (item=[{'interface_idx': '128', 'address_idxs': [0]}, 0]) => -# msg: mgmt0 has ip 192.168.101.14/24 - -#### Working with deeply nested data - -- name: Set fact - ansible.builtin.set_fact: - data: - interfaces: - interface: - - config: - description: configured by Ansible - 1 - enabled: true - loopback-mode: false - mtu: 1024 - name: loopback0000 - type: eth - name: loopback0000 - subinterfaces: - subinterface: - - config: - description: subinterface configured by Ansible - 1 - enabled: true - index: 5 - index: 5 - - config: - description: subinterface configured by Ansible - 2 - enabled: false - index: 2 - index: 2 - - config: - description: configured by Ansible - 2 - enabled: false - loopback-mode: false - mtu: 2048 - name: loopback1111 - type: virt - name: loopback1111 - subinterfaces: - subinterface: - - config: - description: subinterface configured by Ansible - 3 - enabled: true - index: 10 - index: 10 - - config: - description: subinterface configured by Ansible - 4 - enabled: false - index: 3 - index: 3 - -- name: Find the description of loopback111, subinterface index 10 - ansible.builtin.debug: - msg: |- - {{ data.interfaces.interface[int_idx | int] - .subinterfaces.subinterface[subint_idx | int] - .config.description }} - vars: - # the values to search for - int_name: loopback1111 - sub_index: 10 - # retrieve the index in each nested list - int_idx: | - {{ data.interfaces.interface | - ansible.utils.index_of('eq', int_name, 'name') }} - subint_idx: | - {{ data.interfaces.interface[int_idx | int] - .subinterfaces.subinterface | - ansible.utils.index_of('eq', sub_index, 'index') }} - -# TASK [Find the description of loopback111, subinterface index 10] ************ -# ok: [sw01] => -# msg: subinterface configured by Ansible - 3 diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_index_of/tasks/examples_lookup.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_index_of/tasks/examples_lookup.yaml deleted file mode 100644 index 885d9d0e..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_index_of/tasks/examples_lookup.yaml +++ /dev/null @@ -1,245 +0,0 @@ ---- -#### Simple examples -- name: Set fact - ansible.builtin.set_fact: - data: - - 1 - - 2 - - 3 - -- name: Find the index of 2 - ansible.builtin.set_fact: - indices: "{{ lookup('ansible.utils.index_of', data, 'eq', 2) }}" - -# TASK [Find the index of 2] ************************************************* -# ok: [nxos101] => changed=false -# ansible_facts: -# indices: '1' - -- name: Find the index of 2, ensure list is returned - ansible.builtin.set_fact: - indices: "{{ lookup('ansible.utils.index_of', data, 'eq', 2, wantlist=true) }}" - -# TASK [Find the index of 2, ensure list is returned] ************************ -# ok: [nxos101] => changed=false -# ansible_facts: -# indices: -# - 1 - -- name: Find the index of 3 using the long format - ansible.builtin.set_fact: - indices: "{{ lookup('ansible.utils.index_of', data=data, test='eq', value=value, wantlist=true) }}" - vars: - value: 3 - -# TASK [Find the index of 3 using the long format] *************************** -# ok: [nxos101] => changed=false -# ansible_facts: -# indices: -# - 2 - -# - name: Find numbers greater than 1, using loop -# ansible.builtin.debug: -# msg: "{{ data[item] }} is {{ test }} than {{ value }}" -# loop: "{{ lookup('ansible.utils.index_of', data, test, value) }}" -# vars: -# test: '>' -# value: 1 - -# TASK [Find numbers great than 1, using loop] ******************************* -# ok: [sw01] => (item=1) => -# msg: 2 is > than 1 -# ok: [sw01] => (item=2) => -# msg: 3 is > than 1 - -- name: Find numbers greater than 1, using with - ansible.builtin.debug: - msg: "{{ data[item] }} is {{ params.test }} than {{ params.value }}" - with_ansible.utils.index_of: "{{ params }}" - vars: - params: - data: "{{ data }}" - test: ">" - value: 1 - -# TASK [Find numbers greater than 1, using with] ***************************** -# ok: [nxos101] => (item=1) => -# msg: 2 is > than 1 -# ok: [nxos101] => (item=2) => -# msg: 3 is > than 1 - -#### Working with lists of dictionaries - -- name: Set fact - ansible.builtin.set_fact: - data: - - name: sw01.example.lan - type: switch - - name: rtr01.example.lan - type: router - - name: fw01.example.corp - type: firewall - - name: fw02.example.corp - type: firewall - -- name: Find the index of all firewalls using the type key - ansible.builtin.set_fact: - firewalls: "{{ lookup('ansible.utils.index_of', data, 'eq', 'firewall', 'type') }}" - -# TASK [Find the index of all firewalls using the type key] ****************** -# ok: [nxos101] => changed=false -# ansible_facts: -# firewalls: -# - 2 -# - 3 - -- name: Find the index of all firewalls, use in a loop - ansible.builtin.debug: - msg: "The type of {{ device_type }} at index {{ item }} has name {{ data[item].name }}." - loop: "{{ lookup('ansible.utils.index_of', data, 'eq', device_type, 'type') }}" - vars: - device_type: firewall - -# TASK [Find the index of all firewalls, use in a loop, as a filter] ********* -# ok: [nxos101] => (item=2) => -# msg: The type of firewall at index 2 has name fw01.example.corp. -# ok: [nxos101] => (item=3) => -# msg: The type of firewall at index 3 has name fw02.example.corp. - -- name: Find the index of all devices with a .corp name - ansible.builtin.debug: - msg: "The device named {{ data[item].name }} is a {{ data[item].type }}" - loop: "{{ lookup('ansible.utils.index_of', data, 'regex', expression, 'name') }}" - vars: - expression: '\.corp$' -# ends with .corp - -# TASK [Find the index of all devices with a .corp name] ********************* -# ok: [nxos101] => (item=2) => -# msg: The device named fw01.example.corp is a firewall -# ok: [nxos101] => (item=3) => -# msg: The device named fw02.example.corp is a firewall - -#### Working with complex structures from resource modules - -# - name: Retrieve the current L3 interface configuration -# cisco.nxos.nxos_l3_interfaces: -# state: gathered -# register: current_l3 - -# TASK [Retrieve the current L3 interface configuration] ********************* -# ok: [sw01] => changed=false -# gathered: -# - name: Ethernet1/1 -# - name: Ethernet1/2 -# <...> -# - name: Ethernet1/128 -# - ipv4: -# - address: 192.168.101.14/24 -# name: mgmt0 - -# - name: Find the indices interfaces with a 192.168.101.xx ip address -# ansible.builtin.set_fact: -# found: "{{ found + entry }}" -# with_indexed_items: "{{ current_l3.gathered }}" -# vars: -# found: [] -# ip: '192.168.101.' -# address: "{{ lookup('ansible.utils.index_of', item.1.ipv4|d([]), 'search', ip, 'address', wantlist=true) }}" -# entry: -# - interface_idx: "{{ item.0 }}" -# address_idxs: "{{ address }}" -# when: address - -# TASK [debug] *************************************************************** -# ok: [sw01] => -# found: -# - address_idxs: -# - 0 -# interface_idx: '128' - -# - name: Show all interfaces and their address -# debug: -# msg: "{{ interface.name }} has ip {{ address }}" -# loop: "{{ found|subelements('address_idxs') }}" -# vars: -# interface: "{{ current_l3.gathered[item.0.interface_idx|int] }}" -# address: "{{ interface.ipv4[item.1].address }}" - -# TASK [Show all interfaces and their address] ******************************* -# ok: [nxos101] => (item=[{'interface_idx': '128', 'address_idxs': [0]}, 0]) => -# msg: mgmt0 has ip 192.168.101.14/24 - -#### Working with deeply nested data - -- name: Set fact - ansible.builtin.set_fact: - data: - interfaces: - interface: - - config: - description: configured by Ansible - 1 - enabled: true - loopback-mode: false - mtu: 1024 - name: loopback0000 - type: eth - name: loopback0000 - subinterfaces: - subinterface: - - config: - description: subinterface configured by Ansible - 1 - enabled: true - index: 5 - index: 5 - - config: - description: subinterface configured by Ansible - 2 - enabled: false - index: 2 - index: 2 - - config: - description: configured by Ansible - 2 - enabled: false - loopback-mode: false - mtu: 2048 - name: loopback1111 - type: virt - name: loopback1111 - subinterfaces: - subinterface: - - config: - description: subinterface configured by Ansible - 3 - enabled: true - index: 10 - index: 10 - - config: - description: subinterface configured by Ansible - 4 - enabled: false - index: 3 - index: 3 - -- name: Set fact - ansible.builtin.set_fact: - int_idx: | - "{{ lookup('ansible.utils.index_of', - data.interfaces.interface, - 'eq', 'loopback1111', 'name') }}" - -- name: Set fact - ansible.builtin.set_fact: - subint_idx: | - "{{ lookup('ansible.utils.index_of', - data.interfaces.interface[int_idx|int].subinterfaces.subinterface, - 'eq', 10, 'index') }}" - -- name: Find the description of loopback111, subinterface index 10 - ansible.builtin.debug: - msg: |- - {{ data.interfaces.interface[int_idx|int] - .subinterfaces.subinterface[subint_idx|int] - .config.description }} - # retrieve the index in each nested list - -# TASK [Find the description of loopback111, subinterface index 10] ************ -# ok: [sw01] => -# msg: subinterface configured by Ansible - 3 diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_index_of/tasks/main.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_index_of/tasks/main.yaml deleted file mode 100644 index 333bee8c..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_index_of/tasks/main.yaml +++ /dev/null @@ -1,15 +0,0 @@ ---- -- name: Recursively find all test files - ansible.builtin.find: - file_type: file - paths: "{{ role_path }}/tasks" - recurse: false - use_regex: true - patterns: - - "^(?!_|main).+$" - delegate_to: localhost - register: found - -- name: Include tasks - ansible.builtin.include_tasks: "{{ item.path }}" - loop: "{{ found.files }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_index_of/tasks/simple.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_index_of/tasks/simple.yaml deleted file mode 100644 index 36340157..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_index_of/tasks/simple.yaml +++ /dev/null @@ -1,109 +0,0 @@ ---- -- name: Set fact - ansible.builtin.set_fact: - complex: - a: - - true - - true - - false - - 5 - - b: - - b1: 1 - b2: 2 - - b1: 3 - b2: 4 - c: - c1: - - a - - b - - c - d: - - Abcd - - abcd - - B - - b - -- name: Some basic tests - ansible.builtin.assert: - that: "{{ item.test == item.result }}" - loop: - - test: "{{ complex.a | ansible.utils.index_of('eq', true) }}" - result: [0, 1] - - test: "{{ lookup('ansible.utils.index_of', complex.a, 'eq', true) }}" - result: [0, 1] - - test: "{{ complex.a | ansible.utils.index_of('in', [true, False]) }}" - result: [0, 1, 2] - - test: "{{ lookup('ansible.utils.index_of', complex.a, 'in', [true, False]) }}" - result: [0, 1, 2] - # These are commented out due to jinja < 2.11 w/ 2.9, 'integer' not avaialable - # can be enabled at a later date - # - test: "{{ complex.a|ansible.utils.index_of('integer') }}" - # result: "3" - # - test: "{{ lookup('ansible.utils.index_of', complex.a, 'integer') }}" - # result: "3" - - - test: "{{ complex.b | ansible.utils.index_of('==', 1, 'b1') }}" - result: "0" - - test: "{{ lookup('ansible.utils.index_of', complex.b, '==', 1, 'b1') }}" - result: "0" - - - test: "{{ complex.c.c1 | ansible.utils.index_of('!=', 'c') }}" - result: [0, 1] - - test: "{{ lookup('ansible.utils.index_of', complex.c.c1, '!=', 'c') }}" - result: [0, 1] - - - test: "{{ complex.d | ansible.utils.index_of('match', '.*d$') }}" - result: [0, 1] - - test: "{{ lookup('ansible.utils.index_of', complex.d, 'match', '.*d$') }}" - result: [0, 1] - -- name: Set fact - ansible.builtin.set_fact: - complex: - a: - b: - c: - d: - - e0: 0 - e1: ansible - e2: true - - e0: 1 - e1: redhat - -- name: Find index in list of dictionaries - ansible.builtin.assert: - that: "{{ item.test == item.result }}" - loop: - - test: "{{ complex.a.b.c.d | ansible.utils.index_of('eq', 'ansible', 'e1') }}" - result: "0" - - test: "{{ lookup('ansible.utils.index_of', complex.a.b.c.d, 'eq', 'ansible', 'e1') }}" - result: "0" - - test: "{{ complex.a.b.c.d | ansible.utils.index_of('eq', 'ansible', 'e1', wantlist=true) }}" - result: [0] - - test: "{{ lookup('ansible.utils.index_of', complex.a.b.c.d, 'eq', 'ansible', 'e1', wantlist=true) }}" - result: [0] - -- name: Test a missing key in the list of dictionaries - ansible.builtin.assert: - that: "{{ item.test == item.result }}" - loop: - - test: "{{ complex.a.b.c.d | ansible.utils.index_of('eq', true, 'e2') }}" - result: "0" - - test: "{{ lookup('ansible.utils.index_of', complex.a.b.c.d, 'eq', true, 'e2') }}" - result: "0" - -- name: Test a missing key in the list of dictionaries, fail on missing - ansible.builtin.assert: - that: "{{ item.test == item.result }}" - loop: - - test: "{{ complex.a.b.c.d | ansible.utils.index_of('eq', true, 'e2', fail_on_missing=true) }}" - result: "0" - - test: "{{ lookup('ansible.utils.index_of', complex.a.b.c.d, 'eq', true, 'e2', fail_on_missing=true) }}" - result: "0" - ignore_errors: true - register: result - -- name: Ensure the previous test failed - ansible.builtin.assert: - that: "{{ result.failed and 'not found in' in result.msg }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/cidr_merge.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/cidr_merge.yaml deleted file mode 100644 index 9a772781..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/cidr_merge.yaml +++ /dev/null @@ -1,31 +0,0 @@ ---- -- name: Cidr_merge with merge action - ansible.builtin.set_fact: - value: - - 192.168.0.0/17 - - 192.168.128.0/17 - - 192.168.128.1 - -- name: Cidr_merge with merge action - ansible.builtin.set_fact: - result1: "{{ value | ansible.utils.cidr_merge }}" - -- name: Assert result for cidr_merge - ansible.builtin.assert: - that: "{{ result1 == cidr_result1 }}" - -- name: Cidr_merge with span action - ansible.builtin.set_fact: - value: - - 192.168.1.1 - - 192.168.1.2 - - 192.168.1.3 - - 192.168.1.4 - -- name: Cidr_merge with span action - ansible.builtin.set_fact: - result2: "{{ value | ansible.utils.cidr_merge('span') }}" - -- name: Assert result for cidr_merge(span) - ansible.builtin.assert: - that: "{{ result2 == cidr_result2 }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/hwaddr.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/hwaddr.yaml deleted file mode 100644 index c05ef270..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/hwaddr.yaml +++ /dev/null @@ -1,16 +0,0 @@ ---- -- name: Hwaddr filter test1 - ansible.builtin.set_fact: - result1: "{{ '1a:2b:3c:4d:5e:6f' | ansible.utils.hwaddr }}" - -- name: Assert result for hwaddr. - ansible.builtin.assert: - that: "{{ result1 == '1a:2b:3c:4d:5e:6f' }}" - -- name: Hwaddr filter test2 - ansible.builtin.set_fact: - result1: "{{ '1a:2b:3c:4d:5e:6f' | ansible.utils.hwaddr('cisco') }}" - -- name: Assert result for hwaddr. - ansible.builtin.assert: - that: "{{ result1 == '1a2b.3c4d.5e6f' }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/ip4_hex.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/ip4_hex.yaml deleted file mode 100644 index 164aa2cc..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/ip4_hex.yaml +++ /dev/null @@ -1,26 +0,0 @@ ---- -- name: Ip4_hex without delimiter - ansible.builtin.set_fact: - result1: "{{ '192.168.1.5' | ansible.utils.ip4_hex }}" - -- name: Assert result for ip4_hex. - ansible.builtin.assert: - that: "{{ result1 == 'c0a80105' }}" - -- name: Ip4_hex with delimiter - ansible.builtin.set_fact: - result1: "{{ '192.168.1.5' | ansible.utils.ip4_hex(':') }}" - -- name: Assert result for ip4_hex. - ansible.builtin.assert: - that: "{{ result1 == 'c0:a8:01:05' }}" - -- name: Ip4_hex validate input - ansible.builtin.set_fact: - result1: "{{ '555.444.333.999' | ansible.utils.ip4_hex }}" - register: output - ignore_errors: true - -- name: Assert result for ip4_hex. - ansible.builtin.assert: - that: "{{ 'You must pass a valid IP address; 555.444.333.999 is invalid' in output.msg }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/ipaddr.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/ipaddr.yaml deleted file mode 100644 index aaa79c02..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/ipaddr.yaml +++ /dev/null @@ -1,75 +0,0 @@ ---- -- name: Set ipaddress list - ansible.builtin.set_fact: - value: - - 192.24.2.1 - - host.fqdn - - ::1 - - 192.168.32.0/24 - - fe80::100/10 - - "42540766412265424405338506004571095040/64" - - true - -- name: Ipaddr filter with empty string query - ansible.builtin.set_fact: - result1: "{{ value | ansible.utils.ipaddr }}" - -- name: Assert result for ipaddr. - ansible.builtin.assert: - that: "{{ result1 == ipaddr_result1 }}" - -- name: Ipaddr filter with host string query - ansible.builtin.set_fact: - result2: "{{ value | ansible.utils.ipaddr('host') }}" - -- name: Assert result for ipaddr host query - ansible.builtin.assert: - that: "{{ result2 == ipaddr_result2 }}" - -- name: Ipaddr filter with public network query - ansible.builtin.set_fact: - result3: "{{ value | ansible.utils.ipaddr('public') }}" - -- name: Assert result for ipaddr public network query - ansible.builtin.assert: - that: "{{ result3 == ipaddr_result3 }}" - -- name: Ipaddr filter with network query - ansible.builtin.set_fact: - result4: "{{ value | ansible.utils.ipaddr('net') }}" - -- name: Assert result for ipaddr network query - ansible.builtin.assert: - that: "{{ result4 == ipaddr_result4 }}" - -- name: Ipaddr filter with network/prefix query - ansible.builtin.set_fact: - result5: "{{ '192.168.0.0/23' | ansible.utils.ipaddr('network/prefix') }}" - -- name: Assert result for ipaddr filter with network/prefix query - ansible.builtin.assert: - that: "{{ result5 == '192.168.0.0/23' }}" - -- name: Ipaddr filter with chained filters - ansible.builtin.set_fact: - result6: "{{ '192.168.255.0' | ansible.utils.ipaddr('network') | ansible.utils.ipmath(123) }}" - -- name: Assert result for ipaddr filter with chained filters - ansible.builtin.assert: - that: "{{ result6 == '192.168.255.123' }}" - -- name: Debug - ansible.builtin.debug: - msg: "Test int input for ipaddr filter" - -- name: Set fact 1 - ansible.builtin.set_fact: - ip1: "172.20.0.1" - -- name: Set fact 2 - ansible.builtin.set_fact: - ip2: "{{ ((ip1 | ansible.utils.ipaddr('int')) + 6) | ansible.utils.ipaddr }}" - -- name: Assert result for ipaddr filter - ansible.builtin.assert: - that: "{{ ip2 == '172.20.0.7' }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/ipcut.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/ipcut.yaml deleted file mode 100644 index 2f5716a0..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/ipcut.yaml +++ /dev/null @@ -1,16 +0,0 @@ ---- -- name: Get first X bits of Ipv6 address - ansible.builtin.set_fact: - result1: "{{ '1234:4321:abcd:dcba::17' | ansible.utils.ipcut(64) }}" - -- name: Assert result for ipcut. - ansible.builtin.assert: - that: "{{ result1 == '1234:4321:abcd:dcba' }}" - -- name: Get last X bits of Ipv6 address - ansible.builtin.set_fact: - result1: "{{ '1234:4321:abcd:dcba::17' | ansible.utils.ipcut(-80) }}" - -- name: Assert result for ipcut. - ansible.builtin.assert: - that: "{{ result1 == 'dcba:0:0:0:17' }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/ipmath.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/ipmath.yaml deleted file mode 100644 index 318210f3..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/ipmath.yaml +++ /dev/null @@ -1,48 +0,0 @@ ---- -- name: Get the next fifth address based on an IP address with Ipmath filter - ansible.builtin.set_fact: - result1: "{{ '192.168.1.5' | ansible.utils.ipmath('5') }}" - -- name: Assert result for ipmath. - ansible.builtin.assert: - that: "{{ result1 == '192.168.1.10' }}" - -- name: Get the tenth previous address based on an IP address with Ipmath filter - ansible.builtin.set_fact: - result1: "{{ '192.168.1.5' | ansible.utils.ipmath('-10') }}" - -- name: Assert result for ipmath. - ansible.builtin.assert: - that: "{{ result1 == '192.168.0.251' }}" - -- name: Get the next fifth address using CIDR notation with Ipmath filter - ansible.builtin.set_fact: - result1: "{{ '192.168.1.1/24' | ansible.utils.ipmath('5') }}" - -- name: Assert result for ipmath. - ansible.builtin.assert: - that: "{{ result1 == '192.168.1.6' }}" - -- name: Get the previous fifth address using CIDR notation with Ipmath filter - ansible.builtin.set_fact: - result1: "{{ '192.168.1.6/24' | ansible.utils.ipmath('-5') }}" - -- name: Assert result for ipmath. - ansible.builtin.assert: - that: "{{ result1 == '192.168.1.1' }}" - -- name: Get the next tenth address in IPv6 with Ipmath filter - ansible.builtin.set_fact: - result1: "{{ '2001::1' | ansible.utils.ipmath('10') }}" - -- name: Assert result for ipmath. - ansible.builtin.assert: - that: "{{ result1 == '2001::b' }}" - -- name: Get the previous tenth address in IPv6 with Ipmath filter - ansible.builtin.set_fact: - result1: "{{ '2001::5' | ansible.utils.ipmath('-10') }}" - -- name: Assert result for ipmath. - ansible.builtin.assert: - that: "{{ result1 == '2000:ffff:ffff:ffff:ffff:ffff:ffff:fffb' }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/ipsubnet.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/ipsubnet.yaml deleted file mode 100644 index 3c53b61d..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/ipsubnet.yaml +++ /dev/null @@ -1,80 +0,0 @@ ---- -- name: Convert address to subnet using ipsubnet - ansible.builtin.set_fact: - result1: "{{ address | ansible.utils.ipsubnet }}" - -- name: Assert result for ipsubnet. - ansible.builtin.assert: - that: "{{ result1 == '192.168.144.5/32' }}" - -- name: Check if given value is subnet - ansible.builtin.set_fact: - result2: "{{ subnet | ansible.utils.ipsubnet }}" - -- name: Assert result for ipsubnet. - ansible.builtin.assert: - that: "{{ result2 == '192.168.0.0/16' }}" - -- name: Get the number of subnets a given subnet can be split into - ansible.builtin.set_fact: - result3: "{{ subnet | ansible.utils.ipsubnet('20') }}" - -- name: Assert result for ipsubnet. - ansible.builtin.assert: - that: "{{ result3 == '16' }}" - -- name: Get the 1st subnet - ansible.builtin.set_fact: - result4: "{{ subnet | ansible.utils.ipsubnet('20', '0') }}" - -- name: Assert result for ipsubnet. - ansible.builtin.assert: - that: "{{ result4 == '192.168.0.0/20' }}" - -- name: Get the last subnet - ansible.builtin.set_fact: - result5: "{{ subnet | ansible.utils.ipsubnet('20', '-1') }}" - -- name: Assert result for ipsubnet. - ansible.builtin.assert: - that: "{{ result5 == '192.168.240.0/20' }}" - -- name: Get biggest subnet that contains that given IP address - ansible.builtin.set_fact: - result6: "{{ address | ansible.utils.ipsubnet('20') }}" - -- name: Assert result for ipsubnet. - ansible.builtin.assert: - that: "{{ result6 == '192.168.144.0/20' }}" - -- name: Get the 1st subnet - ansible.builtin.set_fact: - result7: "{{ address | ansible.utils.ipsubnet('18', '0') }}" - -- name: Assert result for ipsubnet. - ansible.builtin.assert: - that: "{{ result7 == '192.168.128.0/18' }}" - -- name: The rank of the IP in the subnet (the IP is the 36870nth /32 of the subnet) - ansible.builtin.set_fact: - result8: "{{ address | ansible.utils.ipsubnet(subnet) }}" - -- name: Assert result for ipsubnet. - ansible.builtin.assert: - that: "{{ result8 == '36870' }}" - -- name: Small subnets from a large supernet should return quickly - ansible.builtin.set_fact: - result9: "{{ '2001:db8::/56' | ansible.utils.ipsubnet(120, 0) }}" - -- name: Assert result for ipsubnet. - ansible.builtin.assert: - that: result9 == '2001:db8::/120' - -- name: Small subnets from a large supernet should return quickly at index - ansible.builtin.set_fact: - result10: "{{ '2001:db8::/56' | ansible.utils.ipsubnet(120, 4) }}" - -- name: Assert result for ipsubnet. - ansible.builtin.assert: - that: result10 == '2001:db8::400/120' diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/ipv4.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/ipv4.yaml deleted file mode 100644 index bafe6eaf..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/ipv4.yaml +++ /dev/null @@ -1,43 +0,0 @@ ---- -- name: Set ipaddress list - ansible.builtin.set_fact: - value: - - 192.24.2.1 - - host.fqdn - - ::1 - - 192.168.32.0/24 - - fe80::100/10 - - "42540766412265424405338506004571095040/64" - - true - -- name: Ipv4 filter - ansible.builtin.set_fact: - result1: "{{ value | ansible.utils.ipv4 }}" - -- name: Assert result for ipv4. - ansible.builtin.assert: - that: "{{ result1 == result1_val }}" - -- name: Convert ipv4 to ipv6 filter - ansible.builtin.set_fact: - result2: "{{ value | ansible.utils.ipv4('ipv6') }}" - -- name: Assert result for ipv6. - ansible.builtin.assert: - that: "{{ result2 == result2_val }}" - -- name: Ipv4 filter with address query - ansible.builtin.set_fact: - result3: "{{ value | ansible.utils.ipv4('address') }}" - -- name: Assert result for ipv4 filter with address query. - ansible.builtin.assert: - that: "{{ result3 == result3_val }}" - -- name: Ipv4 filter with single value - ansible.builtin.set_fact: - result4: "{{ '192.24.2.1' | ansible.utils.ipv4('ipv6') }}" - -- name: Assert result for ipv4 filter with single value - ansible.builtin.assert: - that: "{{ result4 == '::ffff:192.24.2.1/128' }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/ipv6.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/ipv6.yaml deleted file mode 100644 index 29dd3862..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/ipv6.yaml +++ /dev/null @@ -1,43 +0,0 @@ ---- -- name: Set ipaddress list - ansible.builtin.set_fact: - value: - - 192.24.2.1 - - ::ffff:192.168.32.0/120 - - "" - - ::ffff:192.24.2.1/128 - - 192.168.32.0/24 - - fe80::100/10 - - true - -- name: Ipv6 filter - ansible.builtin.set_fact: - result1: "{{ value | ansible.utils.ipv6 }}" - -- name: Assert result for ipv6. - ansible.builtin.assert: - that: "{{ result1 == ipv6_result1 }}" - -- name: Convert ipv6 to ipv4 filter - ansible.builtin.set_fact: - result2: "{{ value | ansible.utils.ipv6('ipv4') }}" - -- name: Assert result for ipv4. - ansible.builtin.assert: - that: "{{ result2 == ipv6_result2 }}" - -- name: Ipv6 filter with address query - ansible.builtin.set_fact: - result3: "{{ value | ansible.utils.ipv6('address') }}" - -- name: Assert result for ipv6 filter with address query. - ansible.builtin.assert: - that: "{{ result3 == ipv6_result3 }}" - -- name: Ipv6 filter with single value - ansible.builtin.set_fact: - result4: "{{ '::ffff:192.168.32.0/120' | ansible.utils.ipv6('ipv4') }}" - -- name: Assert result for ipv6 filter with single value - ansible.builtin.assert: - that: "{{ result4 == '192.168.32.0/24' }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/ipv6form.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/ipv6form.yaml deleted file mode 100644 index 73a8cb18..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/ipv6form.yaml +++ /dev/null @@ -1,32 +0,0 @@ ---- -- name: Expand ipv6 address - ansible.builtin.set_fact: - result1: "{{ '1234:4321:abcd:dcba::17' | ansible.utils.ipv6form('expand') }}" - -- name: Assert result for ipv6form. - ansible.builtin.assert: - that: "{{ result1 == '1234:4321:abcd:dcba:0000:0000:0000:0017' }}" - -- name: Compress ipv6 address - ansible.builtin.set_fact: - result1: "{{ '1234:4321:abcd:dcba:0000:0000:0000:0017' | ansible.utils.ipv6form('compress') }}" - -- name: Assert result for ipv6form. - ansible.builtin.assert: - that: "{{ result1 == '1234:4321:abcd:dcba::17' }}" - -- name: Convert ipv6 address into x509 form used by digital certificate - ansible.builtin.set_fact: - result1: "{{ '1234:4321:abcd:dcba::17' | ansible.utils.ipv6form('x509') }}" - -- name: Assert result for ipv6form. - ansible.builtin.assert: - that: "{{ result1 == '1234:4321:abcd:dcba:0:0:0:17' }}" - -- name: Convert ipv6 address into x509 form used by digital certificate - ansible.builtin.set_fact: - result1: "{{ '1234:4321:abcd:dcba:0000:0000:0000:0017' | ansible.utils.ipv6form('x509') }}" - -- name: Assert result for ipv6form. - ansible.builtin.assert: - that: "{{ result1 == '1234:4321:abcd:dcba:0:0:0:17' }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/ipwrap.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/ipwrap.yaml deleted file mode 100644 index c5056720..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/ipwrap.yaml +++ /dev/null @@ -1,27 +0,0 @@ ---- -- name: Set ipaddress list - ansible.builtin.set_fact: - value: - - 192.24.2.1 - - host.fqdn - - ::1 - - 192.168.32.0/24 - - fe80::100/10 - - "42540766412265424405338506004571095040/64" - - true - -- name: Ipwrap filter - ansible.builtin.set_fact: - result1: "{{ value | ansible.utils.ipwrap }}" - -- name: Assert result for ipwrap. - ansible.builtin.assert: - that: "{{ result1 == ipwrap_result1 }}" - -- name: Ipwrap filter with single value - ansible.builtin.set_fact: - result4: "{{ 'fe80::100/10' | ansible.utils.ipwrap }}" - -- name: Assert result for ipv6 filter with single value - ansible.builtin.assert: - that: "{{ result4 == '[fe80::100]/10' }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/macaddr.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/macaddr.yaml deleted file mode 100644 index e0306a16..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/macaddr.yaml +++ /dev/null @@ -1,16 +0,0 @@ ---- -- name: Macaddr filter test1 - ansible.builtin.set_fact: - result1: "{{ '1a:2b:3c:4d:5e:6f' | ansible.utils.macaddr }}" - -- name: Assert result for macaddr. - ansible.builtin.assert: - that: "{{ result1 == '1a:2b:3c:4d:5e:6f' }}" - -- name: Macaddr filter test2 - ansible.builtin.set_fact: - result1: "{{ '1a:2b:3c:4d:5e:6f' | ansible.utils.macaddr('cisco') }}" - -- name: Assert result for macaddr. - ansible.builtin.assert: - that: "{{ result1 == '1a2b.3c4d.5e6f' }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/main.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/main.yaml deleted file mode 100644 index 333bee8c..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/main.yaml +++ /dev/null @@ -1,15 +0,0 @@ ---- -- name: Recursively find all test files - ansible.builtin.find: - file_type: file - paths: "{{ role_path }}/tasks" - recurse: false - use_regex: true - patterns: - - "^(?!_|main).+$" - delegate_to: localhost - register: found - -- name: Include tasks - ansible.builtin.include_tasks: "{{ item.path }}" - loop: "{{ found.files }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/network_in_network.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/network_in_network.yaml deleted file mode 100644 index 2c412886..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/network_in_network.yaml +++ /dev/null @@ -1,24 +0,0 @@ ---- -- name: Network_in_network filter test1 - ansible.builtin.set_fact: - result1: "{{ '192.168.0.0/24' | ansible.utils.network_in_network('192.168.0.1') }}" - -- name: Assert result for network_in_network. - ansible.builtin.assert: - that: "{{ result1 == true }}" - -- name: Network_in_network filter test2 - ansible.builtin.set_fact: - result1: "{{ '192.168.0.0/24' | ansible.utils.network_in_network('10.0.0.1') }}" - -- name: Assert result for network_in_network - ansible.builtin.assert: - that: "{{ result1 == False }}" - -- name: Network_in_network filter test3 - ansible.builtin.set_fact: - result1: "{{ '192.168.0.0/16' | ansible.utils.network_in_network('192.168.0.0/24') }}" - -- name: Assert result for network_in_network - ansible.builtin.assert: - that: "{{ result1 == true }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/network_in_usable.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/network_in_usable.yaml deleted file mode 100644 index ec570516..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/network_in_usable.yaml +++ /dev/null @@ -1,24 +0,0 @@ ---- -- name: Network_in_usable filter test1 - ansible.builtin.set_fact: - result1: "{{ '192.168.0.0/24' | ansible.utils.network_in_usable('192.168.0.1') }}" - -- name: Assert result for network_in_usable. - ansible.builtin.assert: - that: "{{ result1 == true }}" - -- name: Network_in_usable filter test2 - ansible.builtin.set_fact: - result1: "{{ '192.168.0.0/24' | ansible.utils.network_in_usable('192.168.0.255') }}" - -- name: Assert result for network_in_usable - ansible.builtin.assert: - that: "{{ result1 == False }}" - -- name: Network_in_usable filter test3 - ansible.builtin.set_fact: - result1: "{{ '192.168.0.0/16' | ansible.utils.network_in_usable('192.168.0.255') }}" - -- name: Assert result for network_in_usable - ansible.builtin.assert: - that: "{{ result1 == true }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/next_nth_usable.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/next_nth_usable.yaml deleted file mode 100644 index dca7e970..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/next_nth_usable.yaml +++ /dev/null @@ -1,16 +0,0 @@ ---- -- name: Next_nth_usable filter - ansible.builtin.set_fact: - result1: "{{ '192.168.122.1/24' | ansible.utils.next_nth_usable(2) }}" - -- name: Assert result for next_nth_usable. - ansible.builtin.assert: - that: "{{ result1 == '192.168.122.3' }}" - -- name: Next_nth_usable filter - ansible.builtin.set_fact: - result1: "{{ '192.168.122.254/24' | ansible.utils.next_nth_usable(2) }}" - -- name: Assert result for ipv4. - ansible.builtin.assert: - that: "{{ result1 == '' }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/nthhost.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/nthhost.yaml deleted file mode 100644 index 37e5861a..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/nthhost.yaml +++ /dev/null @@ -1,16 +0,0 @@ ---- -- name: Nthhost filter test1 - ansible.builtin.set_fact: - result1: "{{ '10.0.0.0/8' | ansible.utils.nthhost(305) }}" - -- name: Assert result for nthhost. - ansible.builtin.assert: - that: "{{ result1 == '10.0.1.49' }}" - -- name: Nthhost filter test2 - ansible.builtin.set_fact: - result1: "{{ '10.0.0.0/8' | ansible.utils.nthhost(-1) }}" - -- name: Assert result for nthhost - ansible.builtin.assert: - that: "{{ result1 == '10.255.255.255' }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/previous_nth_usable.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/previous_nth_usable.yaml deleted file mode 100644 index 4254543d..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/previous_nth_usable.yaml +++ /dev/null @@ -1,16 +0,0 @@ ---- -- name: Previous_nth_usable filter - ansible.builtin.set_fact: - result1: "{{ '192.168.122.10/24' | ansible.utils.previous_nth_usable(2) }}" - -- name: Assert result for previous_nth_usable. - ansible.builtin.assert: - that: "{{ result1 == '192.168.122.8' }}" - -- name: Previous_nth_usable filter - ansible.builtin.set_fact: - result1: "{{ '192.168.122.1/24' | ansible.utils.previous_nth_usable(2) }}" - -- name: Assert result for ipv4. - ansible.builtin.assert: - that: "{{ result1 == '' }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/reduce_on_network.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/reduce_on_network.yaml deleted file mode 100644 index 363cede3..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/reduce_on_network.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -- name: Reduce_on_network filter test1 - ansible.builtin.set_fact: - result1: "{{ ['192.168.0.34', '10.3.0.3', '192.168.2.34'] | ansible.utils.reduce_on_network('192.168.0.0/24') }}" - -- name: Assert result for reduce_on_network. - ansible.builtin.assert: - that: "{{ result1 == ['192.168.0.34'] }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/slaac.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/slaac.yaml deleted file mode 100644 index 117e15d0..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/tasks/slaac.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -- name: Slaac filter test1 - ansible.builtin.set_fact: - result1: "{{ 'fdcf:1894:23b5:d38c:0000:0000:0000:0000' | ansible.utils.slaac('c2:31:b3:83:bf:2b') }}" - -- name: Assert result for slaac. - ansible.builtin.assert: - that: "{{ result1 == 'fdcf:1894:23b5:d38c:c031:b3ff:fe83:bf2b' }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/vars/main.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/vars/main.yaml deleted file mode 100644 index 6c28bde1..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_ipaddr_filter/vars/main.yaml +++ /dev/null @@ -1,61 +0,0 @@ ---- -address: "192.168.144.5" -subnet: "192.168.0.0/16" -result1_val: - - "192.24.2.1" - - "192.168.32.0/24" - -result2_val: - - "::ffff:192.24.2.1/128" - - "::ffff:192.168.32.0/120" - -result3_val: - - "192.24.2.1" - -ipaddr_result1: - - 192.24.2.1 - - ::1 - - 192.168.32.0/24 - - fe80::100/10 - - 2001:db8:32c:faad::/64 - -ipaddr_result2: - - 192.24.2.1/32 - - ::1/128 - - fe80::100/10 - -ipaddr_result3: - - 192.24.2.1 - - 2001:db8:32c:faad::/64 - -ipaddr_result4: - - 192.168.32.0/24 - - 2001:db8:32c:faad::/64 - -ipwrap_result1: - - "192.24.2.1" - - "host.fqdn" - - "[::1]" - - "192.168.32.0/24" - - "[fe80::100]/10" - - "[2001:db8:32c:faad::]/64" - - true - -ipv6_result1: - - "::ffff:192.168.32.0/120" - - "::ffff:192.24.2.1/128" - - "fe80::100/10" - -ipv6_result2: - - "192.168.32.0/24" - - "192.24.2.1/32" - -ipv6_result3: - - "::ffff:192.168.32.0" - - "::ffff:192.24.2.1" - - "fe80::100" - -cidr_result1: - - 192.168.0.0/16 - -cidr_result2: 192.168.1.0/29 diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_keep_keys/tasks/main.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_keep_keys/tasks/main.yaml deleted file mode 100644 index 333bee8c..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_keep_keys/tasks/main.yaml +++ /dev/null @@ -1,15 +0,0 @@ ---- -- name: Recursively find all test files - ansible.builtin.find: - file_type: file - paths: "{{ role_path }}/tasks" - recurse: false - use_regex: true - patterns: - - "^(?!_|main).+$" - delegate_to: localhost - register: found - -- name: Include tasks - ansible.builtin.include_tasks: "{{ item.path }}" - loop: "{{ found.files }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_keep_keys/tasks/simple.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_keep_keys/tasks/simple.yaml deleted file mode 100644 index 5a7b1cdd..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_keep_keys/tasks/simple.yaml +++ /dev/null @@ -1,72 +0,0 @@ ---- -- name: Setup data as facts - ansible.builtin.set_fact: - data: - - interface_name: eth0 - enabled: true - duplex: auto - speed: auto - - interface_name: eth1 - description: Configured by Ansible - Interface 1 - mtu: 1500 - speed: auto - duplex: auto - is_enabled: true - vifs: - - vlan_id: 100 - description: Eth1 - VIF 100 - mtu: 400 - is_enabled: true - - vlan_id: 101 - description: Eth1 - VIF 101 - is_enabled: true - - interface_name: eth2 - description: Configured by Ansible - Interface 2 (ADMIN DOWN) - mtu: 600 - is_enabled: false - -- name: Debug - ansible.builtin.debug: - msg: "{{ data | ansible.utils.keep_keys(target=['desc', 'interface_'], matching_parameter='starts_with') }}" - register: result - -- name: Assert result dicts - ansible.builtin.assert: - that: - - keep['starts_with'] == result['msg'] - -- name: Setup data as facts for equivalent - ansible.builtin.set_fact: - data: - - interface_name: eth0 - enabled: true - duplex: auto - speed: auto - - interface_name: eth1 - description: Configured by Ansible - Interface 1 - mtu: 1500 - speed: auto - duplex: auto - is_enabled: true - vifs: - - vlan_id: 100 - description: Eth1 - VIF 100 - mtu: 400 - is_enabled: true - - vlan_id: 101 - description: Eth1 - VIF 101 - is_enabled: true - - interface_name: eth2 - description: Configured by Ansible - Interface 2 (ADMIN DOWN) - mtu: 600 - is_enabled: false - -- name: Debug - ansible.builtin.debug: - msg: "{{ data | ansible.utils.keep_keys(target=['interface_name', 'is_enabled', 'vlan_id']) }}" - register: result - -- name: Assert result dicts - ansible.builtin.assert: - that: - - keep_default['default'] == result['msg'] diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_keep_keys/vars/main.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_keep_keys/vars/main.yaml deleted file mode 100644 index d7d0d90a..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_keep_keys/vars/main.yaml +++ /dev/null @@ -1,24 +0,0 @@ ---- -keep: - starts_with: - - interface_name: eth0 - - interface_name: eth1 - description: Configured by Ansible - Interface 1 - vifs: - - description: Eth1 - VIF 100 - - description: Eth1 - VIF 101 - - interface_name: eth2 - description: Configured by Ansible - Interface 2 (ADMIN DOWN) - -keep_default: - default: - - interface_name: eth0 - - interface_name: eth1 - is_enabled: true - vifs: - - vlan_id: 100 - is_enabled: true - - vlan_id: 101 - is_enabled: true - - interface_name: eth2 - is_enabled: false diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/in_any_network.yml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/in_any_network.yml deleted file mode 100644 index 51f8725a..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/in_any_network.yml +++ /dev/null @@ -1,17 +0,0 @@ ---- -- name: "In_any_network: :Check if 10.1.1.1 is in the provided network list" - ansible.builtin.assert: - that: - - "{{ '10.1.1.1' is ansible.utils.in_any_network networks }}" - -- name: "In_any_network: Check if 8.8.8.8 is not in the provided network list" - ansible.builtin.assert: - that: "{{ '8.8.8.8' is not ansible.utils.in_any_network networks }}" - -- name: "In_any_network: Test invalidness" - ansible.builtin.set_fact: - criteria_check: "{{ '192.168.4.56' is ansible.utils.in_any_network networks }}" - -- name: "In_any_network: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check == false }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/in_network.yml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/in_network.yml deleted file mode 100644 index 6d632c99..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/in_network.yml +++ /dev/null @@ -1,32 +0,0 @@ ---- -- name: "In_network: Check if 10.1.1.1 is in 10.0.0.0/8" - ansible.builtin.assert: - that: "{{ '10.1.1.1' is ansible.utils.in_network '10.0.0.0/8' }}" - -- name: "In_network: Check if 10.1.1.1 is not in 192.168.1.0/24" - ansible.builtin.assert: - that: "{{ '10.1.1.1' is not ansible.utils.in_network '192.168.1.0/24' }}" - -- name: "In_network: Test invalidness" - ansible.builtin.set_fact: - criteria_check1: "{{ '8.8.8.8' is ansible.utils.in_network '10.0.0.0/8' }}" - -- name: "In_network: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check1 == false }}" - -- name: "In_network: Check if 2001:db8:a::123 is in 2001:db8:a::/64" - ansible.builtin.assert: - that: "{{ '2001:db8:a::123' is ansible.utils.in_network '2001:db8:a::/64' }}" - -- name: "In_network: Check if 2001:db8:a::123 is not in 10.0.0.0/8" - ansible.builtin.assert: - that: "{{ '2001:db8:a::123' is not ansible.utils.in_network '10.0.0.0/8' }}" - -- name: "In_network: Test invalidness" - ansible.builtin.set_fact: - criteria_check2: "{{ '2001:db8:a::123' is not ansible.utils.in_network '2001:db8:a::/64' }}" - -- name: "In_network: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check2 == false }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/in_one_network.yml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/in_one_network.yml deleted file mode 100644 index 4fe4b299..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/in_one_network.yml +++ /dev/null @@ -1,16 +0,0 @@ ---- -- name: "In_one_network: Check if 10.1.1.1 is in the provided network list" - ansible.builtin.assert: - that: "{{ '10.1.1.1' is ansible.utils.in_one_network networks }}" - -- name: "In_one_network: Check if 192.168.3.5 is not in the provided network list" - ansible.builtin.assert: - that: "{{ '192.168.3.5' is not ansible.utils.in_one_network networks }}" - -- name: "In_one_network: Test invalidness" - ansible.builtin.set_fact: - criteria_check: "{{ '172.168.2.16' is ansible.utils.in_one_network networks }}" - -- name: "In_one_network: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check == false }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/ip.yml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/ip.yml deleted file mode 100644 index 76984670..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/ip.yml +++ /dev/null @@ -1,28 +0,0 @@ ---- -- name: "Ip: Check if 10.1.1.1 is a valid IP address" - ansible.builtin.assert: - that: "{{ '10.1.1.1' is ansible.utils.ip }}" - -- name: "Ip: Check if 2001:db8:a::123 is a valid IP address" - ansible.builtin.assert: - that: "{{ '2001:db8:a::123' is ansible.utils.ip }}" - -- name: "Ip: Check if 10.0.0.0/8 is a valid IP address" - ansible.builtin.assert: - that: "{{ '10.0.0.0/8' is ansible.utils.ip }}" - -- name: "Ip: Test invalidness" - ansible.builtin.set_fact: - criteria_check1: "{{ 'string' is ansible.utils.ip }}" - -- name: "Ip: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check1 == false }}" - -- name: "Ip: Test invalidness" - ansible.builtin.set_fact: - criteria_check2: "{{ '300.1.1.1' is ansible.utils.ip }}" - -- name: "Ip: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check2 == false }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/ip_address.yml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/ip_address.yml deleted file mode 100644 index 7cde99df..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/ip_address.yml +++ /dev/null @@ -1,32 +0,0 @@ ---- -- name: "Ip_address: Check if 10.1.1.1 is a valid IP address" - ansible.builtin.assert: - that: "{{ '10.1.1.1' is ansible.utils.ip_address }}" - -- name: "Ip_address: Check if 2001:db8:a::123 is a valid IP address" - ansible.builtin.assert: - that: "{{ '2001:db8:a::123' is ansible.utils.ip_address }}" - -- name: "Ip_address: Test invalidness" - ansible.builtin.set_fact: - criteria_check1: "{{ '10.0.0.0/8' is ansible.utils.ip_address }}" - -- name: "Ip_address: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check1 == false }}" - -- name: "Ip_address: Test invalidness" - ansible.builtin.set_fact: - criteria_check2: "{{ 'string' is ansible.utils.ip_address }}" - -- name: "Ip_address: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check2 == false }}" - -- name: "Ip_address: Test invalidness" - ansible.builtin.set_fact: - criteria_check3: "{{ '300.1.1.1' is ansible.utils.ip_address }}" - -- name: "Ip_address: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check3 == false }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/ipv4.yml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/ipv4.yml deleted file mode 100644 index c39e1f04..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/ipv4.yml +++ /dev/null @@ -1,24 +0,0 @@ ---- -- name: "Ipv4: Check if 10.0.0.0/8 is a valid IPV4 address" - ansible.builtin.assert: - that: "{{ '10.0.0.0/8' is ansible.utils.ipv4 }}" - -- name: "Ipv4: Check if 192.168.1.250 is a valid IPV4 address" - ansible.builtin.assert: - that: "{{ '192.168.1.250' is ansible.utils.ipv4 }}" - -- name: "Ipv4: Test invalidness" - ansible.builtin.set_fact: - criteria_check1: "{{ 'fe80::216:3eff:fee4:16f3' is ansible.utils.ipv4 }}" - -- name: "Ipv4: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check1 == false }}" - -- name: "Ipv4: Test invalidness" - ansible.builtin.set_fact: - criteria_check2: "{{ 'string' is ansible.utils.ipv4 }}" - -- name: "Ipv4: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check2 == false }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/ipv4_address.yml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/ipv4_address.yml deleted file mode 100644 index 2de60bf1..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/ipv4_address.yml +++ /dev/null @@ -1,28 +0,0 @@ ---- -- name: "Ipv4_address: Check if 192.168.1.250 is a valid IPV4 address" - ansible.builtin.assert: - that: "{{ '192.168.1.250' is ansible.utils.ipv4_address }}" - -- name: "Ipv4_address: Test invalidness" - ansible.builtin.set_fact: - criteria_check1: "{{ '10.0.0.0/8' is ansible.utils.ipv4_address }}" - -- name: "Ipv4_address: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check1 == false }}" - -- name: "Ipv4_address: Test invalidness" - ansible.builtin.set_fact: - criteria_check2: "{{ 'fe80::216:3eff:fee4:16f3' is ansible.utils.ipv4_address }}" - -- name: "Ipv4_address: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check2 == false }}" - -- name: "Ipv4_address: Test invalidness" - ansible.builtin.set_fact: - criteria_check3: "{{ 'string' is ansible.utils.ipv4_address }}" - -- name: "Ipv4_address: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check3 == false }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/ipv4_hostmask.yml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/ipv4_hostmask.yml deleted file mode 100644 index c5a03a5a..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/ipv4_hostmask.yml +++ /dev/null @@ -1,20 +0,0 @@ ---- -- name: "Ipv4_hostmask: Check if 0.0.0.255 is a hostmask" - ansible.builtin.assert: - that: "{{ '0.0.0.255' is ansible.utils.ipv4_hostmask }}" - -- name: "Ipv4_hostmask: Test invalidness" - ansible.builtin.set_fact: - criteria_check1: "{{ '255.255.255.0' is ansible.utils.ipv4_hostmask }}" - -- name: "Ipv4_hostmask: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check1 == false }}" - -- name: "Ipv4_hostmask: Test invalidness" - ansible.builtin.set_fact: - criteria_check2: "{{ '10.1.1.1' is ansible.utils.ipv4_hostmask }}" - -- name: "Ipv4_hostmask: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check2 == false }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/ipv4_netmask.yml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/ipv4_netmask.yml deleted file mode 100644 index dd74d391..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/ipv4_netmask.yml +++ /dev/null @@ -1,20 +0,0 @@ ---- -- name: "Ipv4_netmask: Check if 255.255.255.0 is a netmask" - ansible.builtin.assert: - that: "{{ '255.255.255.0' is ansible.utils.ipv4_netmask }}" - -- name: "Ipv4_netmask: Test invalidness" - ansible.builtin.set_fact: - criteria_check1: "{{ '0.0.0.255' is ansible.utils.ipv4_netmask }}" - -- name: "Ipv4_netmask: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check1 == false }}" - -- name: "Ipv4_netmask: Test invalidness" - ansible.builtin.set_fact: - criteria_check2: "{{ '10.1.1.1' is ansible.utils.ipv4_netmask }}" - -- name: "Ipv4_netmask: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check2 == false }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/ipv6.yml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/ipv6.yml deleted file mode 100644 index 302bf583..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/ipv6.yml +++ /dev/null @@ -1,24 +0,0 @@ ---- -- name: "Ipv6: Check if fe80::216:3eff:fee4:16f3 is a valid IPV6 address" - ansible.builtin.assert: - that: "{{ 'fe80::216:3eff:fee4:16f3' is ansible.utils.ipv6 }}" - -- name: "Ipv6: Check if 2001:db8:a::/64 is a valid IPV6 address" - ansible.builtin.assert: - that: "{{ '2001:db8:a::/64' is ansible.utils.ipv6 }}" - -- name: "Ipv6: Test invalidness" - ansible.builtin.set_fact: - criteria_check1: "{{ '10.1.1.1' is ansible.utils.ipv6 }}" - -- name: "Ipv6: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check1 == false }}" - -- name: "Ipv6: Test invalidness" - ansible.builtin.set_fact: - criteria_check2: "{{ 'string' is ansible.utils.ipv6 }}" - -- name: "Ipv6: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check2 == false }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/ipv6_address.yml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/ipv6_address.yml deleted file mode 100644 index 548347e8..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/ipv6_address.yml +++ /dev/null @@ -1,28 +0,0 @@ ---- -- name: "Ipv6_address: Check if fe80::216:3eff:fee4:16f3 is a valid IPV6 address" - ansible.builtin.assert: - that: "{{ 'fe80::216:3eff:fee4:16f3' is ansible.utils.ipv6_address }}" - -- name: "Ipv6_address: Test invalidness" - ansible.builtin.set_fact: - criteria_check1: "{{ '2001:db8:a::123/64' is ansible.utils.ipv6_address }}" - -- name: "Ipv6_address: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check1 == false }}" - -- name: "Ipv6_address: Test invalidness" - ansible.builtin.set_fact: - criteria_check2: "{{ '192.168.1.250' is ansible.utils.ipv6_address }}" - -- name: "Ipv6_address: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check2 == false }}" - -- name: "Ipv6_address: Test invalidness" - ansible.builtin.set_fact: - criteria_check3: "{{ 'string' is ansible.utils.ipv6_address }}" - -- name: "Ipv6_address: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check3 == false }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/ipv6_ipv4_mapped.yml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/ipv6_ipv4_mapped.yml deleted file mode 100644 index b79cdf3c..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/ipv6_ipv4_mapped.yml +++ /dev/null @@ -1,20 +0,0 @@ ---- -- name: "Ipv6_ipv4_mapped: Check if ::FFFF:10.1.1.1 is a valid IPv4-mapped IPv6 address" - ansible.builtin.assert: - that: "{{ '::FFFF:10.1.1.1' is ansible.utils.ipv6_ipv4_mapped }}" - -- name: "Ipv6_ipv4_mapped: Test invalidness" - ansible.builtin.set_fact: - criteria_check1: "{{ '::AAAA:10.1.1.1' is ansible.utils.ipv6_ipv4_mapped }}" - -- name: "Ipv6_ipv4_mapped: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check1 == false }}" - -- name: "Ipv6_ipv4_mapped: Test invalidness" - ansible.builtin.set_fact: - criteria_check2: "{{ 'hello-world' is ansible.utils.ipv6_ipv4_mapped }}" - -- name: "Ipv6_ipv4_mapped: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check2 == false }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/ipv6_sixtofour.yml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/ipv6_sixtofour.yml deleted file mode 100644 index dee81dc4..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/ipv6_sixtofour.yml +++ /dev/null @@ -1,20 +0,0 @@ ---- -- name: "Ipv6_sixtofour: Check if 2002:c0a8:6301:1::1 is a valid 6to4 address" - ansible.builtin.assert: - that: "{{ '2002:c0a8:6301:1::1' is ansible.utils.ipv6_sixtofour }}" - -- name: "Ipv6_sixtofour: Test invalidness" - ansible.builtin.set_fact: - criteria_check1: "{{ '2001:c0a8:6301:1::1' is ansible.utils.ipv6_sixtofour }}" - -- name: "Ipv6_sixtofour: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check1 == false }}" - -- name: "Ipv6_sixtofour: Test invalidness" - ansible.builtin.set_fact: - criteria_check2: "{{ 'helloworld' is ansible.utils.ipv6_sixtofour }}" - -- name: "Ipv6_sixtofour: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check2 == false }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/ipv6_teredo.yml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/ipv6_teredo.yml deleted file mode 100644 index 7c9fed1e..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/ipv6_teredo.yml +++ /dev/null @@ -1,20 +0,0 @@ ---- -- name: "Ipv6_teredo: Check if 2001::c0a8:6301:1 is a valid 6to4 address" - ansible.builtin.assert: - that: "{{ '2001::c0a8:6301:1' is ansible.utils.ipv6_teredo }}" - -- name: "Ipv6_teredo: Test invalidness" - ansible.builtin.set_fact: - criteria_check1: "{{ '2002::c0a8:6301:1' is ansible.utils.ipv6_teredo }}" - -- name: "Ipv6_teredo: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check1 == false }}" - -- name: "Ipv6_teredo: Test invalidness" - ansible.builtin.set_fact: - criteria_check2: "{{ 'helloworld' is ansible.utils.ipv6_teredo }}" - -- name: "Ipv6_teredo: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check2 == false }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/loopback.yml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/loopback.yml deleted file mode 100644 index 19f0324d..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/loopback.yml +++ /dev/null @@ -1,16 +0,0 @@ ---- -- name: "Loopback: Check if 127.10.10.10 is a valid loopback address" - ansible.builtin.assert: - that: "{{ '127.10.10.10' is ansible.utils.loopback }}" - -- name: "Loopback: Check if ::1 is a valid loopback address" - ansible.builtin.assert: - that: "{{ '::1' is ansible.utils.loopback }}" - -- name: "Loopback: Test invalidness" - ansible.builtin.set_fact: - criteria_check: "{{ '10.1.1.1' is ansible.utils.loopback }}" - -- name: "Loopback: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check == false }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/mac.yml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/mac.yml deleted file mode 100644 index 264a6164..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/mac.yml +++ /dev/null @@ -1,24 +0,0 @@ ---- -- name: "Mac: Check if 02:16:3e:e4:16:f3 is a valid MAC address" - ansible.builtin.assert: - that: "{{ '02:16:3e:e4:16:f3' is ansible.utils.mac }}" - -- name: "Mac: Check if 02-16-3e-e4-16-f3 is a valid MAC address" - ansible.builtin.assert: - that: "{{ '02-16-3e-e4-16-f3' is ansible.utils.mac }}" - -- name: "Mac: Check if 0216.3ee4.16f3 is a valid MAC address" - ansible.builtin.assert: - that: "{{ '0216.3ee4.16f3' is ansible.utils.mac }}" - -- name: "Mac: Check if 02163ee416f3 is a valid MAC address" - ansible.builtin.assert: - that: "{{ '02163ee416f3' is ansible.utils.mac }}" - -- name: "Mac: Check invalidness" - ansible.builtin.set_fact: - criteria_check: "{{ 'string' is ansible.utils.mac }}" - -- name: "Mac: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check == false }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/main.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/main.yaml deleted file mode 100644 index 333bee8c..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/main.yaml +++ /dev/null @@ -1,15 +0,0 @@ ---- -- name: Recursively find all test files - ansible.builtin.find: - file_type: file - paths: "{{ role_path }}/tasks" - recurse: false - use_regex: true - patterns: - - "^(?!_|main).+$" - delegate_to: localhost - register: found - -- name: Include tasks - ansible.builtin.include_tasks: "{{ item.path }}" - loop: "{{ found.files }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/multicast.yml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/multicast.yml deleted file mode 100644 index 8ecdb227..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/multicast.yml +++ /dev/null @@ -1,24 +0,0 @@ ---- -- name: "Multicast: Check if 224.0.0.1 is a valid multicast IP address" - ansible.builtin.assert: - that: "{{ '224.0.0.1' is ansible.utils.multicast }}" - -- name: "Multicast: Check if ff02::1 is a valid multicast IP address" - ansible.builtin.assert: - that: "{{ 'ff02::1' is ansible.utils.multicast }}" - -- name: "Multicast: Test invalidness" - ansible.builtin.set_fact: - criteria_check1: "{{ '127.0.0.1' is ansible.utils.multicast }}" - -- name: "Multicast: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check1 == false }}" - -- name: "Multicast: Test invalidness" - ansible.builtin.set_fact: - criteria_check2: "{{ 'helloworld' is ansible.utils.multicast }}" - -- name: "Multicast: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check2 == false }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/private.yml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/private.yml deleted file mode 100644 index 91cc22f6..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/private.yml +++ /dev/null @@ -1,12 +0,0 @@ ---- -- name: "Private: Check if 10.1.1.1 is a private IP address" - ansible.builtin.assert: - that: "{{ '10.1.1.1' is ansible.utils.private }}" - -- name: "Private: Test invalidness" - ansible.builtin.set_fact: - criteria_check: "{{ '8.8.8.8' is ansible.utils.private }}" - -- name: "Private: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check == false }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/public.yml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/public.yml deleted file mode 100644 index 9b6fc6f9..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/public.yml +++ /dev/null @@ -1,12 +0,0 @@ ---- -- name: "Public: Check if 8.8.8.8 is a public IP address" - ansible.builtin.assert: - that: "{{ '8.8.8.8' is ansible.utils.public }}" - -- name: "Public: Test invalidness" - ansible.builtin.set_fact: - criteria_check: "{{ '10.1.1.1' is ansible.utils.public }}" - -- name: "Public: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check == false }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/reserved.yml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/reserved.yml deleted file mode 100644 index c8d596d8..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/reserved.yml +++ /dev/null @@ -1,12 +0,0 @@ ---- -- name: "Reserved: Check if 253.0.0.1 is a reserved IP address" - ansible.builtin.assert: - that: "{{ '253.0.0.1' is ansible.utils.reserved }}" - -- name: "Reserved: Test invalidness" - ansible.builtin.set_fact: - criteria_check: "{{ '128.146.1.7' is ansible.utils.reserved }}" - -- name: "Reserved: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check == false }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/resolvable.yml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/resolvable.yml deleted file mode 100644 index e976f35b..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/resolvable.yml +++ /dev/null @@ -1,28 +0,0 @@ ---- -- name: "Resolvable: Check if good_name is resolvable or not" - ansible.builtin.assert: - that: "{{ good_name is ansible.utils.resolvable }}" - -- name: "Resolvable: Check if ipv4_localhost is resolvable or not" - ansible.builtin.assert: - that: "{{ ipv4_localhost is ansible.utils.resolvable }}" - -- name: "Resolvable: Check if ipv6_localhost is resolvable or not" - ansible.builtin.assert: - that: "{{ ipv6_localhost is ansible.utils.resolvable }}" - -- name: "Resolvable: Test invalidness" - ansible.builtin.set_fact: - criteria_check1: "{{ bad_name is ansible.utils.resolvable }}" - -- name: "Resolvable: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check1 == false }}" - -- name: "Resolvable: Test invalidness" - ansible.builtin.set_fact: - criteria_check2: "{{ 'invalidhost' is ansible.utils.resolvable }}" - -- name: "Resolvable: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check2 == false }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/subnet_of.yml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/subnet_of.yml deleted file mode 100644 index 7bbbdaf1..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/subnet_of.yml +++ /dev/null @@ -1,20 +0,0 @@ ---- -- name: "Subnet_of: Check if 10.1.1.0/24 is a subnet of 10.0.0.0/8" - ansible.builtin.assert: - that: "{{ '10.1.1.0/24' is ansible.utils.subnet_of '10.0.0.0/8' }}" - -- name: "Subnet_of: Test invalidness" - ansible.builtin.set_fact: - criteria_check1: "{{ '10.0.0.0/8' is ansible.utils.subnet_of '10.1.1.0/24' }}" - -- name: "Subnet_of: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check1 == false }}" - -- name: "Subnet_of: Test invalidness" - ansible.builtin.set_fact: - criteria_check2: "{{ '192.168.1.0/24' is ansible.utils.subnet_of '10.0.0.0/8' }}" - -- name: "Subnet_of: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check2 == false }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/supernet_of.yml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/supernet_of.yml deleted file mode 100644 index 5a0e112b..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/supernet_of.yml +++ /dev/null @@ -1,20 +0,0 @@ ---- -- name: "Supernet_of: Check if 10.0.0.0/8 is a supernet of 10.1.1.0/24" - ansible.builtin.assert: - that: "{{ '10.0.0.0/8' is ansible.utils.supernet_of '10.1.1.0/24' }}" - -- name: "Supernet_of: Test invalidness" - ansible.builtin.set_fact: - criteria_check1: "{{ '10.1.1.0/24' is ansible.utils.supernet_of '10.0.0.0/8' }}" - -- name: "Supernet_of: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check1 == false }}" - -- name: "Supernet_of: Test invalidness" - ansible.builtin.set_fact: - criteria_check2: "{{ '10.0.0.0/8' is ansible.utils.supernet_of '192.168.1.0/24' }}" - -- name: "Supernet_of: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check2 == false }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/unspecified.yml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/unspecified.yml deleted file mode 100644 index 0aaa47b5..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/tasks/unspecified.yml +++ /dev/null @@ -1,28 +0,0 @@ ---- -- name: "Unspecified: Check if 0.0.0.0 is an unspecified IP address" - ansible.builtin.assert: - that: "{{ '0.0.0.0' is ansible.utils.unspecified }}" - -- name: "Unspecified: Check if 0:0:0:0:0:0:0:0 is an unspecified IP address" - ansible.builtin.assert: - that: "{{ '0:0:0:0:0:0:0:0' is ansible.utils.unspecified }}" - -- name: "Unspecified: Check if :: is an unspecified IP address" - ansible.builtin.assert: - that: "{{ '::' is ansible.utils.unspecified }}" - -- name: "Unspecified: Test invalidness" - ansible.builtin.set_fact: - criteria_check1: "{{ '127.0.0.1' is ansible.utils.unspecified }}" - -- name: "Unspecified: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check1 == false }}" - -- name: "Unspecified: Test invalidness" - ansible.builtin.set_fact: - criteria_check2: "{{ '::1' is ansible.utils.unspecified }}" - -- name: "Unspecified: Assert invalidness" - ansible.builtin.assert: - that: "{{ criteria_check2 == false }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/vars/main.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/vars/main.yaml deleted file mode 100644 index 6505ab23..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_netaddr_test/vars/main.yaml +++ /dev/null @@ -1,11 +0,0 @@ ---- -networks: - - "10.0.0.0/8" - - "192.168.1.0/24" - - "172.16.0.0/16" - -good_name: www.google.com -bad_name: foo.google.com - -ipv4_localhost: "127.0.0.1" -ipv6_localhost: "::1" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_param_list_compare/tasks/main.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_param_list_compare/tasks/main.yaml deleted file mode 100644 index 333bee8c..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_param_list_compare/tasks/main.yaml +++ /dev/null @@ -1,15 +0,0 @@ ---- -- name: Recursively find all test files - ansible.builtin.find: - file_type: file - paths: "{{ role_path }}/tasks" - recurse: false - use_regex: true - patterns: - - "^(?!_|main).+$" - delegate_to: localhost - register: found - -- name: Include tasks - ansible.builtin.include_tasks: "{{ item.path }}" - loop: "{{ found.files }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_param_list_compare/tasks/simple.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_param_list_compare/tasks/simple.yaml deleted file mode 100644 index 90b9ba87..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_param_list_compare/tasks/simple.yaml +++ /dev/null @@ -1,59 +0,0 @@ ---- -- name: Debug - ansible.builtin.debug: - msg: "START param_list_compare integration tests on connection={{ ansible_connection }}" - -- name: Setup supported resource module list json - ansible.builtin.set_fact: - network_resources: - modules: - - "acl_interfaces" - - "acls" - - "bgp_address_family" - - "bgp_global" - - "interfaces" - - "l2_interfaces" - - "l3_interfaces" - - "lacp" - - "lacp_interfaces" - - "lag_interfaces" - - "lldp_global" - - "lldp_interfaces" - - "logging_global" - - "ospf_interfaces" - - "ospfv2" - - "ospfv3" - - "prefix_lists" - - "route_maps" - - "static_routes" - - "vlans" - -- name: Setup target resources with bangs - ansible.builtin.set_fact: - provided_resources: - - "!all" - - "!acl_interfaces" - - "acls" - - "bgp_address_family" - - "bgp_global" - -- name: Setup target resources with bangs - ansible.builtin.set_fact: - expected_network_resources: - - "acls" - - "bgp_address_family" - - "bgp_global" - -- name: Get the final list of resources - ansible.builtin.set_fact: - final_network_resources: "{{ network_resources['modules'] | ansible.utils.param_list_compare(provided_resources) }}" - -- name: Assert final network resources - ansible.builtin.assert: - that: - - "{{ expected_network_resources | symmetric_difference(final_network_resources['actionable']) | length\ - \ == 0 }}" - -- name: Debug - ansible.builtin.debug: - msg: "END param_list_compare integration tests on connection={{ ansible_connection }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_remove_keys/tasks/main.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_remove_keys/tasks/main.yaml deleted file mode 100644 index 333bee8c..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_remove_keys/tasks/main.yaml +++ /dev/null @@ -1,15 +0,0 @@ ---- -- name: Recursively find all test files - ansible.builtin.find: - file_type: file - paths: "{{ role_path }}/tasks" - recurse: false - use_regex: true - patterns: - - "^(?!_|main).+$" - delegate_to: localhost - register: found - -- name: Include tasks - ansible.builtin.include_tasks: "{{ item.path }}" - loop: "{{ found.files }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_remove_keys/tasks/simple.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_remove_keys/tasks/simple.yaml deleted file mode 100644 index ad22685e..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_remove_keys/tasks/simple.yaml +++ /dev/null @@ -1,40 +0,0 @@ ---- -- name: Setup data as facts for remove integration test - ansible.builtin.set_fact: - data: - - name: eth0 - enabled: true - duplex: auto - speed: auto - comment: test interface - - name: eth1 - description: Configured by Ansible - Interface 1 - mtu: 1500 - speed: auto - duplex: auto - enabled: true - vifs: - - vlan_id: 100 - description: Eth1 - VIF 100 - mtu: 400 - enabled: true - notes: - - note 1 - - note 2 - - vlan_id: 101 - description: Eth1 - VIF 101 - enabled: true - - name: eth2 - description: Configured by Ansible - Interface 2 (ADMIN DOWN) - mtu: 600 - enabled: false - -- name: Debug - ansible.builtin.debug: - msg: "{{ data | ansible.utils.remove_keys(target=['notes', 'comment']) }}" - register: result - -- name: Assert result dicts - ansible.builtin.assert: - that: - - remove['default'] == result['msg'] diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_remove_keys/vars/main.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_remove_keys/vars/main.yaml deleted file mode 100644 index cb6d58a1..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_remove_keys/vars/main.yaml +++ /dev/null @@ -1,25 +0,0 @@ ---- -remove: - default: - - name: eth0 - enabled: true - duplex: auto - speed: auto - - name: eth1 - description: Configured by Ansible - Interface 1 - mtu: 1500 - speed: auto - duplex: auto - enabled: true - vifs: - - vlan_id: 100 - description: Eth1 - VIF 100 - mtu: 400 - enabled: true - - vlan_id: 101 - description: Eth1 - VIF 101 - enabled: true - - name: eth2 - description: Configured by Ansible - Interface 2 (ADMIN DOWN) - mtu: 600 - enabled: false diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_replace_keys/tasks/main.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_replace_keys/tasks/main.yaml deleted file mode 100644 index 333bee8c..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_replace_keys/tasks/main.yaml +++ /dev/null @@ -1,15 +0,0 @@ ---- -- name: Recursively find all test files - ansible.builtin.find: - file_type: file - paths: "{{ role_path }}/tasks" - recurse: false - use_regex: true - patterns: - - "^(?!_|main).+$" - delegate_to: localhost - register: found - -- name: Include tasks - ansible.builtin.include_tasks: "{{ item.path }}" - loop: "{{ found.files }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_replace_keys/tasks/simple.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_replace_keys/tasks/simple.yaml deleted file mode 100644 index a8f4ce2e..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_replace_keys/tasks/simple.yaml +++ /dev/null @@ -1,36 +0,0 @@ ---- -- name: Setup data as facts for replace integration test - ansible.builtin.set_fact: - data: - - interface_name: eth0 - enabled: true - duplex: auto - speed: auto - - interface_name: eth1 - description: Configured by Ansible - Interface 1 - mtu: 1500 - speed: auto - duplex: auto - enabled: true - vifs: - - vlan_id: 100 - description: Eth1 - VIF 100 - mtu: 400 - enabled: true - - vlan_id: 101 - description: Eth1 - VIF 101 - enabled: true - - interface_name: eth2 - description: Configured by Ansible - Interface 2 (ADMIN DOWN) - mtu: 600 - enabled: false - -- name: Debug - ansible.builtin.debug: - msg: "{{ data | ansible.utils.replace_keys(target=[{'before': 'interface_name', 'after': 'name'}]) }}" - register: result - -- name: Assert result dicts - ansible.builtin.assert: - that: - - replace['default'] == result['msg'] diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_replace_keys/vars/main.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_replace_keys/vars/main.yaml deleted file mode 100644 index d6ab967b..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_replace_keys/vars/main.yaml +++ /dev/null @@ -1,25 +0,0 @@ ---- -replace: - default: - - name: eth0 - enabled: true - duplex: auto - speed: auto - - name: eth1 - description: Configured by Ansible - Interface 1 - mtu: 1500 - speed: auto - duplex: auto - enabled: true - vifs: - - vlan_id: 100 - description: Eth1 - VIF 100 - mtu: 400 - enabled: true - - vlan_id: 101 - description: Eth1 - VIF 101 - enabled: true - - name: eth2 - description: Configured by Ansible - Interface 2 (ADMIN DOWN) - mtu: 600 - enabled: false diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_to_paths/tasks/argspec.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_to_paths/tasks/argspec.yaml deleted file mode 100644 index dbdc0bb6..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_to_paths/tasks/argspec.yaml +++ /dev/null @@ -1,40 +0,0 @@ ---- -- name: Set fact - ansible.builtin.set_fact: - a: - b: - c: - d: - - 0 - -- name: Check argspec validation with lookup - ansible.builtin.set_fact: - _result: "{{ a | ansible.utils.to_paths(wantlist=5) }}" - ignore_errors: true - register: result - -- name: Debug - ansible.builtin.debug: - var: result - -- name: Assert - ansible.builtin.assert: - that: "{{ msg in result.msg }}" - vars: - msg: "'5' is not a valid boolean" - -- name: Check argspec validation with lookup - ansible.builtin.set_fact: - _result: "{{ lookup('ansible.utils.to_paths') }}" - ignore_errors: true - register: result - -- name: Debug - ansible.builtin.debug: - var: result - -- name: Assert - ansible.builtin.assert: - that: "{{ msg in result.msg }}" - vars: - msg: "missing required arguments: var" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_to_paths/tasks/empty_members.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_to_paths/tasks/empty_members.yaml deleted file mode 100644 index 499c07fd..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_to_paths/tasks/empty_members.yaml +++ /dev/null @@ -1,41 +0,0 @@ ---- -- name: Set fact - ansible.builtin.set_fact: - a: - b: [] - c: {} - d: - e: [{}, {}] - f: - g: [[], []] - empty_list: [] - empty_mapping: {} - -- name: Test filter and lookup plugin with empty list and mapping - ansible.builtin.assert: - that: "{{ item.result == item.expected }}" - loop: - - result: "{{ a | ansible.utils.to_paths }}" - expected: - b: [] - c: {} - d.e[0]: {} - d.e[1]: {} - f.g[0]: [] - f.g[1]: [] - - result: "{{ lookup('ansible.utils.to_paths', a) }}" - expected: - b: [] - c: {} - d.e[0]: {} - d.e[1]: {} - f.g[0]: [] - f.g[1]: [] - - result: "{{ empty_list | ansible.utils.to_paths }}" - expected: [] - - result: "{{ lookup('ansible.utils.to_paths', empty_list) }}" - expected: [] - - result: "{{ empty_mapping | ansible.utils.to_paths }}" - expected: {} - - result: "{{ lookup('ansible.utils.to_paths', empty_mapping) }}" - expected: {} diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_to_paths/tasks/examples_filter.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_to_paths/tasks/examples_filter.yaml deleted file mode 100644 index 94a7f3c6..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_to_paths/tasks/examples_filter.yaml +++ /dev/null @@ -1,70 +0,0 @@ ---- -#### Simple examples -- name: Set fact - ansible.builtin.set_fact: - a: - b: - c: - d: - - 0 - - 1 - e: - - true - - false - -- name: Set fact - ansible.builtin.set_fact: - paths: "{{ a | ansible.utils.to_paths }}" - -# TASK [ansible.builtin.set_fact] ******************************************** -# ok: [nxos101] => changed=false -# ansible_facts: -# paths: -# b.c.d[0]: 0 -# b.c.d[1]: 1 -# b.c.e[0]: true -# b.c.e[1]: false - -- name: Use prepend to add the initial variable name - ansible.builtin.set_fact: - paths: "{{ a | ansible.utils.to_paths(prepend='a') }}" -# TASK [Use prepend to add the initial variable name] ************************** -# ok: [nxos101] => changed=false -# ansible_facts: -# paths: -# a.b.c.d[0]: 0 -# a.b.c.d[1]: 1 -# a.b.c.e[0]: true -# a.b.c.e[1]: false - -#### Using a complex object - -# - name: Make an API call -# ansible.builtin.uri: -# url: "https://nxos101/restconf/data/openconfig-interfaces:interfaces" -# headers: -# accept: "application/yang.data+json" -# url_password: password -# url_username: admin -# validate_certs: False -# register: result -# delegate_to: localhost - -# - name: Flatten the complex object -# ansible.builtin.set_fact: -# paths: "{{ result.json|ansible.utils.to_paths }}" - -# TASK [Flatten the complex object] ****************************************** -# ok: [nxos101] => changed=false -# ansible_facts: -# paths: -# interfaces.interface[0].config.enabled: 'true' -# interfaces.interface[0].config.mtu: '1500' -# interfaces.interface[0].config.name: eth1/71 -# interfaces.interface[0].config.type: ethernetCsmacd -# interfaces.interface[0].ethernet.config['auto-negotiate']: 'true' -# interfaces.interface[0].ethernet.state.counters['in-crc-errors']: '0' -# interfaces.interface[0].ethernet.state.counters['in-fragment-frames']: '0' -# interfaces.interface[0].ethernet.state.counters['in-jabber-frames']: '0' -# interfaces.interface[0].ethernet.state.counters['in-mac-control-frames']: '0' -# <...> diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_to_paths/tasks/examples_lookup.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_to_paths/tasks/examples_lookup.yaml deleted file mode 100644 index 31047196..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_to_paths/tasks/examples_lookup.yaml +++ /dev/null @@ -1,70 +0,0 @@ ---- -#### Simple examples -- name: Set fact - ansible.builtin.set_fact: - a: - b: - c: - d: - - 0 - - 1 - e: - - true - - false - -- name: Set fact - ansible.builtin.set_fact: - paths: "{{ lookup('ansible.utils.to_paths', a) }}" - -# TASK [ansible.builtin.set_fact] ******************************************** -# ok: [nxos101] => changed=false -# ansible_facts: -# paths: -# b.c.d[0]: 0 -# b.c.d[1]: 1 -# b.c.e[0]: true -# b.c.e[1]: false - -- name: Use prepend to add the initial variable name - ansible.builtin.set_fact: - paths: "{{ lookup('ansible.utils.to_paths', a, prepend='a') }}" -# TASK [Use prepend to add the initial variable name] ************************** -# ok: [nxos101] => changed=false -# ansible_facts: -# paths: -# a.b.c.d[0]: 0 -# a.b.c.d[1]: 1 -# a.b.c.e[0]: true -# a.b.c.e[1]: false - -#### Using a complex object - -# - name: Make an API call -# ansible.builtin.uri: -# url: "https://nxos101/restconf/data/openconfig-interfaces:interfaces" -# headers: -# accept: "application/yang.data+json" -# url_password: password -# url_username: admin -# validate_certs: False -# register: result -# delegate_to: localhost - -# - name: Flatten the complex object -# ansible.builtin.set_fact: -# paths: "{{ lookup('ansible.utils.to_paths', result.json) }}" - -# TASK [Flatten the complex object] ****************************************** -# ok: [nxos101] => changed=false -# ansible_facts: -# paths: -# interfaces.interface[0].config.enabled: 'true' -# interfaces.interface[0].config.mtu: '1500' -# interfaces.interface[0].config.name: eth1/71 -# interfaces.interface[0].config.type: ethernetCsmacd -# interfaces.interface[0].ethernet.config['auto-negotiate']: 'true' -# interfaces.interface[0].ethernet.state.counters['in-crc-errors']: '0' -# interfaces.interface[0].ethernet.state.counters['in-fragment-frames']: '0' -# interfaces.interface[0].ethernet.state.counters['in-jabber-frames']: '0' -# interfaces.interface[0].ethernet.state.counters['in-mac-control-frames']: '0' -# <...> diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_to_paths/tasks/main.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_to_paths/tasks/main.yaml deleted file mode 100644 index 333bee8c..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_to_paths/tasks/main.yaml +++ /dev/null @@ -1,15 +0,0 @@ ---- -- name: Recursively find all test files - ansible.builtin.find: - file_type: file - paths: "{{ role_path }}/tasks" - recurse: false - use_regex: true - patterns: - - "^(?!_|main).+$" - delegate_to: localhost - register: found - -- name: Include tasks - ansible.builtin.include_tasks: "{{ item.path }}" - loop: "{{ found.files }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_to_paths/tasks/simple.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_to_paths/tasks/simple.yaml deleted file mode 100644 index 80a42dc4..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_to_paths/tasks/simple.yaml +++ /dev/null @@ -1,55 +0,0 @@ ---- -- name: Set fact - ansible.builtin.set_fact: - a: - b: - c: - d: - - 0 - - 1 - -- name: Test filter and lookup plugin, simple and prepend - ansible.builtin.assert: - that: "{{ item.result == item.expected }}" - loop: - - result: "{{ a | ansible.utils.to_paths }}" - expected: - b.c.d[0]: 0 - b.c.d[1]: 1 - - result: "{{ lookup('ansible.utils.to_paths', a) }}" - expected: - b.c.d[0]: 0 - b.c.d[1]: 1 - - result: "{{ a | ansible.utils.to_paths(prepend='a') }}" - expected: - a.b.c.d[0]: 0 - a.b.c.d[1]: 1 - - result: "{{ lookup('ansible.utils.to_paths', a, prepend='a') }}" - expected: - a.b.c.d[0]: 0 - a.b.c.d[1]: 1 - -- name: Set fact - ansible.builtin.set_fact: - a: - b: - c: - d: - - 0 - -- name: Test filter and lookup plugin, wantlist and prepend - ansible.builtin.assert: - that: "{{ item.result == item.expected }}" - loop: - - result: "{{ a | ansible.utils.to_paths(wantlist=true) }}" - expected: - - b.c.d[0]: 0 - - result: "{{ lookup('ansible.utils.to_paths', a, wantlist=true) }}" - expected: - - b.c.d[0]: 0 - - result: "{{ a | ansible.utils.to_paths(wantlist=true, prepend='a') }}" - expected: - - a.b.c.d[0]: 0 - - result: "{{ lookup('ansible.utils.to_paths', a, wantlist=true, prepend='a') }}" - expected: - - a.b.c.d[0]: 0 diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_to_xml/tasks/main.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_to_xml/tasks/main.yaml deleted file mode 100644 index 333bee8c..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_to_xml/tasks/main.yaml +++ /dev/null @@ -1,15 +0,0 @@ ---- -- name: Recursively find all test files - ansible.builtin.find: - file_type: file - paths: "{{ role_path }}/tasks" - recurse: false - use_regex: true - patterns: - - "^(?!_|main).+$" - delegate_to: localhost - register: found - -- name: Include tasks - ansible.builtin.include_tasks: "{{ item.path }}" - loop: "{{ found.files }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_to_xml/tasks/simple.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_to_xml/tasks/simple.yaml deleted file mode 100644 index 4ddc78d3..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_to_xml/tasks/simple.yaml +++ /dev/null @@ -1,42 +0,0 @@ ---- -- name: Setup xml - ansible.builtin.set_fact: - data: - "interface-configurations": - "@xmlns": "http://cisco.com/ns/yang/Cisco-IOS-XR-ifmgr-cfg" - "interface-configuration": - -- name: Debug - ansible.builtin.debug: - msg: "{{ data | ansible.utils.to_xml() }}" - -- name: Integration tests with and without default engine as xmltodict and - ansible.builtin.assert: - that: "{{ output == item.test }}" - loop: - - test: "{{ data | ansible.utils.to_xml() }}" - - test: "{{ data | ansible.utils.to_xml('xmltodict') }}" - -- name: Test for supported engine for to_xml filter - ansible.builtin.set_fact: - data: - "interface-configurations": - "@xmlns": "http://cisco.com/ns/yang/Cisco-IOS-XR-ifmgr-cfg" - -- name: Validate input xml - ansible.builtin.set_fact: - _result: "{{ data | ansible.utils.to_xml('dicttoxml') }}" - ignore_errors: true - register: result - -- name: Assert - ansible.builtin.assert: - that: "{{ msg in result.msg }}" - vars: - msg: "Error when using plugin 'to_xml': engine: dicttoxml is not supported" - -- name: Integration tests with and without default engine as xmltodict and - ansible.builtin.assert: - that: "{{ output1 == item.test }}" - loop: - - test: "{{ data | ansible.utils.to_xml('xmltodict', full_document=False) }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_to_xml/vars/main.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_to_xml/vars/main.yaml deleted file mode 100644 index 2dfb1674..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_to_xml/vars/main.yaml +++ /dev/null @@ -1,3 +0,0 @@ ---- -output: "\n\n\t\n" -output1: '' diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_update_fact/tasks/main.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_update_fact/tasks/main.yaml deleted file mode 100644 index 8e2a68c0..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_update_fact/tasks/main.yaml +++ /dev/null @@ -1,72 +0,0 @@ ---- -- name: Set a fact - ansible.builtin.set_fact: - a: - b: - c: - - 1 - - 2 - -- name: Update the fact - ansible.utils.update_fact: - updates: - - path: a.b.c.0 - value: 10 - - path: "a['b']['c'][1]" - value: 20 - register: updated - -- name: Assert - ansible.builtin.assert: - that: "{{ updated.a == expected.a }}" - vars: - expected: - a: - b: - c: - - 10 - - 20 - -- name: Update the fact - ansible.utils.update_fact: - updates: - - path: a - value: - x: - y: - z: - - 100 - - true - register: updated - -- name: Assert - ansible.builtin.assert: - that: "{{ updated.a == expected.a }}" - vars: - expected: - a: - x: - y: - z: - - 100 - - true - -- name: Update the fact - ansible.utils.update_fact: - updates: - - path: "a.b.c[{{ index }}]" - value: 20 - vars: - index: "{{ a.b.c | ansible.utils.index_of('eq', 2) }}" - register: updated - -- name: Assert - ansible.builtin.assert: - that: "{{ updated.a == expected.a }}" - vars: - expected: - a: - b: - c: - - 1 - - 20 diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_usable_range/tasks/argspec.yml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_usable_range/tasks/argspec.yml deleted file mode 100644 index ccc8a2bc..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_usable_range/tasks/argspec.yml +++ /dev/null @@ -1,84 +0,0 @@ ---- -- name: Check argspec validation with filter (missing arg) - ansible.builtin.set_fact: - _result1: "{{ '' | ansible.utils.usable_range }}" - ignore_errors: true - register: result1 - -- name: Assert - ansible.builtin.assert: - that: "{{ msg in result1.msg }}" - vars: - msg: "does not appear to be an IPv4 or IPv6 network" - -- name: Check argspec validation with filter (random string arg) - ansible.builtin.set_fact: - _result2: "{{ 'helloworld' | ansible.utils.usable_range }}" - ignore_errors: true - register: result2 - -- name: Assert - ansible.builtin.assert: - that: "{{ msg in result2.msg }}" - vars: - msg: "does not appear to be an IPv4 or IPv6 network" - -- name: Check argspec validation with filter (invalid arg for expansion) - ansible.builtin.set_fact: - _result3: "{{ '192.168.1.25/24' | ansible.utils.usable_range }}" - ignore_errors: true - register: result3 - -- name: Assert - ansible.builtin.assert: - that: "{{ msg in result3.msg }}" - vars: - msg: "has host bits set" - -- name: Check argspec validation with filter (invalid format for arg) - ansible.builtin.set_fact: - _result4: "{{ '192.0.2.0/23/24' | ansible.utils.usable_range }}" - ignore_errors: true - register: result4 - -- name: Assert - ansible.builtin.assert: - that: "{{ msg in result4.msg }}" - vars: - msg: "does not appear to be an IPv4 or IPv6 network" - -- name: Check argspec validation with filter (invalid format for arg) - ansible.builtin.set_fact: - _result5: "{{ '::/20/30' | ansible.utils.usable_range }}" - ignore_errors: true - register: result5 - -- name: Assert - ansible.builtin.assert: - that: "{{ msg in result5.msg }}" - vars: - msg: "does not appear to be an IPv4 or IPv6 network" - -- name: Check argspec validation with filter (invalid netmask) - ansible.builtin.set_fact: - _result6: "{{ '10.0.0.0/322' | ansible.utils.usable_range }}" - ignore_errors: true - register: result6 - -- name: Assert - ansible.builtin.assert: - that: "{{ msg in result6.msg }}" - vars: - msg: "does not appear to be an IPv4 or IPv6 network" - -- name: Check argspec validation with filter (invalid netmask) - ansible.builtin.set_fact: - _result7: "{{ '2001:db8:abcd:0012::0/129' | ansible.utils.usable_range }}" - ignore_errors: true - register: result7 - -- name: Assert - ansible.builtin.assert: - that: "{{ msg in result7.msg }}" - vars: - msg: "does not appear to be an IPv4 or IPv6 network" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_usable_range/tasks/example_filter.yml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_usable_range/tasks/example_filter.yml deleted file mode 100644 index 22c911c5..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_usable_range/tasks/example_filter.yml +++ /dev/null @@ -1,43 +0,0 @@ ---- -# IPv4 -- name: Expand and produce list of usable IP addresses in 10.1.1.1 - ansible.builtin.set_fact: - result1: "{{ '10.1.1.1' | ansible.utils.usable_range }}" - -- name: Assert result for 10.1.1.1 - ansible.builtin.assert: - that: "{{ result1 == result1_val }}" - -- name: Expand and produce list of usable IP addresses in 10.0.0.0/28 - ansible.builtin.set_fact: - result2: "{{ '10.0.0.0/28' | ansible.utils.usable_range }}" - -- name: Assert result for 10.0.0.0/28 - ansible.builtin.assert: - that: "{{ result2 == result2_val }}" - -- name: Expand and produce list of usable IP addresses in 192.0.2.0/24 - ansible.builtin.set_fact: - result3: "{{ '192.0.2.0/24' | ansible.utils.usable_range }}" - -- name: Assert result for 192.0.2.0/24 - ansible.builtin.assert: - # Since the list is huge, asserting only on number of ips - that: "{{ result3.number_of_ips == result3_val.number_of_ips }}" - -# IPv6 -- name: Expand and produce list of usable IP addresses in 2001:db8:abcd:0012::0/126 - ansible.builtin.set_fact: - result4: "{{ '2001:db8:abcd:0012::0/126' | ansible.utils.usable_range }}" - -- name: Assert result for 2001:db8:abcd:0012::0/126 - ansible.builtin.assert: - that: "{{ result4 == result4_val }}" - -- name: "Expand and produce list of usable IP addresses in 2001:db8:abcd:12::" - ansible.builtin.set_fact: - result5: "{{ '2001:db8:abcd:12::' | ansible.utils.usable_range }}" - -- name: "Assert result for 2001:db8:abcd:12::" - ansible.builtin.assert: - that: "{{ result5 == result5_val }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_usable_range/tasks/main.yml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_usable_range/tasks/main.yml deleted file mode 100644 index 333bee8c..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_usable_range/tasks/main.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- -- name: Recursively find all test files - ansible.builtin.find: - file_type: file - paths: "{{ role_path }}/tasks" - recurse: false - use_regex: true - patterns: - - "^(?!_|main).+$" - delegate_to: localhost - register: found - -- name: Include tasks - ansible.builtin.include_tasks: "{{ item.path }}" - loop: "{{ found.files }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_usable_range/vars/main.yml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_usable_range/vars/main.yml deleted file mode 100644 index 800517fd..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_usable_range/vars/main.yml +++ /dev/null @@ -1,41 +0,0 @@ ---- -result1_val: - number_of_ips: 1 - usable_ips: - - "10.1.1.1" - -result2_val: - number_of_ips: 16 - usable_ips: - - "10.0.0.0" - - "10.0.0.1" - - "10.0.0.2" - - "10.0.0.3" - - "10.0.0.4" - - "10.0.0.5" - - "10.0.0.6" - - "10.0.0.7" - - "10.0.0.8" - - "10.0.0.9" - - "10.0.0.10" - - "10.0.0.11" - - "10.0.0.12" - - "10.0.0.13" - - "10.0.0.14" - - "10.0.0.15" - -result3_val: - number_of_ips: 256 - -result4_val: - number_of_ips: 4 - usable_ips: - - "2001:db8:abcd:12::" - - "2001:db8:abcd:12::1" - - "2001:db8:abcd:12::2" - - "2001:db8:abcd:12::3" - -result5_val: - number_of_ips: 1 - usable_ips: - - "2001:db8:abcd:12::" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/files/criteria/check_list_data.json b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/files/criteria/check_list_data.json deleted file mode 100644 index d4474512..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/files/criteria/check_list_data.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "definitions": {}, - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://example.com/object1615264346.json", - "title": "Root", - "type": "array", - "default": [], - "items": { - "$id": "#root/items", - "title": "Items", - "type": "integer", - "examples": [1], - "default": 0 - } -} diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/files/criteria/crc_error_check.json b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/files/criteria/crc_error_check.json deleted file mode 100644 index f740b576..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/files/criteria/crc_error_check.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "object", - "patternProperties": { - "^.*": { - "type": "object", - "properties": { - "counters": { - "properties": { - "in_crc_errors": { - "type": "number", - "maximum": 0 - } - } - } - } - } - } -} diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/files/criteria/enabled_check.json b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/files/criteria/enabled_check.json deleted file mode 100644 index 6ede93ba..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/files/criteria/enabled_check.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "object", - "patternProperties": { - "^.*": { - "type": "object", - "properties": { - "enabled": { - "enum": [true] - } - } - } - } -} diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/files/criteria/format_checker.json b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/files/criteria/format_checker.json deleted file mode 100644 index b09ea581..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/files/criteria/format_checker.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "$schema": "https://json-schema.org/schema#", - - "type": "object", - "properties": { - "name": { "type": "string" }, - "email": { "format": "email" } - }, - "required": ["email"] -} diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/files/criteria/in_rate_check.json b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/files/criteria/in_rate_check.json deleted file mode 100644 index c7690e48..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/files/criteria/in_rate_check.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "object", - "patternProperties": { - "^.*": { - "type": "object", - "properties": { - "counters": { - "properties": { - "rate": { - "properties": { - "in_rate": { - "type": "number", - "maximum": 0 - } - } - } - } - } - } - } - } -} diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/files/criteria/oper_status_up.json b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/files/criteria/oper_status_up.json deleted file mode 100644 index 0cb3754a..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/files/criteria/oper_status_up.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "type": "object", - "patternProperties": { - "^.*": { - "type": "object", - "properties": { - "oper_status": { - "type": "string", - "pattern": "up" - } - } - } - } -} diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/files/criteria/rules.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/files/criteria/rules.yaml deleted file mode 100644 index 1cd28d68..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/files/criteria/rules.yaml +++ /dev/null @@ -1,20 +0,0 @@ ---- -- name: Interface description should not be more than 8 chars - example: "Matches description this-is-a-long-description" - rule: 'description\s(.{9,})' - action: warn - -- name: Ethernet interface names should be in format Ethernet[Slot/chassis number].[sub-intf number (optional)] - example: "Matches interface Eth1/1, interface eth 1/1, interface Ethernet 1/1, interface ethernet 1/1.100" - rule: 'interface\s[eE](?!\w{7}\d/\d(.\d+)?)' - action: fail - -- name: Loopback interface names should be in format loopback[Virtual Interface Number] - example: "Matches interface Lo10, interface loopback 10" - rule: 'interface\s[lL](?!\w{7}\d)' - action: fail - -- name: Port Channel names should be in format port-channel[Port Channel number].[sub-intf number (optional)] - example: "Matches interface Port-channel 10, interface po10, interface Port-channel 10.1" - rule: 'interface\s[pP](?!\w{3}-\w{7}\d(.\d+)?)' - action: fail diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/files/data/fail.cfg b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/files/data/fail.cfg deleted file mode 100644 index 42576913..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/files/data/fail.cfg +++ /dev/null @@ -1,15 +0,0 @@ -interface Eth1/1 - description test-description-too-long - no switchport - -interface ethernet1/2 - description intf-2 - -interface port-channel1 - description po-1 - -interface po2.1 - description po2 - -interface Loopback 10 - description lo10 diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/files/data/pass.cfg b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/files/data/pass.cfg deleted file mode 100644 index 55c57699..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/files/data/pass.cfg +++ /dev/null @@ -1,15 +0,0 @@ -interface Ethernet1/1 - description test - no switchport - -interface ethernet1/2 - description intf-2 - -interface port-channel1 - description po-1 - -interface port-channel2.1 - description po2 - -interface loopback10 - description lo10 diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/files/data/show_interface.json b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/files/data/show_interface.json deleted file mode 100644 index ed93c20b..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/files/data/show_interface.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "GigabitEthernet0/0/0/0": { - "auto_negotiate": false, - "counters": { - "in_crc_errors": 0, - "in_errors": 0, - "rate": { - "in_rate": 0, - "out_rate": 0 - } - }, - "description": "configured using Ansible", - "duplex_mode": "full", - "enabled": true, - "line_protocol": "up", - "mtu": 1514, - "oper_status": "down", - "type": "GigabitEthernet" - }, - "GigabitEthernet0/0/0/1": { - "auto_negotiate": false, - "counters": { - "in_crc_errors": 10, - "in_errors": 0, - "rate": { - "in_rate": 0, - "out_rate": 0 - } - }, - "description": "# interface is configures with Ansible", - "duplex_mode": "full", - "enabled": false, - "line_protocol": "up", - "mtu": 1514, - "oper_status": "up", - "type": "GigabitEthernet" - } -} diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/files/data/test_format_checker.json b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/files/data/test_format_checker.json deleted file mode 100644 index a84dfed6..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/files/data/test_format_checker.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "ansible", - "email": "ansible@redhat.com" -} diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/files/data/test_list_data.json b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/files/data/test_list_data.json deleted file mode 100644 index 7660873d..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/files/data/test_list_data.json +++ /dev/null @@ -1 +0,0 @@ -[1] diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/files/data/warn.cfg b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/files/data/warn.cfg deleted file mode 100644 index 6959f270..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/files/data/warn.cfg +++ /dev/null @@ -1,15 +0,0 @@ -interface Ethernet1/1 - description test-description-too-long - no switchport - -interface ethernet1/2 - description intf-2 - -interface port-channel1 - description po-1 - -interface port-channel2.1 - description po2 - -interface loopback10 - description lo10 diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/tasks/main.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/tasks/main.yaml deleted file mode 100644 index d973af90..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/tasks/main.yaml +++ /dev/null @@ -1,12 +0,0 @@ ---- -- name: Recursively find all test files - ansible.builtin.find: - file_type: file - paths: "{{ role_path }}/tests" - recurse: true - delegate_to: localhost - register: found - -- name: Include tasks - ansible.builtin.include_tasks: "{{ item.path }}" - loop: "{{ found.files }}" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/tests/config/filter.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/tests/config/filter.yaml deleted file mode 100644 index bfe769bf..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/tests/config/filter.yaml +++ /dev/null @@ -1,57 +0,0 @@ ---- -- name: Set up data and criteria - ansible.builtin.set_fact: - fail_config: "{{ lookup('ansible.builtin.file', 'data/fail.cfg') }}" - warn_config: "{{ lookup('ansible.builtin.file', 'data/warn.cfg') }}" - pass_config: "{{ lookup('ansible.builtin.file', 'data/pass.cfg') }}" - rules: "{{ lookup('ansible.builtin.file', 'criteria/rules.yaml') }}" - bad_rules: - - name: Invalid action - action: flunge - rule: Flunge it! - - name: No action - rule: Rule - - name: No rule - action: fail - - rule: No name - action: fail - -- name: validate configuration using config (with errors) - ansible.builtin.set_fact: - data_criteria_checks: "{{ fail_config|ansible.utils.validate(rules, engine='ansible.utils.config') }}" - -- ansible.builtin.assert: - that: - - "data_criteria_checks[0].found == 'interface Eth1/1'" - - "data_criteria_checks[1].found == 'interface Loopback 10'" - - "data_criteria_checks[2].found == 'interface po2.1'" - -- name: validate configuration using config (with warnings) - ansible.builtin.set_fact: - data_criteria_checks: "{{ warn_config|ansible.utils.validate(rules, engine='ansible.utils.config') }}" - -- ansible.builtin.assert: - that: - - "data_criteria_checks == []" - -- name: validate configuration using config (all pass) - ansible.builtin.set_fact: - data_criteria_checks: "{{ pass_config|ansible.utils.validate(rules, engine='ansible.utils.config') }}" - -- ansible.builtin.assert: - that: - - "data_criteria_checks == []" - -- name: invalid rules - ansible.builtin.set_fact: - data_criteria_checks: "{{ pass_config|ansible.utils.validate(bad_rules, engine='ansible.utils.config') }}" - ignore_errors: true - register: result - -- ansible.builtin.assert: - that: - - "result['failed'] == true" - - '"is not one of \"warn\" or \"fail\"" in result["msg"]' - - '"missing \"action\" key" in result["msg"]' - - '"missing \"rule\" key" in result["msg"]' - - '"missing \"name\" key" in result["msg"]' diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/tests/config/lookup.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/tests/config/lookup.yaml deleted file mode 100644 index d4f1f16e..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/tests/config/lookup.yaml +++ /dev/null @@ -1,57 +0,0 @@ ---- -- name: Set up data and criteria - ansible.builtin.set_fact: - fail_config: "{{ lookup('ansible.builtin.file', 'data/fail.cfg') }}" - warn_config: "{{ lookup('ansible.builtin.file', 'data/warn.cfg') }}" - pass_config: "{{ lookup('ansible.builtin.file', 'data/pass.cfg') }}" - rules: "{{ lookup('ansible.builtin.file', 'criteria/rules.yaml') }}" - bad_rules: - - name: Invalid action - action: flunge - rule: Flunge it! - - name: No action - rule: Rule - - name: No rule - action: fail - - rule: No name - action: fail - -- name: validate configuration using config (with errors) - ansible.builtin.set_fact: - data_criteria_checks: "{{ lookup('ansible.utils.validate', fail_config, rules, engine='ansible.utils.config') }}" - -- ansible.builtin.assert: - that: - - "data_criteria_checks[0].found == 'interface Eth1/1'" - - "data_criteria_checks[1].found == 'interface Loopback 10'" - - "data_criteria_checks[2].found == 'interface po2.1'" - -- name: validate configuration using config (with warnings) - ansible.builtin.set_fact: - data_criteria_checks: "{{ lookup('ansible.utils.validate', warn_config, rules, engine='ansible.utils.config') }}" - -- ansible.builtin.assert: - that: - - "data_criteria_checks == []" - -- name: validate configuration using config (all pass) - ansible.builtin.set_fact: - data_criteria_checks: "{{ lookup('ansible.utils.validate', pass_config, rules, engine='ansible.utils.config') }}" - -- ansible.builtin.assert: - that: - - "data_criteria_checks == []" - -- name: invalid rules - ansible.builtin.set_fact: - data_criteria_checks: "{{ lookup('ansible.utils.validate', pass_config, bad_rules, engine='ansible.utils.config') }}" - ignore_errors: true - register: result - -- ansible.builtin.assert: - that: - - "result['failed'] == true" - - '"is not one of \"warn\" or \"fail\"" in result["msg"]' - - '"missing \"action\" key" in result["msg"]' - - '"missing \"rule\" key" in result["msg"]' - - '"missing \"name\" key" in result["msg"]' diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/tests/config/module.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/tests/config/module.yaml deleted file mode 100644 index ce54b8f1..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/tests/config/module.yaml +++ /dev/null @@ -1,84 +0,0 @@ ---- -- name: Set up data and criteria - ansible.builtin.set_fact: - fail_config: "{{ lookup('ansible.builtin.file', 'data/fail.cfg') }}" - warn_config: "{{ lookup('ansible.builtin.file', 'data/warn.cfg') }}" - pass_config: "{{ lookup('ansible.builtin.file', 'data/pass.cfg') }}" - rules: "{{ lookup('ansible.builtin.file', 'criteria/rules.yaml') }}" - bad_rules: - - name: Invalid action - action: flunge - rule: Flunge it! - - name: No action - rule: Rule - - name: No rule - action: fail - - rule: No name - action: fail - -- name: validate configuration using config (with errors) - ansible.utils.validate: - data: "{{ fail_config }}" - criteria: "{{ rules }}" - engine: ansible.utils.config - ignore_errors: true - register: result - -- ansible.builtin.assert: - that: - - "'errors' in result" - - "result['errors'][0].found == 'interface Eth1/1'" - - "result['errors'][1].found == 'interface Loopback 10'" - - "result['errors'][2].found == 'interface po2.1'" - - "result['failed'] == true" - - "'Validation errors were found' in result.msg" - - "'Ethernet interface names should be in format' in result.msg" - - "'Loopback interface names should be in format' in result.msg" - - "'Port Channel names should be in format' in result.msg" - - "'warnings' in result" - - "'At line 2: Interface description should not be more than 8 chars' in result['warnings'][0]" - -- name: validate configuration using config (with warnings) - ansible.utils.validate: - data: "{{ warn_config }}" - criteria: "{{ rules }}" - engine: ansible.utils.config - register: result - -- ansible.builtin.assert: - that: - - "'errors' not in result" - - "'warnings' in result" - - "'At line 2: Interface description should not be more than 8 chars' in result['warnings'][0]" - - "result['failed'] == false" - - "'Non-fatal validation errors were found.' in result.msg" - -- name: validate configuration using config (all passed) - ansible.utils.validate: - data: "{{ pass_config }}" - criteria: "{{ rules }}" - engine: ansible.utils.config - register: result - -- ansible.builtin.assert: - that: - - "'errors' not in result" - - "'warnings' not in result" - - "result['failed'] == false" - - "'All checks passed' in result.msg" - -- name: invalid rules - ansible.utils.validate: - data: "{{ pass_config }}" - criteria: "{{ bad_rules }}" - engine: ansible.utils.config - ignore_errors: true - register: result - -- ansible.builtin.assert: - that: - - "result['failed'] == true" - - '"is not one of \"warn\" or \"fail\"" in result["msg"]' - - '"missing \"action\" key" in result["msg"]' - - '"missing \"rule\" key" in result["msg"]' - - '"missing \"name\" key" in result["msg"]' diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/tests/config/test.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/tests/config/test.yaml deleted file mode 100644 index 62018ee3..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/tests/config/test.yaml +++ /dev/null @@ -1,55 +0,0 @@ ---- -- name: Set up data and criteria - ansible.builtin.set_fact: - fail_config: "{{ lookup('ansible.builtin.file', 'data/fail.cfg') }}" - warn_config: "{{ lookup('ansible.builtin.file', 'data/warn.cfg') }}" - pass_config: "{{ lookup('ansible.builtin.file', 'data/pass.cfg') }}" - rules: "{{ lookup('ansible.builtin.file', 'criteria/rules.yaml') }}" - bad_rules: - - name: Invalid action - action: flunge - rule: Flunge it! - - name: No action - rule: Rule - - name: No rule - action: fail - - rule: No name - action: fail - -- name: validate configuration using config (with errors) - ansible.builtin.set_fact: - is_data_valid: "{{ fail_config is ansible.utils.validate(criteria=rules, engine='ansible.utils.config') }}" - -- ansible.builtin.assert: - that: - - "is_data_valid == false" - -- name: validate configuration using config (with warnings) - ansible.builtin.set_fact: - is_data_valid: "{{ warn_config is ansible.utils.validate(criteria=rules, engine='ansible.utils.config') }}" - -- ansible.builtin.assert: - that: - - "is_data_valid == true" - -- name: validate configuration using config (all pass) - ansible.builtin.set_fact: - is_data_valid: "{{ pass_config is ansible.utils.validate(criteria=rules, engine='ansible.utils.config') }}" - -- ansible.builtin.assert: - that: - - "is_data_valid == true" - -- name: invalid rules - ansible.builtin.set_fact: - is_data_valid: "{{ pass_config is ansible.utils.validate(criteria=bad_rules, engine='ansible.utils.config') }}" - ignore_errors: true - register: result - -- ansible.builtin.assert: - that: - - "result['failed'] == true" - - '"is not one of \"warn\" or \"fail\"" in result["msg"]' - - '"missing \"action\" key" in result["msg"]' - - '"missing \"rule\" key" in result["msg"]' - - '"missing \"name\" key" in result["msg"]' diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/tests/jsonschema/filter.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/tests/jsonschema/filter.yaml deleted file mode 100644 index e67522cf..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/tests/jsonschema/filter.yaml +++ /dev/null @@ -1,88 +0,0 @@ ---- -- name: validate data in json format using jsonschema (invalid data) - ansible.builtin.set_fact: - data_criteria_checks: "{{ show_interfaces|ansible.utils.validate([oper_status, enable_check, crc_error_check], engine='ansible.utils.jsonschema') }}" - -- ansible.builtin.assert: - that: - - "data_criteria_checks[0].data_path == 'GigabitEthernet0/0/0/0.oper_status'" - - "data_criteria_checks[1].data_path == 'GigabitEthernet0/0/0/1.enabled'" - - "data_criteria_checks[2].data_path == 'GigabitEthernet0/0/0/1.counters.in_crc_errors'" - -- name: validate data in json format using jsonschema (valid data) - ansible.builtin.set_fact: - data_criteria_checks: "{{ show_interfaces|ansible.utils.validate(in_rate_check) }}" - -- ansible.builtin.assert: - that: - - "data_criteria_checks == []" - -- name: test invalid plugin configuration option, passed within filter plugin - ansible.builtin.set_fact: - data_criteria_checks: "{{ show_interfaces|ansible.utils.validate(in_rate_check, draft='draft0') }}" - ignore_errors: true - register: result - -- ansible.builtin.assert: - that: - - "'value of draft must be one of: draft3, draft4, draft6, draft7, 2019-09, 2020-12, got: draft0' in result.msg" - -- name: invalid engine value - ansible.builtin.set_fact: - data_criteria_checks: "{{ show_interfaces|ansible.utils.validate(in_rate_check, engine='ansible.utils.sample') }}" - ignore_errors: true - register: result - -- ansible.builtin.assert: - that: - - "'errors' not in result" - - "result['failed'] == true" - - "'For engine \\'ansible.utils.sample\\' error loading the corresponding validate plugin' in result.msg" - -- name: invalid data value - ansible.builtin.set_fact: - data_criteria_checks: "{{ 'invalid data'|ansible.utils.validate(in_rate_check, engine='ansible.utils.jsonschema') }}" - ignore_errors: true - register: result - -- ansible.builtin.assert: - that: - - "result['failed'] == true" - - "'\\'data\\' option value is invalid' in result.msg" - -- name: invalid criteria value - ansible.builtin.set_fact: - data_criteria_checks: "{{ show_interfaces|ansible.utils.validate('invalid criteria', engine='ansible.utils.jsonschema') }}" - ignore_errors: true - register: result - -- ansible.builtin.assert: - that: - - "result['failed'] == true" - - "'\\'criteria\\' option value is invalid' in result.msg" - -- name: read data and criteria from file - ansible.builtin.set_fact: - data: "{{ lookup('ansible.builtin.file', 'data/show_interface.json') }}" - oper_status_up_criteria: "{{ lookup('ansible.builtin.file', 'criteria/oper_status_up.json') }}" - enabled_check_criteria: "{{ lookup('ansible.builtin.file', 'criteria/enabled_check.json') }}" - crc_error_check_criteria: "{{ lookup('ansible.builtin.file', 'criteria/crc_error_check.json') }}" - in_rate_check_criteria: "{{ lookup('ansible.builtin.file', 'criteria/in_rate_check.json') }}" - -- name: validate data using jsonschema engine (invalid data read from file) - ansible.builtin.set_fact: - data_criteria_checks: "{{ data|ansible.utils.validate([oper_status_up_criteria, enabled_check_criteria, crc_error_check_criteria]) }}" - -- ansible.builtin.assert: - that: - - "data_criteria_checks[0].data_path == 'GigabitEthernet0/0/0/0.oper_status'" - - "data_criteria_checks[1].data_path == 'GigabitEthernet0/0/0/1.enabled'" - - "data_criteria_checks[2].data_path == 'GigabitEthernet0/0/0/1.counters.in_crc_errors'" - -- name: validate data using jsonschema engine (valid data read from file) - ansible.builtin.set_fact: - data_criteria_checks: "{{ data|ansible.utils.validate(in_rate_check_criteria) }}" - -- ansible.builtin.assert: - that: - - "data_criteria_checks == []" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/tests/jsonschema/lookup.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/tests/jsonschema/lookup.yaml deleted file mode 100644 index c20f9610..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/tests/jsonschema/lookup.yaml +++ /dev/null @@ -1,106 +0,0 @@ ---- -- name: validate data in json format using jsonschema (invalid data) - ansible.builtin.set_fact: - data_criteria_checks: "{{ lookup('ansible.utils.validate', show_interfaces, [oper_status, enable_check, crc_error_check], engine='ansible.utils.jsonschema') }}" - vars: - ansible_validate_jsonschema_draft: draft7 - -- ansible.builtin.assert: - that: - - "data_criteria_checks[0].data_path == 'GigabitEthernet0/0/0/0.oper_status'" - - "data_criteria_checks[1].data_path == 'GigabitEthernet0/0/0/1.enabled'" - - "data_criteria_checks[2].data_path == 'GigabitEthernet0/0/0/1.counters.in_crc_errors'" - -- name: validate data in json format using jsonschema (invalid data) - ansible.builtin.set_fact: - data_criteria_checks: "{{ lookup('ansible.utils.validate', show_interfaces, in_rate_check) }}" - vars: - ansible_validate_jsonschema_draft: draft7 - -- ansible.builtin.assert: - that: - - "data_criteria_checks == []" - -- name: test invalid plugin configuration option, passed within lookup plugin - ansible.builtin.set_fact: - data_criteria_checks: "{{ lookup('ansible.utils.validate', show_interfaces, in_rate_check, draft='draft0') }}" - ignore_errors: true - register: result - vars: - ansible_validate_jsonschema_draft: draft7 - -- ansible.builtin.assert: - that: - - "'value of draft must be one of: draft3, draft4, draft6, draft7, 2019-09, 2020-12, got: draft0' in result.msg" - -- name: test invalid plugin configuration option, passed as task varaible - ansible.builtin.set_fact: - data_criteria_checks: "{{ lookup('ansible.utils.validate', show_interfaces, in_rate_check) }}" - ignore_errors: true - register: result - vars: - ansible_validate_jsonschema_draft: draft0 - -- ansible.builtin.assert: - that: - - "'value of draft must be one of: draft3, draft4, draft6, draft7, 2019-09, 2020-12, got: draft0' in result.msg" - -- name: invalid engine value - ansible.builtin.set_fact: - data_criteria_checks: "{{ lookup('ansible.utils.validate', show_interfaces, in_rate_check, engine='ansible.utils.sample') }}" - ignore_errors: true - register: result - -- ansible.builtin.assert: - that: - - "'errors' not in result" - - "result['failed'] == true" - - "'For engine \\'ansible.utils.sample\\' error loading the corresponding validate plugin' in result.msg" - -- name: invalid data value - ansible.builtin.set_fact: - data_criteria_checks: "{{ lookup('ansible.utils.validate', 'invalid data', in_rate_check, engine='ansible.utils.jsonschema') }}" - ignore_errors: true - register: result - -- ansible.builtin.assert: - that: - - "result['failed'] == true" - - "'\\'data\\' option value is invalid' in result.msg" - -- name: invalid criteria value - ansible.builtin.set_fact: - data_criteria_checks: "{{ lookup('ansible.utils.validate', show_interfaces, 'invalid criteria', engine='ansible.utils.jsonschema') }}" - ignore_errors: true - register: result - -- ansible.builtin.assert: - that: - - "result['failed'] == true" - - "'\\'criteria\\' option value is invalid' in result.msg" - -- name: read data and criteria from file - ansible.builtin.set_fact: - data: "{{ lookup('ansible.builtin.file', 'data/show_interface.json') }}" - oper_status_up_criteria: "{{ lookup('ansible.builtin.file', 'criteria/oper_status_up.json') }}" - enabled_check_criteria: "{{ lookup('ansible.builtin.file', 'criteria/enabled_check.json') }}" - crc_error_check_criteria: "{{ lookup('ansible.builtin.file', 'criteria/crc_error_check.json') }}" - in_rate_check_criteria: "{{ lookup('ansible.builtin.file', 'criteria/in_rate_check.json') }}" - -- name: validate data using jsonschema engine (invalid data read from file) - ansible.builtin.set_fact: - data_criteria_checks: "{{ lookup('ansible.utils.validate', data, [oper_status_up_criteria, enabled_check_criteria, crc_error_check_criteria], engine='ansible.utils.jsonschema') }}" - -- ansible.builtin.assert: - that: - - "data_criteria_checks[0].data_path == 'GigabitEthernet0/0/0/0.oper_status'" - - "data_criteria_checks[1].data_path == 'GigabitEthernet0/0/0/1.enabled'" - - "data_criteria_checks[2].data_path == 'GigabitEthernet0/0/0/1.counters.in_crc_errors'" - -- name: validate data using jsonschema engine (valid data read from file) - ansible.builtin.set_fact: - data_criteria_checks: "{{ lookup('ansible.utils.validate', data, in_rate_check_criteria, engine='ansible.utils.jsonschema') }}" - -- ansible.builtin.assert: - that: - - "data_criteria_checks == []" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/tests/jsonschema/module.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/tests/jsonschema/module.yaml deleted file mode 100644 index b26a0ceb..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/tests/jsonschema/module.yaml +++ /dev/null @@ -1,145 +0,0 @@ ---- -- name: validate data using jsonschema engine (invalid data) - ansible.utils.validate: - data: "{{ show_interfaces }}" - criteria: - - "{{ oper_status }}" - - "{{ enable_check }}" - - "{{ crc_error_check }}" - engine: ansible.utils.jsonschema - ignore_errors: true - register: result - vars: - ansible_validate_jsonschema_draft: draft7 - -- ansible.builtin.assert: - that: - - "'errors' in result" - - "result['errors'][0].data_path == 'GigabitEthernet0/0/0/0.oper_status'" - - "result['errors'][1].data_path == 'GigabitEthernet0/0/0/1.enabled'" - - "result['errors'][2].data_path == 'GigabitEthernet0/0/0/1.counters.in_crc_errors'" - - "'Validation errors were found' in result.msg" - - "'patternProperties.^.*.properties.oper_status.pattern' in result.msg" - - "'patternProperties.^.*.properties.enabled.enum' in result.msg" - - "'patternProperties.^.*.properties.counters.properties.in_crc_errors.maximum' in result.msg" - -- name: validate data using jsonschema engine (valid data) - ansible.utils.validate: - data: "{{ show_interfaces }}" - criteria: "{{ in_rate_check }}" - engine: ansible.utils.jsonschema - ignore_errors: true - register: result - vars: - ansible_validate_jsonschema_draft: draft7 - -- ansible.builtin.assert: - that: - - "'errors' not in result" - - "'All checks passed' in result.msg" - -- name: test invalid plugin configuration option - ansible.utils.validate: - data: "{{ show_interfaces }}" - criteria: "{{ in_rate_check }}" - engine: ansible.utils.jsonschema - ignore_errors: true - register: result - vars: - ansible_validate_jsonschema_draft: draft0 - -- ansible.builtin.assert: - that: - - "'errors' not in result" - - "result['failed'] == true" - - "'value of draft must be one of: draft3, draft4, draft6, draft7, 2019-09, 2020-12, got: draft0' in result.msg" - -- name: invalid engine value - ansible.utils.validate: - data: "{{ show_interfaces }}" - criteria: "{{ in_rate_check }}" - engine: ansible.utils.sample - ignore_errors: true - register: result - -- ansible.builtin.assert: - that: - - "'errors' not in result" - - "result['failed'] == true" - - "'For engine \\'ansible.utils.sample\\' error loading the corresponding validate plugin' in result.msg" - -- name: invalid data value - ansible.utils.validate: - data: "sample" - criteria: "{{ in_rate_check }}" - engine: ansible.utils.jsonschema - ignore_errors: true - register: result - -- ansible.builtin.assert: - that: - - "result['failed'] == true" - - "'\\'data\\' option value is invalid' in result.msg" - -- name: invalid criteria value - ansible.utils.validate: - data: "{{ show_interfaces }}" - criteria: "sample}" - engine: ansible.utils.jsonschema - ignore_errors: true - register: result - -- ansible.builtin.assert: - that: - - "result['failed'] == true" - - "'\\'criteria\\' option value is invalid' in result.msg" - -- name: validate data using jsonschema engine (invalid data read from file) - ansible.utils.validate: - data: "{{ lookup('ansible.builtin.file', 'data/show_interface.json') }}" - criteria: - - "{{ lookup('ansible.builtin.file', 'criteria/oper_status_up.json') }}" - - "{{ lookup('ansible.builtin.file', 'criteria/enabled_check.json') }}" - - "{{ lookup('ansible.builtin.file', 'criteria/crc_error_check.json') }}" - engine: ansible.utils.jsonschema - ignore_errors: true - register: result - vars: - ansible_validate_jsonschema_draft: draft7 - -- ansible.builtin.assert: - that: - - "'errors' in result" - - "result['errors'][0].data_path == 'GigabitEthernet0/0/0/0.oper_status'" - - "result['errors'][1].data_path == 'GigabitEthernet0/0/0/1.enabled'" - - "result['errors'][2].data_path == 'GigabitEthernet0/0/0/1.counters.in_crc_errors'" - - "'Validation errors were found' in result.msg" - - "'patternProperties.^.*.properties.oper_status.pattern' in result.msg" - - "'patternProperties.^.*.properties.enabled.enum' in result.msg" - - "'patternProperties.^.*.properties.counters.properties.in_crc_errors.maximum' in result.msg" - -- name: validate data using jsonschema engine (valid data read from file) - ansible.utils.validate: - data: "{{ lookup('ansible.builtin.file', 'data/show_interface.json') }}" - criteria: "{{ lookup('ansible.builtin.file', 'criteria/in_rate_check.json') }}" - engine: ansible.utils.jsonschema - ignore_errors: true - register: result - vars: - ansible_validate_jsonschema_draft: draft7 - -- ansible.builtin.assert: - that: - - "'errors' not in result" - - "'All checks passed' in result.msg" - -- name: validate list data using jsonschema - ansible.utils.validate: - data: "{{ lookup('ansible.builtin.file', 'data/test_list_data.json') }}" - criteria: "{{ lookup('ansible.builtin.file', 'criteria/check_list_data.json') }}" - engine: ansible.utils.jsonschema - -- ansible.builtin.assert: - that: - - "'errors' not in result" - - "'All checks passed' in result.msg" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/tests/jsonschema/test.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/tests/jsonschema/test.yaml deleted file mode 100644 index 882ab434..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/tests/jsonschema/test.yaml +++ /dev/null @@ -1,101 +0,0 @@ ---- -- name: validate data in json format using jsonschema (invalid data) - ansible.builtin.set_fact: - is_data_valid: "{{ show_interfaces is ansible.utils.validate(engine='ansible.utils.jsonschema', criteria=[oper_status, enable_check, crc_error_check], draft='draft7') }}" - -- ansible.builtin.assert: - that: - - "is_data_valid == false" - -- name: validate data in json format using jsonschema (valid data) - ansible.builtin.set_fact: - is_data_valid: "{{ show_interfaces is ansible.utils.validate(criteria=in_rate_check) }}" - -- ansible.builtin.assert: - that: - - "is_data_valid == true" - -- name: test invalid plugin configuration option, passed within filter plugin - ansible.builtin.set_fact: - is_data_valid: "{{ show_interfaces is ansible.utils.validate(criteria=in_rate_check, draft='draft0') }}" - ignore_errors: true - register: result - -- ansible.builtin.assert: - that: - - "'value of draft must be one of: draft3, draft4, draft6, draft7, 2019-09, 2020-12, got: draft0' in result.msg" - -- name: invalid engine value - ansible.builtin.set_fact: - data_criteria_checks: "{{ show_interfaces is ansible.utils.validate(criteria=in_rate_check, engine='ansible.utils.sample') }}" - ignore_errors: true - register: result - -- ansible.builtin.assert: - that: - - "'errors' not in result" - - "result['failed'] == true" - - "'For engine \\'ansible.utils.sample\\' error loading the corresponding validate plugin' in result.msg" - -- name: invalid data value - ansible.builtin.set_fact: - data_criteria_checks: "{{ 'invalid data' is ansible.utils.validate(criteria=in_rate_check) }}" - ignore_errors: true - register: result - -- ansible.builtin.assert: - that: - - "result['failed'] == true" - - "'\\'data\\' option value is invalid' in result.msg" - -- name: invalid criteria value - ansible.builtin.set_fact: - data_criteria_checks: "{{ show_interfaces is ansible.utils.validate(criteria='invalid data') }}" - ignore_errors: true - register: result - -- ansible.builtin.assert: - that: - - "result['failed'] == true" - - "'\\'criteria\\' option value is invalid' in result.msg" - -- name: read data and criteria from file - ansible.builtin.set_fact: - data: "{{ lookup('ansible.builtin.file', 'data/show_interface.json') }}" - oper_status_up_criteria: "{{ lookup('ansible.builtin.file', 'criteria/oper_status_up.json') }}" - enabled_check_criteria: "{{ lookup('ansible.builtin.file', 'criteria/enabled_check.json') }}" - crc_error_check_criteria: "{{ lookup('ansible.builtin.file', 'criteria/crc_error_check.json') }}" - in_rate_check_criteria: "{{ lookup('ansible.builtin.file', 'criteria/in_rate_check.json') }}" - -- name: validate data using jsonschema engine (invalid data read from file) - ansible.builtin.set_fact: - is_data_valid: "{{ show_interfaces is ansible.utils.validate(engine='ansible.utils.jsonschema', criteria=[oper_status_up_criteria, enabled_check_criteria, crc_error_check_criteria], draft='draft7') }}" - -- ansible.builtin.assert: - that: - - "is_data_valid == false" - -- name: validate data using jsonschema engine (invalid data read from file) - ansible.builtin.set_fact: - is_data_valid: "{{ show_interfaces is ansible.utils.validate(criteria=in_rate_check_criteria) }}" - -- name: validate data using jsonschema engine (valid data read from file) - ansible.builtin.set_fact: - data_criteria_checks: "{{ data|ansible.utils.validate(in_rate_check_criteria) }}" - -- ansible.builtin.assert: - that: - - "is_data_valid == true" - -- name: read data and criteria from file - ansible.builtin.set_fact: - data: "{{ lookup('ansible.builtin.file', 'data/test_format_checker.json') }}" - criteria_1: "{{ lookup('ansible.builtin.file', 'criteria/format_checker.json') }}" - -- name: validate data using jsonschema engine (valid data read from file) - ansible.builtin.set_fact: - is_data_valid: "{{ data is ansible.utils.validate(engine='ansible.utils.jsonschema', criteria=[criteria_1], draft='draft7') }}" - -- ansible.builtin.assert: - that: - - "is_data_valid == true" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/vars/main.yaml b/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/vars/main.yaml deleted file mode 100644 index bce32b1b..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/targets/utils_validate/vars/main.yaml +++ /dev/null @@ -1,78 +0,0 @@ ---- -show_interfaces: - GigabitEthernet0/0/0/0: - auto_negotiate: false - counters: - in_crc_errors: 0 - in_errors: 0 - rate: - in_rate: 0 - out_rate: 0 - description: configured using Ansible - duplex_mode: full - enabled: true - line_protocol: up - mtu: 1514 - oper_status: down - type: GigabitEthernet - GigabitEthernet0/0/0/1: - auto_negotiate: false - counters: - in_crc_errors: 10 - in_errors: 0 - rate: - in_rate: 0 - out_rate: 0 - description: "# interface is configures with Ansible" - duplex_mode: full - enabled: false - line_protocol: up - mtu: 1514 - oper_status: up - type: GigabitEthernet - -oper_status: - type: object - patternProperties: - ^.*: - type: object - properties: - oper_status: - type: string - pattern: up - -enable_check: - type: object - patternProperties: - ^.*: - type: object - properties: - enabled: - enum: - - true - -crc_error_check: - type: object - patternProperties: - ^.*: - type: object - properties: - counters: - properties: - in_crc_errors: - type: number - maximum: 0 - -in_rate_check: - type: object - patternProperties: - ^.*: - type: object - properties: - counters: - properties: - rate: - properties: - in_rate: - type: number - maximum: 0 diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/integration/test_integration.py b/ansible/collections/ansible_collections/ansible/utils/tests/integration/test_integration.py deleted file mode 100644 index 92d23b99..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/integration/test_integration.py +++ /dev/null @@ -1,47 +0,0 @@ -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import subprocess - -import pytest - - -def run(localhost_project, environment): - __tracebackhide__ = True - args = [ - "ansible-navigator", - "run", - str(localhost_project.playbook), - "--ee", - "false", - "--mode", - "stdout", - "--pas", - str(localhost_project.playbook_artifact), - "--ll", - "debug", - "--lf", - str(localhost_project.log_file), - "--cdcp", - str(localhost_project.collection_doc_cache), - "-vvvv", - ] - process = subprocess.run( - args=args, - env=environment, - stderr=subprocess.PIPE, - stdout=subprocess.PIPE, - check=False, - shell=False, - ) - if process.returncode: - print(process.stdout.decode("utf-8")) - print(process.stderr.decode("utf-8")) - - pytest.fail(reason=f"Integration test failed: {localhost_project.role}") - - -def test_integration(localhost_project, environment, monkeypatch): - run(localhost_project, environment) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/compat/mock.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/compat/mock.py deleted file mode 100644 index 3a3e082a..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/compat/mock.py +++ /dev/null @@ -1,127 +0,0 @@ -# (c) 2014, Toshio Kuratomi -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see . - -# Make coding more python3-ish -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -""" -Compat module for Python3.x's unittest.mock module -""" -import sys - -import _io # pyright: ignore[reportMissingImports] - - -# Python 2.7 - -# Note: Could use the pypi mock library on python3.x as well as python2.x. It -# is the same as the python3 stdlib mock library - -try: - # Allow wildcard import because we really do want to import all of mock's - # symbols into this compat shim - # pylint: disable=wildcard-import,unused-wildcard-import - from unittest.mock import * # noqa F403 -except ImportError: - # Python 2 - # pylint: disable=wildcard-import,unused-wildcard-import - try: - from mock import * # pyright: ignore[reportMissingModuleSource] # noqa F403 - except ImportError: - print("You need the mock library installed on python2.x to run tests") - - -# Prior to 3.4.4, mock_open cannot handle binary read_data -if sys.version_info >= (3,) and sys.version_info < (3, 4, 4): - file_spec = None - - def _iterate_read_data(read_data): - # Helper for mock_open: - # Retrieve lines from read_data via a generator so that separate calls to - # readline, read, and readlines are properly interleaved - sep = b"\n" if isinstance(read_data, bytes) else "\n" - data_as_list = [line + sep for line in read_data.split(sep)] - - if data_as_list[-1] == sep: - # If the last line ended in a newline, the list comprehension will have an - # extra entry that's just a newline. Remove this. - data_as_list = data_as_list[:-1] - else: - # If there wasn't an extra newline by itself, then the file being - # emulated doesn't have a newline to end the last line remove the - # newline that our naive format() added - data_as_list[-1] = data_as_list[-1][:-1] - - for line in data_as_list: - yield line - - def mock_open(mock=None, read_data=""): - """ - A helper function to create a mock to replace the use of `open`. It works - for `open` called directly or used as a context manager. - - The `mock` argument is the mock object to configure. If `None` (the - default) then a `MagicMock` will be created for you, with the API limited - to methods or attributes available on standard file handles. - - `read_data` is a string for the `read` methoddline`, and `readlines` of the - file handle to return. This is an empty string by default. - """ - - def _readlines_side_effect(*args, **kwargs): - if handle.readlines.return_value is not None: - return handle.readlines.return_value - return list(_data) - - def _read_side_effect(*args, **kwargs): - if handle.read.return_value is not None: - return handle.read.return_value - return type(read_data)().join(_data) - - def _readline_side_effect(): - if handle.readline.return_value is not None: - while True: - yield handle.readline.return_value - for line in _data: - yield line - - global file_spec - if file_spec is None: - file_spec = list(set(dir(_io.TextIOWrapper)).union(set(dir(_io.BytesIO)))) - - if mock is None: - mock = MagicMock(name="open", spec=open) # noqa F405 - - handle = MagicMock(spec=file_spec) # noqa F405 - handle.__enter__.return_value = handle - - _data = _iterate_read_data(read_data) - - handle.write.return_value = None - handle.read.return_value = None - handle.readline.return_value = None - handle.readlines.return_value = None - - handle.read.side_effect = _read_side_effect - handle.readline.side_effect = _readline_side_effect() - handle.readlines.side_effect = _readlines_side_effect - - mock.return_value = handle - return mock diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/compat/unittest.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/compat/unittest.py deleted file mode 100644 index 8cbfa7b9..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/compat/unittest.py +++ /dev/null @@ -1,41 +0,0 @@ -# (c) 2014, Toshio Kuratomi -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see . - -# Make coding more python3-ish -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -""" -Compat module for Python2.7's unittest module -""" - -import sys - - -# Allow wildcard import because we really do want to import all of -# unittests's symbols into this compat shim -# pylint: disable=wildcard-import,unused-wildcard-import -if sys.version_info < (2, 7): - try: - # Need unittest2 on python2.6 - from unittest2 import * # noqa F403 - except ImportError: - print("You need unittest2 installed on python2.6.x to run tests") -else: - from unittest import * # noqa F403 diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/mock/loader.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/mock/loader.py deleted file mode 100644 index 0fc53edc..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/mock/loader.py +++ /dev/null @@ -1,117 +0,0 @@ -# (c) 2012-2014, Michael DeHaan -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see . - -# Make coding more python3-ish -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import os - -from ansible.errors import AnsibleParserError -from ansible.module_utils._text import to_bytes, to_text -from ansible.parsing.dataloader import DataLoader - - -class DictDataLoader(DataLoader): - def __init__(self, file_mapping=None): - file_mapping = {} if file_mapping is None else file_mapping - assert isinstance(file_mapping, dict) - - super(DictDataLoader, self).__init__() - - self._file_mapping = file_mapping - self._build_known_directories() - self._vault_secrets = None - - def load_from_file(self, path, cache=True, unsafe=False): - path = to_text(path) - if path in self._file_mapping: - return self.load(self._file_mapping[path], path) - return None - - # TODO: the real _get_file_contents returns a bytestring, so we actually convert the - # unicode/text it's created with to utf-8 - def _get_file_contents(self, file_name): - file_name = to_text(file_name) - if file_name in self._file_mapping: - return (to_bytes(self._file_mapping[file_name]), False) - else: - raise AnsibleParserError("file not found: %s" % file_name) - - def path_exists(self, path): - path = to_text(path) - return path in self._file_mapping or path in self._known_directories - - def is_file(self, path): - path = to_text(path) - return path in self._file_mapping - - def is_directory(self, path): - path = to_text(path) - return path in self._known_directories - - def list_directory(self, path): - ret = [] - path = to_text(path) - for x in list(self._file_mapping.keys()) + self._known_directories: - if x.startswith(path): - if os.path.dirname(x) == path: - ret.append(os.path.basename(x)) - return ret - - def is_executable(self, path): - # FIXME: figure out a way to make paths return true for this - return False - - def _add_known_directory(self, directory): - if directory not in self._known_directories: - self._known_directories.append(directory) - - def _build_known_directories(self): - self._known_directories = [] - for path in self._file_mapping: - dirname = os.path.dirname(path) - while dirname not in ("/", ""): - self._add_known_directory(dirname) - dirname = os.path.dirname(dirname) - - def push(self, path, content): - rebuild_dirs = False - if path not in self._file_mapping: - rebuild_dirs = True - - self._file_mapping[path] = content - - if rebuild_dirs: - self._build_known_directories() - - def pop(self, path): - if path in self._file_mapping: - del self._file_mapping[path] - self._build_known_directories() - - def clear(self): - self._file_mapping = dict() - self._known_directories = [] - - def get_basedir(self): - return os.getcwd() - - def set_vault_secrets(self, vault_secrets): - self._vault_secrets = vault_secrets diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/mock/path.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/mock/path.py deleted file mode 100644 index 67e47a4e..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/mock/path.py +++ /dev/null @@ -1,9 +0,0 @@ -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type -from ansible.utils.path import unfrackpath -from ansible_collections.ansible.netcommon.tests.unit.compat.mock import MagicMock - - -mock_unfrackpath_noop = MagicMock(spec_set=unfrackpath, side_effect=lambda x, *args, **kwargs: x) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/mock/procenv.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/mock/procenv.py deleted file mode 100644 index 657d1e83..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/mock/procenv.py +++ /dev/null @@ -1,96 +0,0 @@ -# (c) 2016, Matt Davis -# (c) 2016, Toshio Kuratomi -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see . - -# Make coding more python3-ish -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import json -import sys - -from contextlib import contextmanager -from io import BytesIO, StringIO - -from ansible.module_utils._text import to_bytes -from ansible.module_utils.six import PY3 -from ansible_collections.ansible.netcommon.tests.unit.compat import unittest - - -@contextmanager -def swap_stdin_and_argv(stdin_data="", argv_data=tuple()): - """ - context manager that temporarily masks the test runner's values for stdin and argv - """ - real_stdin = sys.stdin - real_argv = sys.argv - - if PY3: - fake_stream = StringIO(stdin_data) - fake_stream.buffer = BytesIO(to_bytes(stdin_data)) - else: - fake_stream = BytesIO(to_bytes(stdin_data)) - - try: - sys.stdin = fake_stream - sys.argv = argv_data - - yield - finally: - sys.stdin = real_stdin - sys.argv = real_argv - - -@contextmanager -def swap_stdout(): - """ - context manager that temporarily replaces stdout for tests that need to verify output - """ - old_stdout = sys.stdout - - if PY3: - fake_stream = StringIO() - else: - fake_stream = BytesIO() - - try: - sys.stdout = fake_stream - - yield fake_stream - finally: - sys.stdout = old_stdout - - -class ModuleTestCase(unittest.TestCase): - def setUp(self, module_args=None): - if module_args is None: - module_args = { - "_ansible_remote_tmp": "/tmp", - "_ansible_keep_remote_files": False, - } - - args = json.dumps(dict(ANSIBLE_MODULE_ARGS=module_args)) - - # unittest doesn't have a clean place to use a context manager, so we have to enter/exit manually - self.stdin_swap = swap_stdin_and_argv(stdin_data=args) - self.stdin_swap.__enter__() - - def tearDown(self): - # unittest doesn't have a clean place to use a context manager, so we have to enter/exit manually - self.stdin_swap.__exit__(None, None, None) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/mock/vault_helper.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/mock/vault_helper.py deleted file mode 100644 index 6006ba96..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/mock/vault_helper.py +++ /dev/null @@ -1,40 +0,0 @@ -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see . - -# Make coding more python3-ish -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -from ansible.module_utils._text import to_bytes -from ansible.parsing.vault import VaultSecret - - -class TextVaultSecret(VaultSecret): - """A secret piece of text. ie, a password. Tracks text encoding. - - The text encoding of the text may not be the default text encoding so - we keep track of the encoding so we encode it to the same bytes.""" - - def __init__(self, text, encoding=None, errors=None, _bytes=None): - super(TextVaultSecret, self).__init__() - self.text = text - self.encoding = encoding or "utf-8" - self._bytes = _bytes - self.errors = errors or "strict" - - @property - def bytes(self): - """The text encoded with encoding, unless we specifically set _bytes.""" - return self._bytes or to_bytes(self.text, encoding=self.encoding, errors=self.errors) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/mock/yaml_helper.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/mock/yaml_helper.py deleted file mode 100644 index 2e857592..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/mock/yaml_helper.py +++ /dev/null @@ -1,157 +0,0 @@ -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type -import io - -import yaml - -from ansible.module_utils.six import PY3 -from ansible.parsing.yaml.dumper import AnsibleDumper -from ansible.parsing.yaml.loader import AnsibleLoader - - -class YamlTestUtils(object): - """Mixin class to combine with a unittest.TestCase subclass.""" - - def _loader(self, stream): - """Vault related tests will want to override this. - - Vault cases should setup a AnsibleLoader that has the vault password.""" - return AnsibleLoader(stream) - - def _dump_stream(self, obj, stream, dumper=None): - """Dump to a py2-unicode or py3-string stream.""" - if PY3: - return yaml.dump(obj, stream, Dumper=dumper) - else: - return yaml.dump(obj, stream, Dumper=dumper, encoding=None) - - def _dump_string(self, obj, dumper=None): - """Dump to a py2-unicode or py3-string""" - if PY3: - return yaml.dump(obj, Dumper=dumper) - else: - return yaml.dump(obj, Dumper=dumper, encoding=None) - - def _dump_load_cycle(self, obj): - # Each pass though a dump or load revs the 'generation' - # obj to yaml string - string_from_object_dump = self._dump_string(obj, dumper=AnsibleDumper) - - # wrap a stream/file like StringIO around that yaml - stream_from_object_dump = io.StringIO(string_from_object_dump) - loader = self._loader(stream_from_object_dump) - # load the yaml stream to create a new instance of the object (gen 2) - obj_2 = loader.get_data() - - # dump the gen 2 objects directory to strings - string_from_object_dump_2 = self._dump_string(obj_2, dumper=AnsibleDumper) - - # The gen 1 and gen 2 yaml strings - self.assertEqual(string_from_object_dump, string_from_object_dump_2) - # the gen 1 (orig) and gen 2 py object - self.assertEqual(obj, obj_2) - - # again! gen 3... load strings into py objects - stream_3 = io.StringIO(string_from_object_dump_2) - loader_3 = self._loader(stream_3) - obj_3 = loader_3.get_data() - - string_from_object_dump_3 = self._dump_string(obj_3, dumper=AnsibleDumper) - - self.assertEqual(obj, obj_3) - # should be transitive, but... - self.assertEqual(obj_2, obj_3) - self.assertEqual(string_from_object_dump, string_from_object_dump_3) - - def _old_dump_load_cycle(self, obj): - """Dump the passed in object to yaml, load it back up, dump again, compare.""" - stream = io.StringIO() - - yaml_string = self._dump_string(obj, dumper=AnsibleDumper) - self._dump_stream(obj, stream, dumper=AnsibleDumper) - - yaml_string_from_stream = stream.getvalue() - - # reset stream - stream.seek(0) - - loader = self._loader(stream) - # loader = AnsibleLoader(stream, vault_password=self.vault_password) - obj_from_stream = loader.get_data() - - stream_from_string = io.StringIO(yaml_string) - loader2 = self._loader(stream_from_string) - # loader2 = AnsibleLoader(stream_from_string, vault_password=self.vault_password) - obj_from_string = loader2.get_data() - - stream_obj_from_stream = io.StringIO() - stream_obj_from_string = io.StringIO() - - if PY3: - yaml.dump(obj_from_stream, stream_obj_from_stream, Dumper=AnsibleDumper) - yaml.dump(obj_from_stream, stream_obj_from_string, Dumper=AnsibleDumper) - else: - yaml.dump( - obj_from_stream, - stream_obj_from_stream, - Dumper=AnsibleDumper, - encoding=None, - ) - yaml.dump( - obj_from_stream, - stream_obj_from_string, - Dumper=AnsibleDumper, - encoding=None, - ) - - yaml_string_stream_obj_from_stream = stream_obj_from_stream.getvalue() - yaml_string_stream_obj_from_string = stream_obj_from_string.getvalue() - - stream_obj_from_stream.seek(0) - stream_obj_from_string.seek(0) - - if PY3: - yaml_string_obj_from_stream = yaml.dump(obj_from_stream, Dumper=AnsibleDumper) - yaml_string_obj_from_string = yaml.dump(obj_from_string, Dumper=AnsibleDumper) - else: - yaml_string_obj_from_stream = yaml.dump( - obj_from_stream, - Dumper=AnsibleDumper, - encoding=None, - ) - yaml_string_obj_from_string = yaml.dump( - obj_from_string, - Dumper=AnsibleDumper, - encoding=None, - ) - - assert yaml_string == yaml_string_obj_from_stream - assert yaml_string == yaml_string_obj_from_stream == yaml_string_obj_from_string - assert ( - yaml_string - == yaml_string_obj_from_stream - == yaml_string_obj_from_string - == yaml_string_stream_obj_from_stream - == yaml_string_stream_obj_from_string - ) - assert obj == obj_from_stream - assert obj == obj_from_string - assert obj == yaml_string_obj_from_stream - assert obj == yaml_string_obj_from_string - assert ( - obj - == obj_from_stream - == obj_from_string - == yaml_string_obj_from_stream - == yaml_string_obj_from_string - ) - return { - "obj": obj, - "yaml_string": yaml_string, - "yaml_string_from_stream": yaml_string_from_stream, - "obj_from_stream": obj_from_stream, - "obj_from_string": obj_from_string, - "yaml_string_obj_from_string": yaml_string_obj_from_string, - } diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/module_utils/fixtures/docstring.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/module_utils/fixtures/docstring.py deleted file mode 100644 index 1275969b..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/module_utils/fixtures/docstring.py +++ /dev/null @@ -1,38 +0,0 @@ -DOCUMENTATION = """ -module: test -author: Bradley Thornton (@cidrblock) -short_description: Short description here -description: -- A longer description here -version_added: 0.0.0 -options: - param_str: - type: str - description: - - A string param - required: True - params_bool: - type: bool - description: - - A bool param - params_dict: - type: dict - description: - - A dict param - suboptions: - subo_str: - type: str - description: - - A string suboption - subo_list: - type: list - description: - - A list suboption - subo_dict: - type: dict - description: - - A dict suboption - param_default: - type: bool - default: True -""" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/module_utils/fixtures/large.json b/ansible/collections/ansible_collections/ansible/utils/tests/unit/module_utils/fixtures/large.json deleted file mode 100644 index ff074d98..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/module_utils/fixtures/large.json +++ /dev/null @@ -1,55318 +0,0 @@ -{ - "System": { - "acct-items": { - "adminSt": "enabled", - "name": "", - "operSt": "enabled", - "sessionId": "0", - "sessionNum": "0", - "sourceId": "0" - }, - "actrl-items": { - "adminSt": "enabled", - "filt-items": { - "Flt-list": [ - { - "descr": "", - "ent-items": { - "Entry-list": [ - { - "applyToFrag": "false", - "arpOpc": "unspecified", - "descr": "", - "etherT": "unspecified", - "icmpv4T": "255", - "icmpv6T": "0", - "name": "implicit" - } - ] - }, - "id": "65534", - "name": "", - "ownerKey": "", - "ownerTag": "" - } - ] - }, - "inst-items": { - "accCtrl": "", - "adminSt": "enabled", - "ctrl": "", - "logClrIntvl": "2800", - "name": "" - }, - "name": "", - "operSt": "enabled" - }, - "adjacency-items": { - "adminSt": "enabled", - "inst-items": { - "adminSt": "enabled", - "ctrl": "", - "name": "" - }, - "operSt": "enabled" - }, - "arp-items": { - "adminSt": "enabled", - "inst-items": { - "adjLoggingLevel": "error", - "adminSt": "enabled", - "allowStaticArpOutsideSubnet": "disabled", - "arpUnnumSviSwReplication": "disabled", - "cacheLimit": "174080", - "cacheSyslogRate": "1", - "configErr": "", - "dom-items": { - "Dom-list": [ - { - "if-items": { - "If-list": [ - { - "adminSt": "enabled", - "configError": "", - "deleteAdjOnMacDelete": "disabled", - "duplicateIpDetectionForUnnumberedSvi": "disabled", - "gratuitousHsrpDup": "enabled", - "gratuitousRequest": "enabled", - "gratuitousUpdate": "enabled", - "id": "mgmt0", - "localProxyArp": "disabled", - "localProxyArpNoHwFlood": "disabled", - "proxyArp": "disabled", - "timeout": "1500" - } - ] - }, - "name": "management" - } - ] - }, - "evpn_timeout": "600", - "ipAdjRouteDistance": "250", - "loggingLevel": "error", - "offListTimeout": "180", - "rarpFabricFwding": "disabled", - "rarpFabricFwdingRate": "200", - "suppression_timeout": "0", - "timeout": "1500" - }, - "operSt": "enabled" - }, - "bd-items": { - "bd-items": { - "BD-list": [ - { - "BdOperName": "default", - "BdState": "active", - "adminSt": "active", - "bdDefDn": "", - "bridgeMode": "mac", - "controllerId": "", - "createTs": "1970-01-01T00:00:00.000+00:00", - "dbgVlanStats-items": { - "inBcastOctets": "0", - "inBcastPkts": "0", - "inL3UcastOctets": "0", - "inL3UcastPkts": "0", - "inMcastOctets": "0", - "inMcastPkts": "0", - "inUcastOctets": "0", - "inUcastPkts": "0", - "outUcastOctets": "0", - "outUcastPkts": "0" - }, - "fabEncap": "vlan-1", - "fwdCtrl": "mdst-flood", - "fwdMode": "bridge,route", - "hwId": "0", - "id": "1", - "member-items": { - "VlanMemberIf-list": [ - { - "id": "eth1/67", - "vlan": "1" - }, - { - "id": "eth1/27", - "vlan": "1" - }, - { - "id": "eth1/105", - "vlan": "1" - }, - { - "id": "eth1/58", - "vlan": "1" - }, - { - "id": "eth1/14", - "vlan": "1" - }, - { - "id": "eth1/12", - "vlan": "1" - }, - { - "id": "eth1/97", - "vlan": "1" - }, - { - "id": "eth1/77", - "vlan": "1" - }, - { - "id": "eth1/103", - "vlan": "1" - }, - { - "id": "eth1/59", - "vlan": "1" - }, - { - "id": "eth1/119", - "vlan": "1" - }, - { - "id": "eth1/110", - "vlan": "1" - }, - { - "id": "eth1/84", - "vlan": "1" - }, - { - "id": "eth1/122", - "vlan": "1" - }, - { - "id": "eth1/34", - "vlan": "1" - }, - { - "id": "eth1/1", - "vlan": "1" - }, - { - "id": "eth1/19", - "vlan": "1" - }, - { - "id": "eth1/57", - "vlan": "1" - }, - { - "id": "eth1/63", - "vlan": "1" - }, - { - "id": "eth1/46", - "vlan": "1" - }, - { - "id": "eth1/33", - "vlan": "1" - }, - { - "id": "eth1/115", - "vlan": "1" - }, - { - "id": "eth1/65", - "vlan": "1" - }, - { - "id": "eth1/16", - "vlan": "1" - }, - { - "id": "eth1/118", - "vlan": "1" - }, - { - "id": "eth1/85", - "vlan": "1" - }, - { - "id": "eth1/78", - "vlan": "1" - }, - { - "id": "eth1/56", - "vlan": "1" - }, - { - "id": "eth1/21", - "vlan": "1" - }, - { - "id": "eth1/89", - "vlan": "1" - }, - { - "id": "eth1/81", - "vlan": "1" - }, - { - "id": "eth1/23", - "vlan": "1" - }, - { - "id": "eth1/20", - "vlan": "1" - }, - { - "id": "eth1/15", - "vlan": "1" - }, - { - "id": "eth1/76", - "vlan": "1" - }, - { - "id": "eth1/86", - "vlan": "1" - }, - { - "id": "eth1/79", - "vlan": "1" - }, - { - "id": "eth1/70", - "vlan": "1" - }, - { - "id": "eth1/2", - "vlan": "1" - }, - { - "id": "eth1/48", - "vlan": "1" - }, - { - "id": "eth1/29", - "vlan": "1" - }, - { - "id": "eth1/123", - "vlan": "1" - }, - { - "id": "eth1/31", - "vlan": "1" - }, - { - "id": "eth1/117", - "vlan": "1" - }, - { - "id": "eth1/61", - "vlan": "1" - }, - { - "id": "eth1/83", - "vlan": "1" - }, - { - "id": "eth1/75", - "vlan": "1" - }, - { - "id": "eth1/68", - "vlan": "1" - }, - { - "id": "eth1/60", - "vlan": "1" - }, - { - "id": "eth1/127", - "vlan": "1" - }, - { - "id": "eth1/30", - "vlan": "1" - }, - { - "id": "eth1/107", - "vlan": "1" - }, - { - "id": "eth1/72", - "vlan": "1" - }, - { - "id": "eth1/10", - "vlan": "1" - }, - { - "id": "eth1/91", - "vlan": "1" - }, - { - "id": "eth1/126", - "vlan": "1" - }, - { - "id": "eth1/28", - "vlan": "1" - }, - { - "id": "eth1/54", - "vlan": "1" - }, - { - "id": "eth1/7", - "vlan": "1" - }, - { - "id": "eth1/52", - "vlan": "1" - }, - { - "id": "eth1/8", - "vlan": "1" - }, - { - "id": "eth1/101", - "vlan": "1" - }, - { - "id": "eth1/41", - "vlan": "1" - }, - { - "id": "eth1/18", - "vlan": "1" - }, - { - "id": "eth1/3", - "vlan": "1" - }, - { - "id": "eth1/47", - "vlan": "1" - }, - { - "id": "eth1/111", - "vlan": "1" - }, - { - "id": "eth1/55", - "vlan": "1" - }, - { - "id": "eth1/53", - "vlan": "1" - }, - { - "id": "eth1/80", - "vlan": "1" - }, - { - "id": "eth1/66", - "vlan": "1" - }, - { - "id": "eth1/116", - "vlan": "1" - }, - { - "id": "eth1/6", - "vlan": "1" - }, - { - "id": "eth1/5", - "vlan": "1" - }, - { - "id": "eth1/100", - "vlan": "1" - }, - { - "id": "eth1/87", - "vlan": "1" - }, - { - "id": "eth1/73", - "vlan": "1" - }, - { - "id": "eth1/45", - "vlan": "1" - }, - { - "id": "eth1/44", - "vlan": "1" - }, - { - "id": "eth1/42", - "vlan": "1" - }, - { - "id": "eth1/93", - "vlan": "1" - }, - { - "id": "eth1/128", - "vlan": "1" - }, - { - "id": "eth1/99", - "vlan": "1" - }, - { - "id": "eth1/62", - "vlan": "1" - }, - { - "id": "eth1/71", - "vlan": "1" - }, - { - "id": "eth1/49", - "vlan": "1" - }, - { - "id": "eth1/43", - "vlan": "1" - }, - { - "id": "eth1/96", - "vlan": "1" - }, - { - "id": "eth1/36", - "vlan": "1" - }, - { - "id": "eth1/98", - "vlan": "1" - }, - { - "id": "eth1/40", - "vlan": "1" - }, - { - "id": "eth1/125", - "vlan": "1" - }, - { - "id": "eth1/113", - "vlan": "1" - }, - { - "id": "eth1/88", - "vlan": "1" - }, - { - "id": "eth1/109", - "vlan": "1" - }, - { - "id": "eth1/39", - "vlan": "1" - }, - { - "id": "eth1/90", - "vlan": "1" - }, - { - "id": "eth1/120", - "vlan": "1" - }, - { - "id": "eth1/69", - "vlan": "1" - }, - { - "id": "eth1/124", - "vlan": "1" - }, - { - "id": "eth1/51", - "vlan": "1" - }, - { - "id": "eth1/26", - "vlan": "1" - }, - { - "id": "eth1/50", - "vlan": "1" - }, - { - "id": "eth1/112", - "vlan": "1" - }, - { - "id": "eth1/114", - "vlan": "1" - }, - { - "id": "eth1/106", - "vlan": "1" - }, - { - "id": "eth1/82", - "vlan": "1" - }, - { - "id": "eth1/74", - "vlan": "1" - }, - { - "id": "eth1/25", - "vlan": "1" - }, - { - "id": "eth1/108", - "vlan": "1" - }, - { - "id": "eth1/13", - "vlan": "1" - }, - { - "id": "eth1/38", - "vlan": "1" - }, - { - "id": "eth1/24", - "vlan": "1" - }, - { - "id": "eth1/17", - "vlan": "1" - }, - { - "id": "eth1/102", - "vlan": "1" - }, - { - "id": "eth1/37", - "vlan": "1" - }, - { - "id": "eth1/32", - "vlan": "1" - }, - { - "id": "eth1/4", - "vlan": "1" - }, - { - "id": "eth1/92", - "vlan": "1" - }, - { - "id": "eth1/104", - "vlan": "1" - }, - { - "id": "eth1/35", - "vlan": "1" - }, - { - "id": "eth1/9", - "vlan": "1" - }, - { - "id": "eth1/11", - "vlan": "1" - }, - { - "id": "eth1/22", - "vlan": "1" - }, - { - "id": "eth1/121", - "vlan": "1" - }, - { - "id": "eth1/95", - "vlan": "1" - }, - { - "id": "eth1/64", - "vlan": "1" - }, - { - "id": "eth1/94", - "vlan": "1" - } - ] - }, - "mode": "CE", - "operSt": "up", - "xConnect": "disable" - } - ] - }, - "descr": "", - "sysDefaultSVIAutostate": "enable" - }, - "boot-items": { - "image-items": { - "image_err": "", - "imageverification": "enable", - "sup1": "bootflash:/nxos.9.2.2.bin", - "sup1NextReload": "bootflash:/nxos.9.2.2.bin", - "sup2": "bootflash:/nxos.9.2.2.bin", - "sup2NextReload": "" - }, - "poap": "disable" - }, - "cdp-items": { - "adminSt": "enabled", - "inst-items": { - "adminSt": "enabled", - "devIdType": "none", - "holdIntvl": "180", - "if-items": { - "If-list": [ - { - "adminSt": "enabled", - "id": "eth1/27", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/115", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/15", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/100", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/105", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/16", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/46", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/56", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/25", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/122", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/81", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/88", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/65", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/76", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/127", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/41", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/30", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/128", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adj-items": { - "AdjEp-list": [ - { - "adjstats-items": { - "adjExpTs": "2020-10-09T18:06:38.277+00:00" - }, - "cap": "router,stp-dispute,switch", - "devId": "nxos102(90YD453YX23)", - "duplex": "full", - "index": "1", - "intf-items": { - "IntfAddr-list": [ - { - "addr": "192.168.101.15" - } - ] - }, - "mgmt-items": { - "MgmtAddr-list": [ - { - "addr": "192.168.101.15" - } - ] - }, - "mtu": "1500", - "name": "", - "nativeVlan": "0", - "platId": "N9K-9000v", - "portId": "mgmt0", - "sysLoc": "snmplocation", - "sysName": "nxos102", - "ver": "Cisco Nexus Operating System (NX-OS) Software, Version 9.2(2)" - }, - { - "adjstats-items": { - "adjExpTs": "2020-10-09T18:06:38.278+00:00" - }, - "cap": "router,stp-dispute,switch", - "devId": "nxos103(9RGLRZ7TNFP)", - "duplex": "full", - "index": "2", - "intf-items": { - "IntfAddr-list": [ - { - "addr": "192.168.101.16" - } - ] - }, - "mgmt-items": { - "MgmtAddr-list": [ - { - "addr": "192.168.101.16" - } - ] - }, - "mtu": "1500", - "name": "", - "nativeVlan": "0", - "platId": "N9K-9000v", - "portId": "mgmt0", - "sysLoc": "", - "sysName": "nxos103", - "ver": "Cisco Nexus Operating System (NX-OS) Software, Version 9.2(2)" - }, - { - "adjstats-items": { - "adjExpTs": "2020-10-09T18:06:38.280+00:00" - }, - "cap": "router,stp-dispute,switch", - "devId": "nxos104(9UXRQ9H3EXS)", - "duplex": "full", - "index": "3", - "intf-items": { - "IntfAddr-list": [ - { - "addr": "192.168.101.17" - } - ] - }, - "mgmt-items": { - "MgmtAddr-list": [ - { - "addr": "192.168.101.17" - } - ] - }, - "mtu": "1500", - "name": "", - "nativeVlan": "0", - "platId": "N9K-9000v", - "portId": "mgmt0", - "sysLoc": "snmplocation", - "sysName": "nxos104", - "ver": "Cisco Nexus Operating System (NX-OS) Software, Version 9.2(2)" - } - ] - }, - "adminSt": "enabled", - "id": "mgmt0", - "ifstats-items": { - "cksumErrRcvd": "0", - "failedSent": "0", - "malformRcvd": "0", - "unSupVerRcvd": "0", - "v1Sent": "0", - "v2Sent": "21415", - "validV1Rcvd": "0", - "validV2Rcvd": "64238" - }, - "nativeVlan": "0", - "operSt": "up", - "operStQual": "up" - }, - { - "adminSt": "enabled", - "id": "eth1/91", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/52", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/71", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/78", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/79", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/33", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/99", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/61", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/26", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/62", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/114", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/124", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/22", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/50", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/103", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/2", - "ifstats-items": { - "cksumErrRcvd": "0", - "failedSent": "0", - "malformRcvd": "0", - "unSupVerRcvd": "0", - "v1Sent": "0", - "v2Sent": "18325", - "validV1Rcvd": "0", - "validV2Rcvd": "62715" - }, - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/107", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/45", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/72", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/74", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/86", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/96", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/70", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/40", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/10", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/5", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/95", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/18", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/55", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/63", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/111", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/117", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/90", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/23", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/75", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/106", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/38", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/69", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/7", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/67", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/43", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/11", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/110", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/37", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/51", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/42", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/49", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/57", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/8", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/53", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/113", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/68", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/6", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/20", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/84", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/123", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/109", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/58", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/4", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/73", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/34", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/60", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/112", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/66", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/24", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/89", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/97", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/36", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/102", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/121", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/44", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/12", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/59", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/119", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/17", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/21", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/31", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/32", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/14", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/108", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/101", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/13", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/64", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/125", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/47", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/54", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/19", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/87", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/77", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adj-items": { - "AdjEp-list": [ - { - "adjstats-items": { - "adjExpTs": "2020-10-09T18:06:18.555+00:00" - }, - "cap": "igmp-filter,router,stp-dispute,switch", - "devId": "nxos102(90YD453YX23)", - "duplex": "full", - "index": "5", - "intf-items": { - "IntfAddr-list": [ - { - "addr": "192.168.101.15" - } - ] - }, - "mgmt-items": { - "MgmtAddr-list": [ - { - "addr": "192.168.101.15" - } - ] - }, - "mtu": "1500", - "name": "", - "nativeVlan": "1", - "platId": "N9K-9000v", - "portId": "Ethernet1/2", - "sysLoc": "snmplocation", - "sysName": "nxos102", - "ver": "Cisco Nexus Operating System (NX-OS) Software, Version 9.2(2)" - }, - { - "adjstats-items": { - "adjExpTs": "2020-10-09T18:06:18.571+00:00" - }, - "cap": "igmp-filter,router,stp-dispute,switch", - "devId": "nxos103(9RGLRZ7TNFP)", - "duplex": "full", - "index": "6", - "intf-items": { - "IntfAddr-list": [ - { - "addr": "192.168.101.16" - } - ] - }, - "mgmt-items": { - "MgmtAddr-list": [ - { - "addr": "192.168.101.16" - } - ] - }, - "mtu": "1500", - "name": "", - "nativeVlan": "1", - "platId": "N9K-9000v", - "portId": "Ethernet1/2", - "sysLoc": "", - "sysName": "nxos103", - "ver": "Cisco Nexus Operating System (NX-OS) Software, Version 9.2(2)" - }, - { - "adjstats-items": { - "adjExpTs": "2020-10-09T18:06:18.459+00:00" - }, - "cap": "igmp-filter,router,stp-dispute,switch", - "devId": "nxos104(9UXRQ9H3EXS)", - "duplex": "full", - "index": "1", - "intf-items": { - "IntfAddr-list": [ - { - "addr": "192.168.101.17" - } - ] - }, - "mgmt-items": { - "MgmtAddr-list": [ - { - "addr": "192.168.101.17" - } - ] - }, - "mtu": "1500", - "name": "", - "nativeVlan": "1", - "platId": "N9K-9000v", - "portId": "Ethernet1/1", - "sysLoc": "snmplocation", - "sysName": "nxos104", - "ver": "Cisco Nexus Operating System (NX-OS) Software, Version 9.2(2)" - }, - { - "adjstats-items": { - "adjExpTs": "2020-10-09T18:06:18.463+00:00" - }, - "cap": "igmp-filter,router,stp-dispute,switch", - "devId": "nxos103(9RGLRZ7TNFP)", - "duplex": "full", - "index": "2", - "intf-items": { - "IntfAddr-list": [ - { - "addr": "192.168.101.16" - } - ] - }, - "mgmt-items": { - "MgmtAddr-list": [ - { - "addr": "192.168.101.16" - } - ] - }, - "mtu": "1500", - "name": "", - "nativeVlan": "1", - "platId": "N9K-9000v", - "portId": "Ethernet1/1", - "sysLoc": "", - "sysName": "nxos103", - "ver": "Cisco Nexus Operating System (NX-OS) Software, Version 9.2(2)" - }, - { - "adjstats-items": { - "adjExpTs": "2020-10-09T18:06:18.540+00:00" - }, - "cap": "igmp-filter,router,stp-dispute,switch", - "devId": "nxos104(9UXRQ9H3EXS)", - "duplex": "full", - "index": "4", - "intf-items": { - "IntfAddr-list": [ - { - "addr": "192.168.101.17" - } - ] - }, - "mgmt-items": { - "MgmtAddr-list": [ - { - "addr": "192.168.101.17" - } - ] - }, - "mtu": "1500", - "name": "", - "nativeVlan": "1", - "platId": "N9K-9000v", - "portId": "Ethernet1/2", - "sysLoc": "snmplocation", - "sysName": "nxos104", - "ver": "Cisco Nexus Operating System (NX-OS) Software, Version 9.2(2)" - }, - { - "adjstats-items": { - "adjExpTs": "2020-10-09T18:06:18.461+00:00" - }, - "cap": "igmp-filter,router,stp-dispute,switch", - "devId": "nxos102(90YD453YX23)", - "duplex": "full", - "index": "3", - "intf-items": { - "IntfAddr-list": [ - { - "addr": "192.168.101.15" - } - ] - }, - "mgmt-items": { - "MgmtAddr-list": [ - { - "addr": "192.168.101.15" - } - ] - }, - "mtu": "1500", - "name": "", - "nativeVlan": "1", - "platId": "N9K-9000v", - "portId": "Ethernet1/1", - "sysLoc": "snmplocation", - "sysName": "nxos102", - "ver": "Cisco Nexus Operating System (NX-OS) Software, Version 9.2(2)" - } - ] - }, - "adminSt": "enabled", - "id": "eth1/1", - "ifstats-items": { - "cksumErrRcvd": "0", - "failedSent": "0", - "malformRcvd": "0", - "unSupVerRcvd": "0", - "v1Sent": "0", - "v2Sent": "21414", - "validV1Rcvd": "0", - "validV2Rcvd": "15714" - }, - "nativeVlan": "1", - "operSt": "up", - "operStQual": "up" - }, - { - "adminSt": "enabled", - "id": "eth1/126", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/104", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/3", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/98", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/82", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/29", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/28", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/80", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/116", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/9", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/35", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/118", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/120", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/93", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/85", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/94", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/39", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/48", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/83", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - }, - { - "adminSt": "enabled", - "id": "eth1/92", - "nativeVlan": "1", - "operSt": "down", - "operStQual": "if-down" - } - ] - }, - "operErr": "", - "sysName": "", - "txFreq": "60", - "ver": "v2" - }, - "name": "", - "operSt": "enabled" - }, - "cfs-items": { - "adminSt": "enabled", - "inst-items": { - "adminSt": "enabled", - "distribute": "enabled", - "ethDist": "disabled", - "ipDistMode": "none", - "operErr": "" - }, - "operSt": "enabled" - }, - "ch-items": { - "descr": "Nexus9000 9000v Chassis", - "id": "1", - "lcslot-items": { - "LCSlot-list": [ - { - "descr": "Linecard slot", - "id": "1", - "lc-items": { - "breakoutFactor": "1", - "descr": "Nexus 9000v Ethernet Module", - "hwVer": "0.0", - "id": "1", - "leafport-items": { - "LeafP-list": [ - { - "descr": "Leaf Port", - "id": "72", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "49", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "44", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "113", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "80", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "30", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "73", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "117", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "76", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "92", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "4", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "51", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "16", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "52", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "31", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "60", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "68", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "104", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "106", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "125", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "45", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "126", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "100", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "29", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "96", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "61", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "82", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "114", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "25", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "128", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "86", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "58", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "102", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "66", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "110", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "56", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "115", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "38", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "35", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "27", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "11", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "98", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "43", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "54", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "46", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "65", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "41", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "119", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "109", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "18", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "17", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "14", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "9", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "99", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "84", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "71", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "81", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "127", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "34", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "93", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "32", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "42", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "108", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "70", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "36", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "22", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "85", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "10", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "3", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "50", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "19", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "15", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "118", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "59", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "26", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "88", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "89", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "78", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "2", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "37", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "20", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "33", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "55", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "63", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "123", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "90", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "77", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "122", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "21", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "13", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "83", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "101", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "87", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "111", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "124", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "53", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "24", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "12", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "69", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "40", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "94", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "120", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "79", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "5", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "91", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "112", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "28", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "8", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "116", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "6", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "103", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "64", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "1", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "74", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "23", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "97", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "62", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "67", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "121", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "105", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "48", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "75", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "39", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "57", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "107", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "47", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "7", - "speed": "0", - "type": "leaf" - }, - { - "descr": "Leaf Port", - "id": "95", - "speed": "0", - "type": "leaf" - } - ] - }, - "macB": "00-00-00-00-00-00", - "macE": "00-00-00-00-00-00", - "mfgTm": "2006-12-25T00:00:00.000+00:00", - "model": "N9K-9000v", - "numP": "128", - "operSt": "online", - "partNumber": "73-99999-01", - "powerActualDraw": "0", - "powerAllocated": "0", - "pwrSt": "on", - "rev": "", - "ser": "970MUM0NTLV", - "splc-items": { - "acc": "read-only", - "cap": "512", - "descr": "Linecard Sprom", - "id": "1", - "numBlk": "768", - "operSt": "ok", - "rev": "", - "ser": "970MUM0NTLV", - "spcmn-items": { - "cksum": "2880", - "clei": "", - "count": "3", - "engBits": "0", - "hwVer": "0.0", - "len": "160", - "major": "0", - "mfgBits": "0", - "mfgDev": "", - "minor": "0", - "oem": "", - "pRev": "", - "pdNum": "N9K-9000v", - "prtNum": "73-99999-01", - "pwrCon": "-501", - "rmaFl": "0-0-0-0", - "serNum": "970MUM0NTLV", - "sig": "43947", - "size": "0", - "vdrId": "V02", - "ver": "3" - }, - "splcblk-items": { - "ambT": "0", - "cksum": "1352", - "coolRq": "0", - "crdIdx": "21099", - "eobcN": "0", - "epldN": "0", - "fbits": "0", - "hwCBits": "0", - "len": "103", - "macB": "52-54-00-5a-f8-b5", - "macL": "136", - "maxCPwr": "0", - "sensor1": "0,0", - "sensor2": "0,0", - "sensor3": "0,0", - "sensor4": "0,0", - "sensor5": "0,0", - "sensor6": "0,0", - "sensor7": "0,0", - "sensor8": "0,0", - "sig": "24579", - "sppd-items": { - "numPts": "128", - "prtTy": "2" - }, - "ver": "2" - }, - "spsensorblk-items": { - "cksum": "176", - "len": "71", - "sensor10": "0,0", - "sensor11": "0,0", - "sensor12": "0,0", - "sensor13": "0,0", - "sensor14": "0,0", - "sensor15": "0,0", - "sensor16": "0,0", - "sensor17": "0,0", - "sensor18": "0,0", - "sensor19": "0,0", - "sensor20": "0,0", - "sensor21": "0,0", - "sensor22": "0,0", - "sensor23": "0,0", - "sensor24": "0,0", - "sensor25": "0,0", - "sensor26": "0,0", - "sensor27": "0,0", - "sensor28": "0,0", - "sensor29": "0,0", - "sensor30": "0,0", - "sensor31": "0,0", - "sensor32": "0,0", - "sensor33": "0,0", - "sensor34": "0,0", - "sensor35": "0,0", - "sensor36": "0,0", - "sensor37": "0,0", - "sensor38": "0,0", - "sensor39": "0,0", - "sensor40": "0,0", - "sensor9": "0,0", - "sig": "24584", - "ver": "1" - }, - "type": "unk", - "vendor": "" - }, - "swCId": "50", - "swVer": "9.2(2)", - "type": "linecard", - "upTs": "2020-09-24T21:10:22.846+00:00", - "vdrId": "V02", - "vendor": "Cisco Systems, Inc." - }, - "loc": "front", - "operSt": "inserted", - "physId": "1", - "poweroff": "no", - "purgeCfg": "false", - "type": "lcslot" - } - ] - }, - "mfgTm": "2006-12-25T00:00:00.000+00:00", - "model": "", - "operSt": "online", - "operStQual": "Chassis came online", - "rev": "", - "role": "unsupported", - "ser": "970MUM0NTLV", - "spbp-items": { - "acc": "read-only", - "cap": "0", - "descr": "TOR", - "id": "1", - "model": "TOR", - "numBlk": "3", - "operSt": "ok", - "rev": "", - "ser": "970MUM0NTLV", - "spbpblk-items": { - "cksum": "952", - "fbits": "0", - "hwCBits": "0", - "len": "39", - "macB": "52-54-00-5a-f8-b5", - "macL": "128", - "maxCPwr": "0", - "oemEprise": "0", - "oemMIB": "0", - "sig": "24577", - "stackMIB": "0", - "ver": "3" - }, - "spcmn-items": { - "cksum": "2880", - "clei": "", - "count": "3", - "engBits": "0", - "hwVer": "0.0", - "len": "160", - "major": "0", - "mfgBits": "0", - "mfgDev": "", - "minor": "0", - "oem": "", - "pRev": "", - "pdNum": "N9K-9000v", - "prtNum": "73-99999-01", - "pwrCon": "-501", - "rmaFl": "0-0-0-0", - "serNum": "970MUM0NTLV", - "sig": "43947", - "size": "0", - "vdrId": "V02", - "ver": "3" - }, - "type": "7", - "vendor": "" - }, - "supslot-items": { - "SupCSlot-list": [ - { - "descr": "Sup slot", - "id": "1", - "loc": "front", - "operSt": "inserted", - "physId": "1", - "poweroff": "no", - "sup-items": { - "cpu-items": { - "CPU-list": [ - { - "arch": "x86_64", - "cores": "4", - "coresEn": "4", - "descr": " QEMU Virtual CPU version 2.5+", - "id": "1", - "mfgTm": "not-applicable", - "model": " QEMU Virtual CPU version 2.5+", - "rev": " 13", - "ser": "n/a", - "sock": "unspecified", - "speed": "2699.99", - "thrds": "1", - "vendor": " GenuineIntel" - } - ] - }, - "descr": "Nexus 9000v Ethernet Module", - "dimm-items": { - "Dimm-list": [ - { - "acc": "read-write", - "cap": "7846", - "descr": "RAM", - "id": "1", - "mfgTm": "2020-09-24T21:09:52.729+00:00", - "model": "n/a", - "operSt": "ok", - "rev": "n/a", - "ser": "n/a", - "type": "dimm", - "vendor": "n/a" - } - ] - }, - "flash-items": { - "acc": "read-write", - "cap": "8192", - "descr": "flash", - "id": "1", - "mfgTm": "2020-09-24T21:09:52.729+00:00", - "model": "n/a", - "operSt": "ok", - "rev": "n/a", - "ser": "n/a", - "type": "flash", - "vendor": "n/a" - }, - "hwVer": "0.0", - "id": "1", - "macB": "52-54-00-5a-f8-b5", - "macE": "52-54-00-5a-f9-3c", - "mfgTm": "2006-12-25T00:00:00.000+00:00", - "mgmt-items": { - "MgmtP-list": [ - { - "descr": "", - "id": "1", - "type": "mgmt" - } - ] - }, - "model": "N9K-9000v", - "numP": "128", - "operSt": "online", - "partNumber": "73-99999-01", - "powerActualDraw": "0", - "powerAllocated": "0", - "pwrSt": "on", - "rdSt": "active", - "rev": "", - "ser": "970MUM0NTLV", - "spsup-items": { - "acc": "read-only", - "cap": "512", - "descr": "Sup SPROM", - "id": "1", - "model": "N9K-9000v", - "numBlk": "768", - "operSt": "ok", - "rev": "", - "ser": "970MUM0NTLV", - "spcmn-items": { - "cksum": "2880", - "clei": "", - "count": "3", - "engBits": "0", - "hwVer": "0.0", - "len": "160", - "major": "0", - "mfgBits": "0", - "mfgDev": "", - "minor": "0", - "oem": "", - "pRev": "", - "pdNum": "N9K-9000v", - "prtNum": "73-99999-01", - "pwrCon": "-501", - "rmaFl": "0-0-0-0", - "serNum": "970MUM0NTLV", - "sig": "43947", - "size": "0", - "vdrId": "V02", - "ver": "3" - }, - "spsensorblk-items": { - "cksum": "176", - "len": "71", - "sensor10": "0,0", - "sensor11": "0,0", - "sensor12": "0,0", - "sensor13": "0,0", - "sensor14": "0,0", - "sensor15": "0,0", - "sensor16": "0,0", - "sensor17": "0,0", - "sensor18": "0,0", - "sensor19": "0,0", - "sensor20": "0,0", - "sensor21": "0,0", - "sensor22": "0,0", - "sensor23": "0,0", - "sensor24": "0,0", - "sensor25": "0,0", - "sensor26": "0,0", - "sensor27": "0,0", - "sensor28": "0,0", - "sensor29": "0,0", - "sensor30": "0,0", - "sensor31": "0,0", - "sensor32": "0,0", - "sensor33": "0,0", - "sensor34": "0,0", - "sensor35": "0,0", - "sensor36": "0,0", - "sensor37": "0,0", - "sensor38": "0,0", - "sensor39": "0,0", - "sensor40": "0,0", - "sensor9": "0,0", - "sig": "24584", - "ver": "1" - }, - "spsupblk-items": { - "ambT": "0", - "cksum": "1343", - "coolRq": "0", - "crdIdx": "21099", - "eobcN": "0", - "epldN": "0", - "fbits": "0", - "hwCBits": "0", - "len": "103", - "macB": "52-54-00-5a-f8-b5", - "macL": "136", - "maxCPwr": "0", - "sensor1": "0,0", - "sensor2": "0,0", - "sensor3": "0,0", - "sensor4": "0,0", - "sensor5": "0,0", - "sensor6": "0,0", - "sensor7": "0,0", - "sensor8": "0,0", - "sig": "24578", - "sppd-items": { - "numPts": "128", - "prtTy": "2" - }, - "ver": "2" - }, - "type": "flash", - "vendor": "" - }, - "swCId": "50", - "swVer": "9.2(2)", - "type": "supervisor", - "upTs": "2020-09-24T21:09:52.725+00:00", - "vdrId": "V02", - "vendor": "Cisco Systems, Inc." - }, - "type": "supslot" - } - ] - }, - "vendor": "" - }, - "clock-items": { - "adminSt": "enabled", - "authSt": "disabled", - "format": "24hours", - "protocol": "ntp", - "vdcId": "1" - }, - "conng-items": { - "descr": "", - "name": "", - "path-items": { - "PathEp-list": [ - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/11]", - "id": "eth1/11", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/11']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/64]", - "id": "eth1/64", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/64']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/12]", - "id": "eth1/12", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/12']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/53]", - "id": "eth1/53", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/53']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/59]", - "id": "eth1/59", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/59']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/93]", - "id": "eth1/93", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/93']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/46]", - "id": "eth1/46", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/46']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/24]", - "id": "eth1/24", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/24']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/120]", - "id": "eth1/120", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/120']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/66]", - "id": "eth1/66", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/66']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/122]", - "id": "eth1/122", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/122']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/45]", - "id": "eth1/45", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/45']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/123]", - "id": "eth1/123", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/123']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/73]", - "id": "eth1/73", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/73']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/128]", - "id": "eth1/128", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/128']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/32]", - "id": "eth1/32", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/32']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/126]", - "id": "eth1/126", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/126']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/95]", - "id": "eth1/95", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/95']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/81]", - "id": "eth1/81", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/81']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/7]", - "id": "eth1/7", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/7']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/23]", - "id": "eth1/23", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/23']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/76]", - "id": "eth1/76", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/76']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/71]", - "id": "eth1/71", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/71']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/55]", - "id": "eth1/55", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/55']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/9]", - "id": "eth1/9", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/9']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/121]", - "id": "eth1/121", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/121']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/88]", - "id": "eth1/88", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/88']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/102]", - "id": "eth1/102", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/102']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/107]", - "id": "eth1/107", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/107']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/108]", - "id": "eth1/108", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/108']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/17]", - "id": "eth1/17", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/17']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/5]", - "id": "eth1/5", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/5']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/48]", - "id": "eth1/48", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/48']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/61]", - "id": "eth1/61", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/61']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/72]", - "id": "eth1/72", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/72']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/43]", - "id": "eth1/43", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/43']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/105]", - "id": "eth1/105", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/105']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/33]", - "id": "eth1/33", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/33']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/54]", - "id": "eth1/54", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/54']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/67]", - "id": "eth1/67", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/67']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/28]", - "id": "eth1/28", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/28']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/21]", - "id": "eth1/21", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/21']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/62]", - "id": "eth1/62", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/62']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/22]", - "id": "eth1/22", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/22']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/42]", - "id": "eth1/42", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/42']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/91]", - "id": "eth1/91", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/91']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/34]", - "id": "eth1/34", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/34']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/103]", - "id": "eth1/103", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/103']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/35]", - "id": "eth1/35", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/35']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/90]", - "id": "eth1/90", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/90']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/58]", - "id": "eth1/58", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/58']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/60]", - "id": "eth1/60", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/60']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/96]", - "id": "eth1/96", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/96']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/20]", - "id": "eth1/20", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/20']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/127]", - "id": "eth1/127", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/127']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/56]", - "id": "eth1/56", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/56']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/79]", - "id": "eth1/79", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/79']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/31]", - "id": "eth1/31", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/31']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/82]", - "id": "eth1/82", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/82']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/4]", - "id": "eth1/4", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/4']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/25]", - "id": "eth1/25", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/25']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/92]", - "id": "eth1/92", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/92']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/112]", - "id": "eth1/112", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/112']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/69]", - "id": "eth1/69", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/69']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/86]", - "id": "eth1/86", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/86']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/113]", - "id": "eth1/113", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/113']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/51]", - "id": "eth1/51", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/51']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/63]", - "id": "eth1/63", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/63']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/115]", - "id": "eth1/115", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/115']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/18]", - "id": "eth1/18", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/18']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/65]", - "id": "eth1/65", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/65']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/109]", - "id": "eth1/109", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/109']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/70]", - "id": "eth1/70", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/70']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/114]", - "id": "eth1/114", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/114']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/125]", - "id": "eth1/125", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/125']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/117]", - "id": "eth1/117", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/117']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/101]", - "id": "eth1/101", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/101']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/29]", - "id": "eth1/29", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/29']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/68]", - "id": "eth1/68", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/68']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/83]", - "id": "eth1/83", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/83']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/44]", - "id": "eth1/44", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/44']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/110]", - "id": "eth1/110", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/110']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/36]", - "id": "eth1/36", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/36']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/14]", - "id": "eth1/14", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/14']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/47]", - "id": "eth1/47", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/47']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/85]", - "id": "eth1/85", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/85']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/52]", - "id": "eth1/52", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/52']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/84]", - "id": "eth1/84", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/84']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/38]", - "id": "eth1/38", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/38']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/100]", - "id": "eth1/100", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/100']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/57]", - "id": "eth1/57", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/57']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/13]", - "id": "eth1/13", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/13']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/111]", - "id": "eth1/111", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/111']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/26]", - "id": "eth1/26", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/26']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/3]", - "id": "eth1/3", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/3']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/19]", - "id": "eth1/19", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/19']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/119]", - "id": "eth1/119", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/119']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/89]", - "id": "eth1/89", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/89']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/77]", - "id": "eth1/77", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/77']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/104]", - "id": "eth1/104", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/104']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/116]", - "id": "eth1/116", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/116']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/37]", - "id": "eth1/37", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/37']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/16]", - "id": "eth1/16", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/16']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/97]", - "id": "eth1/97", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/97']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/39]", - "id": "eth1/39", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/39']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/94]", - "id": "eth1/94", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/94']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/78]", - "id": "eth1/78", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/78']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/98]", - "id": "eth1/98", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/98']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/40]", - "id": "eth1/40", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/40']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/124]", - "id": "eth1/124", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/124']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/41]", - "id": "eth1/41", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/41']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/49]", - "id": "eth1/49", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/49']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/27]", - "id": "eth1/27", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/27']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/80]", - "id": "eth1/80", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/80']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/15]", - "id": "eth1/15", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/15']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/106]", - "id": "eth1/106", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/106']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/6]", - "id": "eth1/6", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/6']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/30]", - "id": "eth1/30", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/30']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/50]", - "id": "eth1/50", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/50']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/118]", - "id": "eth1/118", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/118']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/10]", - "id": "eth1/10", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/10']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/74]", - "id": "eth1/74", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/74']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/1]", - "id": "eth1/1", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/1']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/87]", - "id": "eth1/87", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/87']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/2]", - "id": "eth1/2", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/2']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/8]", - "id": "eth1/8", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/8']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/99]", - "id": "eth1/99", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/99']" - } - }, - { - "fabricPathDn": "topology/pod-1/paths-0/pathep-[eth1/75]", - "id": "eth1/75", - "rspathToIf-items": { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/75']" - } - } - ] - } - }, - "currentTime": "1970-01-01T00:00:00.000+00:00", - "dhcp-items": { - "adminSt": "enabled", - "operSt": "enabled" - }, - "diag-items": { - "adminSt": "enabled", - "name": "", - "operSt": "enabled" - }, - "dns-items": { - "adminSt": "enabled", - "operSt": "enabled", - "prof-items": { - "Prof-list": [ - { - "descr": "", - "name": "default", - "ownerKey": "", - "ownerTag": "" - } - ] - } - }, - "epns-items": { - "epCount": "0" - }, - "eqptcapacity-items": { - "name": "" - }, - "ethpm-items": { - "adminSt": "enabled", - "inst-items": { - "adminLinkDownSyslogLevel": "5", - "adminLinkUpSyslogLevel": "5", - "adminSt": "enabled", - "allowUnsupportedSfp": "true", - "errdisrecover-items": { - "Event-items": { - "Event-list": [ - { - "adminSt": "enabled", - "detect": "true", - "event": "event-stp-inconsist-vpc-peerlink", - "recover": "false" - }, - { - "adminSt": "enabled", - "detect": "true", - "event": "event-link-flap", - "recover": "false" - }, - { - "adminSt": "enabled", - "detect": "true", - "event": "event-bpduguard", - "recover": "false" - }, - { - "adminSt": "enabled", - "detect": "true", - "event": "event-udld", - "recover": "false" - }, - { - "adminSt": "enabled", - "detect": "true", - "event": "event-storm-ctrl", - "recover": "false" - }, - { - "adminSt": "enabled", - "detect": "true", - "event": "event-set-port-state-failed", - "recover": "false" - }, - { - "adminSt": "enabled", - "detect": "true", - "event": "event-loopback", - "recover": "false" - }, - { - "adminSt": "enabled", - "detect": "true", - "event": "event-psec-violation", - "recover": "false" - }, - { - "adminSt": "enabled", - "detect": "true", - "event": "event-sec-violation", - "recover": "false" - } - ] - }, - "adminSt": "enabled", - "errDisRecovIntvl": "300" - }, - "ifSyslogInfo": "default", - "logEvent": "linkStatusDefault,linkStatusEnable,trunkStatusEnable", - "logLevel": "5", - "module-items": { - "Module-list": [ - { - "cfgdPorts": "", - "flags": "0", - "id": "1", - "isOffline": "false", - "lcNodeAddress": "257", - "moduleType": "sup", - "numPortTypes": "32", - "portCfgSap": "902", - "runtimeNumPorts": "0", - "runtimePorts": "", - "swCardId": "50" - }, - { - "cfgdPorts": "0-127", - "flags": "0", - "id": "2", - "isOffline": "false", - "lcNodeAddress": "258", - "moduleType": "lc", - "numPortTypes": "32", - "portCfgSap": "902", - "runtimeNumPorts": "129", - "runtimePorts": "", - "swCardId": "50" - } - ] - }, - "runtime-items": { - "bundleIfList": "unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified,unspecified", - "dceSwId": "0", - "dot1qRefCount": "0", - "eeeRefCount": "0", - "ethertypeRefCount": "0", - "fabpathCfgRefCount": "0", - "featurePongState": "0", - "issuPacerRefCount": "0", - "l3SatportRefCount": "0", - "lbIfs": "", - "lifLoopbackDone": "true", - "numBundles": "0", - "pvlanTrunkCfgRefCount": "0", - "slowdrainCongCoreConfChkState": "0", - "slowdrainCongEdgeConfChkState": "0", - "slowdrainPausConfChkState": "1", - "slowdrainPausEdgeConfChkState": "1", - "snmpIfTblLastChange": "18529:21:11:03.547", - "staticRMacCfgRefCount": "0" - }, - "systemDefaultAdminSt": "up", - "systemDefaultLayer": "Layer2", - "systemJumboMtu": "9216", - "vlan-items": { - "Vlan-list": [ - { - "flag": "0", - "id": "4045", - "numIf": "0", - "shutState": "up", - "state": "suspend" - }, - { - "flag": "0", - "id": "1", - "numIf": "1", - "shutState": "up", - "state": "suspend" - } - ] - }, - "vlanTagNative": "false" - }, - "name": "", - "operSt": "enabled" - }, - "fm-items": { - "bashshell-items": { - "adminSt": "enabled", - "maxInstance": "1", - "operSt": "enabled" - }, - "lldp-items": { - "adminSt": "enabled", - "maxInstance": "1", - "operSt": "enabled" - }, - "ntpd-items": { - "adminSt": "enabled", - "operSt": "disabled" - }, - "nxapi-items": { - "adminSt": "enabled", - "maxInstance": "1", - "operSt": "enabled" - }, - "scpserver-items": { - "adminSt": "enabled", - "operSt": "enabled" - } - }, - "fwstatuscont-items": { - "upgjob-items": { - "grpPriKey": "", - "internalLabel": "", - "upgjobfault-items": { - "faultDelegateKey": "" - } - } - }, - "gold-items": { - "description": "GOLD Diagnostic Content and Results", - "module-items": { - "Module-list": [ - { - "description": "Nexus 9000v Ethernet Module", - "diagBootLevel": "complete", - "diagStatus": "pass", - "id": "1", - "test-items": { - "Test-list": [ - { - "consecutiveFailCount": "0", - "failCount": "0", - "firstFailTime": "n/a", - "id": "7", - "lastExecutionTime": "Fri Oct 9 18:04:11 2020", - "lastFailTime": "n/a", - "lastPassTime": "Fri Oct 9 18:04:11 2020", - "name": "SystemMgmtBus", - "nextExecutionTime": "Fri Oct 9 18:04:41 2020", - "portsAborted": "none", - "portsErrorDisabled": "none", - "portsFailing": "none", - "portsIncomplete": "none", - "portsPassing": "none", - "portsUntested": "none", - "result": "success", - "resultReason": "No failures yet", - "runCount": "42818", - "testAttributes": "**MN******A", - "testInterval": "00:00:30" - }, - { - "consecutiveFailCount": "0", - "failCount": "0", - "firstFailTime": "n/a", - "id": "9", - "lastExecutionTime": "n/a", - "lastFailTime": "n/a", - "lastPassTime": "n/a", - "name": "ACT2", - "nextExecutionTime": "n/a", - "portsAborted": "none", - "portsErrorDisabled": "none", - "portsFailing": "none", - "portsIncomplete": "none", - "portsPassing": "none", - "portsUntested": "none", - "result": "untested", - "resultReason": "No failures yet", - "runCount": "0", - "testAttributes": "***N******A", - "testInterval": "n/a" - }, - { - "consecutiveFailCount": "0", - "failCount": "0", - "firstFailTime": "n/a", - "id": "15", - "lastExecutionTime": "n/a", - "lastFailTime": "n/a", - "lastPassTime": "n/a", - "name": "PortLoopback", - "nextExecutionTime": "n/a", - "portsAborted": "none", - "portsErrorDisabled": "none", - "portsFailing": "none", - "portsIncomplete": "none", - "portsPassing": "none", - "portsUntested": "none", - "result": "untested", - "resultReason": "No failures yet", - "runCount": "0", - "testAttributes": "*P*N**XE***", - "testInterval": "n/a" - }, - { - "consecutiveFailCount": "0", - "failCount": "0", - "firstFailTime": "n/a", - "id": "10", - "lastExecutionTime": "Fri Oct 9 18:04:11 2020", - "lastFailTime": "n/a", - "lastPassTime": "Fri Oct 9 18:04:11 2020", - "name": "Console", - "nextExecutionTime": "Fri Oct 9 18:04:41 2020", - "portsAborted": "none", - "portsErrorDisabled": "none", - "portsFailing": "none", - "portsIncomplete": "none", - "portsPassing": "none", - "portsUntested": "none", - "result": "success", - "resultReason": "No failures yet", - "runCount": "42818", - "testAttributes": "***N******A", - "testInterval": "00:00:30" - }, - { - "consecutiveFailCount": "0", - "failCount": "0", - "firstFailTime": "n/a", - "id": "3", - "lastExecutionTime": "Fri Oct 9 18:02:36 2020", - "lastFailTime": "n/a", - "lastPassTime": "Fri Oct 9 18:02:40 2020", - "name": "RealTimeClock", - "nextExecutionTime": "Fri Oct 9 18:07:40 2020", - "portsAborted": "none", - "portsErrorDisabled": "none", - "portsFailing": "none", - "portsIncomplete": "none", - "portsPassing": "none", - "portsUntested": "none", - "result": "success", - "resultReason": "No failures yet", - "runCount": "4283", - "testAttributes": "***N******A", - "testInterval": "00:05:00" - }, - { - "consecutiveFailCount": "0", - "failCount": "0", - "firstFailTime": "n/a", - "id": "14", - "lastExecutionTime": "Thu Sep 24 21:10:25 2020", - "lastFailTime": "n/a", - "lastPassTime": "Thu Sep 24 21:10:25 2020", - "name": "Pcie", - "nextExecutionTime": "n/a", - "portsAborted": "none", - "portsErrorDisabled": "none", - "portsFailing": "none", - "portsIncomplete": "none", - "portsPassing": "none", - "portsUntested": "none", - "result": "success", - "resultReason": "No failures yet", - "runCount": "1", - "testAttributes": "C**N**X**T*", - "testInterval": "n/a" - }, - { - "consecutiveFailCount": "0", - "failCount": "0", - "firstFailTime": "n/a", - "id": "6", - "lastExecutionTime": "Fri Oct 9 17:42:36 2020", - "lastFailTime": "n/a", - "lastPassTime": "Fri Oct 9 17:42:36 2020", - "name": "BootFlash", - "nextExecutionTime": "Fri Oct 9 18:12:36 2020", - "portsAborted": "none", - "portsErrorDisabled": "none", - "portsFailing": "none", - "portsIncomplete": "none", - "portsPassing": "none", - "portsUntested": "none", - "result": "success", - "resultReason": "No failures yet", - "runCount": "714", - "testAttributes": "***N******A", - "testInterval": "00:30:00" - }, - { - "consecutiveFailCount": "0", - "failCount": "0", - "firstFailTime": "n/a", - "id": "12", - "lastExecutionTime": "Fri Oct 9 17:12:36 2020", - "lastFailTime": "n/a", - "lastPassTime": "Fri Oct 9 17:12:36 2020", - "name": "Mce", - "nextExecutionTime": "Fri Oct 9 18:12:36 2020", - "portsAborted": "none", - "portsErrorDisabled": "none", - "portsFailing": "none", - "portsIncomplete": "none", - "portsPassing": "none", - "portsUntested": "none", - "result": "success", - "resultReason": "No failures yet", - "runCount": "357", - "testAttributes": "***N******A", - "testInterval": "01:00:00" - }, - { - "consecutiveFailCount": "0", - "failCount": "0", - "firstFailTime": "n/a", - "id": "11", - "lastExecutionTime": "Fri Oct 9 18:04:11 2020", - "lastFailTime": "n/a", - "lastPassTime": "n/a", - "name": "FpgaRegTest", - "nextExecutionTime": "Fri Oct 9 18:04:41 2020", - "portsAborted": "none", - "portsErrorDisabled": "none", - "portsFailing": "none", - "portsIncomplete": "none", - "portsPassing": "none", - "portsUntested": "none", - "result": "untested", - "resultReason": "Request to Test FPGA not supported on this platform.", - "runCount": "42818", - "testAttributes": "***N******A", - "testInterval": "00:00:30" - }, - { - "consecutiveFailCount": "0", - "failCount": "0", - "firstFailTime": "n/a", - "id": "1", - "lastExecutionTime": "Thu Sep 24 21:09:52 2020", - "lastFailTime": "n/a", - "lastPassTime": "Thu Sep 24 21:09:52 2020", - "name": "USB", - "nextExecutionTime": "n/a", - "portsAborted": "none", - "portsErrorDisabled": "none", - "portsFailing": "none", - "portsIncomplete": "none", - "portsPassing": "none", - "portsUntested": "none", - "result": "success", - "resultReason": "No failures yet", - "runCount": "1", - "testAttributes": "C**N**X**T*", - "testInterval": "n/a" - }, - { - "consecutiveFailCount": "0", - "failCount": "0", - "firstFailTime": "n/a", - "id": "16", - "lastExecutionTime": "Fri Oct 9 18:03:36 2020", - "lastFailTime": "n/a", - "lastPassTime": "n/a", - "name": "RewriteEngineLoopback", - "nextExecutionTime": "Fri Oct 9 18:04:36 2020", - "portsAborted": "none", - "portsErrorDisabled": "none", - "portsFailing": "none", - "portsIncomplete": "none", - "portsPassing": "none", - "portsUntested": "1-128", - "result": "untested", - "resultReason": "No failures yet", - "runCount": "21411", - "testAttributes": "*P*N***E**A", - "testInterval": "00:01:00" - }, - { - "consecutiveFailCount": "0", - "failCount": "0", - "firstFailTime": "n/a", - "id": "8", - "lastExecutionTime": "Thu Sep 24 21:09:52 2020", - "lastFailTime": "n/a", - "lastPassTime": "Thu Sep 24 21:09:52 2020", - "name": "OBFL", - "nextExecutionTime": "n/a", - "portsAborted": "none", - "portsErrorDisabled": "none", - "portsFailing": "none", - "portsIncomplete": "none", - "portsPassing": "none", - "portsUntested": "none", - "result": "success", - "resultReason": "No failures yet", - "runCount": "1", - "testAttributes": "C**N**X**T*", - "testInterval": "n/a" - }, - { - "consecutiveFailCount": "0", - "failCount": "0", - "firstFailTime": "n/a", - "id": "2", - "lastExecutionTime": "Fri Oct 9 18:02:36 2020", - "lastFailTime": "n/a", - "lastPassTime": "Fri Oct 9 18:02:36 2020", - "name": "NVRAM", - "nextExecutionTime": "Fri Oct 9 18:07:36 2020", - "portsAborted": "none", - "portsErrorDisabled": "none", - "portsFailing": "none", - "portsIncomplete": "none", - "portsPassing": "none", - "portsUntested": "none", - "result": "success", - "resultReason": "No failures yet", - "runCount": "4283", - "testAttributes": "***N******A", - "testInterval": "00:05:00" - }, - { - "consecutiveFailCount": "0", - "failCount": "0", - "firstFailTime": "n/a", - "id": "13", - "lastExecutionTime": "Thu Sep 24 21:10:25 2020", - "lastFailTime": "n/a", - "lastPassTime": "Thu Sep 24 21:10:25 2020", - "name": "AsicMemory", - "nextExecutionTime": "n/a", - "portsAborted": "none", - "portsErrorDisabled": "none", - "portsFailing": "none", - "portsIncomplete": "none", - "portsPassing": "none", - "portsUntested": "none", - "result": "success", - "resultReason": "No failures yet", - "runCount": "1", - "testAttributes": "C**D**X**T*", - "testInterval": "n/a" - }, - { - "consecutiveFailCount": "0", - "failCount": "0", - "firstFailTime": "n/a", - "id": "4", - "lastExecutionTime": "n/a", - "lastFailTime": "n/a", - "lastPassTime": "n/a", - "name": "PrimaryBootROM", - "nextExecutionTime": "n/a", - "portsAborted": "none", - "portsErrorDisabled": "none", - "portsFailing": "none", - "portsIncomplete": "none", - "portsPassing": "none", - "portsUntested": "none", - "result": "untested", - "resultReason": "No failures yet", - "runCount": "0", - "testAttributes": "***N******A", - "testInterval": "n/a" - }, - { - "consecutiveFailCount": "0", - "failCount": "0", - "firstFailTime": "n/a", - "id": "5", - "lastExecutionTime": "n/a", - "lastFailTime": "n/a", - "lastPassTime": "n/a", - "name": "SecondaryBootROM", - "nextExecutionTime": "n/a", - "portsAborted": "none", - "portsErrorDisabled": "none", - "portsFailing": "none", - "portsIncomplete": "none", - "portsPassing": "none", - "portsUntested": "none", - "result": "untested", - "resultReason": "No failures yet", - "runCount": "0", - "testAttributes": "***N******A", - "testInterval": "n/a" - } - ] - } - } - ] - } - }, - "icmpv4-items": { - "adminSt": "enabled", - "operSt": "enabled" - }, - "icmpv6-items": { - "adminSt": "enabled", - "operSt": "enabled" - }, - "igmpsnoop-items": { - "adminSt": "enabled", - "operErr": "", - "operSt": "enabled" - }, - "im-items": { - "adminSt": "enabled", - "inst-items": { - "BreakoutProfile": "disabled", - "adminSt": "enabled", - "cap-items": { - "Capability-list": [ - { - "autoInstCpbl": "true", - "id": "246", - "isInstalled": "true" - } - ] - }, - "ctrl": "", - "mode100M": "disabled", - "modeHwProfile": "undefined", - "module-items": { - "Module-list": [ - { - "id": "30", - "isPresent": "false", - "lcExceptionFlag": "0", - "lcInsertPldSz": "0", - "lcNodeAddress": "0", - "moduleInitiEvalFlag": "0", - "moduleType": "lc", - "numPorts": "0", - "portCfgSap": "0", - "runtimeFlag": "0", - "swCardId": "0" - }, - { - "id": "28", - "isPresent": "false", - "lcExceptionFlag": "0", - "lcInsertPldSz": "0", - "lcNodeAddress": "0", - "moduleInitiEvalFlag": "0", - "moduleType": "lc", - "numPorts": "0", - "portCfgSap": "0", - "runtimeFlag": "0", - "swCardId": "0" - }, - { - "id": "20", - "isPresent": "false", - "lcExceptionFlag": "0", - "lcInsertPldSz": "0", - "lcNodeAddress": "0", - "moduleInitiEvalFlag": "0", - "moduleType": "lc", - "numPorts": "0", - "portCfgSap": "0", - "runtimeFlag": "0", - "swCardId": "0" - }, - { - "id": "9", - "isPresent": "false", - "lcExceptionFlag": "0", - "lcInsertPldSz": "0", - "lcNodeAddress": "0", - "moduleInitiEvalFlag": "0", - "moduleType": "lc", - "numPorts": "0", - "portCfgSap": "0", - "runtimeFlag": "0", - "swCardId": "0" - }, - { - "id": "3", - "isPresent": "false", - "lcExceptionFlag": "0", - "lcInsertPldSz": "0", - "lcNodeAddress": "0", - "moduleInitiEvalFlag": "0", - "moduleType": "lc", - "numPorts": "0", - "portCfgSap": "0", - "runtimeFlag": "0", - "swCardId": "0" - }, - { - "id": "18", - "isPresent": "false", - "lcExceptionFlag": "0", - "lcInsertPldSz": "0", - "lcNodeAddress": "0", - "moduleInitiEvalFlag": "0", - "moduleType": "lc", - "numPorts": "0", - "portCfgSap": "0", - "runtimeFlag": "0", - "swCardId": "0" - }, - { - "id": "5", - "isPresent": "false", - "lcExceptionFlag": "0", - "lcInsertPldSz": "0", - "lcNodeAddress": "0", - "moduleInitiEvalFlag": "0", - "moduleType": "lc", - "numPorts": "0", - "portCfgSap": "0", - "runtimeFlag": "0", - "swCardId": "0" - }, - { - "id": "13", - "isPresent": "false", - "lcExceptionFlag": "0", - "lcInsertPldSz": "0", - "lcNodeAddress": "0", - "moduleInitiEvalFlag": "0", - "moduleType": "lc", - "numPorts": "0", - "portCfgSap": "0", - "runtimeFlag": "0", - "swCardId": "0" - }, - { - "id": "27", - "isPresent": "false", - "lcExceptionFlag": "0", - "lcInsertPldSz": "0", - "lcNodeAddress": "0", - "moduleInitiEvalFlag": "0", - "moduleType": "lc", - "numPorts": "0", - "portCfgSap": "0", - "runtimeFlag": "0", - "swCardId": "0" - }, - { - "id": "31", - "isPresent": "false", - "lcExceptionFlag": "0", - "lcInsertPldSz": "0", - "lcNodeAddress": "0", - "moduleInitiEvalFlag": "0", - "moduleType": "lc", - "numPorts": "0", - "portCfgSap": "0", - "runtimeFlag": "0", - "swCardId": "0" - }, - { - "id": "21", - "isPresent": "false", - "lcExceptionFlag": "0", - "lcInsertPldSz": "0", - "lcNodeAddress": "0", - "moduleInitiEvalFlag": "0", - "moduleType": "lc", - "numPorts": "0", - "portCfgSap": "0", - "runtimeFlag": "0", - "swCardId": "0" - }, - { - "id": "7", - "isPresent": "false", - "lcExceptionFlag": "0", - "lcInsertPldSz": "0", - "lcNodeAddress": "0", - "moduleInitiEvalFlag": "0", - "moduleType": "lc", - "numPorts": "0", - "portCfgSap": "0", - "runtimeFlag": "0", - "swCardId": "0" - }, - { - "id": "6", - "isPresent": "false", - "lcExceptionFlag": "0", - "lcInsertPldSz": "0", - "lcNodeAddress": "0", - "moduleInitiEvalFlag": "0", - "moduleType": "lc", - "numPorts": "0", - "portCfgSap": "0", - "runtimeFlag": "0", - "swCardId": "0" - }, - { - "id": "29", - "isPresent": "false", - "lcExceptionFlag": "0", - "lcInsertPldSz": "0", - "lcNodeAddress": "0", - "moduleInitiEvalFlag": "0", - "moduleType": "lc", - "numPorts": "0", - "portCfgSap": "0", - "runtimeFlag": "0", - "swCardId": "0" - }, - { - "id": "17", - "isPresent": "false", - "lcExceptionFlag": "0", - "lcInsertPldSz": "0", - "lcNodeAddress": "0", - "moduleInitiEvalFlag": "0", - "moduleType": "lc", - "numPorts": "0", - "portCfgSap": "0", - "runtimeFlag": "0", - "swCardId": "0" - }, - { - "id": "23", - "isPresent": "false", - "lcExceptionFlag": "0", - "lcInsertPldSz": "0", - "lcNodeAddress": "0", - "moduleInitiEvalFlag": "0", - "moduleType": "lc", - "numPorts": "0", - "portCfgSap": "0", - "runtimeFlag": "0", - "swCardId": "0" - }, - { - "id": "32", - "isPresent": "false", - "lcExceptionFlag": "0", - "lcInsertPldSz": "0", - "lcNodeAddress": "0", - "moduleInitiEvalFlag": "0", - "moduleType": "lc", - "numPorts": "0", - "portCfgSap": "0", - "runtimeFlag": "0", - "swCardId": "0" - }, - { - "id": "22", - "isPresent": "false", - "lcExceptionFlag": "0", - "lcInsertPldSz": "0", - "lcNodeAddress": "0", - "moduleInitiEvalFlag": "0", - "moduleType": "lc", - "numPorts": "0", - "portCfgSap": "0", - "runtimeFlag": "0", - "swCardId": "0" - }, - { - "id": "16", - "isPresent": "false", - "lcExceptionFlag": "0", - "lcInsertPldSz": "0", - "lcNodeAddress": "0", - "moduleInitiEvalFlag": "0", - "moduleType": "lc", - "numPorts": "0", - "portCfgSap": "0", - "runtimeFlag": "0", - "swCardId": "0" - }, - { - "id": "19", - "isPresent": "false", - "lcExceptionFlag": "0", - "lcInsertPldSz": "0", - "lcNodeAddress": "0", - "moduleInitiEvalFlag": "0", - "moduleType": "lc", - "numPorts": "0", - "portCfgSap": "0", - "runtimeFlag": "0", - "swCardId": "0" - }, - { - "id": "10", - "isPresent": "false", - "lcExceptionFlag": "0", - "lcInsertPldSz": "0", - "lcNodeAddress": "0", - "moduleInitiEvalFlag": "0", - "moduleType": "lc", - "numPorts": "0", - "portCfgSap": "0", - "runtimeFlag": "0", - "swCardId": "0" - }, - { - "id": "25", - "isPresent": "false", - "lcExceptionFlag": "0", - "lcInsertPldSz": "0", - "lcNodeAddress": "0", - "moduleInitiEvalFlag": "0", - "moduleType": "lc", - "numPorts": "0", - "portCfgSap": "0", - "runtimeFlag": "0", - "swCardId": "0" - }, - { - "id": "12", - "isPresent": "false", - "lcExceptionFlag": "0", - "lcInsertPldSz": "0", - "lcNodeAddress": "0", - "moduleInitiEvalFlag": "0", - "moduleType": "lc", - "numPorts": "0", - "portCfgSap": "0", - "runtimeFlag": "0", - "swCardId": "0" - }, - { - "id": "24", - "isPresent": "false", - "lcExceptionFlag": "0", - "lcInsertPldSz": "0", - "lcNodeAddress": "0", - "moduleInitiEvalFlag": "0", - "moduleType": "lc", - "numPorts": "0", - "portCfgSap": "0", - "runtimeFlag": "0", - "swCardId": "0" - }, - { - "id": "1", - "isPresent": "true", - "lcExceptionFlag": "0", - "lcInsertPldSz": "2224", - "lcNodeAddress": "257", - "moduleInitiEvalFlag": "0", - "moduleType": "sup", - "numPorts": "3", - "portCfgSap": "902", - "runtimeFlag": "0", - "swCardId": "50" - }, - { - "id": "15", - "isPresent": "false", - "lcExceptionFlag": "0", - "lcInsertPldSz": "0", - "lcNodeAddress": "0", - "moduleInitiEvalFlag": "0", - "moduleType": "lc", - "numPorts": "0", - "portCfgSap": "0", - "runtimeFlag": "0", - "swCardId": "0" - }, - { - "id": "4", - "isPresent": "false", - "lcExceptionFlag": "0", - "lcInsertPldSz": "0", - "lcNodeAddress": "0", - "moduleInitiEvalFlag": "0", - "moduleType": "lc", - "numPorts": "0", - "portCfgSap": "0", - "runtimeFlag": "0", - "swCardId": "0" - }, - { - "id": "8", - "isPresent": "false", - "lcExceptionFlag": "0", - "lcInsertPldSz": "0", - "lcNodeAddress": "0", - "moduleInitiEvalFlag": "0", - "moduleType": "lc", - "numPorts": "0", - "portCfgSap": "0", - "runtimeFlag": "0", - "swCardId": "0" - }, - { - "id": "14", - "isPresent": "false", - "lcExceptionFlag": "0", - "lcInsertPldSz": "0", - "lcNodeAddress": "0", - "moduleInitiEvalFlag": "0", - "moduleType": "lc", - "numPorts": "0", - "portCfgSap": "0", - "runtimeFlag": "0", - "swCardId": "0" - }, - { - "id": "11", - "isPresent": "false", - "lcExceptionFlag": "0", - "lcInsertPldSz": "0", - "lcNodeAddress": "0", - "moduleInitiEvalFlag": "0", - "moduleType": "lc", - "numPorts": "0", - "portCfgSap": "0", - "runtimeFlag": "0", - "swCardId": "0" - }, - { - "id": "2", - "isPresent": "false", - "lcExceptionFlag": "0", - "lcInsertPldSz": "0", - "lcNodeAddress": "0", - "moduleInitiEvalFlag": "0", - "moduleType": "lc", - "numPorts": "0", - "portCfgSap": "0", - "runtimeFlag": "0", - "swCardId": "0" - }, - { - "id": "26", - "isPresent": "false", - "lcExceptionFlag": "0", - "lcInsertPldSz": "0", - "lcNodeAddress": "0", - "moduleInitiEvalFlag": "0", - "moduleType": "lc", - "numPorts": "0", - "portCfgSap": "0", - "runtimeFlag": "0", - "swCardId": "0" - } - ] - }, - "name": "", - "vdcSt": "created" - }, - "name": "", - "operSt": "enabled" - }, - "inst-items": { - "Inst-list": [ - { - "adminState": "admin-up", - "bgpRd": "0,0,0,0,0,0,0,0", - "bgpRdDisp": "0:0", - "createTs": "2020-09-24T21:09:32.763+00:00", - "ctrlrId": "0", - "dom-items": { - "Dom-list": [ - { - "name": "default", - "operRd": "unknown:unknown:0:0" - } - ] - }, - "gsdbCtx": "0", - "id": "1", - "lastChgdTs": "2020-09-24T21:09:33.116+00:00", - "name": "default", - "oldOperStQual": "invalid", - "operStQual": "invalid", - "operState": "up", - "oui": "0", - "pending": "false", - "prtclBmp": "0", - "resourceId": "0", - "scope": "1", - "secLbl": "0", - "v4TibId": "1", - "v4TibName": "base", - "v4TibOldOperStQual": "invalid", - "v4TibOperStQual": "invalid", - "v4TibOperState": "up", - "v4TibPending": "false", - "v4TibValid": "true", - "v6TibId": "2147483649", - "v6TibName": "base", - "v6TibOldOperStQual": "invalid", - "v6TibOperStQual": "invalid", - "v6TibOperState": "up", - "v6TibPending": "false", - "v6TibValid": "true", - "vpnId": "0" - }, - { - "adminState": "admin-up", - "bgpRd": "0,0,0,0,0,0,0,0", - "bgpRdDisp": "0:0", - "createTs": "2020-09-24T21:09:33.106+00:00", - "ctrlrId": "0", - "dom-items": { - "Dom-list": [ - { - "name": "management", - "operRd": "unknown:unknown:0:0" - } - ] - }, - "gsdbCtx": "0", - "id": "2", - "lastChgdTs": "2020-09-24T21:10:29.523+00:00", - "name": "management", - "oldOperStQual": "invalid", - "operStQual": "invalid", - "operState": "up", - "oui": "0", - "pending": "false", - "prtclBmp": "0", - "resourceId": "0", - "rsvrfMbr-items": { - "RsVrfMbr-list": [ - { - "tCl": "nwIf", - "tDn": "/System/mgmt-items/MgmtAddr-list[addr='mgmt0']" - } - ] - }, - "scope": "1", - "secLbl": "0", - "v4TibId": "2", - "v4TibName": "base", - "v4TibOldOperStQual": "invalid", - "v4TibOperStQual": "invalid", - "v4TibOperState": "up", - "v4TibPending": "false", - "v4TibValid": "true", - "v6TibId": "2147483650", - "v6TibName": "base", - "v6TibOldOperStQual": "invalid", - "v6TibOperStQual": "invalid", - "v6TibOperState": "up", - "v6TibPending": "false", - "v6TibValid": "true", - "vpnId": "0" - } - ] - }, - "install-items": { - "biosForce": "no", - "imgName": "", - "installType": "none", - "operation": "none", - "stage": "not-started", - "upgErr": "none", - "upgErrStr": "" - }, - "intf-items": { - "descr": "", - "phys-items": { - "PhysIf-list": [ - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "71" - }, - "id": "eth1/71", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:03", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219847", - "ifIndex": "436243456", - "intfT": "phy", - "iod": "75", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/71", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "124" - }, - "id": "eth1/124", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:38", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219900", - "ifIndex": "436270592", - "intfT": "phy", - "iod": "128", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/124", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "112" - }, - "id": "eth1/112", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:2C", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219888", - "ifIndex": "436264448", - "intfT": "phy", - "iod": "116", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/112", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "67" - }, - "id": "eth1/67", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:FF", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219843", - "ifIndex": "436241408", - "intfT": "phy", - "iod": "71", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/67", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "79" - }, - "id": "eth1/79", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:0B", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219855", - "ifIndex": "436247552", - "intfT": "phy", - "iod": "83", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/79", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "33" - }, - "id": "eth1/33", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:DD", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219809", - "ifIndex": "436224000", - "intfT": "phy", - "iod": "37", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/33", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "43" - }, - "id": "eth1/43", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:E7", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219819", - "ifIndex": "436229120", - "intfT": "phy", - "iod": "47", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/43", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "4" - }, - "id": "eth1/4", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:C0", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219780", - "ifIndex": "436209152", - "intfT": "phy", - "iod": "8", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/4", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "99" - }, - "id": "eth1/99", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:1F", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219875", - "ifIndex": "436257792", - "intfT": "phy", - "iod": "103", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/99", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "84" - }, - "id": "eth1/84", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:10", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219860", - "ifIndex": "436250112", - "intfT": "phy", - "iod": "88", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/84", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "109" - }, - "id": "eth1/109", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:29", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219884", - "ifIndex": "436262912", - "intfT": "phy", - "iod": "113", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/109", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "17" - }, - "id": "eth1/17", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:CD", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219793", - "ifIndex": "436215808", - "intfT": "phy", - "iod": "21", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/17", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "descr": "hello ifty, this works.", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "10" - }, - "id": "eth1/10", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:C6", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219786", - "ifIndex": "436212224", - "intfT": "phy", - "iod": "14", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "hello ifty, this works.", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/10", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "108" - }, - "id": "eth1/108", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:28", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219884", - "ifIndex": "436262400", - "intfT": "phy", - "iod": "112", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/108", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "89" - }, - "id": "eth1/89", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:15", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219865", - "ifIndex": "436252672", - "intfT": "phy", - "iod": "93", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/89", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "73" - }, - "id": "eth1/73", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:05", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219849", - "ifIndex": "436244480", - "intfT": "phy", - "iod": "77", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/73", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "106" - }, - "id": "eth1/106", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:26", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219882", - "ifIndex": "436261376", - "intfT": "phy", - "iod": "110", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/106", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "32" - }, - "id": "eth1/32", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:DC", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219808", - "ifIndex": "436223488", - "intfT": "phy", - "iod": "36", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/32", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "22" - }, - "id": "eth1/22", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:D2", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219798", - "ifIndex": "436218368", - "intfT": "phy", - "iod": "26", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/22", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "61" - }, - "id": "eth1/61", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:F9", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219837", - "ifIndex": "436238336", - "intfT": "phy", - "iod": "65", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/61", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "30" - }, - "id": "eth1/30", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:DA", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219806", - "ifIndex": "436222464", - "intfT": "phy", - "iod": "34", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/30", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "116" - }, - "id": "eth1/116", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:30", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219892", - "ifIndex": "436266496", - "intfT": "phy", - "iod": "120", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/116", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "54" - }, - "id": "eth1/54", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:F2", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219830", - "ifIndex": "436234752", - "intfT": "phy", - "iod": "58", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/54", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "119" - }, - "id": "eth1/119", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:33", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219895", - "ifIndex": "436268032", - "intfT": "phy", - "iod": "123", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/119", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "111" - }, - "id": "eth1/111", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:2B", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219887", - "ifIndex": "436263936", - "intfT": "phy", - "iod": "115", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/111", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "92" - }, - "id": "eth1/92", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:18", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219868", - "ifIndex": "436254208", - "intfT": "phy", - "iod": "96", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/92", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "78" - }, - "id": "eth1/78", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:0A", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219854", - "ifIndex": "436247040", - "intfT": "phy", - "iod": "82", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/78", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "50" - }, - "id": "eth1/50", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:EE", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219826", - "ifIndex": "436232704", - "intfT": "phy", - "iod": "54", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/50", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "115" - }, - "id": "eth1/115", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:2F", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219891", - "ifIndex": "436265984", - "intfT": "phy", - "iod": "119", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/115", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "72" - }, - "id": "eth1/72", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:04", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219848", - "ifIndex": "436243968", - "intfT": "phy", - "iod": "76", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/72", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "6" - }, - "id": "eth1/6", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:C2", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219782", - "ifIndex": "436210176", - "intfT": "phy", - "iod": "10", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/6", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "38" - }, - "id": "eth1/38", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:E2", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219814", - "ifIndex": "436226560", - "intfT": "phy", - "iod": "42", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/38", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "65" - }, - "id": "eth1/65", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:FD", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219841", - "ifIndex": "436240384", - "intfT": "phy", - "iod": "69", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/65", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "5" - }, - "id": "eth1/5", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:C1", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219781", - "ifIndex": "436209664", - "intfT": "phy", - "iod": "9", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/5", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "97" - }, - "id": "eth1/97", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:1D", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219873", - "ifIndex": "436256768", - "intfT": "phy", - "iod": "101", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/97", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "36" - }, - "id": "eth1/36", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:E0", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219812", - "ifIndex": "436225536", - "intfT": "phy", - "iod": "40", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/36", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "120" - }, - "id": "eth1/120", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:34", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219896", - "ifIndex": "436268544", - "intfT": "phy", - "iod": "124", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/120", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "100" - }, - "id": "eth1/100", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:20", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219876", - "ifIndex": "436258304", - "intfT": "phy", - "iod": "104", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/100", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "90" - }, - "id": "eth1/90", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:16", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219866", - "ifIndex": "436253184", - "intfT": "phy", - "iod": "94", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/90", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "81" - }, - "id": "eth1/81", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:0D", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219857", - "ifIndex": "436248576", - "intfT": "phy", - "iod": "85", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/81", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "31" - }, - "id": "eth1/31", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:DB", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219807", - "ifIndex": "436222976", - "intfT": "phy", - "iod": "35", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/31", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "28" - }, - "id": "eth1/28", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:D8", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219804", - "ifIndex": "436221440", - "intfT": "phy", - "iod": "32", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/28", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "93" - }, - "id": "eth1/93", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:19", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219869", - "ifIndex": "436254720", - "intfT": "phy", - "iod": "97", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/93", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "down", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "descr": "Configured by Ansible Network", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "2" - }, - "id": "eth1/2", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "down", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:BE", - "bundleBupId": "2", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "admin_state", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219778", - "ifIndex": "436208128", - "intfT": "phy", - "iod": "6", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "2020-10-07T14:34:34.912+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "35", - "operDceMode": "edge", - "operDescr": "Configured by Ansible Network", - "operDuplex": "full", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "0", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "admin-down", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "1", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "1", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "admin_state", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/2", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "userCfgdFlags": "admin_state", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "66" - }, - "id": "eth1/66", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:FE", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219842", - "ifIndex": "436240896", - "intfT": "phy", - "iod": "70", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/66", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "105" - }, - "id": "eth1/105", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:25", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219881", - "ifIndex": "436260864", - "intfT": "phy", - "iod": "109", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/105", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "58" - }, - "id": "eth1/58", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:F6", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219834", - "ifIndex": "436236800", - "intfT": "phy", - "iod": "62", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/58", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "88" - }, - "id": "eth1/88", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:14", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219864", - "ifIndex": "436252160", - "intfT": "phy", - "iod": "92", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/88", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "94" - }, - "id": "eth1/94", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:1A", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219870", - "ifIndex": "436255232", - "intfT": "phy", - "iod": "98", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/94", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "104" - }, - "id": "eth1/104", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:24", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219880", - "ifIndex": "436260352", - "intfT": "phy", - "iod": "108", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/104", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "87" - }, - "id": "eth1/87", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:13", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219863", - "ifIndex": "436251648", - "intfT": "phy", - "iod": "91", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/87", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "62" - }, - "id": "eth1/62", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:FA", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219838", - "ifIndex": "436238848", - "intfT": "phy", - "iod": "66", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/62", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "37" - }, - "id": "eth1/37", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:E1", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219813", - "ifIndex": "436226048", - "intfT": "phy", - "iod": "41", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/37", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "77" - }, - "id": "eth1/77", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:09", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219853", - "ifIndex": "436246528", - "intfT": "phy", - "iod": "81", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/77", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "46" - }, - "id": "eth1/46", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:EA", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219822", - "ifIndex": "436230656", - "intfT": "phy", - "iod": "50", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/46", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "40" - }, - "id": "eth1/40", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:E4", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219816", - "ifIndex": "436227584", - "intfT": "phy", - "iod": "44", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/40", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "101" - }, - "id": "eth1/101", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:21", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219877", - "ifIndex": "436258816", - "intfT": "phy", - "iod": "105", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/101", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "125" - }, - "id": "eth1/125", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:39", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219901", - "ifIndex": "436271104", - "intfT": "phy", - "iod": "129", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/125", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "123" - }, - "id": "eth1/123", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:37", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219899", - "ifIndex": "436270080", - "intfT": "phy", - "iod": "127", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/123", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "118" - }, - "id": "eth1/118", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:32", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219894", - "ifIndex": "436267520", - "intfT": "phy", - "iod": "122", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/118", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "7" - }, - "id": "eth1/7", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:C3", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219783", - "ifIndex": "436210688", - "intfT": "phy", - "iod": "11", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/7", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "12" - }, - "id": "eth1/12", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:C8", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219788", - "ifIndex": "436213248", - "intfT": "phy", - "iod": "16", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/12", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "60" - }, - "id": "eth1/60", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:F8", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219836", - "ifIndex": "436237824", - "intfT": "phy", - "iod": "64", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/60", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "56" - }, - "id": "eth1/56", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:F4", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219832", - "ifIndex": "436235776", - "intfT": "phy", - "iod": "60", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/56", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "63" - }, - "id": "eth1/63", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:FB", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219839", - "ifIndex": "436239360", - "intfT": "phy", - "iod": "67", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/63", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "110" - }, - "id": "eth1/110", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:2A", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219886", - "ifIndex": "436263424", - "intfT": "phy", - "iod": "114", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/110", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "14" - }, - "id": "eth1/14", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:CA", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219790", - "ifIndex": "436214272", - "intfT": "phy", - "iod": "18", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/14", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "23" - }, - "id": "eth1/23", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:D3", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219799", - "ifIndex": "436218880", - "intfT": "phy", - "iod": "27", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/23", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "41" - }, - "id": "eth1/41", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:E5", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219817", - "ifIndex": "436228096", - "intfT": "phy", - "iod": "45", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/41", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "19" - }, - "id": "eth1/19", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:CF", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219795", - "ifIndex": "436216832", - "intfT": "phy", - "iod": "23", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/19", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "103" - }, - "id": "eth1/103", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:23", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219879", - "ifIndex": "436259840", - "intfT": "phy", - "iod": "107", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/103", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "15" - }, - "id": "eth1/15", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:CB", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219791", - "ifIndex": "436214784", - "intfT": "phy", - "iod": "19", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/15", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "80" - }, - "id": "eth1/80", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:0C", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219856", - "ifIndex": "436248064", - "intfT": "phy", - "iod": "84", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/80", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "113" - }, - "id": "eth1/113", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:2D", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219889", - "ifIndex": "436264960", - "intfT": "phy", - "iod": "117", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/113", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "35" - }, - "id": "eth1/35", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:DF", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219811", - "ifIndex": "436225024", - "intfT": "phy", - "iod": "39", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/35", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "86" - }, - "id": "eth1/86", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:12", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219862", - "ifIndex": "436251136", - "intfT": "phy", - "iod": "90", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/86", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "96" - }, - "id": "eth1/96", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:1C", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219872", - "ifIndex": "436256256", - "intfT": "phy", - "iod": "100", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/96", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "70" - }, - "id": "eth1/70", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:02", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219846", - "ifIndex": "436242944", - "intfT": "phy", - "iod": "74", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/70", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "18" - }, - "id": "eth1/18", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:CE", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219794", - "ifIndex": "436216320", - "intfT": "phy", - "iod": "22", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/18", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "98" - }, - "id": "eth1/98", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:1E", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219874", - "ifIndex": "436257280", - "intfT": "phy", - "iod": "102", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/98", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "95" - }, - "id": "eth1/95", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:1B", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219871", - "ifIndex": "436255744", - "intfT": "phy", - "iod": "99", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/95", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "82" - }, - "id": "eth1/82", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:0E", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219858", - "ifIndex": "436249088", - "intfT": "phy", - "iod": "86", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/82", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "59" - }, - "id": "eth1/59", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:F7", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219835", - "ifIndex": "436237312", - "intfT": "phy", - "iod": "63", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/59", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "13" - }, - "id": "eth1/13", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:C9", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219789", - "ifIndex": "436213760", - "intfT": "phy", - "iod": "17", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/13", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "9" - }, - "id": "eth1/9", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:C5", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219785", - "ifIndex": "436211712", - "intfT": "phy", - "iod": "13", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/9", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "27" - }, - "id": "eth1/27", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:D7", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219803", - "ifIndex": "436220928", - "intfT": "phy", - "iod": "31", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/27", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "49" - }, - "id": "eth1/49", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:ED", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219825", - "ifIndex": "436232192", - "intfT": "phy", - "iod": "53", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/49", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "44" - }, - "id": "eth1/44", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:E8", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219820", - "ifIndex": "436229632", - "intfT": "phy", - "iod": "48", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/44", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "16" - }, - "id": "eth1/16", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:CC", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219792", - "ifIndex": "436215296", - "intfT": "phy", - "iod": "20", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/16", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "76" - }, - "id": "eth1/76", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:08", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219852", - "ifIndex": "436246016", - "intfT": "phy", - "iod": "80", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/76", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "51" - }, - "id": "eth1/51", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:EF", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219827", - "ifIndex": "436233216", - "intfT": "phy", - "iod": "55", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/51", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "11" - }, - "id": "eth1/11", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:C7", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219787", - "ifIndex": "436212736", - "intfT": "phy", - "iod": "15", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/11", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "0", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "39" - }, - "id": "eth1/39", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:E3", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219815", - "ifIndex": "436227072", - "intfT": "phy", - "iod": "43", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/39", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "83" - }, - "id": "eth1/83", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:0F", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219859", - "ifIndex": "436249600", - "intfT": "phy", - "iod": "87", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/83", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "107" - }, - "id": "eth1/107", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:27", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219883", - "ifIndex": "436261888", - "intfT": "phy", - "iod": "111", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/107", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "57" - }, - "id": "eth1/57", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:F5", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219833", - "ifIndex": "436236288", - "intfT": "phy", - "iod": "61", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/57", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "descr": "Configured by Brad", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "1" - }, - "id": "eth1/1", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:BD", - "bundleBupId": "2", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219777", - "ifIndex": "436207616", - "intfT": "phy", - "iod": "5", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "2020-09-24T21:11:05.406+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "3-4", - "operDceMode": "edge", - "operDescr": "Configured by Brad", - "operDuplex": "full", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "0", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "up", - "operStQual": "none", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "1", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "1", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/1", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "126" - }, - "id": "eth1/126", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:3A", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219902", - "ifIndex": "436271616", - "intfT": "phy", - "iod": "130", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/126", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "47" - }, - "id": "eth1/47", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:EB", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219823", - "ifIndex": "436231168", - "intfT": "phy", - "iod": "51", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/47", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "85" - }, - "id": "eth1/85", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:11", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219861", - "ifIndex": "436250624", - "intfT": "phy", - "iod": "89", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/85", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "45" - }, - "id": "eth1/45", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:E9", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219821", - "ifIndex": "436230144", - "intfT": "phy", - "iod": "49", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/45", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "24" - }, - "id": "eth1/24", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:D4", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219800", - "ifIndex": "436219392", - "intfT": "phy", - "iod": "28", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/24", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "55" - }, - "id": "eth1/55", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:F3", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219831", - "ifIndex": "436235264", - "intfT": "phy", - "iod": "59", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/55", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "42" - }, - "id": "eth1/42", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:E6", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219818", - "ifIndex": "436228608", - "intfT": "phy", - "iod": "46", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/42", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "25" - }, - "id": "eth1/25", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:D5", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219801", - "ifIndex": "436219904", - "intfT": "phy", - "iod": "29", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/25", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "26" - }, - "id": "eth1/26", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:D6", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219802", - "ifIndex": "436220416", - "intfT": "phy", - "iod": "30", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/26", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "91" - }, - "id": "eth1/91", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:17", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219867", - "ifIndex": "436253696", - "intfT": "phy", - "iod": "95", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/91", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "114" - }, - "id": "eth1/114", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:2E", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219890", - "ifIndex": "436265472", - "intfT": "phy", - "iod": "118", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/114", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "20" - }, - "id": "eth1/20", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:D0", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219796", - "ifIndex": "436217344", - "intfT": "phy", - "iod": "24", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/20", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "69" - }, - "id": "eth1/69", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:01", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219845", - "ifIndex": "436242432", - "intfT": "phy", - "iod": "73", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/69", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "68" - }, - "id": "eth1/68", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:00", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219844", - "ifIndex": "436241920", - "intfT": "phy", - "iod": "72", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/68", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "48" - }, - "id": "eth1/48", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:EC", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219824", - "ifIndex": "436231680", - "intfT": "phy", - "iod": "52", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/48", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "121" - }, - "id": "eth1/121", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:35", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219897", - "ifIndex": "436269056", - "intfT": "phy", - "iod": "125", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/121", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "21" - }, - "id": "eth1/21", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:D1", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219797", - "ifIndex": "436217856", - "intfT": "phy", - "iod": "25", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/21", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "34" - }, - "id": "eth1/34", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:DE", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219810", - "ifIndex": "436224512", - "intfT": "phy", - "iod": "38", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/34", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "53" - }, - "id": "eth1/53", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:F1", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219829", - "ifIndex": "436234240", - "intfT": "phy", - "iod": "57", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/53", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "3" - }, - "id": "eth1/3", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:BF", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219779", - "ifIndex": "436208640", - "intfT": "phy", - "iod": "7", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/3", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "74" - }, - "id": "eth1/74", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:06", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219850", - "ifIndex": "436244992", - "intfT": "phy", - "iod": "78", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/74", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "122" - }, - "id": "eth1/122", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:36", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219898", - "ifIndex": "436269568", - "intfT": "phy", - "iod": "126", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/122", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "102" - }, - "id": "eth1/102", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:22", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219878", - "ifIndex": "436259328", - "intfT": "phy", - "iod": "106", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/102", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "8" - }, - "id": "eth1/8", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:C4", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219784", - "ifIndex": "436211200", - "intfT": "phy", - "iod": "12", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/8", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "64" - }, - "id": "eth1/64", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:FC", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219840", - "ifIndex": "436239872", - "intfT": "phy", - "iod": "68", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/64", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "75" - }, - "id": "eth1/75", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:07", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219851", - "ifIndex": "436245504", - "intfT": "phy", - "iod": "79", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/75", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "52" - }, - "id": "eth1/52", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:F0", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219828", - "ifIndex": "436233728", - "intfT": "phy", - "iod": "56", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/52", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "127" - }, - "id": "eth1/127", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:3B", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219903", - "ifIndex": "436272128", - "intfT": "phy", - "iod": "131", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/127", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "29" - }, - "id": "eth1/29", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F8:D9", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219805", - "ifIndex": "436221952", - "intfT": "phy", - "iod": "33", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/29", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "128" - }, - "id": "eth1/128", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:3C", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219904", - "ifIndex": "436272640", - "intfT": "phy", - "iod": "132", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/128", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - }, - { - "FECMode": "auto", - "accessVlan": "vlan-1", - "adminSt": "up", - "aggrmbrif-items": { - "bdlPortNum": "0", - "channelingSt": "unknown", - "flags": "", - "ltlProgrammed": "false", - "name": "", - "operSt": "down", - "summOperSt": "down", - "uptime": "00:00:00:00.000" - }, - "autoNeg": "on", - "beacon": "off", - "bw": "0", - "controllerId": "", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "delay": "1", - "dot1qEtherType": "0x8100", - "duplex": "auto", - "eeep-items": { - "eeeLat": "variable", - "eeeLpi": "aggressive", - "eeeState": "not-applicable" - }, - "hwifdetails-items": { - "sPort": "0", - "slice": "0", - "vif": "117" - }, - "id": "eth1/117", - "inhBw": "4294967295", - "layer": "Layer2", - "linkDebounce": "100", - "linkDebounceLinkUp": "0", - "linkLog": "default", - "linkTransmitReset": "enable", - "loadp-items": { - "loadIntvl1": "30", - "loadIntvl2": "300", - "loadIntvl3": "0" - }, - "mdix": "auto", - "medium": "broadcast", - "mode": "access", - "mtu": "1500", - "nativeVlan": "vlan-1", - "packetTimestampEgressSourceId": "0", - "packetTimestampIngressSourceId": "0", - "packetTimestampState": "disable", - "phys-items": { - "accessVlan": "vlan-1", - "adminSt": "up", - "allowedVlans": "1", - "backplaneMac": "52:54:00:5A:F9:31", - "bundleBupId": "1", - "bundleIndex": "unspecified", - "cachedUserCfgdFlags": "", - "cfgAccessVlan": "vlan-1", - "cfgNativeVlan": "vlan-1", - "currErrIndex": "4294967295", - "diags": "none", - "dynamicVlan": "false", - "encap": "3", - "errDisTimerRunning": "false", - "errVlans": "", - "fcot-items": { - "baseResvd1": "0", - "baseResvd2": "0", - "baseResvd3": "0", - "baseResvd4": "0,0,0", - "brIn100MHz": "0", - "brMaxMargin": "0", - "brMinMargin": "0", - "ccex": "0", - "ccid": "0", - "connectType": "0", - "dateCode": "", - "description": "", - "diagMonType": "0", - "distIn100mFor9u": "0", - "distIn10mFor50u": "0", - "distIn10mFor60u": "0", - "distIn1mForCu": "0", - "distInKmFor9u": "0", - "eid": "", - "encoding": "0", - "enhOption": "0", - "extOption": "0,0", - "fCTxType": "0", - "fcotNum": "0", - "fcotType": "0", - "flags": "ok", - "gigEthCC": "0", - "isFcotPresent": "false", - "maxSpeed": "6", - "minSpeed": "6", - "partNumber": "", - "sff8472Compl": "0", - "state": "unknown", - "type": "unknown", - "typeName": "unknown", - "vendorData": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "vendorId": "0,0,0", - "vendorName": "", - "vendorPn": "", - "vendorRev": "", - "vendorSn": "", - "versionId": "", - "xcvrCode": "0,0,0,0,0,0,0,0", - "xcvrExtId": "0", - "xcvrId": "0" - }, - "gport": "134219893", - "ifIndex": "436267008", - "intfT": "phy", - "iod": "121", - "lastErrors": "0,0,0,0", - "lastLinkStChg": "1970-01-01T00:00:00.000+00:00", - "media": "2", - "nativeVlan": "vlan-1", - "numOfSI": "0", - "operAutoNeg": "on", - "operBitset": "4", - "operDceMode": "edge", - "operDescr": "", - "operDuplex": "auto", - "operEEERxWkTime": "0", - "operEEEState": "not-applicable", - "operEEETxWkTime": "0", - "operErrDisQual": "up", - "operFECMode": "auto", - "operFlowCtrl": "", - "operLinkDebounce": "100", - "operMdix": "auto", - "operMode": "access", - "operMtu": "1500", - "operPhyEnSt": "unknown", - "operRouterMac": "52:54:00:5A:F8:BC", - "operSpeed": "auto", - "operSt": "down", - "operStQual": "link-failure", - "operStQualCode": "0", - "operTrunkStatus": "not-trunking", - "operVlans": "", - "portCfgWaitFlags": "0", - "portcap-items": { - "autoneg": "1", - "channel": "1", - "cosRewrite": "1", - "ctsCapable": "31", - "duplex": "full", - "eeeCapVal": "0", - "eeeFlapFlags": "0", - "eeeWakeTimes10g": "0,0,0", - "fcotCapable": "0", - "id": "unspecified", - "linkDebounce": "1", - "linkDebounceTime": "50", - "mdix": "0", - "model": "103,98,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "portCap": "167772160", - "portGroup": "255", - "portGrpMbrs": "", - "protoSupport": "16777235", - "qosRxPrio": "0", - "qosRxQueue": "8", - "qosRxThold": "2", - "qosTxPrio": "1", - "qosTxQueue": "7", - "qosTxThold": "4", - "rateMode": "1", - "rxFlowControl": "3", - "span": "1", - "speed": "100,1000,10000", - "suppression": "1", - "tosRewrite": "1", - "trunkEncap": "1", - "txFlowControl": "3", - "type": "49,48,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", - "udld": "1" - }, - "primaryVlan": "vlan-1", - "resetCtr": "0", - "shareState": "dedicated", - "siList": "", - "txT": "unknown", - "usage": "", - "userCfgdFlags": "", - "vdcId": "1" - }, - "physExtd-items": { - "allowMultiTag": "disable", - "bufferBoost": "enable", - "id": "eth1/117", - "portTypeFabric": "no", - "routerMacIpv6Extract": "disable", - "stormCtrlBCastLevel": "100.0", - "stormCtrlBCastPPS": "4294967295", - "stormCtrlMCastLevel": "100.0", - "stormCtrlMCastPPS": "4294967295", - "stormCtrlUCastLevel": "100.0", - "stormCtrlUCastPPS": "4294967295", - "switchportMacLearn": "enable", - "switchportVirtualEthernetBridge": "disable" - }, - "portT": "leaf", - "routerMac": "not-applicable", - "snmpTrapSt": "enable", - "spanMode": "not-a-span-dest", - "speed": "auto", - "speedGroup": "auto", - "stormctrlp-items": { - "burstPps": "4294967295", - "burstRate": "100.0", - "rate": "100.0", - "ratePps": "4294967295", - "type": "all" - }, - "switchingSt": "disabled", - "trunkLog": "default", - "trunkVlans": "1-4094", - "usage": "discovery", - "voicePortCos": "-1", - "voicePortTrust": "-1", - "voiceVlanId": "0", - "voiceVlanType": "none" - } - ] - } - }, - "ipqos-items": { - "queuing-items": { - "policy-items": { - "out-items": { - "intf-items": { - "If-list": [ - { - "name": "eth1/26" - }, - { - "name": "eth1/36" - }, - { - "name": "eth1/102" - }, - { - "name": "eth1/6" - }, - { - "name": "eth1/47" - }, - { - "name": "eth1/57" - }, - { - "name": "eth1/115" - }, - { - "name": "eth1/96" - }, - { - "name": "eth1/5" - }, - { - "name": "eth1/101" - }, - { - "name": "eth1/83" - }, - { - "name": "eth1/49" - }, - { - "name": "eth1/20" - }, - { - "name": "eth1/52" - }, - { - "name": "eth1/13" - }, - { - "name": "eth1/72" - }, - { - "name": "eth1/90" - }, - { - "name": "eth1/44" - }, - { - "name": "eth1/68" - }, - { - "name": "eth1/34" - }, - { - "name": "eth1/123" - }, - { - "name": "eth1/75" - }, - { - "name": "eth1/65" - }, - { - "name": "eth1/71" - }, - { - "name": "eth1/81" - }, - { - "name": "eth1/24" - }, - { - "name": "eth1/12" - }, - { - "name": "eth1/64" - }, - { - "name": "eth1/10" - }, - { - "name": "eth1/92" - }, - { - "name": "eth1/126" - }, - { - "name": "eth1/62" - }, - { - "name": "eth1/4" - }, - { - "name": "eth1/128" - }, - { - "name": "eth1/9" - }, - { - "name": "eth1/85" - }, - { - "name": "eth1/7" - }, - { - "name": "eth1/111" - }, - { - "name": "eth1/55" - }, - { - "name": "eth1/98" - }, - { - "name": "eth1/113" - }, - { - "name": "eth1/63" - }, - { - "name": "eth1/110" - }, - { - "name": "eth1/120" - }, - { - "name": "eth1/108" - }, - { - "name": "eth1/124" - }, - { - "name": "eth1/1" - }, - { - "name": "eth1/97" - }, - { - "name": "eth1/122" - }, - { - "name": "eth1/48" - }, - { - "name": "eth1/46" - }, - { - "name": "eth1/77" - }, - { - "name": "eth1/21" - }, - { - "name": "eth1/60" - }, - { - "name": "eth1/50" - }, - { - "name": "eth1/80" - }, - { - "name": "eth1/16" - }, - { - "name": "eth1/94" - }, - { - "name": "eth1/82" - }, - { - "name": "eth1/17" - }, - { - "name": "eth1/89" - }, - { - "name": "eth1/45" - }, - { - "name": "eth1/32" - }, - { - "name": "eth1/119" - }, - { - "name": "eth1/118" - }, - { - "name": "eth1/23" - }, - { - "name": "eth1/127" - }, - { - "name": "eth1/41" - }, - { - "name": "eth1/105" - }, - { - "name": "eth1/11" - }, - { - "name": "eth1/100" - }, - { - "name": "eth1/37" - }, - { - "name": "eth1/51" - }, - { - "name": "eth1/58" - }, - { - "name": "eth1/56" - }, - { - "name": "eth1/107" - }, - { - "name": "eth1/14" - }, - { - "name": "eth1/95" - }, - { - "name": "eth1/78" - }, - { - "name": "eth1/104" - }, - { - "name": "eth1/31" - }, - { - "name": "eth1/42" - }, - { - "name": "eth1/79" - }, - { - "name": "eth1/2" - }, - { - "name": "eth1/93" - }, - { - "name": "eth1/33" - }, - { - "name": "eth1/61" - }, - { - "name": "eth1/106" - }, - { - "name": "eth1/73" - }, - { - "name": "eth1/22" - }, - { - "name": "eth1/76" - }, - { - "name": "eth1/28" - }, - { - "name": "eth1/91" - }, - { - "name": "eth1/35" - }, - { - "name": "eth1/19" - }, - { - "name": "eth1/117" - }, - { - "name": "eth1/87" - }, - { - "name": "eth1/125" - }, - { - "name": "eth1/114" - }, - { - "name": "eth1/8" - }, - { - "name": "eth1/39" - }, - { - "name": "eth1/54" - }, - { - "name": "eth1/74" - }, - { - "name": "eth1/15" - }, - { - "name": "eth1/29" - }, - { - "name": "eth1/67" - }, - { - "name": "eth1/116" - }, - { - "name": "eth1/38" - }, - { - "name": "eth1/30" - }, - { - "name": "eth1/27" - }, - { - "name": "eth1/40" - }, - { - "name": "eth1/112" - }, - { - "name": "eth1/69" - }, - { - "name": "eth1/109" - }, - { - "name": "eth1/88" - }, - { - "name": "eth1/3" - }, - { - "name": "eth1/103" - }, - { - "name": "eth1/43" - }, - { - "name": "eth1/84" - }, - { - "name": "eth1/18" - }, - { - "name": "eth1/121" - }, - { - "name": "eth1/25" - }, - { - "name": "eth1/53" - }, - { - "name": "eth1/70" - }, - { - "name": "eth1/99" - }, - { - "name": "eth1/86" - }, - { - "name": "eth1/66" - }, - { - "name": "eth1/59" - } - ] - } - } - } - }, - "statClear-items": { - "ethernet": "0", - "portChan": "0", - "timeStamp": "2020-02-04T15:06:05.865+00:00", - "vlan": "0" - }, - "statsState": "enabled" - }, - "ipv4-items": { - "adminSt": "enabled", - "inst-items": { - "accessListMatchLocal": "disabled", - "adminSt": "enabled", - "dom-items": { - "Dom-list": [ - { - "autoDiscard": "disabled", - "if-items": { - "If-list": [ - { - "addr-items": { - "Addr-list": [ - { - "addr": "192.168.101.14/24", - "operSt": "up", - "operStQual": "unspecified", - "pref": "1", - "tag": "0", - "type": "primary" - } - ] - }, - "adminSt": "enabled", - "directedBroadcast": "disabled", - "dropGlean": "disabled", - "forward": "disabled", - "id": "mgmt0", - "operSt": "up", - "operStQual": "unspecified", - "urpf": "disabled" - } - ] - }, - "name": "management", - "rt-items": { - "Route-list": [ - { - "nh-items": { - "Nexthop-list": [ - { - "flags": "", - "nhAddr": "192.168.101.1/32", - "nhIf": "unspecified", - "nhVrf": "management", - "object": "0", - "operSt": "up" - } - ] - }, - "pcTag": "0", - "pref": "1", - "prefix": "0.0.0.0/0", - "tag": "0" - } - ] - } - } - ] - }, - "hardwareEcmpHashOffsetConcat": "disabled", - "hardwareEcmpHashOffsetValue": "0", - "hardwareEcmpHashPolynomial": "CRC16", - "loggingLevel": "error", - "sourceRoute": "enabled" - }, - "operSt": "enabled" - }, - "ipv6-items": { - "adminSt": "enabled", - "inst-items": { - "accessListMatchLocal": "disabled", - "adminSt": "enabled", - "queuePackets": "disabled", - "staticNeighborOutsideSubnet": "disabled", - "switchPackets": "disabled" - }, - "operSt": "enabled" - }, - "l2fm-items": { - "macLearn": "enable" - }, - "lacp-items": { - "adminSt": "enabled", - "inst-items": { - "adminPrio": "32768", - "adminRole": "primary", - "adminSt": "enabled", - "if-items": { - "If-list": [ - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/91", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/28", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/106", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/4", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/25", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/6", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/120", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/35", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/30", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/5", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/119", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/81", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/31", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/84", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/56", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/61", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/66", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/118", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/128", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/116", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/22", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/7", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/51", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/9", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/92", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/90", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/73", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/19", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/93", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/64", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/115", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/78", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/114", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/121", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/83", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/75", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/112", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/3", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/41", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/122", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/33", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/50", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/124", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/59", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/21", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/109", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/29", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/23", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/55", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/107", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/89", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/94", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/44", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/77", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/117", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/47", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/42", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/67", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/102", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/26", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/76", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/18", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/62", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/71", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/95", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/85", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/60", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/8", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/97", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/39", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/38", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/79", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/17", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/96", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/105", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/70", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/110", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/45", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/127", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/87", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/125", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/88", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/15", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/101", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/111", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/34", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/113", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/68", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/57", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/54", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/13", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/2", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/53", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/98", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/48", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/65", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/11", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/72", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/12", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/126", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/103", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/36", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/80", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/52", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/82", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/10", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/20", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/1", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/27", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/74", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/16", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/14", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/24", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/99", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/108", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/43", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/104", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/32", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/69", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/86", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/37", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/40", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/46", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/63", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/49", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/58", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/100", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - }, - { - "activityFlags": "", - "adminSt": "enabled", - "id": "eth1/123", - "key": "0", - "lastActive": "1970-01-01T00:00:00.000+00:00", - "operPrio": "32768", - "port": "0", - "prio": "32768", - "txRate": "normal" - } - ] - }, - "operErr": "", - "operPrio": "32768", - "operRole": "primary", - "sysMac": "00:00:00:00:00:00" - }, - "operSt": "enabled" - }, - "lldp-items": { - "adminSt": "enabled", - "inst-items": { - "adminSt": "enabled", - "holdTime": "120", - "if-items": { - "If-list": [ - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/107", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/111", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/99", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/117", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/77", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/16", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/19", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/70", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/88", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/84", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/5", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/119", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/94", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/118", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/1", - "ifstats-items": { - "entriesAged": "0", - "errPktRcvd": "0", - "pktDiscarded": "0", - "pktRcvd": "0", - "pktSent": "42805", - "unrecogTLV": "0" - }, - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/105", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/50", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/76", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/123", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/71", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/96", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/17", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/95", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/42", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/48", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/22", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/113", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/74", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/27", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/128", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/120", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/14", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/85", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/122", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/46", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/126", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/32", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/121", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/52", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/37", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/83", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/8", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/18", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/38", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/75", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/43", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/3", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "mgmt0", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/23", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/57", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/64", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/33", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/61", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/40", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/79", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/124", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/49", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/65", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/2", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/56", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/13", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/25", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/116", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/7", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/67", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/115", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/69", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/31", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/9", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/78", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/63", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/26", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/100", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/34", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/45", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/127", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/125", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/28", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/97", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/80", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/29", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/62", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/110", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/82", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/20", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/106", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/11", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/30", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/41", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/6", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/21", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/36", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/101", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/58", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/114", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/102", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/44", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/39", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/51", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/109", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/81", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/93", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/12", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/91", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/35", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/87", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/54", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/72", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/55", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/86", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/60", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/108", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/15", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/73", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/10", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/103", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/104", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/90", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/47", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/68", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/59", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/112", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/53", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/66", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/89", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/24", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/98", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/4", - "tlvSetVlan": "0" - }, - { - "adminRxSt": "enabled", - "adminSt": "enabled", - "adminTxSt": "enabled", - "id": "eth1/92", - "tlvSetVlan": "0" - } - ] - }, - "initDelayTime": "2", - "inststats-items": { - "entriesAged": "0", - "errPktRcvd": "0", - "pktDiscarded": "0", - "pktRcvd": "0", - "pktSent": "122233", - "unrecogTLV": "0" - }, - "optTlvSel": "dcbxp,mgmt-addr-v4,mgmt-addr-v6,port-desc,port-vlan,power-mgmt,sys-cap,sys-desc,sys-name", - "portIdSubType": "long", - "txFreq": "30" - }, - "operSt": "enabled" - }, - "lsnode-items": { - "LooseNode-list": [ - { - "id": "192.168.101.14", - "rslsNodeToIf-items": { - "RsLsNodeToIf-list": [ - { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/2']" - }, - { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/1']" - } - ] - } - }, - { - "id": "192.168.101.17", - "rslsNodeToIf-items": { - "RsLsNodeToIf-list": [ - { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/2']" - }, - { - "tCl": "l1PhysIf", - "tDn": "/System/intf-items/phys-items/PhysIf-list[id='eth1/1']" - } - ] - } - } - ] - }, - "mac-items": { - "aging": "1800", - "table-items": { - "vlan-items": { - "MacAddressEntry-list": [ - { - "age": "0", - "macAddress": "52:54:00:5A:F8:BC", - "macInfo": "standard", - "ntfy": "false", - "port": "supeth1", - "routed": "true", - "secure": "false", - "static": "true", - "type": "gateway", - "vlan": "vlan-0" - } - ] - } - } - }, - "macsec-items": { - "adminSt": "enabled", - "inst-items": { - "adminSt": "enabled" - }, - "operSt": "enabled" - }, - "mcp-items": { - "adminSt": "enabled", - "name": "", - "operSt": "enabled" - }, - "mgmt-items": { - "MgmtIf-list": [ - { - "adminSt": "up", - "autoNeg": "on", - "dbgDot3Stats-items": { - "alignmentErrors": "0", - "babble": "0", - "carrierSenseErrors": "0", - "controlInUnknownOpcodes": "0", - "deferredTransmissions": "0", - "excessiveCollisions": "0", - "fCSErrors": "0", - "frameTooLongs": "0", - "inPauseFrames": "0", - "inputdribble": "0", - "internalMacReceiveErrors": "0", - "internalMacTransmitErrors": "0", - "lateCollisions": "0", - "lostCarrierErrors": "0", - "multipleCollisionFrames": "0", - "noCarrierErrors": "0", - "outPauseFrames": "0", - "runts": "0", - "sQETTestErrors": "0", - "singleCollisionFrames": "0", - "symbolErrors": "0" - }, - "dbgEtherStats-items": { - "broadcastPkts": "0", - "cRCAlignErrors": "0", - "collisions": "0", - "dropEvents": "0", - "fragments": "0", - "giantPkts": "0", - "ifdowndrop": "0", - "ignored": "0", - "jabbers": "0", - "multicastPkts": "0", - "octets": "0", - "overrun": "0", - "oversizePkts": "0", - "pkts": "0", - "pkts1024to1518Octets": "0", - "pkts128to255Octets": "0", - "pkts1519to1548Octets": "0", - "pkts256to511Octets": "0", - "pkts512to1023Octets": "0", - "pkts64Octets": "0", - "pkts65to127Octets": "0", - "rXNoErrors": "0", - "rxOversizePkts": "0", - "rxPkts1024to1518Octets": "0", - "rxPkts128to255Octets": "0", - "rxPkts1519to1548Octets": "0", - "rxPkts256to511Octets": "0", - "rxPkts512to1023Octets": "0", - "rxPkts64Octets": "0", - "rxPkts65to127Octets": "0", - "stormSupressedPkts": "0", - "tXNoErrors": "0", - "txOversizePkts": "0", - "txPkts1024to1518Octets": "0", - "txPkts128to255Octets": "0", - "txPkts1519to1548Octets": "0", - "txPkts256to511Octets": "0", - "txPkts512to1023Octets": "0", - "txPkts64Octets": "0", - "txPkts65to127Octets": "0", - "underrun": "0", - "undersizePkts": "0", - "watchdog": "0" - }, - "dbgIfHCIn-items": { - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfHCOut-items": { - "broadcastPckts": "0", - "broadcastPkts": "0", - "multicastPkts": "0", - "octets": "0", - "ucastPkts": "0" - }, - "dbgIfIn-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "noBuffer": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "rateInterval": "0", - "ucastPkts": "0", - "unknownEtype": "0", - "unknownProtos": "0" - }, - "dbgIfOut-items": { - "broadcastPkts": "0", - "discards": "0", - "errors": "0", - "multicastPkts": "0", - "nUcastPkts": "0", - "octetRate": "0", - "octets": "0", - "packetRate": "0", - "qLen": "0", - "rateInterval": "0", - "ucastPkts": "0" - }, - "duplex": "auto", - "id": "mgmt0", - "mgmt-items": { - "backplaneMac": "52:54:00:5A:F8:B5", - "iod": "2", - "lastLinkStChg": "2020-09-24T21:10:29.521+00:00", - "operDuplex": "full", - "operMtu": "1500", - "operPhyLayer": "ethernet", - "operRouterMac": "52:54:00:5A:F8:B5", - "operSpeed": "1G", - "operSt": "up", - "operStQual": "link-up", - "portInitEvalFlag": "1", - "vdcId": "1" - }, - "mtu": "1500", - "portcap-items": { - "portCap": "239" - }, - "rtvrfMbr-items": { - "tCl": "l3Inst", - "tDn": "/System/inst-items/Inst-list[mode='management']" - }, - "snmpTrapSt": "enable", - "speed": "auto" - } - ] - }, - "mts-items": { - "topsaps-items": { - "memUsed": "0" - } - }, - "name": "nxos101", - "nd-items": { - "adminSt": "enabled", - "inst-items": { - "acceptSolicitNghbrEntry": "none", - "adminSt": "enabled", - "agingInterval": "1380", - "cacheLimit": "174080", - "cacheSyslogRate": "1", - "configErr": "", - "ipv6AdjRouteDistance": "250", - "offListTimeout": "180", - "probeIntervalForSolicitNghbr": "5", - "solicitNghbrAdvertisement": "disabled" - }, - "operSt": "enabled" - }, - "npv-items": { - "adminSt": "enabled", - "inst-items": { - "adminSt": "enabled" - }, - "name": "", - "operSt": "enabled" - }, - "nxapi-items": { - "httpPort": "80", - "httpsPort": "443", - "sslCiphersWeak": "false", - "sslProtocols": "TLSv1.1 TLSv1.2" - }, - "ops-items": { - "name": "", - "psgp-items": { - "acRdnCap": "0", - "adminRdnM": "ps-rdn", - "alPwr": "180", - "avPwr": "0", - "cordsConnected": "false", - "flRdnCap": "0", - "grdACap": "0", - "grdBCap": "0", - "grdRdnCap": "0", - "inputDraw": "0", - "nRdnCap": "0", - "operRdnM": "ps-rdn", - "outputDraw": "0", - "psRdnCap": "0", - "rsdPwr": "0", - "rspsuInstPolCons-items": { - "tCl": "psuInstPol", - "tDn": "UNRES:uni/fabric/psuInstP-default" - }, - "tc": "180", - "unit": "W" - } - }, - "ospf-items": { - "adminSt": "enabled", - "operSt": "enabled" - }, - "pc-items": { - "adminSt": "enabled", - "operSt": "enabled", - "pc-items": { - "adminSt": "enabled", - "ctrl": "", - "freeChannels": "511", - "hashDist": "adaptive", - "loadDeferTime": "120", - "maxChannels": "511", - "name": "", - "pcntChannels": "0", - "usedChannels": "0" - } - }, - "pltfm-items": { - "IPV6alpmCarveValue": "0", - "bd-items": { - "bd-items": { - "Bd-list": [ - { - "fabEncap": "vlan-1" - } - ] - }, - "descr": "" - }, - "buffermonitor-items": { - "bufferMonitorMode": "None", - "bufferMonitorState": "Disable", - "bufferMonitorThreshhold": "0", - "sampling": "4294967295" - }, - "intf-items": { - "descr": "", - "if-items": { - "If-list": [ - { - "eltmIf-items": { - "hwBdId": "4215" - }, - "id": "eth1/116" - }, - { - "eltmIf-items": { - "hwBdId": "4152" - }, - "id": "eth1/53" - }, - { - "eltmIf-items": { - "hwBdId": "4161" - }, - "id": "eth1/62" - }, - { - "eltmIf-items": { - "hwBdId": "4147" - }, - "id": "eth1/48" - }, - { - "eltmIf-items": { - "hwBdId": "4149" - }, - "id": "eth1/50" - }, - { - "eltmIf-items": { - "hwBdId": "4159" - }, - "id": "eth1/60" - }, - { - "eltmIf-items": { - "hwBdId": "4103" - }, - "id": "eth1/4" - }, - { - "eltmIf-items": { - "hwBdId": "4194" - }, - "id": "eth1/95" - }, - { - "eltmIf-items": { - "hwBdId": "4225" - }, - "id": "eth1/126" - }, - { - "eltmIf-items": { - "hwBdId": "4179" - }, - "id": "eth1/80" - }, - { - "eltmIf-items": { - "hwBdId": "4175" - }, - "id": "eth1/76" - }, - { - "eltmIf-items": { - "hwBdId": "4120" - }, - "id": "eth1/21" - }, - { - "eltmIf-items": { - "hwBdId": "4142" - }, - "id": "eth1/43" - }, - { - "eltmIf-items": { - "hwBdId": "4226" - }, - "id": "eth1/127" - }, - { - "eltmIf-items": { - "hwBdId": "4125" - }, - "id": "eth1/26" - }, - { - "eltmIf-items": { - "hwBdId": "4181" - }, - "id": "eth1/82" - }, - { - "eltmIf-items": { - "hwBdId": "4184" - }, - "id": "eth1/85" - }, - { - "eltmIf-items": { - "hwBdId": "4185" - }, - "id": "eth1/86" - }, - { - "eltmIf-items": { - "hwBdId": "4148" - }, - "id": "eth1/49" - }, - { - "eltmIf-items": { - "hwBdId": "4224" - }, - "id": "eth1/125" - }, - { - "eltmIf-items": { - "hwBdId": "4114" - }, - "id": "eth1/15" - }, - { - "eltmIf-items": { - "hwBdId": "4220" - }, - "id": "eth1/121" - }, - { - "eltmIf-items": { - "hwBdId": "4137" - }, - "id": "eth1/38" - }, - { - "eltmIf-items": { - "hwBdId": "4172" - }, - "id": "eth1/73" - }, - { - "eltmIf-items": { - "hwBdId": "4197" - }, - "id": "eth1/98" - }, - { - "eltmIf-items": { - "hwBdId": "4123" - }, - "id": "eth1/24" - }, - { - "eltmIf-items": { - "hwBdId": "4134" - }, - "id": "eth1/35" - }, - { - "eltmIf-items": { - "hwBdId": "4190" - }, - "id": "eth1/91" - }, - { - "eltmIf-items": { - "hwBdId": "4155" - }, - "id": "eth1/56" - }, - { - "eltmIf-items": { - "hwBdId": "4132" - }, - "id": "eth1/33" - }, - { - "eltmIf-items": { - "hwBdId": "4216" - }, - "id": "eth1/117" - }, - { - "eltmIf-items": { - "hwBdId": "4133" - }, - "id": "eth1/34" - }, - { - "eltmIf-items": { - "hwBdId": "4160" - }, - "id": "eth1/61" - }, - { - "eltmIf-items": { - "hwBdId": "4173" - }, - "id": "eth1/74" - }, - { - "eltmIf-items": { - "hwBdId": "4129" - }, - "id": "eth1/30" - }, - { - "eltmIf-items": { - "hwBdId": "4156" - }, - "id": "eth1/57" - }, - { - "eltmIf-items": { - "hwBdId": "4193" - }, - "id": "eth1/94" - }, - { - "eltmIf-items": { - "hwBdId": "4227" - }, - "id": "eth1/128" - }, - { - "eltmIf-items": { - "hwBdId": "4131" - }, - "id": "eth1/32" - }, - { - "eltmIf-items": { - "hwBdId": "4206" - }, - "id": "eth1/107" - }, - { - "eltmIf-items": { - "hwBdId": "4153" - }, - "id": "eth1/54" - }, - { - "eltmIf-items": { - "hwBdId": "4186" - }, - "id": "eth1/87" - }, - { - "eltmIf-items": { - "hwBdId": "4205" - }, - "id": "eth1/106" - }, - { - "eltmIf-items": { - "hwBdId": "4189" - }, - "id": "eth1/90" - }, - { - "eltmIf-items": { - "hwBdId": "4141" - }, - "id": "eth1/42" - }, - { - "eltmIf-items": { - "hwBdId": "4109" - }, - "id": "eth1/10" - }, - { - "eltmIf-items": { - "hwBdId": "4195" - }, - "id": "eth1/96" - }, - { - "eltmIf-items": { - "hwBdId": "4222" - }, - "id": "eth1/123" - }, - { - "eltmIf-items": { - "hwBdId": "4100" - }, - "id": "eth1/1" - }, - { - "eltmIf-items": { - "hwBdId": "4182" - }, - "id": "eth1/83" - }, - { - "eltmIf-items": { - "hwBdId": "4213" - }, - "id": "eth1/114" - }, - { - "eltmIf-items": { - "hwBdId": "4106" - }, - "id": "eth1/7" - }, - { - "eltmIf-items": { - "hwBdId": "4203" - }, - "id": "eth1/104" - }, - { - "eltmIf-items": { - "hwBdId": "4199" - }, - "id": "eth1/100" - }, - { - "eltmIf-items": { - "hwBdId": "4110" - }, - "id": "eth1/11" - }, - { - "eltmIf-items": { - "hwBdId": "4154" - }, - "id": "eth1/55" - }, - { - "eltmIf-items": { - "hwBdId": "4101" - }, - "id": "eth1/2" - }, - { - "eltmIf-items": { - "hwBdId": "4145" - }, - "id": "eth1/46" - }, - { - "eltmIf-items": { - "hwBdId": "4126" - }, - "id": "eth1/27" - }, - { - "eltmIf-items": { - "hwBdId": "4166" - }, - "id": "eth1/67" - }, - { - "eltmIf-items": { - "hwBdId": "4130" - }, - "id": "eth1/31" - }, - { - "eltmIf-items": { - "hwBdId": "4128" - }, - "id": "eth1/29" - }, - { - "eltmIf-items": { - "hwBdId": "4102" - }, - "id": "eth1/3" - }, - { - "eltmIf-items": { - "hwBdId": "4180" - }, - "id": "eth1/81" - }, - { - "eltmIf-items": { - "hwBdId": "4207" - }, - "id": "eth1/108" - }, - { - "eltmIf-items": { - "hwBdId": "4192" - }, - "id": "eth1/93" - }, - { - "eltmIf-items": { - "hwBdId": "4138" - }, - "id": "eth1/39" - }, - { - "eltmIf-items": { - "hwBdId": "4177" - }, - "id": "eth1/78" - }, - { - "eltmIf-items": { - "hwBdId": "4111" - }, - "id": "eth1/12" - }, - { - "eltmIf-items": { - "hwBdId": "4104" - }, - "id": "eth1/5" - }, - { - "eltmIf-items": { - "hwBdId": "4117" - }, - "id": "eth1/18" - }, - { - "eltmIf-items": { - "hwBdId": "4214" - }, - "id": "eth1/115" - }, - { - "eltmIf-items": { - "hwBdId": "4127" - }, - "id": "eth1/28" - }, - { - "eltmIf-items": { - "hwBdId": "4223" - }, - "id": "eth1/124" - }, - { - "eltmIf-items": { - "hwBdId": "4196" - }, - "id": "eth1/97" - }, - { - "eltmIf-items": { - "hwBdId": "4219" - }, - "id": "eth1/120" - }, - { - "eltmIf-items": { - "hwBdId": "4170" - }, - "id": "eth1/71" - }, - { - "eltmIf-items": { - "hwBdId": "4188" - }, - "id": "eth1/89" - }, - { - "eltmIf-items": { - "hwBdId": "4169" - }, - "id": "eth1/70" - }, - { - "eltmIf-items": { - "hwBdId": "4121" - }, - "id": "eth1/22" - }, - { - "eltmIf-items": { - "hwBdId": "4171" - }, - "id": "eth1/72" - }, - { - "eltmIf-items": { - "hwBdId": "4158" - }, - "id": "eth1/59" - }, - { - "eltmIf-items": { - "hwBdId": "4191" - }, - "id": "eth1/92" - }, - { - "eltmIf-items": { - "hwBdId": "4174" - }, - "id": "eth1/75" - }, - { - "eltmIf-items": { - "hwBdId": "4143" - }, - "id": "eth1/44" - }, - { - "eltmIf-items": { - "hwBdId": "4211" - }, - "id": "eth1/112" - }, - { - "eltmIf-items": { - "hwBdId": "4178" - }, - "id": "eth1/79" - }, - { - "eltmIf-items": { - "hwBdId": "4200" - }, - "id": "eth1/101" - }, - { - "eltmIf-items": { - "hwBdId": "4112" - }, - "id": "eth1/13" - }, - { - "eltmIf-items": { - "hwBdId": "4139" - }, - "id": "eth1/40" - }, - { - "eltmIf-items": { - "hwBdId": "4116" - }, - "id": "eth1/17" - }, - { - "eltmIf-items": { - "hwBdId": "4146" - }, - "id": "eth1/47" - }, - { - "eltmIf-items": { - "hwBdId": "4212" - }, - "id": "eth1/113" - }, - { - "eltmIf-items": { - "hwBdId": "4136" - }, - "id": "eth1/37" - }, - { - "eltmIf-items": { - "hwBdId": "4163" - }, - "id": "eth1/64" - }, - { - "eltmIf-items": { - "hwBdId": "4107" - }, - "id": "eth1/8" - }, - { - "eltmIf-items": { - "hwBdId": "4122" - }, - "id": "eth1/23" - }, - { - "eltmIf-items": { - "hwBdId": "4108" - }, - "id": "eth1/9" - }, - { - "eltmIf-items": { - "hwBdId": "4198" - }, - "id": "eth1/99" - }, - { - "eltmIf-items": { - "hwBdId": "4119" - }, - "id": "eth1/20" - }, - { - "eltmIf-items": { - "hwBdId": "4150" - }, - "id": "eth1/51" - }, - { - "eltmIf-items": { - "hwBdId": "4183" - }, - "id": "eth1/84" - }, - { - "eltmIf-items": { - "hwBdId": "4221" - }, - "id": "eth1/122" - }, - { - "eltmIf-items": { - "hwBdId": "4209" - }, - "id": "eth1/110" - }, - { - "eltmIf-items": { - "hwBdId": "4187" - }, - "id": "eth1/88" - }, - { - "eltmIf-items": { - "hwBdId": "4164" - }, - "id": "eth1/65" - }, - { - "eltmIf-items": { - "hwBdId": "4201" - }, - "id": "eth1/102" - }, - { - "eltmIf-items": { - "hwBdId": "4151" - }, - "id": "eth1/52" - }, - { - "eltmIf-items": { - "hwBdId": "4202" - }, - "id": "eth1/103" - }, - { - "eltmIf-items": { - "hwBdId": "4113" - }, - "id": "eth1/14" - }, - { - "eltmIf-items": { - "hwBdId": "4144" - }, - "id": "eth1/45" - }, - { - "eltmIf-items": { - "hwBdId": "4167" - }, - "id": "eth1/68" - }, - { - "eltmIf-items": { - "hwBdId": "4217" - }, - "id": "eth1/118" - }, - { - "eltmIf-items": { - "hwBdId": "4162" - }, - "id": "eth1/63" - }, - { - "eltmIf-items": { - "hwBdId": "4165" - }, - "id": "eth1/66" - }, - { - "eltmIf-items": { - "hwBdId": "4124" - }, - "id": "eth1/25" - }, - { - "eltmIf-items": { - "hwBdId": "4204" - }, - "id": "eth1/105" - }, - { - "eltmIf-items": { - "hwBdId": "4140" - }, - "id": "eth1/41" - }, - { - "eltmIf-items": { - "hwBdId": "4218" - }, - "id": "eth1/119" - }, - { - "eltmIf-items": { - "hwBdId": "4210" - }, - "id": "eth1/111" - }, - { - "eltmIf-items": { - "hwBdId": "4208" - }, - "id": "eth1/109" - }, - { - "eltmIf-items": { - "hwBdId": "4157" - }, - "id": "eth1/58" - }, - { - "eltmIf-items": { - "hwBdId": "4176" - }, - "id": "eth1/77" - }, - { - "eltmIf-items": { - "hwBdId": "4168" - }, - "id": "eth1/69" - }, - { - "eltmIf-items": { - "hwBdId": "4115" - }, - "id": "eth1/16" - }, - { - "eltmIf-items": { - "hwBdId": "4135" - }, - "id": "eth1/36" - }, - { - "eltmIf-items": { - "hwBdId": "4105" - }, - "id": "eth1/6" - }, - { - "eltmIf-items": { - "hwBdId": "4118" - }, - "id": "eth1/19" - } - ] - } - }, - "latencymonitor-items": { - "latencyMonitorState": "Disable", - "latencyMonitorThreshholdAvg": "1000000", - "latencyMonitorThreshholdMax": "2000000", - "sampling": "3" - }, - "multicastMaxLimit": "4096", - "multicastServiceReflectPort": "0", - "pcLbAlgo": "PC_LB_ALGO_DLB", - "pfcmmubuffer-items": { - "bufferReservation": "5", - "mmuBufferState": "disable" - }, - "profileMode": "Default", - "profileTuple": "Disable", - "pstatCfg": "PSTAT_DISABLE", - "qosMinBuffer": "all", - "routingMode": "DEFAULT", - "switchingFabricSpeed": "DEFAULT", - "switchingMode": "DEFAULT", - "tcamRegion-items": { - "eRaclSize": "768", - "ingFlowSize": "0", - "vpcConvergenceSize": "512" - }, - "urpfStatus": "disabled" - }, - "poe-items": { - "adminSt": "enabled", - "operSt": "enabled" - }, - "procsys-items": { - "maxMemAlloc": "5282520", - "name": "sysinfo", - "syscore-items": { - "name": "syscore", - "numOfCores": "0" - }, - "syscpusummary-items": { - "idle": "96.391747", - "kernel": "2.577320", - "name": "syscpusummary", - "syscpu-items": { - "SysCpu-list": [ - { - "id": "cpu3", - "idle": "100.000000", - "kernel": "0.000000", - "name": "syscpu", - "user": "0.000000" - }, - { - "id": "cpu2", - "idle": "97.029701", - "kernel": "1.980198", - "name": "syscpu", - "user": "0.990099" - }, - { - "id": "cpu0", - "idle": "94.949493", - "kernel": "3.030303", - "name": "syscpu", - "user": "2.020202" - }, - { - "id": "cpu1", - "idle": "92.134834", - "kernel": "6.741573", - "name": "syscpu", - "user": "1.123595" - } - ] - }, - "syscpuhistory-items": { - "SysCpuHistory-list": [ - { - "durationname": "last60seconds", - "name": "syscpuhistory", - "usage": "27,4,2,2,3,3,10,2,6,2,5,3,4,2,4,7,2,6,3,3,20,4,3,4,6,5,2,2,5,8,6,3,3,6,6,2,4,3,3,2,5,2,3,9,3,4,3,2,1,2,2,2,9,3,1,1,3,2,2,3" - } - ] - }, - "user": "1.030928" - }, - "sysload-items": { - "loadAverage15m": "0.300000", - "loadAverage1m": "0.290000", - "loadAverage5m": "0.360000", - "name": "sysload", - "runProc": "2", - "totalProc": "329" - }, - "sysmem-items": { - "free": "2751980", - "memstatus": "OK", - "name": "sysmem", - "total": "8035024", - "used": "5283044" - }, - "upTs": "14 days(s) 20 hour(s) 55 minute(s) 25 second(s) " - }, - "qosm-items": { - "adminSt": "enabled", - "classp-items": { - "Class-list": [ - { - "admin": "enabled", - "buffer-items": { - "descr": "", - "min": "0", - "name": "" - }, - "cong-items": { - "algo": "wred", - "descr": "", - "ecn": "disabled", - "name": "" - }, - "descr": "", - "mtu": "9216", - "name": "", - "operSt": "disabled", - "qosGrp": "control-plane", - "queue-items": { - "descr": "", - "limit": "1500", - "meth": "dynamic", - "name": "" - }, - "sched-items": { - "bw": "0", - "descr": "", - "meth": "sp", - "name": "" - } - }, - { - "admin": "enabled", - "buffer-items": { - "descr": "", - "min": "0", - "name": "" - }, - "cong-items": { - "algo": "wred", - "descr": "", - "ecn": "disabled", - "name": "" - }, - "descr": "", - "mtu": "9216", - "name": "", - "operSt": "disabled", - "qosGrp": "span", - "queue-items": { - "descr": "", - "limit": "1500", - "meth": "dynamic", - "name": "" - }, - "sched-items": { - "bw": "1", - "descr": "", - "meth": "wrr", - "name": "" - } - }, - { - "admin": "enabled", - "buffer-items": { - "descr": "", - "min": "0", - "name": "" - }, - "cong-items": { - "algo": "wred", - "descr": "", - "ecn": "disabled", - "name": "" - }, - "descr": "", - "mtu": "9216", - "name": "", - "operSt": "disabled", - "qosGrp": "level3", - "queue-items": { - "descr": "", - "limit": "1500", - "meth": "dynamic", - "name": "" - }, - "sched-items": { - "bw": "20", - "descr": "", - "meth": "wrr", - "name": "" - } - } - ] - }, - "name": "", - "operSt": "enabled" - }, - "retry-items": { - "adminSt": "enabled", - "name": "", - "operSt": "enabled" - }, - "rpm-items": { - "adminSt": "enabled", - "name": "", - "operSt": "enabled" - }, - "scrtchpdrt-items": { - "rpmcli-items": { - "adminSt": "enabled", - "name": "", - "operSt": "enabled" - }, - "vlanmgrcli-items": { - "adminSt": "enabled", - "inst-items": { - "adminSt": "enabled", - "ctrl": "", - "name": "", - "vxlanNativeVlans": "true" - }, - "name": "", - "operSt": "enabled" - } - }, - "serial": "970MUM0NTLV", - "showversion-items": { - "activePackage": "", - "biosCompileTime": "", - "biosVersion": "", - "bootflashSize": "3509454", - "copyRight": "Cisco Nexus Operating System (NX-OS) Software\nTAC support: http://www.cisco.com/tac\nDocuments: http://www.cisco.com/en/US/products/ps9372/tsd_products_support_series_home.html\nCopyright (c) 2002-2018, Cisco Systems, Inc. All rights reserved.\nThe copyrights to certain works contained herein are owned by\nother third parties and are used and distributed under license.\nSome parts of this software are covered under the GNU Public\nLicense. A copy of the license is available at\nhttp://www.gnu.org/licenses/gpl.html.\n\nNexus 9000v is a demo version of the Nexus Operating System\n", - "kernelUptime": "14 days(s) 20 hour(s) 55 minute(s) 27 second(s) ", - "lastResetReason": "Unknown", - "lastResetService": "", - "lastResetSysVersion": "", - "lastResetTime": "", - "nxosCompileTime": " 11/4/2018 21:00:00", - "nxosImageFile": "bootflash:///nxos.9.2.2.bin", - "nxosVersion": "9.2(2)", - "plugin": "Core Plugin, Ethernet Plugin" - }, - "snmp-items": { - "adminSt": "enabled", - "inst-items": { - "adminSt": "disabled", - "lclUser-items": { - "LocalUser-list": [ - { - "authtype": "md5", - "group-items": { - "UserGroup-list": [ - { - "groupName": "network-admin" - } - ] - }, - "isenforcepriv": "false", - "islocalizedkey": "false", - "privtype": "des", - "userName": "bthornto", - "usrengineIdlen": "0" - }, - { - "authtype": "md5", - "group-items": { - "UserGroup-list": [ - { - "groupName": "network-admin" - } - ] - }, - "isenforcepriv": "false", - "islocalizedkey": "false", - "privtype": "des", - "userName": "admin", - "usrengineIdlen": "0" - } - ] - }, - "name": "default", - "rmon-items": { - "event-items": { - "Event-list": [ - { - "description": "CRITICAL(2)", - "log": "no", - "num": "2", - "owner": "PMON@CRITICAL" - }, - { - "description": "INFORMATION(5)", - "log": "no", - "num": "5", - "owner": "PMON@INFO" - }, - { - "description": "WARNING(4)", - "log": "no", - "num": "4", - "owner": "PMON@WARNING" - }, - { - "description": "FATAL(1)", - "log": "no", - "num": "1", - "owner": "PMON@FATAL" - }, - { - "description": "ERROR(3)", - "log": "no", - "num": "3", - "owner": "PMON@ERROR" - } - ] - } - }, - "traps-items": { - "aaa-items": { - "serverstatechange-items": { - "trapstatus": "disable" - } - }, - "bfd-items": { - "sessiondown-items": { - "trapstatus": "disable" - }, - "sessionup-items": { - "trapstatus": "disable" - } - }, - "bridge-items": { - "newroot-items": { - "trapstatus": "disable" - }, - "topologychange-items": { - "trapstatus": "disable" - } - }, - "callhome-items": { - "eventnotify-items": { - "trapstatus": "disable" - }, - "smtpsendfail-items": { - "trapstatus": "disable" - } - }, - "cfs-items": { - "mergefailure-items": { - "trapstatus": "disable" - }, - "statechangenotif-items": { - "trapstatus": "disable" - } - }, - "config-items": { - "ccmCLIRunningConfigChanged-items": { - "trapstatus": "disable" - } - }, - "entity-items": { - "cefcMIBEnableStatusNotification-items": { - "trapstatus": "enable" - }, - "entityfanstatuschange-items": { - "trapstatus": "enable" - }, - "entitymibchange-items": { - "trapstatus": "enable" - }, - "entitymoduleinserted-items": { - "trapstatus": "enable" - }, - "entitymoduleremoved-items": { - "trapstatus": "enable" - }, - "entitymodulestatuschange-items": { - "trapstatus": "enable" - }, - "entitypoweroutchange-items": { - "trapstatus": "enable" - }, - "entitypowerstatuschange-items": { - "trapstatus": "enable" - }, - "entitysensor-items": { - "trapstatus": "enable" - }, - "entityunrecognisedmodule-items": { - "trapstatus": "enable" - } - }, - "featurecontrol-items": { - "FeatureOpStatusChange-items": { - "trapstatus": "disable" - }, - "ciscoFeatOpStatusChange-items": { - "trapstatus": "disable" - } - }, - "generic-items": { - "coldStart-items": { - "trapstatus": "enable" - }, - "warmStart-items": { - "trapstatus": "enable" - } - }, - "hsrp-items": { - "statechange-items": { - "trapstatus": "disable" - } - }, - "ip-items": { - "sla-items": { - "trapstatus": "disable" - } - }, - "license-items": { - "notifylicenseexpiry-items": { - "trapstatus": "enable" - }, - "notifylicenseexpirywarning-items": { - "trapstatus": "enable" - }, - "notifylicensefilemissing-items": { - "trapstatus": "enable" - }, - "notifynolicenseforfeature-items": { - "trapstatus": "enable" - } - }, - "link-items": { - "cerrdisableinterfaceeventrev1-items": { - "trapstatus": "enable" - }, - "cieLinkDown-items": { - "trapstatus": "enable" - }, - "cieLinkUp-items": { - "trapstatus": "enable" - }, - "ciscoxcvrmonstatuschg-items": { - "trapstatus": "disable" - }, - "cmnmacmovenotification-items": { - "trapstatus": "enable" - }, - "delayedlinkstatechange-items": { - "trapstatus": "enable" - }, - "extendedlinkDown-items": { - "trapstatus": "enable" - }, - "extendedlinkUp-items": { - "trapstatus": "enable" - }, - "linkDown-items": { - "trapstatus": "enable" - }, - "linkUp-items": { - "trapstatus": "enable" - } - }, - "lldp-items": { - "lldpRemTablesChange-items": { - "trapstatus": "disable" - } - }, - "mmode-items": { - "cseMaintModeChangeNotify-items": { - "trapstatus": "disable" - }, - "cseNormalModeChangeNotify-items": { - "trapstatus": "disable" - } - }, - "msdp-items": { - "msdpBackwardTransition-items": { - "trapstatus": "disable" - } - }, - "pim-items": { - "pimNeighborLoss-items": { - "trapstatus": "disable" - } - }, - "poe-items": { - "controlenable-items": { - "trapstatus": "disable" - }, - "policenotify-items": { - "trapstatus": "disable" - } - }, - "portsecurity-items": { - "accesssecuremacviolation-items": { - "trapstatus": "disable" - }, - "trunksecuremacviolation-items": { - "trapstatus": "disable" - } - }, - "rf-items": { - "redundancyframework-items": { - "trapstatus": "enable" - } - }, - "rmon-items": { - "fallingAlarm-items": { - "trapstatus": "enable" - }, - "hcFallingAlarm-items": { - "trapstatus": "enable" - }, - "hcRisingAlarm-items": { - "trapstatus": "enable" - }, - "risingAlarm-items": { - "trapstatus": "enable" - } - }, - "snmp-items": { - "authentication-items": { - "trapstatus": "disable" - } - }, - "stormcontrol-items": { - "cpscEventRev1-items": { - "trapstatus": "enable" - }, - "traprate": "0" - }, - "stpx-items": { - "inconsistency-items": { - "trapstatus": "disable" - }, - "loopinconsistency-items": { - "trapstatus": "disable" - }, - "rootinconsistency-items": { - "trapstatus": "disable" - } - }, - "sysmgr-items": { - "cseFailSwCoreNotifyExtended-items": { - "trapstatus": "disable" - } - }, - "system-items": { - "Clockchangenotification-items": { - "trapstatus": "disable" - } - }, - "upgrade-items": { - "UpgradeJobStatusNotify-items": { - "trapstatus": "enable" - } - }, - "vsan-items": { - "vsanPortMembershipChange-items": { - "trapstatus": "disable" - }, - "vsanStatusChange-items": { - "trapstatus": "disable" - } - }, - "vtp-items": { - "notifs-items": { - "trapstatus": "disable" - }, - "vlancreate-items": { - "trapstatus": "disable" - }, - "vlandelete-items": { - "trapstatus": "disable" - } - } - } - }, - "operErr": "", - "operSt": "enabled" - }, - "span-items": { - "adminSt": "enabled", - "name": "", - "operSt": "enabled" - }, - "stp-items": { - "adminSt": "enabled", - "inst-items": { - "adminSt": "enabled", - "bridge": "enabled", - "ctrl": "normal", - "fcoe": "enabled", - "if-items": { - "If-list": [ - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/111", - "linkType": "auto", - "mode": "default", - "name": "eth1/111", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/36", - "linkType": "auto", - "mode": "default", - "name": "eth1/36", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/60", - "linkType": "auto", - "mode": "default", - "name": "eth1/60", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/110", - "linkType": "auto", - "mode": "default", - "name": "eth1/110", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/97", - "linkType": "auto", - "mode": "default", - "name": "eth1/97", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/37", - "linkType": "auto", - "mode": "default", - "name": "eth1/37", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/13", - "linkType": "auto", - "mode": "default", - "name": "eth1/13", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/107", - "linkType": "auto", - "mode": "default", - "name": "eth1/107", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/15", - "linkType": "auto", - "mode": "default", - "name": "eth1/15", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/103", - "linkType": "auto", - "mode": "default", - "name": "eth1/103", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/12", - "linkType": "auto", - "mode": "default", - "name": "eth1/12", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/96", - "linkType": "auto", - "mode": "default", - "name": "eth1/96", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/124", - "linkType": "auto", - "mode": "default", - "name": "eth1/124", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/101", - "linkType": "auto", - "mode": "default", - "name": "eth1/101", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/90", - "linkType": "auto", - "mode": "default", - "name": "eth1/90", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/69", - "linkType": "auto", - "mode": "default", - "name": "eth1/69", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/120", - "linkType": "auto", - "mode": "default", - "name": "eth1/120", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/72", - "linkType": "auto", - "mode": "default", - "name": "eth1/72", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/113", - "linkType": "auto", - "mode": "default", - "name": "eth1/113", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/22", - "linkType": "auto", - "mode": "default", - "name": "eth1/22", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/29", - "linkType": "auto", - "mode": "default", - "name": "eth1/29", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/33", - "linkType": "auto", - "mode": "default", - "name": "eth1/33", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/78", - "linkType": "auto", - "mode": "default", - "name": "eth1/78", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/25", - "linkType": "auto", - "mode": "default", - "name": "eth1/25", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/65", - "linkType": "auto", - "mode": "default", - "name": "eth1/65", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/44", - "linkType": "auto", - "mode": "default", - "name": "eth1/44", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/59", - "linkType": "auto", - "mode": "default", - "name": "eth1/59", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/40", - "linkType": "auto", - "mode": "default", - "name": "eth1/40", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/117", - "linkType": "auto", - "mode": "default", - "name": "eth1/117", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/104", - "linkType": "auto", - "mode": "default", - "name": "eth1/104", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/42", - "linkType": "auto", - "mode": "default", - "name": "eth1/42", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/61", - "linkType": "auto", - "mode": "default", - "name": "eth1/61", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/86", - "linkType": "auto", - "mode": "default", - "name": "eth1/86", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/49", - "linkType": "auto", - "mode": "default", - "name": "eth1/49", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/21", - "linkType": "auto", - "mode": "default", - "name": "eth1/21", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/4", - "linkType": "auto", - "mode": "default", - "name": "eth1/4", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/87", - "linkType": "auto", - "mode": "default", - "name": "eth1/87", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/95", - "linkType": "auto", - "mode": "default", - "name": "eth1/95", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/9", - "linkType": "auto", - "mode": "default", - "name": "eth1/9", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/19", - "linkType": "auto", - "mode": "default", - "name": "eth1/19", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/14", - "linkType": "auto", - "mode": "default", - "name": "eth1/14", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/53", - "linkType": "auto", - "mode": "default", - "name": "eth1/53", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/46", - "linkType": "auto", - "mode": "default", - "name": "eth1/46", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/10", - "linkType": "auto", - "mode": "default", - "name": "eth1/10", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/126", - "linkType": "auto", - "mode": "default", - "name": "eth1/126", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/62", - "linkType": "auto", - "mode": "default", - "name": "eth1/62", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/17", - "linkType": "auto", - "mode": "default", - "name": "eth1/17", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/50", - "linkType": "auto", - "mode": "default", - "name": "eth1/50", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/84", - "linkType": "auto", - "mode": "default", - "name": "eth1/84", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/32", - "linkType": "auto", - "mode": "default", - "name": "eth1/32", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/35", - "linkType": "auto", - "mode": "default", - "name": "eth1/35", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/70", - "linkType": "auto", - "mode": "default", - "name": "eth1/70", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/81", - "linkType": "auto", - "mode": "default", - "name": "eth1/81", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/67", - "linkType": "auto", - "mode": "default", - "name": "eth1/67", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/48", - "linkType": "auto", - "mode": "default", - "name": "eth1/48", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/31", - "linkType": "auto", - "mode": "default", - "name": "eth1/31", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/75", - "linkType": "auto", - "mode": "default", - "name": "eth1/75", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/43", - "linkType": "auto", - "mode": "default", - "name": "eth1/43", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/119", - "linkType": "auto", - "mode": "default", - "name": "eth1/119", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/123", - "linkType": "auto", - "mode": "default", - "name": "eth1/123", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/8", - "linkType": "auto", - "mode": "default", - "name": "eth1/8", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/76", - "linkType": "auto", - "mode": "default", - "name": "eth1/76", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/58", - "linkType": "auto", - "mode": "default", - "name": "eth1/58", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/28", - "linkType": "auto", - "mode": "default", - "name": "eth1/28", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/98", - "linkType": "auto", - "mode": "default", - "name": "eth1/98", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/105", - "linkType": "auto", - "mode": "default", - "name": "eth1/105", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/30", - "linkType": "auto", - "mode": "default", - "name": "eth1/30", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/66", - "linkType": "auto", - "mode": "default", - "name": "eth1/66", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/127", - "linkType": "auto", - "mode": "default", - "name": "eth1/127", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/7", - "linkType": "auto", - "mode": "default", - "name": "eth1/7", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/73", - "linkType": "auto", - "mode": "default", - "name": "eth1/73", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/27", - "linkType": "auto", - "mode": "default", - "name": "eth1/27", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/100", - "linkType": "auto", - "mode": "default", - "name": "eth1/100", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/18", - "linkType": "auto", - "mode": "default", - "name": "eth1/18", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/20", - "linkType": "auto", - "mode": "default", - "name": "eth1/20", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/23", - "linkType": "auto", - "mode": "default", - "name": "eth1/23", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/54", - "linkType": "auto", - "mode": "default", - "name": "eth1/54", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/45", - "linkType": "auto", - "mode": "default", - "name": "eth1/45", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/106", - "linkType": "auto", - "mode": "default", - "name": "eth1/106", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/91", - "linkType": "auto", - "mode": "default", - "name": "eth1/91", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/116", - "linkType": "auto", - "mode": "default", - "name": "eth1/116", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/1", - "linkType": "auto", - "mode": "default", - "name": "eth1/1", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/63", - "linkType": "auto", - "mode": "default", - "name": "eth1/63", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/57", - "linkType": "auto", - "mode": "default", - "name": "eth1/57", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/79", - "linkType": "auto", - "mode": "default", - "name": "eth1/79", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/85", - "linkType": "auto", - "mode": "default", - "name": "eth1/85", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/125", - "linkType": "auto", - "mode": "default", - "name": "eth1/125", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/122", - "linkType": "auto", - "mode": "default", - "name": "eth1/122", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/6", - "linkType": "auto", - "mode": "default", - "name": "eth1/6", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/74", - "linkType": "auto", - "mode": "default", - "name": "eth1/74", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/16", - "linkType": "auto", - "mode": "default", - "name": "eth1/16", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/51", - "linkType": "auto", - "mode": "default", - "name": "eth1/51", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/80", - "linkType": "auto", - "mode": "default", - "name": "eth1/80", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/3", - "linkType": "auto", - "mode": "default", - "name": "eth1/3", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/115", - "linkType": "auto", - "mode": "default", - "name": "eth1/115", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/38", - "linkType": "auto", - "mode": "default", - "name": "eth1/38", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/108", - "linkType": "auto", - "mode": "default", - "name": "eth1/108", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/121", - "linkType": "auto", - "mode": "default", - "name": "eth1/121", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/92", - "linkType": "auto", - "mode": "default", - "name": "eth1/92", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/88", - "linkType": "auto", - "mode": "default", - "name": "eth1/88", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/68", - "linkType": "auto", - "mode": "default", - "name": "eth1/68", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/71", - "linkType": "auto", - "mode": "default", - "name": "eth1/71", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/94", - "linkType": "auto", - "mode": "default", - "name": "eth1/94", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/93", - "linkType": "auto", - "mode": "default", - "name": "eth1/93", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/41", - "linkType": "auto", - "mode": "default", - "name": "eth1/41", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/52", - "linkType": "auto", - "mode": "default", - "name": "eth1/52", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/102", - "linkType": "auto", - "mode": "default", - "name": "eth1/102", - "priority": "128" - }, - { - "adminSt": "disabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/2", - "linkType": "auto", - "mode": "default", - "name": "eth1/2", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/11", - "linkType": "auto", - "mode": "default", - "name": "eth1/11", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/128", - "linkType": "auto", - "mode": "default", - "name": "eth1/128", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/89", - "linkType": "auto", - "mode": "default", - "name": "eth1/89", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/83", - "linkType": "auto", - "mode": "default", - "name": "eth1/83", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/26", - "linkType": "auto", - "mode": "default", - "name": "eth1/26", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/24", - "linkType": "auto", - "mode": "default", - "name": "eth1/24", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/34", - "linkType": "auto", - "mode": "default", - "name": "eth1/34", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/118", - "linkType": "auto", - "mode": "default", - "name": "eth1/118", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/55", - "linkType": "auto", - "mode": "default", - "name": "eth1/55", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/109", - "linkType": "auto", - "mode": "default", - "name": "eth1/109", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/99", - "linkType": "auto", - "mode": "default", - "name": "eth1/99", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/64", - "linkType": "auto", - "mode": "default", - "name": "eth1/64", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/112", - "linkType": "auto", - "mode": "default", - "name": "eth1/112", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/77", - "linkType": "auto", - "mode": "default", - "name": "eth1/77", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/47", - "linkType": "auto", - "mode": "default", - "name": "eth1/47", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/114", - "linkType": "auto", - "mode": "default", - "name": "eth1/114", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/5", - "linkType": "auto", - "mode": "default", - "name": "eth1/5", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/56", - "linkType": "auto", - "mode": "default", - "name": "eth1/56", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/39", - "linkType": "auto", - "mode": "default", - "name": "eth1/39", - "priority": "128" - }, - { - "adminSt": "enabled", - "bpdufilter": "default", - "bpduguard": "default", - "cost": "0", - "ctrl": "", - "guard": "default", - "id": "eth1/82", - "linkType": "auto", - "mode": "default", - "name": "eth1/82", - "priority": "128" - } - ] - }, - "l2GStpDomId": "1024", - "loopguard": "disabled", - "mode": "pvrst", - "mstent-items": { - "adminSt": "disabled", - "fwdTime": "15", - "helloTime": "2", - "maxAge": "20", - "maxHops": "20", - "mst-items": { - "MstDom-list": [ - { - "bridgeAddress": "00:00:00:00:00:00", - "bridgePriority": "0", - "cfgSt": "enabled", - "diameter": "2", - "id": "0", - "priority": "32768", - "root": "primary", - "rootAddress": "00:00:00:00:00:00", - "rootMode": "disabled", - "rootPathCost": "0", - "rootPort": "unspecified", - "rootPortNumber": "0", - "rootPortPriority": "0", - "rootPriority": "0", - "rootType": "none", - "vlanRange": "1-4094" - } - ] - }, - "operErr": "", - "rev": "0", - "simulate": "enabled" - }, - "operErr": "", - "pathcostOp": "short", - "vlan-items": { - "Vlan-list": [ - { - "adminSt": "enabled", - "bridgeAddress": "52:54:00:5A:F8:BC", - "bridgePriority": "32769", - "diameter": "2", - "fwdTime": "15", - "helloTime": "2", - "id": "1", - "if-items": { - "VlanIf-list": [ - { - "bound": "false", - "designatedBridgeAddress": "52:54:00:E6:DC:4D", - "designatedBridgePriority": "32768", - "designatedPortNumber": "11", - "designatedPortPriority": "128", - "designatedRootAddress": "52:54:00:0F:09:2F", - "designatedRootCost": "100", - "designatedRootPriority": "32768", - "dispute": "false", - "id": "eth1/1", - "inconsistent": "false", - "mode": "normal", - "operBpdufilter": "false", - "operBpduguard": "false", - "operLoopguard": "false", - "operPortfast": "false", - "p2p": "true", - "peer": "true", - "portNumber": "1", - "portPathCost": "4", - "portPriority": "128", - "portRole": "root", - "portState": "forwarding", - "prestd": "false", - "vpcState": "none" - } - ] - }, - "maxAge": "20", - "priority": "32768", - "protocol": "rstp", - "rootAddress": "52:54:00:0F:09:2F", - "rootMode": "disabled", - "rootPathCost": "104", - "rootPort": "eth1/1", - "rootPortNumber": "1", - "rootPortPriority": "128", - "rootPriority": "32768", - "rootType": "none" - } - ] - } - }, - "operSt": "enabled" - }, - "sysmgr-items": { - "adminSt": "0", - "name": "sysmgr", - "operSt": "unknown", - "sysCfg-items": { - "cfgMode": "init", - "operDataMode": "done" - } - }, - "systemTable-items": { - "isControllerConfigured": "false", - "mgmtIp": "192.168.101.14", - "nxdbEnabled": "true", - "purgeDBRequest": "never", - "stTime": "never", - "switchType": "N9K-9000v" - }, - "systemUpTime": "00:00:00:00.000", - "time-items": { - "adminSt": "enabled", - "authSt": "disabled", - "clock": "2020-10-09T18:03:23.489+00:00", - "clockRaw": "1602266603489", - "descr": "", - "flags": "", - "leap": "0", - "logging": "disabled", - "loggingLevel": "critical", - "master": "disabled", - "masterStratum": "8", - "name": "default", - "ownerKey": "", - "ownerTag": "", - "peer": "0", - "poll": "0", - "precision": "0", - "refId": "0.0.0.0", - "refTime": "1970-01-01T00:00:00.000+00:00", - "refTimeRaw": "0", - "rootDelay": "0", - "rootDispersion": "0", - "srvStatus": "0", - "stratum": "0" - }, - "udld-items": { - "adminSt": "enabled", - "operSt": "enabled" - }, - "userext-items": { - "authrealm-items": { - "aaagroup-items": { - "AaaServerGroup-list": [ - { - "name": "radius", - "protocol": "radius" - } - ] - }, - "consoleauth-items": { - "authProtocol": "pap", - "errEn": "false", - "fallback": "yes", - "local": "no", - "none": "no", - "realm": "local" - }, - "consoleauthor-items": { - "ConsoleAuthor-list": [ - { - "authorMethodNone": "false", - "cmdType": "config", - "localRbac": "true", - "name": "Author", - "realm": "tacacs" - }, - { - "authorMethodNone": "false", - "cmdType": "exec", - "localRbac": "true", - "name": "Author", - "realm": "tacacs" - } - ] - }, - "defRolePolicy": "assign-default-role", - "defaultacc-items": { - "accMethodNone": "false", - "localRbac": "true", - "name": "Accounting", - "realm": "local" - }, - "defaultauth-items": { - "authProtocol": "pap", - "errEn": "false", - "fallback": "yes", - "local": "yes", - "none": "no", - "realm": "local" - }, - "defaultauthor-items": { - "DefaultAuthor-list": [ - { - "authorMethodNone": "false", - "cmdType": "config", - "localRbac": "true", - "name": "Author", - "realm": "tacacs" - }, - { - "authorMethodNone": "false", - "cmdType": "exec", - "localRbac": "true", - "name": "Author", - "realm": "tacacs" - } - ] - }, - "loggingLevel": "Error", - "pkisshcert-items": { - "local": "false", - "realm": "local" - }, - "pkisshpubkey-items": { - "local": "false", - "realm": "local" - }, - "radDirectedReq": "no", - "tacDirectedReq": "no" - }, - "domain-items": { - "Domain-list": [ - { - "name": "all" - } - ] - }, - "name": "rootep", - "pkiext-items": { - "webtokendata-items": { - "maximumValidityPeriod": "24", - "sessionRecordFlags": "login,logout,refresh", - "siteFingerprint": "", - "uiIdleTimeoutSeconds": "1200", - "webtokenTimeoutSeconds": "600" - } - }, - "pwdMaxLength": "127", - "pwdMinLength": "8", - "pwdSecureMode": "yes", - "pwdStrengthCheck": "no", - "pwdprofile-items": { - "changeCount": "2", - "changeDuringInterval": "enable", - "changeInterval": "48", - "expirationWarnTime": "15", - "historyCount": "5", - "noChangeInterval": "24" - }, - "radiusext-items": { - "deadtime": "0", - "keyEnc": "0", - "loggingLevel": "Error", - "radiusprovidergroup-items": { - "RadiusProviderGroup-list": [ - { - "deadtime": "0", - "name": "radius", - "snmpIndex": "0", - "vrf": "default" - } - ] - }, - "retries": "1", - "timeout": "5" - }, - "role-items": { - "Role-list": [ - { - "denyIntf": "no", - "denyVLAN": "no", - "denyVRF": "no", - "name": "dev-ops", - "priv": "", - "resetToFactory": "no", - "rolePrivType": "noDataPriv" - }, - { - "denyIntf": "no", - "denyVLAN": "no", - "denyVRF": "no", - "name": "priv-11", - "priv": "", - "resetToFactory": "no", - "rolePrivType": "noDataPriv" - }, - { - "denyIntf": "no", - "denyVLAN": "no", - "denyVRF": "no", - "name": "priv-12", - "priv": "", - "resetToFactory": "no", - "rolePrivType": "noDataPriv" - }, - { - "denyIntf": "no", - "denyVLAN": "no", - "denyVRF": "no", - "name": "network-admin", - "priv": "admin", - "resetToFactory": "no", - "rolePrivType": "writePriv" - }, - { - "denyIntf": "no", - "denyVLAN": "no", - "denyVRF": "no", - "name": "priv-6", - "priv": "", - "resetToFactory": "no", - "rolePrivType": "noDataPriv" - }, - { - "denyIntf": "no", - "denyVLAN": "no", - "denyVRF": "no", - "name": "nxdb-operator", - "priv": "operator", - "resetToFactory": "no", - "rolePrivType": "readPriv" - }, - { - "denyIntf": "no", - "denyVLAN": "no", - "denyVRF": "no", - "name": "priv-1", - "priv": "", - "resetToFactory": "no", - "rolePrivType": "noDataPriv" - }, - { - "denyIntf": "no", - "denyVLAN": "no", - "denyVRF": "no", - "name": "priv-7", - "priv": "", - "resetToFactory": "no", - "rolePrivType": "noDataPriv" - }, - { - "denyIntf": "no", - "denyVLAN": "no", - "denyVRF": "no", - "name": "vdc-admin", - "priv": "admin", - "resetToFactory": "no", - "rolePrivType": "writePriv" - }, - { - "denyIntf": "no", - "denyVLAN": "no", - "denyVRF": "no", - "name": "priv-9", - "priv": "", - "resetToFactory": "no", - "rolePrivType": "noDataPriv" - }, - { - "denyIntf": "no", - "denyVLAN": "no", - "denyVRF": "no", - "name": "priv-4", - "priv": "", - "resetToFactory": "no", - "rolePrivType": "noDataPriv" - }, - { - "denyIntf": "no", - "denyVLAN": "no", - "denyVRF": "no", - "name": "priv-14", - "priv": "", - "resetToFactory": "no", - "rolePrivType": "noDataPriv" - }, - { - "denyIntf": "no", - "denyVLAN": "no", - "denyVRF": "no", - "name": "network-operator", - "priv": "operator", - "resetToFactory": "no", - "rolePrivType": "readPriv" - }, - { - "denyIntf": "no", - "denyVLAN": "no", - "denyVRF": "no", - "name": "vdc-operator", - "priv": "operator", - "resetToFactory": "no", - "rolePrivType": "readPriv" - }, - { - "denyIntf": "no", - "denyVLAN": "no", - "denyVRF": "no", - "name": "priv-5", - "priv": "", - "resetToFactory": "no", - "rolePrivType": "noDataPriv" - }, - { - "denyIntf": "no", - "denyVLAN": "no", - "denyVRF": "no", - "name": "priv-15", - "priv": "", - "resetToFactory": "no", - "rolePrivType": "noDataPriv" - }, - { - "denyIntf": "no", - "denyVLAN": "no", - "denyVRF": "no", - "name": "priv-8", - "priv": "", - "resetToFactory": "no", - "rolePrivType": "noDataPriv" - }, - { - "denyIntf": "no", - "denyVLAN": "no", - "denyVRF": "no", - "name": "priv-3", - "priv": "", - "resetToFactory": "no", - "rolePrivType": "noDataPriv" - }, - { - "denyIntf": "no", - "denyVLAN": "no", - "denyVRF": "no", - "name": "nxdb-admin", - "priv": "admin", - "resetToFactory": "no", - "rolePrivType": "writePriv" - }, - { - "denyIntf": "no", - "denyVLAN": "no", - "denyVRF": "no", - "name": "priv-13", - "priv": "", - "resetToFactory": "no", - "rolePrivType": "noDataPriv" - }, - { - "denyIntf": "no", - "denyVLAN": "no", - "denyVRF": "no", - "name": "priv-0", - "priv": "", - "resetToFactory": "no", - "rolePrivType": "noDataPriv" - }, - { - "denyIntf": "no", - "denyVLAN": "no", - "denyVRF": "no", - "name": "priv-10", - "priv": "", - "resetToFactory": "no", - "rolePrivType": "noDataPriv" - }, - { - "denyIntf": "no", - "denyVLAN": "no", - "denyVRF": "no", - "name": "priv-2", - "priv": "", - "resetToFactory": "no", - "rolePrivType": "noDataPriv" - } - ] - }, - "rtfabricResUserEp-items": { - "RtFabricResUserEp-list": [ - { - "tCl": "fabricSecRelnHolder", - "tDn": "UNRES:uni/fabric/secRelnHolder" - } - ] - }, - "svcPwdRecovery": "yes", - "user-items": { - "User-list": [ - { - "accountStatus": "active", - "allowExpired": "no", - "clearPwdHistory": "no", - "expiration": "never", - "expires": "no", - "name": "bthornto", - "pwdLifeTime": "0", - "userdomain-items": { - "UserDomain-list": [ - { - "name": "all", - "role-items": { - "UserRole-list": [ - { - "name": "network-admin", - "privType": "noDataPriv" - } - ] - } - } - ] - } - }, - { - "accountStatus": "active", - "allowExpired": "no", - "clearPwdHistory": "no", - "expiration": "never", - "expires": "no", - "name": "admin", - "pwdLifeTime": "0", - "userdomain-items": { - "UserDomain-list": [ - { - "name": "all", - "role-items": { - "UserRole-list": [ - { - "name": "network-admin", - "privType": "noDataPriv" - } - ] - } - } - ] - } - } - ] - } - }, - "vlanmgr-items": { - "adminSt": "0", - "inst-items": { - "adminSt": "0", - "ctrl": "", - "name": "inst", - "vdcId": "1" - }, - "name": "vlanmgr", - "operSt": "unknown" - }, - "vrfTable-items": { - "vrf-items": { - "VrfEntry-list": [ - { - "ctrlrId": "0", - "genExtraRt": "false", - "name": "default", - "shdwTemplateName": "", - "shdwVrfGenName": "", - "templateStatus": "inactive" - } - ] - } - }, - "vrrp-items": { - "adminSt": "enabled", - "operSt": "enabled" - }, - "xmlns": "http://cisco.com/ns/yang/cisco-nx-os-device" - } -} diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/module_utils/test_argspec_validate.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/module_utils/test_argspec_validate.py deleted file mode 100644 index 6e689ba8..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/module_utils/test_argspec_validate.py +++ /dev/null @@ -1,157 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2020 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - AnsibleArgSpecValidator, -) - -from .fixtures.docstring import DOCUMENTATION - - -class TestSortList(unittest.TestCase): - def test_simple_pass(self): - data = {"param_str": "string"} - aav = AnsibleArgSpecValidator( - data=data, - schema=DOCUMENTATION, - schema_format="doc", - schema_conditionals={}, - name="test_action", - ) - valid, errors, _updated_data = aav.validate() - self.assertTrue(valid) - if not errors: - errors = None - self.assertEqual(errors, None) - - def test_simple_defaults(self): - data = {"param_str": "string"} - aav = AnsibleArgSpecValidator( - data=data, - schema=DOCUMENTATION, - schema_format="doc", - schema_conditionals={}, - name="test_action", - ) - expected = { - "param_str": "string", - "param_default": True, - "params_bool": None, - "params_dict": None, - } - valid, errors, updated_data = aav.validate() - self.assertTrue(valid) - if not errors: - errors = None - self.assertEqual(errors, None) - self.assertEqual(expected, updated_data) - - def test_simple_fail(self): - data = {} - aav = AnsibleArgSpecValidator( - data=data, - schema=DOCUMENTATION, - schema_format="doc", - schema_conditionals={}, - name="test_action", - ) - valid, errors, _updated_data = aav.validate() - self.assertFalse(valid) - self.assertIn("missing required arguments: param_str", errors) - - def test_simple_fail_no_name(self): - data = {} - aav = AnsibleArgSpecValidator( - data=data, - schema=DOCUMENTATION, - schema_format="doc", - schema_conditionals={}, - ) - valid, errors, _updated_data = aav.validate() - self.assertFalse(valid) - self.assertIn("missing required arguments: param_str", errors) - - def test_not_doc(self): - data = {"param_str": "string"} - aav = AnsibleArgSpecValidator( - data=data, - schema={"argument_spec": {"param_str": {"type": "str"}}}, - schema_format="argspec", - name="test_action", - ) - valid, errors, _updated_data = aav.validate() - self.assertTrue(valid) - if not errors: - errors = None - self.assertEqual(errors, None) - - def test_schema_conditional(self): - data = {"param_str": "string"} - aav = AnsibleArgSpecValidator( - data=data, - schema=DOCUMENTATION, - schema_format="doc", - schema_conditionals={"required_together": [["param_str", "param_bool"]]}, - name="test_action", - ) - valid, errors, _updated_data = aav.validate() - self.assertFalse(valid) - self.assertIn("parameters are required together: param_str, param_bool", errors) - - def test_unsupported_param(self): - data = {"param_str": "string", "not_valid": "string"} - aav = AnsibleArgSpecValidator( - data=data, - schema=DOCUMENTATION, - schema_format="doc", - name="test_action", - # other_args={'bypass_checks': True}, - ) - valid, errors, _updated_data = aav.validate() - self.assertFalse(valid) - if isinstance(errors, list): - # for ansibleargspecvalidator 2.11 its returning errors as list - self.assertIn("not_valid. Supported parameters include:", errors[0]) - else: - self.assertIn( - "Unsupported parameters for 'test_action' module: not_valid", - errors, - ) - - def test_other_args(self): - data = {"param_str": "string"} - aav = AnsibleArgSpecValidator( - data=data, - schema=DOCUMENTATION, - schema_format="doc", - name="test_action", - other_args={"bypass_checks": True}, - ) - valid, errors, _updated_data = aav.validate() - self.assertTrue(valid) - if not errors: - errors = None - self.assertIsNone(errors) - - def test_invalid_spec(self): - data = {} - aav = AnsibleArgSpecValidator( - data=data, - schema={"not_valid": True}, - schema_format="argspec", - name="test_action", - other_args={"bypass_checks": True}, - ) - valid, errors, _updated_data = aav.validate() - self.assertFalse(valid) - self.assertIn("Invalid schema. Invalid keys found: not_valid", errors) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/module_utils/test_dict_merge.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/module_utils/test_dict_merge.py deleted file mode 100644 index 04e14bdc..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/module_utils/test_dict_merge.py +++ /dev/null @@ -1,146 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2020 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible_collections.ansible.utils.plugins.module_utils.common.utils import dict_merge - - -class TestDict_merge(unittest.TestCase): - def test_not_dict_base(self): - base = [0] - other = {"a": "b"} - expected = "must be of type " - with self.assertRaises(Exception) as exc: - dict_merge(base, other) - self.assertIn(expected, str(exc.exception)) - - def test_not_dict_other(self): - base = {"a": "b"} - other = [0] - expected = "must be of type " - with self.assertRaises(Exception) as exc: - dict_merge(base, other) - self.assertIn(expected, str(exc.exception)) - - def test_simple(self): - base = {"a": "b"} - other = {"c": "d"} - expected = {"a": "b", "c": "d"} - result = dict_merge(base, other) - self.assertEqual(result, expected) - - def test_simple_other_is_string(self): - base = {"a": "b"} - other = {"a": "c"} - expected = {"a": "c"} - result = dict_merge(base, other) - self.assertEqual(result, expected) - - def test_simple_other_is_none(self): - base = {"a": "b"} - other = {"a": None} - expected = {"a": None} - result = dict_merge(base, other) - self.assertEqual(result, expected) - - def test_list_value_same(self): - base = {"a": [2, 1, 0]} - other = {"a": [0, 1, 2]} - expected = {"a": [0, 1, 2]} - result = dict_merge(base, other) - self.assertEqual(result, expected) - - def test_list_value_combine(self): - base = {"a": [2, 1, 0]} - other = {"a": [0, 3]} - expected = {"a": [2, 1, 0, 3]} - result = dict_merge(base, other) - self.assertEqual(result, expected) - - def test_list_missing_from_other(self): - base = {"a": [2, 1, 0]} - other = {"b": [2, 1, 0]} - expected = {"a": [2, 1, 0], "b": [2, 1, 0]} - result = dict_merge(base, other) - self.assertEqual(result, expected) - - def test_list_other_none(self): - base = {"a": [2, 1, 0]} - other = {"a": None} - expected = {"a": None} - result = dict_merge(base, other) - self.assertEqual(result, expected) - - # modified dict merge from netcommon so this works - def test_list_other_dict(self): - base = {"a": [2, 1, 0]} - other = {"a": {"b": "c"}} - expected = {"a": {"b": "c"}} - result = dict_merge(base, other) - self.assertEqual(result, expected) - - # modified dict merge from netcommon so this works - def test_list_other_string(self): - base = {"a": [2, 1, 0]} - other = {"a": "xyz"} - expected = {"a": "xyz"} - result = dict_merge(base, other) - self.assertEqual(result, expected) - - def test_dict_of_dict_merged(self): - base = {"a": {"b": 0}} - other = {"a": {"c": 1}} - expected = {"a": {"b": 0, "c": 1}} - result = dict_merge(base, other) - self.assertEqual(result, expected) - - def test_dict_of_dict_replaced(self): - base = {"a": {"b": 0}} - other = {"a": {"b": 1}} - expected = {"a": {"b": 1}} - result = dict_merge(base, other) - self.assertEqual(result, expected) - - def test_dict_of_dict_replaced_other_none(self): - base = {"a": {"b": 0}} - other = {"a": None} - expected = {"a": None} - result = dict_merge(base, other) - self.assertEqual(result, expected) - - def test_dict_of_dict_replaced_other_string(self): - base = {"a": {"b": 0}} - other = {"a": "xyz"} - expected = {"a": "xyz"} - result = dict_merge(base, other) - self.assertEqual(result, expected) - - def test_dict_of_dict_replaced_other_missing(self): - base = {"a": {"b": 0}} - other = {"c": 1} - expected = {"a": {"b": 0}, "c": 1} - result = dict_merge(base, other) - self.assertEqual(result, expected) - - def test_not_list_or_dict_different(self): - base = {"a": 0} - other = {"a": 1} - expected = {"a": 1} - result = dict_merge(base, other) - self.assertEqual(result, expected) - - def test_not_list_or_dict_same(self): - base = {"a": 0} - other = {"a": 0} - expected = {"a": 0} - result = dict_merge(base, other) - self.assertEqual(result, expected) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/module_utils/test_get_path.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/module_utils/test_get_path.py deleted file mode 100644 index a129aaa7..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/module_utils/test_get_path.py +++ /dev/null @@ -1,43 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2020 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible.template import Templar - -from ansible_collections.ansible.utils.plugins.module_utils.common.get_path import get_path - - -class TestGetPath(unittest.TestCase): - def setUp(self): - self._environment = Templar(loader=None).environment - - def test_get_path_pass(self): - var = {"a": {"b": {"c": {"d": [0, 1]}}}} - path = "a.b.c.d[0]" - result = get_path(var, path, environment=self._environment, wantlist=False) - expected = "0" - self.assertEqual(result, expected) - - def test_get_path_pass_wantlist(self): - var = {"a": {"b": {"c": {"d": [0, 1]}}}} - path = "a.b.c.d[0]" - result = get_path(var, path, environment=self._environment, wantlist=True) - expected = ["0"] - self.assertEqual(result, expected) - - def test_get_path_fail(self): - var = {"a": {"b": {"c": {"d": [0, 1]}}}} - path = "a.b.e" - expected = "dict object' has no attribute 'e'" - with self.assertRaises(Exception) as exc: - get_path(var, path, environment=self._environment, wantlist=False) - self.assertIn(expected, str(exc.exception)) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/module_utils/test_sort_list.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/module_utils/test_sort_list.py deleted file mode 100644 index bab1b5f6..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/module_utils/test_sort_list.py +++ /dev/null @@ -1,40 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2020 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible_collections.ansible.utils.plugins.module_utils.common.utils import sort_list - - -class TestSortList(unittest.TestCase): - def test_simple(self): - var = [3, 2, 1] - result = sort_list(var) - expected = [1, 2, 3] - self.assertEqual(result, expected) - - def test_mot_list(self): - var = {"a": "b"} - result = sort_list(var) - self.assertEqual(result, var) - - def test_not_same(self): - var = [{"a": "b", "c": "d"}, {"b": "a"}] - expected = "dictionaries do not match" - with self.assertRaises(Exception) as exc: - sort_list(var) - self.assertIn(expected, str(exc.exception)) - - def test_pass(self): - var = [{"a": 2, "b": 3}, {"a": 0, "b": 1}] - expected = [{"a": 0, "b": 1}, {"a": 2, "b": 3}] - result = sort_list(var) - self.assertEqual(result, expected) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/module_utils/test_to_paths.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/module_utils/test_to_paths.py deleted file mode 100644 index 68aaf219..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/module_utils/test_to_paths.py +++ /dev/null @@ -1,97 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2020 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import heapq -import json -import os -import unittest - -from ansible.template import Templar - -from ansible_collections.ansible.utils.plugins.module_utils.common.get_path import get_path -from ansible_collections.ansible.utils.plugins.module_utils.common.to_paths import to_paths - - -class TestToPaths(unittest.TestCase): - def setUp(self): - self._environment = Templar(loader=None).environment - - def test_to_paths(self): - var = {"a": {"b": {"c": {"d": [0, 1]}}}} - expected = {"a.b.c.d[0]": 0, "a.b.c.d[1]": 1} - result = to_paths(var, prepend=None, wantlist=None) - self.assertEqual(result, expected) - - def test_to_paths_wantlist(self): - var = {"a": {"b": {"c": {"d": [0, 1]}}}} - expected = [{"a.b.c.d[0]": 0, "a.b.c.d[1]": 1}] - result = to_paths(var, prepend=None, wantlist=True) - self.assertEqual(result, expected) - - def test_to_paths_special_char(self): - var = {"a": {"b": {"c": {"Eth1/1": True}}}} - expected = [{"a.b.c['Eth1/1']": True}] - result = to_paths(var, prepend=None, wantlist=True) - self.assertEqual(result, expected) - - def test_to_paths_prepend(self): - var = {"a": {"b": {"c": {"d": [0, 1]}}}} - expected = [{"var.a.b.c.d[0]": 0, "var.a.b.c.d[1]": 1}] - result = to_paths(var, wantlist=True, prepend="var") - self.assertEqual(result, expected) - - def test_roundtrip_large(self): - """Test the 1000 longest keys, otherwise this takes a _really_ long time""" - big_json_path = os.path.join(os.path.dirname(__file__), "fixtures", "large.json") - with open(big_json_path) as fhand: - big_json = fhand.read() - var = json.loads(big_json) - paths = to_paths(var, prepend=None, wantlist=None) - to_tests = heapq.nlargest(1000, list(paths.keys()), key=len) - for to_test in to_tests: - gotten = get_path(var, to_test, environment=self._environment, wantlist=False) - self.assertEqual(gotten, paths[to_test]) - - def test_to_paths_empty_list(self): - var = {"a": []} - expected = {"a": []} - result = to_paths(var, prepend=None, wantlist=None) - self.assertEqual(result, expected) - - def test_to_paths_list_of_empty_list(self): - var = {"a": [[], []]} - expected = {"a[0]": [], "a[1]": []} - result = to_paths(var, prepend=None, wantlist=None) - self.assertEqual(result, expected) - - def test_to_paths_empty_mapping(self): - var = {"a": {}} - expected = {"a": {}} - result = to_paths(var, prepend=None, wantlist=None) - self.assertEqual(result, expected) - - def test_to_paths_list_of_empty_mapping(self): - var = [{}, {}] - expected = {"[0]": {}, "[1]": {}} - result = to_paths(var, prepend=None, wantlist=None) - self.assertEqual(result, expected) - - def test_to_paths_only_empty_list(self): - var = [] - expected = [] - result = to_paths(var, prepend=None, wantlist=None) - self.assertEqual(result, expected) - - def test_to_paths_only_empty_mapping(self): - var = {} - expected = {} - result = to_paths(var, prepend=None, wantlist=None) - self.assertEqual(result, expected) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/action/fixtures/nxos_show_version.textfsm b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/action/fixtures/nxos_show_version.textfsm deleted file mode 100644 index be704f59..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/action/fixtures/nxos_show_version.textfsm +++ /dev/null @@ -1,12 +0,0 @@ -Value uptime ((\d+\s\w+.s.,?\s?){4}) -Value last_reboot_reason (\w+) -Value version (\d+.\d+(.+)?) -Value boot_image (.*) -Value platfrom (\w+) - -Start - ^\s+NXOS: version\s${version} - ^\s+NXOS image file is:\s${boot_image} - ^\s+cisco Nexus\d+\s${platfrom} - ^Kernel uptime is\s${uptime} - ^\s+Reason:\s${last_reboot_reason} -> Record diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/action/fixtures/nxos_show_version.txt b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/action/fixtures/nxos_show_version.txt deleted file mode 100644 index b797d71c..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/action/fixtures/nxos_show_version.txt +++ /dev/null @@ -1,38 +0,0 @@ -Cisco Nexus Operating System (NX-OS) Software -TAC support: http://www.cisco.com/tac -Documents: http://www.cisco.com/en/US/products/ps9372/tsd_products_support_series_home.html -Copyright (c) 2002-2018, Cisco Systems, Inc. All rights reserved. -The copyrights to certain works contained herein are owned by -other third parties and are used and distributed under license. -Some parts of this software are covered under the GNU Public -License. A copy of the license is available at -http://www.gnu.org/licenses/gpl.html. - -Nexus 9000v is a demo version of the Nexus Operating System - -Software - BIOS: version - NXOS: version 9.2(2) - BIOS compile time: - NXOS image file is: bootflash:///nxos.9.2.2.bin - NXOS compile time: 11/4/2018 21:00:00 [11/05/2018 06:11:06] - - -Hardware - cisco Nexus9000 9000v Chassis - with 8035024 kB of memory. - Processor Board ID 970MUM0NTLV - - Device name: nxos101 - bootflash: 3509454 kB -Kernel uptime is 33 day(s), 17 hour(s), 29 minute(s), 8 second(s) - -Last reset - Reason: Unknown - System version: - Service: - -plugin - Core Plugin, Ethernet Plugin - -Active Package(s): diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/action/test_cli_parse.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/action/test_cli_parse.py deleted file mode 100644 index c0c8af77..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/action/test_cli_parse.py +++ /dev/null @@ -1,536 +0,0 @@ -# (c) 2020 Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import os -import tempfile - -from ansible.module_utils.connection import ConnectionError as AnsibleConnectionError -from ansible.playbook.task import Task -from ansible.template import Templar - -from ansible_collections.ansible.utils.plugins.action.cli_parse import ( - ARGSPEC_CONDITIONALS, - ActionModule, -) -from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import ( - check_argspec, -) -from ansible_collections.ansible.utils.plugins.modules.cli_parse import DOCUMENTATION -from ansible_collections.ansible.utils.plugins.plugin_utils.base.cli_parser import CliParserBase -from ansible_collections.ansible.utils.tests.unit.compat import unittest -from ansible_collections.ansible.utils.tests.unit.compat.mock import MagicMock, patch -from ansible_collections.ansible.utils.tests.unit.mock.loader import DictDataLoader - - -class TestCli_Parse(unittest.TestCase): - def setUp(self): - task = MagicMock(Task) - play_context = MagicMock() - play_context.check_mode = False - connection = MagicMock() - fake_loader = DictDataLoader({}) - templar = Templar(loader=fake_loader) - self._plugin = ActionModule( - task=task, - connection=connection, - play_context=play_context, - loader=fake_loader, - templar=templar, - shared_loader_obj=None, - ) - self._plugin._task.action = "cli_parse" - - @staticmethod - def _load_fixture(filename): - """Load a fixture from the filesystem - - :param filename: The name of the file to load - :type filename: str - :return: The file contents - :rtype: str - """ - fixture_name = os.path.join(os.path.dirname(__file__), "fixtures", filename) - with open(fixture_name) as fhand: - return fhand.read() - - def test_fn_debug(self): - """Confirm debug doesn't fail and return None""" - msg = "some message" - result = self._plugin._debug(msg) - self.assertEqual(result, None) - - def test_fn_ail_json(self): - """Confirm fail json replaces basic.py in msg""" - msg = "text (basic.py)" - with self.assertRaises(Exception) as error: - self._plugin._fail_json(msg) - self.assertEqual("text cli_parse", str(error.exception)) - - def test_fn_check_argspec_pass(self): - """Confirm a valid argspec passes""" - kwargs = { - "text": "text", - "parser": { - "name": "ansible.utils.textfsm", - "command": "show version", - }, - } - valid, result, updated_params = check_argspec( - DOCUMENTATION, - "cli_parse module", - schema_conditionals={}, - **kwargs, - ) - self.assertEqual(valid, True) - - def test_fn_check_argspec_fail_no_test_or_command(self): - """Confirm failed argpsec w/o text or command""" - kwargs = { - "parser": { - "name": "ansible.utils.textfsm", - "command": "show version", - }, - } - valid, result, updated_params = check_argspec( - DOCUMENTATION, - "cli_parse module", - schema_conditionals=ARGSPEC_CONDITIONALS, - **kwargs, - ) - - self.assertIn("one of the following is required: command, text", result["errors"]) - - def test_fn_check_argspec_fail_no_parser_name(self): - """Confirm failed argspec no parser name""" - kwargs = {"text": "anything", "parser": {"command": "show version"}} - valid, result, updated_params = check_argspec( - DOCUMENTATION, - "cli_parse module", - schema_conditionals=ARGSPEC_CONDITIONALS, - **kwargs, - ) - self.assertIn( - "missing required arguments: name found in parser", - result["errors"], - ) - - def test_fn_extended_check_argspec_parser_name_not_coll(self): - """Confirm failed argpsec parser not collection format""" - self._plugin._task.args = { - "text": "anything", - "parser": { - "command": "show version", - "name": "not_collection_format", - }, - } - self._plugin._extended_check_argspec() - self.assertTrue(self._plugin._result["failed"]) - self.assertIn("including collection", self._plugin._result["msg"]) - - def test_fn_extended_check_argspec_missing_tpath_or_command(self): - """Confirm failed argpsec missing template_path - or command when text provided - """ - self._plugin._task.args = { - "text": "anything", - "parser": {"name": "a.b.c"}, - } - self._plugin._extended_check_argspec() - self.assertTrue(self._plugin._result["failed"]) - self.assertIn("provided when parsing text", self._plugin._result["msg"]) - - def test_fn_load_parser_pass(self): - """Confirm each each of the parsers loads from the filesystem""" - parser_names = ["json", "textfsm", "ttp", "xml"] - for parser_name in parser_names: - self._plugin._task.args = { - "text": "anything", - "parser": {"name": "ansible.utils." + parser_name}, - } - parser = self._plugin._load_parser(task_vars=None) - self.assertEqual(type(parser).__name__, "CliParser") - self.assertTrue(hasattr(parser, "parse")) - self.assertTrue(callable(parser.parse)) - - def test_fn_load_parser_fail(self): - """Confirm missing parser fails gracefully""" - self._plugin._task.args = { - "text": "anything", - "parser": {"name": "a.b.c"}, - } - parser = self._plugin._load_parser(task_vars=None) - self.assertIsNone(parser) - self.assertTrue(self._plugin._result["failed"]) - self.assertIn("No module named", self._plugin._result["msg"]) - - def test_fn_set_parser_command_missing(self): - """Confirm parser/command is set if missing - and command provided - """ - self._plugin._task.args = { - "command": "anything", - "parser": {"name": "a.b.c"}, - } - self._plugin._set_parser_command() - self.assertEqual(self._plugin._task.args["parser"]["command"], "anything") - - def test_fn_set_parser_command_present(self): - """Confirm parser/command is not changed if provided""" - self._plugin._task.args = { - "command": "anything", - "parser": {"command": "something", "name": "a.b.c"}, - } - self._plugin._set_parser_command() - self.assertEqual(self._plugin._task.args["parser"]["command"], "something") - - def test_fn_set_parser_command_absent(self): - """Confirm parser/command is not added""" - self._plugin._task.args = {"parser": {}} - self._plugin._set_parser_command() - self.assertNotIn("command", self._plugin._task.args["parser"]) - - def test_fn_set_text_present(self): - """Check task args text is set to stdout""" - expected = "output" - self._plugin._result["stdout"] = expected - self._plugin._task.args = {} - self._plugin._set_text() - self.assertEqual(self._plugin._task.args["text"], expected) - - def test_fn_set_text_absent(self): - """Check task args text is set to stdout""" - self._plugin._result["stdout"] = None - self._plugin._task.args = {} - self._plugin._set_text() - self.assertNotIn("text", self._plugin._task.args) - - def test_fn_os_from_task_vars(self): - """Confirm os is set based on task vars""" - checks = [ - ("ansible_network_os", "cisco.nxos.nxos", "nxos"), - ("ansible_network_os", "NXOS", "nxos"), - ("ansible_distribution", "Fedora", "fedora"), - (None, None, ""), - ] - for check in checks: - self._plugin._task_vars = {check[0]: check[1]} - result = self._plugin._os_from_task_vars() - self.assertEqual(result, check[2]) - - def test_fn_update_template_path_not_exist(self): - """Check the creation of the template_path if - it doesn't exist in the user provided data - """ - self._plugin._task.args = {"parser": {"command": "a command", "name": "a.b.c"}} - self._plugin._task_vars = {"ansible_network_os": "cisco.nxos.nxos"} - with self.assertRaises(Exception) as error: - self._plugin._update_template_path("yaml") - self.assertIn( - "Could not find or access 'nxos_a_command.yaml'", - str(error.exception), - ) - - def test_fn_update_template_path_not_exist_os(self): - """Check the creation of the template_path if - it doesn't exist in the user provided data - name based on os provided in task - """ - self._plugin._task.args = { - "parser": {"command": "a command", "name": "a.b.c", "os": "myos"}, - } - with self.assertRaises(Exception) as error: - self._plugin._update_template_path("yaml") - self.assertIn( - "Could not find or access 'myos_a_command.yaml'", - str(error.exception), - ) - - def test_fn_update_template_path_mock_find_needle(self): - """Check the creation of the template_path - mock the find needle fn so the template doesn't - need to be in the default template folder - """ - template_path = os.path.join( - os.path.dirname(__file__), - "fixtures", - "nxos_show_version.yaml", - ) - self._plugin._find_needle = MagicMock() - self._plugin._find_needle.return_value = template_path - self._plugin._task.args = {"parser": {"command": "show version", "os": "nxos"}} - self._plugin._update_template_path("yaml") - self.assertEqual(self._plugin._task.args["parser"]["template_path"], template_path) - - def test_fn_get_template_contents_pass(self): - """Check the retrieval of the template contents""" - temp = tempfile.NamedTemporaryFile() - contents = "abcdef" - with open(temp.name, "w") as fileh: - fileh.write(contents) - - self._plugin._task.args = {"parser": {"template_path": temp.name}} - result = self._plugin._get_template_contents() - self.assertEqual(result, contents) - - def test_fn_get_template_contents_missing(self): - """Check the retrieval of the template contents""" - self._plugin._task.args = {"parser": {"template_path": "non-exist"}} - with self.assertRaises(Exception) as error: - self._plugin._get_template_contents() - self.assertIn("Failed to open template 'non-exist'", str(error.exception)) - - def test_fn_get_template_contents_not_specified(self): - """Check the none when template_path not specified""" - self._plugin._task.args = {"parser": {}} - result = self._plugin._get_template_contents() - self.assertIsNone(result) - - def test_fn_prune_result_pass(self): - """Test the removal of stdout and stdout_lines from the _result""" - self._plugin._result["stdout"] = "abc" - self._plugin._result["stdout_lines"] = "abc" - self._plugin._prune_result() - self.assertNotIn("stdout", self._plugin._result) - self.assertNotIn("stdout_lines", self._plugin._result) - - def test_fn_prune_result_not_exist(self): - """Test the removal of stdout and stdout_lines from the _result""" - self._plugin._prune_result() - self.assertNotIn("stdout", self._plugin._result) - self.assertNotIn("stdout_lines", self._plugin._result) - - def test_fn_run_command_lx_rc0(self): - """Check run command for non network""" - response = "abc" - self._plugin._connection.socket_path = None - self._plugin._low_level_execute_command = MagicMock() - self._plugin._low_level_execute_command.return_value = { - "rc": 0, - "stdout": response, - "stdout_lines": response, - } - self._plugin._task.args = {"command": "ls"} - self._plugin._run_command() - self.assertEqual(self._plugin._result["stdout"], response) - self.assertEqual(self._plugin._result["stdout_lines"], response) - - def test_fn_run_command_lx_rc1(self): - """Check run command for non network""" - response = "abc" - self._plugin._connection.socket_path = None - self._plugin._low_level_execute_command = MagicMock() - self._plugin._low_level_execute_command.return_value = { - "rc": 1, - "stdout": None, - "stdout_lines": None, - "stderr": response, - } - self._plugin._task.args = {"command": "ls"} - self._plugin._run_command() - self.assertTrue(self._plugin._result["failed"]) - self.assertEqual(self._plugin._result["msg"], response) - - @patch("ansible.module_utils.connection.Connection.__rpc__") - def test_fn_run_command_network(self, mock_rpc): - """Check run command for network""" - expected = "abc" - mock_rpc.return_value = expected - self._plugin._connection.socket_path = tempfile.NamedTemporaryFile().name - self._plugin._task.args = {"command": "command"} - self._plugin._run_command() - self.assertEqual(self._plugin._result["stdout"], expected) - self.assertEqual(self._plugin._result["stdout_lines"], [expected]) - - def test_fn_run_command_not_specified(self): - """Check run command for network""" - self._plugin._task.args = {"command": None} - result = self._plugin._run_command() - self.assertIsNone(result) - - @patch("ansible.module_utils.connection.Connection.__rpc__") - def test_fn_run_pass_w_fact(self, mock_rpc): - """Check full module run with valid params""" - mock_out = self._load_fixture("nxos_show_version.txt") - mock_rpc.return_value = mock_out - self._plugin._connection.socket_path = tempfile.NamedTemporaryFile().name - template_path = os.path.join( - os.path.dirname(__file__), - "fixtures", - "nxos_show_version.textfsm", - ) - self._plugin._task.args = { - "command": "show version", - "parser": { - "name": "ansible.utils.textfsm", - "template_path": template_path, - }, - "set_fact": "new_fact", - } - task_vars = {"inventory_hostname": "mockdevice"} - result = self._plugin.run(task_vars=task_vars) - self.assertEqual(result["stdout"], mock_out) - self.assertEqual(result["stdout_lines"], mock_out.splitlines()) - self.assertEqual(result["parsed"][0]["version"], "9.2(2)") - self.assertEqual(result["ansible_facts"]["new_fact"][0]["version"], "9.2(2)") - - @patch("ansible.module_utils.connection.Connection.__rpc__") - def test_fn_run_pass_wo_fact(self, mock_rpc): - """Check full module run with valid params""" - mock_out = self._load_fixture("nxos_show_version.txt") - mock_rpc.return_value = mock_out - self._plugin._connection.socket_path = tempfile.NamedTemporaryFile().name - template_path = os.path.join( - os.path.dirname(__file__), - "fixtures", - "nxos_show_version.textfsm", - ) - self._plugin._task.args = { - "command": "show version", - "parser": { - "name": "ansible.utils.textfsm", - "template_path": template_path, - }, - } - task_vars = {"inventory_hostname": "mockdevice"} - result = self._plugin.run(task_vars=task_vars) - self.assertEqual(result["stdout"], mock_out) - self.assertEqual(result["stdout_lines"], mock_out.splitlines()) - self.assertEqual(result["parsed"][0]["version"], "9.2(2)") - self.assertNotIn("ansible_facts", result) - - def test_fn_run_fail_argspec(self): - """Check full module run with invalid params""" - self._plugin._task.args = { - "text": "anything", - "parser": { - "command": "show version", - "name": "not_collection_format", - }, - } - self._plugin.run(task_vars=None) - self.assertTrue(self._plugin._result["failed"]) - self.assertIn("including collection", self._plugin._result["msg"]) - - def test_fn_run_fail_command(self): - """Confirm clean fail with rc 1""" - self._plugin._connection.socket_path = None - self._plugin._low_level_execute_command = MagicMock() - self._plugin._low_level_execute_command.return_value = { - "rc": 1, - "stdout": None, - "stdout_lines": None, - "stderr": None, - } - self._plugin._task.args = { - "command": "ls", - "parser": {"name": "a.b.c"}, - } - task_vars = {"inventory_hostname": "mockdevice"} - result = self._plugin.run(task_vars=task_vars) - expected = { - "failed": True, - "msg": None, - "stdout": None, - "stdout_lines": None, - } - self.assertEqual(result, expected) - - def test_fn_run_fail_missing_parser(self): - """Confirm clean fail with missing parser""" - self._plugin._task.args = {"text": None, "parser": {"name": "a.b.c"}} - task_vars = {"inventory_hostname": "mockdevice"} - result = self._plugin.run(task_vars=task_vars) - self.assertEqual(result["failed"], True) - self.assertIn("Error loading parser", result["msg"]) - - @patch("ansible.module_utils.connection.Connection.__rpc__") - def test_fn_run_pass_missing_parser_constants(self, mock_rpc): - """Check full module run using parser w/o - DEFAULT_TEMPLATE_EXTENSION or PROVIDE_TEMPLATE_CONTENTS - defined in the parser - """ - mock_out = self._load_fixture("nxos_show_version.txt") - - class CliParser(CliParserBase): - def parse(self, *_args, **kwargs): - return {"parsed": mock_out} - - self._plugin._load_parser = MagicMock() - self._plugin._load_parser.return_value = CliParser(None, None, None) - - mock_out = self._load_fixture("nxos_show_version.txt") - mock_rpc.return_value = mock_out - - self._plugin._connection.socket_path = tempfile.NamedTemporaryFile().name - template_path = os.path.join( - os.path.dirname(__file__), - "fixtures", - "nxos_empty_parser.textfsm", - ) - self._plugin._task.args = { - "command": "show version", - "parser": { - "name": "ansible.utils.textfsm", - "template_path": template_path, - }, - } - task_vars = {"inventory_hostname": "mockdevice"} - result = self._plugin.run(task_vars=task_vars) - self.assertEqual(result["stdout"], mock_out) - self.assertEqual(result["stdout_lines"], mock_out.splitlines()) - self.assertEqual(result["parsed"], mock_out) - - @patch("ansible.module_utils.connection.Connection.__rpc__") - def test_fn_run_pass_missing_parser_in_parser(self, mock_rpc): - """Check full module run using parser w/o - a parser function defined in the parser - defined in the parser - """ - mock_out = self._load_fixture("nxos_show_version.txt") - - class CliParser(CliParserBase): - pass - - self._plugin._load_parser = MagicMock() - self._plugin._load_parser.return_value = CliParser(None, None, None) - - mock_out = self._load_fixture("nxos_show_version.textfsm") - mock_rpc.return_value = mock_out - - self._plugin._connection.socket_path = tempfile.NamedTemporaryFile().name - template_path = os.path.join( - os.path.dirname(__file__), - "fixtures", - "nxos_empty_parser.textfsm", - ) - self._plugin._task.args = { - "command": "show version", - "parser": { - "name": "ansible.utils.textfsm", - "template_path": template_path, - }, - } - task_vars = {"inventory_hostname": "mockdevice"} - with self.assertRaises(Exception) as error: - self._plugin.run(task_vars=task_vars) - self.assertIn("Unhandled", str(error.exception)) - - @patch("ansible.module_utils.connection.Connection.__rpc__") - def test_fn_run_net_device_error(self, mock_rpc): - """Check full module run mock error from network device""" - msg = "I was mocked" - mock_rpc.side_effect = AnsibleConnectionError(msg) - self._plugin._connection.socket_path = tempfile.NamedTemporaryFile().name - self._plugin._task.args = { - "command": "show version", - "parser": {"name": "ansible.utils.textfsm"}, - } - task_vars = {"inventory_hostname": "mockdevice"} - result = self._plugin.run(task_vars=task_vars) - self.assertEqual(result["failed"], True) - self.assertEqual([msg], result["msg"]) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/action/test_fact_diff.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/action/test_fact_diff.py deleted file mode 100644 index b197356f..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/action/test_fact_diff.py +++ /dev/null @@ -1,210 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2020 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import re -import unittest - -from ansible.playbook.task import Task -from ansible.template import Templar - -from ansible_collections.ansible.utils.plugins.action.fact_diff import ActionModule - - -try: - from unittest.mock import MagicMock # pylint:disable=syntax-error -except ImportError: - from mock import MagicMock # pyright: ignore[reportMissingModuleSource] - - -class TestUpdate_Fact(unittest.TestCase): - def setUp(self): - task = MagicMock(Task) - # Ansible > 2.13 looks for check_mode in task - task.check_mode = False - play_context = MagicMock() - # Ansible <= 2.13 looks for check_mode in play_context - play_context.check_mode = False - connection = MagicMock() - fake_loader = {} - templar = Templar(loader=fake_loader) - self._plugin = ActionModule( - task=task, - connection=connection, - play_context=play_context, - loader=fake_loader, - templar=templar, - shared_loader_obj=None, - ) - self._plugin._task.action = "fact_diff" - self._task_vars = {"inventory_hostname": "mockdevice"} - - def test_argspec_no_updates(self): - """Check passing invalid argspec""" - self._plugin._task.args = {"before": True} - result = self._plugin.run(task_vars=self._task_vars) - self.assertTrue(result["failed"]) - self.assertIn("missing required arguments: after", result["msg"]) - - def test_same(self): - """Ensure two equal string don't create a diff""" - before = "Lorem ipsum dolor sit amet" - after = before - self._plugin._task.args = {"before": before, "after": after} - result = self._plugin.run(task_vars=self._task_vars) - self.assertFalse(result["changed"]) - self.assertEqual([], result["diff_lines"]) - self.assertEqual("", result["diff_text"]) - - def test_string(self): - """Compare two strings""" - before = "Lorem ipsum dolor sit amet, consectetur adipiscing elit" - after = "Lorem ipsum dolor sit amet, AAA consectetur adipiscing elit" - self._plugin._task.args = {"before": before, "after": after} - result = self._plugin.run(task_vars=self._task_vars) - self.assertTrue(result["changed"]) - self.assertIn("-" + before, result["diff_lines"]) - self.assertIn("-" + before, result["diff_text"]) - self.assertIn("+" + after, result["diff_lines"]) - self.assertIn("+" + after, result["diff_text"]) - - def test_string_skip_lines(self): - """Compare two string, with skip_lines""" - before = "Lorem ipsum dolor sit amet, consectetur adipiscing elit" - after = "Lorem ipsum dolor sit amet, AAA consectetur adipiscing elit" - self._plugin._task.args = { - "before": before, - "after": after, - "plugin": {"vars": {"skip_lines": "^Lorem"}}, - } - result = self._plugin.run(task_vars=self._task_vars) - self.assertFalse(result["changed"]) - self.assertEqual([], result["diff_lines"]) - self.assertEqual("", result["diff_text"]) - - def test_same_list(self): - """Compare two lists that are the same""" - before = [0, 1, 2, 3] - after = before - self._plugin._task.args = {"before": before, "after": after} - result = self._plugin.run(task_vars=self._task_vars) - self.assertFalse(result["changed"]) - self.assertEqual([], result["diff_lines"]) - self.assertEqual("", result["diff_text"]) - - def test_diff_list_skip_lines(self): - """Compare two lists, with skip_lines""" - before = [0, 1, 2] - after = [0, 1, 2, 3] - self._plugin._task.args = { - "before": before, - "after": after, - "plugin": {"vars": {"skip_lines": "3"}}, - } - result = self._plugin.run(task_vars=self._task_vars) - self.assertFalse(result["changed"]) - self.assertEqual([], result["diff_lines"]) - self.assertEqual("", result["diff_text"]) - - def test_diff_list(self): - """Compare two lists with differences""" - before = [0, 1, 2, 3] - after = [0, 1, 2, 4] - self._plugin._task.args = {"before": before, "after": after} - result = self._plugin.run(task_vars=self._task_vars) - self.assertTrue(result["changed"]) - self.assertIn("-3", result["diff_lines"]) - self.assertIn("-3", result["diff_text"]) - self.assertIn("+4", result["diff_lines"]) - self.assertIn("+4", result["diff_text"]) - - def test_same_dict(self): - """Compare two dicts that are the same""" - before = {"a": {"b": {"c": {"d": [0, 1, 2]}}}} - after = before - self._plugin._task.args = {"before": before, "after": after} - result = self._plugin.run(task_vars=self._task_vars) - self.assertFalse(result["changed"]) - self.assertEqual([], result["diff_lines"]) - self.assertEqual("", result["diff_text"]) - - def test_diff_dict_skip_lines(self): - """Compare two dicts, with skip_lines""" - before = {"a": {"b": {"c": {"d": [0, 1, 2]}}}} - after = {"a": {"b": {"c": {"d": [0, 1, 2, 3]}}}} - self._plugin._task.args = { - "before": before, - "after": after, - "plugin": {"vars": {"skip_lines": "3"}}, - } - result = self._plugin.run(task_vars=self._task_vars) - self.assertFalse(result["changed"]) - self.assertEqual([], result["diff_lines"]) - self.assertEqual("", result["diff_text"]) - - def test_diff_dict(self): - """Compare two dicts that are different""" - before = {"a": {"b": {"c": {"d": [0, 1, 2, 3]}}}} - after = {"a": {"b": {"c": {"d": [0, 1, 2, 4]}}}} - self._plugin._task.args = {"before": before, "after": after} - result = self._plugin.run(task_vars=self._task_vars) - self.assertTrue(result["changed"]) - mlines = [line for line in result["diff_lines"] if re.match(r"^-\s+3$", line)] - self.assertEqual(1, len(mlines)) - mlines = [line for line in result["diff_lines"] if re.match(r"^\+\s+4$", line)] - self.assertEqual(1, len(mlines)) - - def test_invalid_diff_engine_not_collection(self): - """Check passing invalid argspec""" - self._plugin._task.args = { - "before": True, - "after": True, - "plugin": {"name": "a"}, - } - result = self._plugin.run(task_vars=self._task_vars) - self.assertTrue(result["failed"]) - self.assertIn( - "Plugin name should be provided as a full name including collection", - result["msg"], - ) - - def test_invalid_diff_engine_not_valid(self): - """Check passing invalid argspec""" - self._plugin._task.args = { - "before": True, - "after": True, - "plugin": {"name": "a.b.c"}, - } - result = self._plugin.run(task_vars=self._task_vars) - self.assertTrue(result["failed"]) - self.assertIn("Error loading plugin 'a.b.c'", result["msg"]) - - def test_invalid_regex(self): - """Check with invalid regex""" - before = True - after = False - self._plugin._task.args = { - "before": before, - "after": after, - "plugin": {"vars": {"skip_lines": "+"}}, - } - result = self._plugin.run(task_vars=self._task_vars) - self.assertTrue(result["failed"]) - self.assertIn("The regex '+', is not valid", result["msg"]) - - def test_fail_plugin(self): - """Simulate a diff plugin failure""" - self._plugin._result = {} - result = self._plugin._run_diff(None) - self.assertIsNone(result) - self.assertTrue(self._plugin._result["failed"]) - self.assertIn( - "'NoneType' object has no attribute 'diff'", - self._plugin._result["msg"], - ) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/action/test_update_fact.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/action/test_update_fact.py deleted file mode 100644 index 3ec4a8f7..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/action/test_update_fact.py +++ /dev/null @@ -1,348 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2020 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import copy -import unittest - -from ansible.playbook.task import Task -from ansible.template import Templar -from jinja2 import Template, TemplateSyntaxError - -from ansible_collections.ansible.utils.plugins.action.update_fact import ActionModule - - -try: - from unittest.mock import MagicMock # pylint:disable=syntax-error -except ImportError: - from mock import MagicMock # pyright: ignore[reportMissingModuleSource] - - -VALID_DATA = { - "a": { - "b": {"4.4": [{"1": {5: {"foo": 123}}}], 5.5: "float5.5"}, - "127.0.0.1": "localhost", - }, -} - -VALID_TESTS = [ - { - "path": 'a.b["4.4"][0]["1"].5[\'foo\']', - "split": ["a", "b", "4.4", 0, "1", 5, "foo"], - "template_result": "123", - }, - { - "path": 'a.b["4.4"][0]["1"].5[\'foo\']', - "split": ["a", "b", "4.4", 0, "1", 5, "foo"], - "template_result": "123", - }, - { - "path": "a.b[5.5]", - "split": ["a", "b", 5.5], - "template_result": "float5.5", - }, - { - "path": "a['127.0.0.1']", - "split": ["a", "127.0.0.1"], - "template_result": "localhost", - }, - { - "path": "a.b['4.4'].0['1'].5['foo']", - "split": ["a", "b", "4.4", 0, "1", 5, "foo"], - "template_result": "123", - }, -] - - -INVALID_JINJA = [ - { - "path": "a.'1'", - "note": "quoted values are required to be in brackets", - "error": "expected name or number", - }, - { - "path": "a.[1]", - "note": "brackets can't follow dots", - "error": "expected name or number", - }, - { - "path": 'a.b["4.4"][0]["1"]."5"[\'foo\']', - "note": "quoted values are required to be in brackets", - "error": "expected name or number", - }, -] - - -class TestUpdate_Fact(unittest.TestCase): - def setUp(self): - task = MagicMock(Task) - # Ansible > 2.13 looks for check_mode in task - task.check_mode = False - play_context = MagicMock() - # Ansible <= 2.13 looks for check_mode in play_context - play_context.check_mode = False - connection = MagicMock() - fake_loader = {} - templar = Templar(loader=fake_loader) - self._plugin = ActionModule( - task=task, - connection=connection, - play_context=play_context, - loader=fake_loader, - templar=templar, - shared_loader_obj=None, - ) - self._plugin._task.action = "update_fact" - - def test_argspec_no_updates(self): - """Check passing invalid argspec""" - self._plugin._task.args = {"a": 10} - with self.assertRaises(Exception) as error: - self._plugin.run(task_vars=None) - self.assertIn("missing required arguments: updates", str(error.exception)) - - def test_argspec_none(self): - """Check passing a dict""" - self._plugin._task.args = {} - with self.assertRaises(Exception) as error: - self._plugin.run(task_vars=None) - self.assertIn("missing required arguments: updates", str(error.exception)) - - def test_valid_jinja(self): - for test in VALID_TESTS: - tmplt = Template("{{" + test["path"] + "}}") - result = tmplt.render(VALID_DATA) - self.assertEqual(result, test["template_result"]) - - def test_invalid_jinja(self): - for test in INVALID_JINJA: - with self.assertRaises(TemplateSyntaxError) as error: - Template("{{" + test["path"] + "}}") - self.assertIn(test["error"], str(error.exception)) - - def test_fields(self): - """Check the parsing of a path into it's parts""" - for stest in VALID_TESTS: - result = self._plugin._field_split(stest["path"]) - self.assertEqual(result, stest["split"]) - - def test_missing_var(self): - """Check for a missing fact""" - self._plugin._task.args = {"updates": [{"path": "a.b.c", "value": 5}]} - with self.assertRaises(Exception) as error: - self._plugin.run(task_vars={"vars": {}}) - self.assertIn("'a' was not found in the current facts.", str(error.exception)) - - def test_run_simple(self): - """Confirm a valid argspec passes""" - task_vars = {"vars": {"a": {"b": [1, 2, 3]}}} - expected = copy.deepcopy(task_vars["vars"]) - expected["a"]["b"] = 5 - expected.update({"changed": True}) - self._plugin._task.args = {"updates": [{"path": "a.b", "value": 5}]} - result = self._plugin.run(task_vars=task_vars) - self.assertEqual(result, expected) - - def test_run_multiple(self): - """Confirm multiple paths passes""" - task_vars = {"vars": {"a": {"b1": [1, 2, 3], "b2": {"c": "123", "d": False}}}} - expected = {"a": {"b1": [1, 2, 3, 4], "b2": {"c": 456, "d": True}}} - expected.update({"changed": True}) - self._plugin._task.args = { - "updates": [ - {"path": "a.b1.3", "value": 4}, - {"path": "a.b2.c", "value": 456}, - {"path": "a.b2.d", "value": True}, - ], - } - result = self._plugin.run(task_vars=task_vars) - self.assertEqual(result, expected) - - def test_run_replace_in_list(self): - """Replace in list""" - task_vars = {"vars": {"a": {"b": [1, 2, 3]}}} - expected = copy.deepcopy(task_vars["vars"]) - expected["a"]["b"][1] = 5 - expected.update({"changed": True}) - self._plugin._task.args = {"updates": [{"path": "a.b.1", "value": 5}]} - result = self._plugin.run(task_vars=task_vars) - self.assertEqual(result, expected) - - def test_run_append_to_list(self): - """Append to list""" - task_vars = {"vars": {"a": {"b": [1, 2, 3]}}} - expected = copy.deepcopy(task_vars["vars"]) - expected["a"]["b"].append(4) - expected.update({"changed": True}) - self._plugin._task.args = {"updates": [{"path": "a.b.3", "value": 4}]} - result = self._plugin.run(task_vars=task_vars) - self.assertEqual(result, expected) - - def test_run_bracket_single_quote(self): - """Bracket notation sigle quote""" - task_vars = {"vars": {"a": {"b": [1, 2, 3]}}} - expected = copy.deepcopy(task_vars["vars"]) - expected["a"]["b"].append(4) - expected.update({"changed": True}) - self._plugin._task.args = {"updates": [{"path": "a['b'][3]", "value": 4}]} - result = self._plugin.run(task_vars=task_vars) - self.assertEqual(result, expected) - - def test_run_bracket_double_quote(self): - """Bracket notation double quote""" - task_vars = {"vars": {"a": {"b": [1, 2, 3]}}} - expected = copy.deepcopy(task_vars["vars"]) - expected["a"]["b"].append(4) - expected.update({"changed": True}) - self._plugin._task.args = {"updates": [{"path": 'a["b"][3]', "value": 4}]} - result = self._plugin.run(task_vars=task_vars) - self.assertEqual(result, expected) - - def test_run_int_dict_keys(self): - """Integer dict keys""" - task_vars = {"vars": {"a": {0: [1, 2, 3]}}} - expected = copy.deepcopy(task_vars["vars"]) - expected["a"][0][0] = 0 - expected.update({"changed": True}) - self._plugin._task.args = {"updates": [{"path": "a.0.0", "value": 0}]} - result = self._plugin.run(task_vars=task_vars) - self.assertEqual(result, expected) - - def test_run_int_as_string(self): - """Integer dict keys as string""" - task_vars = {"vars": {"a": {"0": [1, 2, 3]}}} - expected = copy.deepcopy(task_vars["vars"]) - expected["a"]["0"][0] = 0 - expected.update({"changed": True}) - self._plugin._task.args = {"updates": [{"path": 'a["0"].0', "value": 0}]} - result = self._plugin.run(task_vars=task_vars) - self.assertEqual(result, expected) - - def test_run_invalid_path_quote_after_dot(self): - """Invalid path format""" - self._plugin._task.args = {"updates": [{"path": "a.'b'", "value": 0}]} - with self.assertRaises(Exception) as error: - self._plugin.run(task_vars={"vars": {}}) - self.assertIn("malformed", str(error.exception)) - - def test_run_invalid_path_bracket_after_dot(self): - """Invalid path format""" - self._plugin._task.args = {"updates": [{"path": "a.['b']", "value": 0}]} - with self.assertRaises(Exception) as error: - self._plugin.run(task_vars={"vars": {}}) - self.assertIn("malformed", str(error.exception)) - - def test_run_invalid_key_start_with_dot(self): - """Invalid key format""" - self._plugin._task.args = {"updates": [{"path": ".abc", "value": 0}]} - with self.assertRaises(Exception) as error: - self._plugin.run(task_vars={"vars": {}}) - self.assertIn("malformed", str(error.exception)) - - def test_run_no_update_list(self): - """Confirm no change when same""" - task_vars = {"vars": {"a": {"b": [1, 2, 3]}}} - expected = copy.deepcopy(task_vars["vars"]) - expected["a"]["b"] = [1, 2, 3] - expected.update({"changed": False}) - self._plugin._task.args = {"updates": [{"path": "a.b.0", "value": 1}]} - result = self._plugin.run(task_vars=task_vars) - self.assertEqual(result, expected) - - def test_run_no_update_dict(self): - """Confirm no change when same""" - task_vars = {"vars": {"a": {"b": [1, 2, 3]}}} - expected = copy.deepcopy(task_vars["vars"]) - expected["a"]["b"] = [1, 2, 3] - expected.update({"changed": False}) - self._plugin._task.args = {"updates": [{"path": "a.b", "value": [1, 2, 3]}]} - result = self._plugin.run(task_vars=task_vars) - self.assertEqual(result, expected) - - def test_run_missing_key(self): - """Confirm error when key not found""" - task_vars = {"vars": {"a": {"b": 1}}} - self._plugin._task.args = {"updates": [{"path": "a.c.d", "value": 1}]} - with self.assertRaises(Exception) as error: - self._plugin.run(task_vars=task_vars) - self.assertIn("the key 'c' was not found", str(error.exception)) - - def test_run_list_not_int(self): - """Confirm error when key not found""" - task_vars = {"vars": {"a": {"b": [1]}}} - self._plugin._task.args = {"updates": [{"path": "a.b['0']", "value": 2}]} - with self.assertRaises(Exception) as error: - self._plugin.run(task_vars=task_vars) - self.assertIn("index provided was not an integer", str(error.exception)) - - def test_run_list_not_long(self): - """List not long enough""" - task_vars = {"vars": {"a": {"b": [0]}}} - self._plugin._task.args = {"updates": [{"path": "a.b.2", "value": 2}]} - with self.assertRaises(Exception) as error: - self._plugin.run(task_vars=task_vars) - self.assertIn("not long enough for item #2 to be set", str(error.exception)) - - def test_not_mutable_sequence_or_mapping(self): - """Confirm graceful fail when immutable object - This should never happen in the real world - """ - obj = {"a": frozenset([1, 2, 3])} - path = ["a", 0] - val = 9 - with self.assertRaises(Exception) as error: - self._plugin.set_value(obj, path, val) - self.assertIn("can only modify mutable objects", str(error.exception)) - - def test_run_not_dotted_success_one(self): - """Test with a not dotted key""" - task_vars = {"vars": {"a": 0}} - expected = copy.deepcopy(task_vars["vars"]) - expected["a"] = 1 - expected.update({"changed": True}) - self._plugin._task.args = {"updates": [{"path": "a", "value": 1}]} - result = self._plugin.run(task_vars=task_vars) - self.assertEqual(result, expected) - - def test_run_not_dotted_success_three(self): - """Test with a not dotted key longer""" - task_vars = {"vars": {"abc": 0}} - expected = copy.deepcopy(task_vars["vars"]) - expected["abc"] = 1 - expected.update({"changed": True}) - self._plugin._task.args = {"updates": [{"path": "abc", "value": 1}]} - result = self._plugin.run(task_vars=task_vars) - self.assertEqual(result, expected) - - def test_run_not_dotted_fail_missing(self): - """Test with a not dotted key, missing""" - task_vars = {"vars": {"abc": 0}} - self._plugin._task.args = {"updates": [{"path": "123", "value": 1}]} - with self.assertRaises(Exception) as error: - self._plugin.run(task_vars=task_vars) - self.assertIn("'123' was not found in the current facts", str(error.exception)) - - def test_run_not_dotted_success_same(self): - """Test with a not dotted key, no change""" - task_vars = {"vars": {"a": 0}} - expected = copy.deepcopy(task_vars["vars"]) - expected.update({"changed": False}) - self._plugin._task.args = {"updates": [{"path": "a", "value": 0}]} - result = self._plugin.run(task_vars=task_vars) - self.assertEqual(result, expected) - - def test_run_looks_like_a_bool(self): - """Test with a key that looks like a bool""" - task_vars = {"vars": {"a": {"True": 0}}} - expected = copy.deepcopy(task_vars["vars"]) - expected["a"]["True"] = 1 - expected.update({"changed": True}) - self._plugin._task.args = {"updates": [{"path": "a['True']", "value": 1}]} - result = self._plugin.run(task_vars=task_vars) - self.assertEqual(result, expected) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/action/test_validate.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/action/test_validate.py deleted file mode 100644 index 0176228a..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/action/test_validate.py +++ /dev/null @@ -1,299 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2020 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible.errors import AnsibleActionFail -from ansible.playbook.task import Task -from ansible.template import Templar - -from ansible_collections.ansible.utils.plugins.action.validate import ActionModule - - -try: - from unittest.mock import MagicMock # pylint:disable=syntax-error -except ImportError: - from mock import MagicMock # pyright: ignore[reportMissingModuleSource] - - -DATA = { - "GigabitEthernet0/0/0/0": { - "auto_negotiate": False, - "counters": { - "in_crc_errors": 0, - "in_errors": 0, - "rate": {"in_rate": 0, "out_rate": 0}, - }, - "description": "configured using Ansible", - "duplex_mode": "full", - "enabled": True, - "line_protocol": "up", - "mtu": 1514, - "oper_status": "down", - "type": "GigabitEthernet", - }, - "GigabitEthernet0/0/0/1": { - "auto_negotiate": False, - "counters": { - "in_crc_errors": 10, - "in_errors": 0, - "rate": {"in_rate": 0, "out_rate": 0}, - }, - "description": "# interface is configures with Ansible", - "duplex_mode": "full", - "enabled": False, - "line_protocol": "up", - "mtu": 1514, - "oper_status": "up", - "type": "GigabitEthernet", - }, -} - -CRITERIA_CRC_ERROR_CHECK = { - "type": "object", - "patternProperties": { - "^.*": { - "type": "object", - "properties": { - "counters": {"properties": {"in_crc_errors": {"type": "number", "maximum": 0}}}, - }, - }, - }, -} - -CRITERIA_ENABLED_CHECK = { - "type": "object", - "patternProperties": {"^.*": {"type": "object", "properties": {"enabled": {"enum": [True]}}}}, -} - -CRITERIA_OPER_STATUS_UP_CHECK = { - "type": "object", - "patternProperties": { - "^.*": { - "type": "object", - "properties": {"oper_status": {"type": "string", "pattern": "up"}}, - }, - }, -} - -CRITERIA_IN_RATE_CHECK = { - "type": "object", - "patternProperties": { - "^.*": { - "type": "object", - "properties": { - "counters": { - "properties": { - "rate": {"properties": {"in_rate": {"type": "number", "maximum": 0}}}, - }, - }, - }, - }, - }, -} - -VALID_DATA = {"name": "ansible", "email": "ansible@redhat.com"} - -IN_VALID_DATA = {"name": "ansible", "email": "redhatcom"} - -CRITERIA_FORMAT_SUPPORT_CHECK = { - "$schema": "https://json-schema.org/schema#", - "type": "object", - "properties": {"name": {"type": "string"}, "email": {"format": "email"}}, - "required": ["email"], -} - - -class TestValidate(unittest.TestCase): - def setUp(self): - task = MagicMock(Task) - play_context = MagicMock() - play_context.check_mode = False - connection = MagicMock() - fake_loader = {} - templar = Templar(loader=fake_loader) - self._plugin = ActionModule( - task=task, - connection=connection, - play_context=play_context, - loader=fake_loader, - templar=templar, - shared_loader_obj=None, - ) - self._plugin._task.action = "validate" - - def test_invalid_argspec(self): - """Check passing invalid argspec""" - - # missing required arguments - self._plugin._task.args = {"engine": "ansible.utils.jsonschema"} - result = self._plugin.run(task_vars=None) - msg = "missing required arguments:" - if isinstance(result["errors"], list): - self.assertIn(msg, result["errors"][0]) - else: - self.assertIn(msg, result["errors"]) - - # invalid engine option value - self._plugin._task.args = { - "engine": "ansible.utils.sample", - "data": DATA, - "criteria": CRITERIA_OPER_STATUS_UP_CHECK, - } - result = self._plugin.run(task_vars=None) - self.assertIn( - "For engine 'ansible.utils.sample' error loading the corresponding validate plugin", - result["msg"], - ) - - # invalid data option value - self._plugin._task.args = { - "engine": "ansible.utils.jsonschema", - "data": "invalid data", - "criteria": CRITERIA_OPER_STATUS_UP_CHECK, - } - - with self.assertRaises(AnsibleActionFail) as error: - self._plugin.run(task_vars=None) - self.assertIn("'data' option value is invalid", str(error.exception)) - - # invalid criteria option value - self._plugin._task.args = { - "engine": "ansible.utils.jsonschema", - "data": DATA, - "criteria": "invalid criteria", - } - - with self.assertRaises(AnsibleActionFail) as error: - self._plugin.run(task_vars=None) - self.assertIn("'criteria' option value is invalid", str(error.exception)) - - def test_invalid_validate_plugin_config_options(self): - """Check passing invalid validate plugin options""" - - self._plugin._task.args = { - "engine": "ansible.utils.jsonschema", - "data": DATA, - "criteria": CRITERIA_IN_RATE_CHECK, - } - - result = self._plugin.run(task_vars={"ansible_validate_jsonschema_draft": "draft0"}) - self.assertIn( - "value of draft must be one of: draft3, draft4, draft6, draft7, 2019-09, 2020-12, got: draft0", - result["msg"], - ) - - def test_validate_plugin_config_options_with_draft3(self): - """Check passing invalid validate plugin options""" - - self._plugin._task.args = { - "engine": "ansible.utils.jsonschema", - "data": DATA, - "criteria": CRITERIA_IN_RATE_CHECK, - } - - result = self._plugin.run(task_vars={"ansible_validate_jsonschema_draft": "draft3"}) - self.assertIn("All checks passed", result["msg"]) - - def test_validate_plugin_config_options_with_draft4(self): - """Check passing invalid validate plugin options""" - - self._plugin._task.args = { - "engine": "ansible.utils.jsonschema", - "data": DATA, - "criteria": CRITERIA_IN_RATE_CHECK, - } - - result = self._plugin.run(task_vars={"ansible_validate_jsonschema_draft": "draft4"}) - self.assertIn("All checks passed", result["msg"]) - - def test_validate_plugin_config_options_with_draft6(self): - """Check passing invalid validate plugin options""" - - self._plugin._task.args = { - "engine": "ansible.utils.jsonschema", - "data": DATA, - "criteria": CRITERIA_IN_RATE_CHECK, - } - - result = self._plugin.run(task_vars={"ansible_validate_jsonschema_draft": "draft6"}) - self.assertIn("All checks passed", result["msg"]) - - def test_invalid_data(self): - """Check passing invalid data as per criteria""" - - self._plugin._task.args = { - "engine": "ansible.utils.jsonschema", - "data": DATA, - "criteria": [ - CRITERIA_CRC_ERROR_CHECK, - CRITERIA_ENABLED_CHECK, - CRITERIA_OPER_STATUS_UP_CHECK, - ], - } - - result = self._plugin.run(task_vars=None) - self.assertIn( - "patternProperties.^.*.properties.counters.properties.in_crc_errors.maximum", - result["msg"], - ) - self.assertIn("patternProperties.^.*.properties.enabled.enum", result["msg"]) - self.assertIn( - "'patternProperties.^.*.properties.oper_status.pattern", - result["msg"], - ) - - def test_valid_data(self): - """Check passing valid data as per criteria""" - - self._plugin._task.args = { - "engine": "ansible.utils.jsonschema", - "data": DATA, - "criteria": CRITERIA_IN_RATE_CHECK, - } - - result = self._plugin.run(task_vars=None) - self.assertIn("All checks passed", result["msg"]) - - def test_support_for_format(self): - """Check passing valid data as per criteria""" - - self._plugin._task.args = { - "engine": "ansible.utils.jsonschema", - "data": VALID_DATA, - "criteria": CRITERIA_FORMAT_SUPPORT_CHECK, - } - - result = self._plugin.run(task_vars=None) - self.assertIn("All checks passed", result["msg"]) - - def test_support_for_format_with_invalid_data(self): - """Check passing valid data as per criteria""" - - self._plugin._task.args = { - "engine": "ansible.utils.jsonschema", - "data": IN_VALID_DATA, - "criteria": CRITERIA_FORMAT_SUPPORT_CHECK, - } - - result = self._plugin.run(task_vars=None) - self.assertIn("Validation errors were found", result["msg"]) - - def test_support_for_disabled_format_with_invalid_data(self): - """Check passing valid data as per criteria""" - - self._plugin._task.args = { - "engine": "ansible.utils.jsonschema", - "data": IN_VALID_DATA, - "criteria": CRITERIA_FORMAT_SUPPORT_CHECK, - } - - result = self._plugin.run(task_vars=dict(ansible_validate_jsonschema_check_format=False)) - self.assertIn("All checks passed", result["msg"]) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_cidr_merge.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_cidr_merge.py deleted file mode 100644 index 9b1545c9..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_cidr_merge.py +++ /dev/null @@ -1,67 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for cidr_merge filter plugin -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible.errors import AnsibleFilterError - -from ansible_collections.ansible.utils.plugins.filter.cidr_merge import _cidr_merge - - -INVALID_DATA_MERGE = ["0.1234.34.44", "1.00000.2.000.22"] - -VALID_DATA_MEREGE = ["192.168.0.0/17", "192.168.128.0/17", "192.168.128.1"] - -VALID_OUTPUT_MERGE = ["192.168.0.0/16"] - -VALID_DATA_SPAN = ["192.168.1.1", "192.168.1.2", "192.168.1.3", "192.168.1.4"] - -VALID_OUTPUT_SPAN = "192.168.1.0/29" - - -class TestCidrMerge(unittest.TestCase): - def setUp(self): - pass - - def test_invalid_data_merge(self): - """Check passing invalid argspec""" - - args = ["", INVALID_DATA_MERGE, "merge"] - kwargs = {} - with self.assertRaises(AnsibleFilterError) as error: - _cidr_merge(*args, **kwargs) - self.assertIn("invalid IPNetwork 0.1234.34.44", str(error.exception)) - - def test_valid_data_merge(self): - """test for cidr_merge plugin with merge""" - - args = ["", VALID_DATA_MEREGE, "merge"] - result = _cidr_merge(*args) - self.assertEqual(result, VALID_OUTPUT_MERGE) - - def test_valid_data_span(self): - """test for cidr_merge plugin with span""" - - args = ["", VALID_DATA_SPAN, "span"] - result = _cidr_merge(*args) - self.assertEqual(result, VALID_OUTPUT_SPAN) - - def test_valid_data_with_invalid_action(self): - """Check passing valid data as per criteria""" - - args = ["", VALID_DATA_SPAN, "span1"] - kwargs = {} - with self.assertRaises(AnsibleFilterError) as error: - _cidr_merge(*args, **kwargs) - self.assertIn("cidr_merge: invalid action 'span1'", str(error.exception)) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_consolidate.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_consolidate.py deleted file mode 100644 index 729701c4..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_consolidate.py +++ /dev/null @@ -1,522 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible.errors import AnsibleFilterError - -from ansible_collections.ansible.utils.plugins.filter.consolidate import _consolidate - - -class TestConsolidate(unittest.TestCase): - def setUp(self): - pass - - def test_consolidate_plugin(self): - data_sources = [ - { - "data": [ - { - "duplex": "auto", - "enabled": True, - "name": "GigabitEthernet0/0", - "note": ["Connected green wire"], - "speed": "auto", - }, - { - "description": "Configured by Ansible - Interface 1", - "duplex": "auto", - "enabled": True, - "mtu": 1500, - "name": "GigabitEthernet0/1", - "note": ["Connected blue wire", "Configured by Paul"], - "speed": "auto", - "vifs": [ - { - "comment": "Needs reconfiguration", - "description": "Eth1 - VIF 100", - "enabled": True, - "mtu": 400, - "vlan_id": 100, - }, - { - "description": "Eth1 - VIF 101", - "enabled": True, - "vlan_id": 101, - }, - ], - }, - { - "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", - "enabled": False, - "mtu": 600, - "name": "GigabitEthernet0/2", - }, - ], - "match_key": "name", - "name": "interfaces", - }, - { - "data": [ - {"name": "GigabitEthernet0/0"}, - { - "mode": "access", - "name": "GigabitEthernet0/1", - "trunk": { - "allowed_vlans": [ - "11", - "12", - "59", - "67", - "75", - "77", - "81", - "100", - "400-408", - "411-413", - "415", - "418", - "982", - "986", - "988", - "993", - ], - }, - }, - { - "mode": "trunk", - "name": "GigabitEthernet0/2", - "trunk": { - "allowed_vlans": [ - "11", - "12", - "59", - "67", - "75", - "77", - "81", - "100", - "400-408", - "411-413", - "415", - "418", - "982", - "986", - "988", - "993", - ], - "encapsulation": "dot1q", - }, - }, - ], - "match_key": "name", - "name": "l2_interfaces", - }, - { - "data": [ - { - "ipv4": [{"address": "192.168.0.2/24"}], - "name": "GigabitEthernet0/0", - }, - {"name": "GigabitEthernet0/1"}, - {"name": "GigabitEthernet0/2"}, - {"name": "Loopback888"}, - {"name": "Loopback999"}, - ], - "match_key": "name", - "name": "l3_interfaces", - }, - ] - - output = { - "GigabitEthernet0/0": { - "interfaces": { - "duplex": "auto", - "enabled": True, - "name": "GigabitEthernet0/0", - "note": ["Connected green wire"], - "speed": "auto", - }, - "l2_interfaces": {"name": "GigabitEthernet0/0"}, - "l3_interfaces": { - "ipv4": [{"address": "192.168.0.2/24"}], - "name": "GigabitEthernet0/0", - }, - }, - "GigabitEthernet0/1": { - "interfaces": { - "description": "Configured by Ansible - Interface 1", - "duplex": "auto", - "enabled": True, - "mtu": 1500, - "name": "GigabitEthernet0/1", - "note": ["Connected blue wire", "Configured by Paul"], - "speed": "auto", - "vifs": [ - { - "comment": "Needs reconfiguration", - "description": "Eth1 - VIF 100", - "enabled": True, - "mtu": 400, - "vlan_id": 100, - }, - { - "description": "Eth1 - VIF 101", - "enabled": True, - "vlan_id": 101, - }, - ], - }, - "l2_interfaces": { - "mode": "access", - "name": "GigabitEthernet0/1", - "trunk": { - "allowed_vlans": [ - "11", - "12", - "59", - "67", - "75", - "77", - "81", - "100", - "400-408", - "411-413", - "415", - "418", - "982", - "986", - "988", - "993", - ], - }, - }, - "l3_interfaces": {"name": "GigabitEthernet0/1"}, - }, - "GigabitEthernet0/2": { - "interfaces": { - "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", - "enabled": False, - "mtu": 600, - "name": "GigabitEthernet0/2", - }, - "l2_interfaces": { - "mode": "trunk", - "name": "GigabitEthernet0/2", - "trunk": { - "allowed_vlans": [ - "11", - "12", - "59", - "67", - "75", - "77", - "81", - "100", - "400-408", - "411-413", - "415", - "418", - "982", - "986", - "988", - "993", - ], - "encapsulation": "dot1q", - }, - }, - "l3_interfaces": {"name": "GigabitEthernet0/2"}, - }, - "Loopback888": { - "interfaces": {}, - "l2_interfaces": {}, - "l3_interfaces": {"name": "Loopback888"}, - }, - "Loopback999": { - "interfaces": {}, - "l2_interfaces": {}, - "l3_interfaces": {"name": "Loopback999"}, - }, - } - fail_missing_match_value = False - fail_missing_match_key = False - fail_duplicate = False - args = [ - "", - data_sources, - fail_missing_match_key, - fail_missing_match_value, - fail_duplicate, - ] - - result = _consolidate(*args) - self.assertEqual(result, output) - - def test_fail_missing_match_key(self): - data_sources = [ - { - "data": [ - { - "duplex": "auto", - "enabled": True, - "name": "GigabitEthernet0/0", - "note": ["Connected green wire"], - "speed": "auto", - }, - { - "description": "Configured by Ansible - Interface 1", - "duplex": "auto", - "enabled": True, - "mtu": 1500, - "name": "GigabitEthernet0/1", - "note": ["Connected blue wire", "Configured by Paul"], - "speed": "auto", - "vifs": [ - { - "comment": "Needs reconfiguration", - "description": "Eth1 - VIF 100", - "enabled": True, - "mtu": 400, - "vlan_id": 100, - }, - { - "description": "Eth1 - VIF 101", - "enabled": True, - "vlan_id": 101, - }, - ], - }, - { - "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", - "enabled": False, - "mtu": 600, - "name": "GigabitEthernet0/2", - }, - ], - "match_key": "name", - "name": "interfaces", - }, - { - "data": [ - {"name": "GigabitEthernet0/0"}, - { - "mode": "access", - "name": "GigabitEthernet0/1", - "trunk": { - "allowed_vlans": [ - "11", - "12", - "59", - "67", - "75", - "77", - "81", - "100", - "400-408", - "411-413", - "415", - "418", - "982", - "986", - "988", - "993", - ], - }, - }, - { - "mode": "trunk", - "name": "GigabitEthernet0/2", - "trunk": { - "allowed_vlans": [ - "11", - "12", - "59", - "67", - "75", - "77", - "81", - "100", - "400-408", - "411-413", - "415", - "418", - "982", - "986", - "988", - "993", - ], - "encapsulation": "dot1q", - }, - }, - ], - "match_key": "name", - "name": "l2_interfaces", - }, - { - "data": [ - { - "ipv4": [{"address": "192.168.0.2/24"}], - "intf_name": "GigabitEthernet0/0", - }, - {"name": "GigabitEthernet0/1"}, - {"name": "GigabitEthernet0/2"}, - {"name": "Loopback888"}, - {"name": "Loopback999"}, - ], - "match_key": "name", - "name": "l3_interfaces", - }, - ] - - fail_missing_match_key = True - args = ["", data_sources, fail_missing_match_key, False, False] - with self.assertRaises(AnsibleFilterError) as error: - _consolidate(*args) - self.assertIn( - "Error when using plugin 'consolidate': 'fail_missing_match_key' reported missing match key 'name' in data source 3 in list entry 1", - str(error.exception), - ) - - def test_fail_duplicate(self): - data_sources = [ - { - "data": [ - { - "duplex": "auto", - "enabled": True, - "name": "GigabitEthernet0/0", - "note": ["Connected green wire"], - "speed": "auto", - }, - { - "description": "Configured by Ansible - Interface 1", - "duplex": "auto", - "enabled": True, - "mtu": 1500, - "name": "GigabitEthernet0/1", - "note": ["Connected blue wire", "Configured by Paul"], - "speed": "auto", - "vifs": [ - { - "comment": "Needs reconfiguration", - "description": "Eth1 - VIF 100", - "enabled": True, - "mtu": 400, - "vlan_id": 100, - }, - { - "description": "Eth1 - VIF 101", - "enabled": True, - "vlan_id": 101, - }, - ], - }, - { - "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", - "enabled": False, - "mtu": 600, - "name": "GigabitEthernet0/2", - }, - ], - "match_key": "name", - "name": "interfaces", - }, - { - "data": [ - {"name": "GigabitEthernet0/0"}, - { - "mode": "access", - "name": "GigabitEthernet0/1", - "trunk": { - "allowed_vlans": [ - "11", - "12", - "59", - "67", - "75", - "77", - "81", - "100", - "400-408", - "411-413", - "415", - "418", - "982", - "986", - "988", - "993", - ], - }, - }, - { - "mode": "trunk", - "name": "GigabitEthernet0/2", - "trunk": { - "allowed_vlans": [ - "11", - "12", - "59", - "67", - "75", - "77", - "81", - "100", - "400-408", - "411-413", - "415", - "418", - "982", - "986", - "988", - "993", - ], - "encapsulation": "dot1q", - }, - }, - ], - "match_key": "name", - "name": "l2_interfaces", - }, - { - "data": [ - { - "ipv4": [{"address": "192.168.0.2/24"}], - "name": "GigabitEthernet0/0", - }, - { - "ipv4": [{"address": "192.168.0.3/24"}], - "name": "GigabitEthernet0/0", - }, - {"name": "GigabitEthernet0/1"}, - {"name": "GigabitEthernet0/2"}, - {"name": "Loopback888"}, - {"name": "Loopback999"}, - ], - "match_key": "name", - "name": "l3_interfaces", - }, - ] - - fail_missing_match_value = False - fail_missing_match_key = False - fail_duplicate = True - args = [ - "", - data_sources, - fail_missing_match_key, - fail_missing_match_value, - fail_duplicate, - ] - with self.assertRaises(AnsibleFilterError) as error: - _consolidate(*args) - self.assertIn( - "Error when using plugin 'consolidate': 'fail_duplicate' reported duplicate values in data source 3", - str(error.exception), - ) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_fact_diff.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_fact_diff.py deleted file mode 100644 index c4bdff01..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_fact_diff.py +++ /dev/null @@ -1,118 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2023 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible.errors import AnsibleFilterError - -from ansible_collections.ansible.utils.plugins.filter.fact_diff import _fact_diff - - -class TestUpdate_Fact(unittest.TestCase): - def setUp(self): - pass - - def test_same(self): - """Ensure two equal string don't create a diff""" - before = "Lorem ipsum dolor sit amet" - after = before - result = _fact_diff("", before, after) - self.assertEqual("[]", result) - - def test_string(self): - """Compare two strings""" - before = "Lorem ipsum dolor sit amet, consectetur adipiscing elit" - after = "Lorem ipsum dolor sit amet, AAA consectetur adipiscing elit" - result = _fact_diff("", before, after) - self.assertIn("-" + before, result) - self.assertIn("+" + after, result) - - def test_string_skip_lines(self): - """Compare two string, with skip_lines""" - before = "Lorem ipsum dolor sit amet, consectetur adipiscing elit" - after = "Lorem ipsum dolor sit amet, AAA consectetur adipiscing elit" - result = _fact_diff("", before, after, plugin={"vars": {"skip_lines": "^Lorem"}}) - print(result) - self.assertEqual("[]", result) - - def test_same_list(self): - """Compare two lists that are the same""" - before = "[0, 1, 2, 3]" - after = before - result = _fact_diff("", before, after) - self.assertEqual("[]", result) - - def test_diff_list_skip_lines(self): - """Compare two lists, with skip_lines""" - before = [0, 1, 2] - after = [0, 1, 2, 3] - result = _fact_diff("", before, after, plugin={"vars": {"skip_lines": "3"}}) - self.assertEqual("[]", result) - - def test_diff_list(self): - """Compare two lists with differences""" - before = [0, 1, 2, 3] - after = [0, 1, 2, 4] - result = _fact_diff("", before, after) - self.assertIn("-3", result) - self.assertIn("+4", result) - - def test_same_dict(self): - """Compare two dicts that are the same""" - before = {"a": {"b": {"c": {"d": [0, 1, 2]}}}} - after = before - result = _fact_diff("", before, after) - self.assertEqual("[]", result) - - def test_diff_dict_skip_lines(self): - """Compare two dicts, with skip_lines""" - before = {"a": {"b": {"c": {"d": [0, 1, 2]}}}} - after = {"a": {"b": {"c": {"d": [0, 1, 2, 3]}}}} - result = _fact_diff("", before, after, {"vars": {"skip_lines": "3"}}) - self.assertEqual("[]", result) - - def test_diff_dict(self): - """Compare two dicts that are different""" - self.maxDiff = None - before = {"a": {"b": {"c": {"d": [0, 1, 2, 3]}}}} - after = {"a": {"b": {"c": {"d": [0, 1, 2, 4]}}}} - result = _fact_diff("", before, after) - self.assertIn("- 3", result) - self.assertIn("+ 4", result) - - def test_invalid_regex(self): - """Check with invalid regex""" - before = after = True - with self.assertRaises(AnsibleFilterError) as error: - result = _fact_diff("", before, after, {"vars": {"skip_lines": "+"}}) - self.assertIn( - "The regex '+', is not valid.", - str(error.exception), - ) - - def test_argspec(self): - """Validate argspec""" - before = True - with self.assertRaises(AnsibleFilterError) as error: - result = _fact_diff("", before) - self.assertIn( - "missing required arguments: after", - str(error.exception), - ) - - def test_diff_dict_common(self): - """Compare two dicts that with common option""" - self.maxDiff = None - before = {"a": {"b": {"c": {"d": [0, 1, 2, 3]}}}} - after = {"a": {"b": {"c": {"d": [0, 1, 2, 4]}}}} - result = _fact_diff("", before, after, common=True) - self.assertIn(" 0", result) - self.assertIn(" 1", result) - self.assertIn(" 2", result) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_from_xml.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_from_xml.py deleted file mode 100644 index a883592f..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_from_xml.py +++ /dev/null @@ -1,71 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2020 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible.errors import AnsibleError, AnsibleFilterError - -from ansible_collections.ansible.utils.plugins.filter.from_xml import _from_xml - - -INVALID_DATA = '' - -VALID_DATA = ( - '' - "" -) - -OUTPUT = """{"netconf-state": \ -{"@xmlns": "urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring", "schemas": {"schema": null}}}""" - - -class TestFromXml(unittest.TestCase): - def setUp(self): - pass - - def test_invalid_data(self): - """Check passing invalid argspec""" - - # missing required arguments - args = ["", INVALID_DATA, "xmltodict"] - kwargs = {} - with self.assertRaises(AnsibleError) as error: - _from_xml(*args, **kwargs) - self.assertIn( - "Error when using plugin 'from_xml': Input Xml is not valid", - str(error.exception), - ) - - def test_valid_data(self): - """Check passing valid data as per criteria""" - self.maxDiff = None - args = ["", VALID_DATA, "xmltodict"] - result = _from_xml(*args) - self.assertEqual(result, OUTPUT) - - def test_args(self): - """Check passing invalid argspec""" - - # missing required arguments - args = [] - kwargs = {} - with self.assertRaises(AnsibleFilterError) as error: - _from_xml(*args, **kwargs) - self.assertIn("missing required arguments: data", str(error.exception)) - - def test_invalid_engine(self): - """Check passing invalid argspec""" - - # missing required arguments - args = ["", INVALID_DATA, "test"] - kwargs = {} - with self.assertRaises(AnsibleError) as error: - _from_xml(*args, **kwargs) - self.assertIn("engine: test is not supported", str(error.exception)) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_hwaddr.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_hwaddr.py deleted file mode 100644 index 1ddfd627..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_hwaddr.py +++ /dev/null @@ -1,34 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for hwaddr filter plugin -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible_collections.ansible.utils.plugins.filter.hwaddr import _hwaddr - - -class Test_hwaddr(unittest.TestCase): - def setUp(self): - pass - - def test_hwaddr_filter_1(self): - """hwaddr filter""" - args = ["", "1a:2b:3c:4d:5e:6f"] - result = _hwaddr(*args) - self.assertEqual(result, "1a:2b:3c:4d:5e:6f") - - def test_hwaddr_filter_2(self): - """hwaddr filter""" - args = ["", "1a:2b:3c:4d:5e:6f", "cisco"] - result = _hwaddr(*args) - self.assertEqual(result, "1a2b.3c4d.5e6f") diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_ip4_hex.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_ip4_hex.py deleted file mode 100644 index 449b3e1a..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_ip4_hex.py +++ /dev/null @@ -1,48 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for ipwrap filter plugin -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible.errors import AnsibleFilterError - -from ansible_collections.ansible.utils.plugins.filter.ip4_hex import _ip4_hex - - -class TestIpWrap(unittest.TestCase): - def setUp(self): - pass - - def test_valid_data_list(self): - """Check passing valid argspec(list)""" - args = ["", "192.168.1.5", ""] - result = _ip4_hex(*args) - print(result) - self.assertEqual(result, "c0a80105") - - def test_valid_data_string(self): - """Check passing valid argspec(string)""" - - args = ["", "192.168.1.5", ":"] - result = _ip4_hex(*args) - self.assertEqual(result, "c0:a8:01:05") - - def test_args(self): - """Check passing invalid argspec""" - - # missing required arguments - args = [] - kwargs = {} - with self.assertRaises(AnsibleFilterError) as error: - _ip4_hex(*args, **kwargs) - self.assertIn("missing required arguments: arg", str(error.exception)) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_ipaddr.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_ipaddr.py deleted file mode 100644 index 0193967b..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_ipaddr.py +++ /dev/null @@ -1,735 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for ipaddr filter plugins -""" -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -import pytest - -from ansible.errors import AnsibleFilterError -from ansible.template import AnsibleUndefined - -from ansible_collections.ansible.utils.plugins.filter.cidr_merge import cidr_merge -from ansible_collections.ansible.utils.plugins.filter.ip4_hex import ip4_hex -from ansible_collections.ansible.utils.plugins.filter.ipaddr import _ipaddr -from ansible_collections.ansible.utils.plugins.filter.ipmath import ipmath -from ansible_collections.ansible.utils.plugins.filter.ipsubnet import ipsubnet -from ansible_collections.ansible.utils.plugins.filter.network_in_network import network_in_network -from ansible_collections.ansible.utils.plugins.filter.network_in_usable import network_in_usable -from ansible_collections.ansible.utils.plugins.filter.next_nth_usable import next_nth_usable -from ansible_collections.ansible.utils.plugins.filter.nthhost import nthhost -from ansible_collections.ansible.utils.plugins.filter.previous_nth_usable import previous_nth_usable -from ansible_collections.ansible.utils.plugins.filter.reduce_on_network import reduce_on_network -from ansible_collections.ansible.utils.plugins.filter.slaac import slaac -from ansible_collections.ansible.utils.plugins.plugin_utils.base.ipaddr_utils import ipaddr - - -netaddr = pytest.importorskip("netaddr") - - -class TestIpFilter(unittest.TestCase): - def test_cidr_merge(self): - with pytest.raises( - AnsibleFilterError, - match="cidr_merge: expected iterable, got None", - ): - cidr_merge(None) - - with pytest.raises( - AnsibleFilterError, - match="cidr_merge: invalid action 'floop'", - ): - cidr_merge([], "floop") - - self.assertEqual(cidr_merge([]), []) - self.assertEqual(cidr_merge([], "span"), None) - subnets = ["1.12.1.0/24"] - self.assertEqual(cidr_merge(subnets), subnets) - self.assertEqual(cidr_merge(subnets, "span"), subnets[0]) - subnets = ["1.12.1.0/25", "1.12.1.128/25"] - self.assertEqual(cidr_merge(subnets), ["1.12.1.0/24"]) - self.assertEqual(cidr_merge(subnets, "span"), "1.12.1.0/24") - subnets = ["1.12.1.0/25", "1.12.1.128/25", "1.12.2.0/24"] - self.assertEqual(cidr_merge(subnets), ["1.12.1.0/24", "1.12.2.0/24"]) - self.assertEqual(cidr_merge(subnets, "span"), "1.12.0.0/22") - subnets = ["1.12.1.1", "1.12.1.255"] - self.assertEqual(cidr_merge(subnets), ["1.12.1.1/32", "1.12.1.255/32"]) - self.assertEqual(cidr_merge(subnets, "span"), "1.12.1.0/24") - - def test_ipaddr_undefined_value(self): - """Check ipaddr filter undefined value""" - args = ["", AnsibleUndefined(name="my_ip"), ""] - with pytest.raises( - AnsibleFilterError, - match="Unrecognized type <> for ipaddr filter ", - ): - _ipaddr(*args) - - def test_ipaddr_empty_query(self): - self.assertEqual(ipaddr("192.0.2.230"), "192.0.2.230") - self.assertEqual(ipaddr("192.0.2.230/30"), "192.0.2.230/30") - self.assertEqual(ipaddr([]), []) - - self.assertEqual(ipaddr(True), False) - self.assertEqual(ipaddr(""), False) - - def test_ipaddr_6to4_query(self): - v6_address = "2002:c000:02e6::1/48" - self.assertEqual(ipaddr("192.0.2.230", "6to4"), v6_address) - self.assertEqual(ipaddr("192.0.2.230/24", "6to4"), v6_address) - self.assertFalse(ipaddr("192.0.2.0/24", "6to4")) - - self.assertFalse(ipaddr("fd::e", "6to4")) - self.assertFalse(ipaddr("fd::e/20", "6to4")) - - self.assertEqual(ipaddr("2002:c000:02e6::1", "6to4"), "2002:c000:02e6::1") - self.assertEqual(ipaddr(v6_address, "6to4"), v6_address) - self.assertEqual( - ipaddr( - ["192.0.2.230", "192.0.2.0/24", "fd::e", "2002:c000:02e6::1"], - "6to4", - ), - [v6_address, "2002:c000:02e6::1"], - ) - - def test_ipaddr_address_query(self): - self.assertEqual(ipaddr("192.0.2.230", "address"), "192.0.2.230") - self.assertEqual(ipaddr("192.0.2.230/24", "address"), "192.0.2.230") - self.assertIsNone(ipaddr("192.0.2.0/24", "address")) - self.assertEqual(ipaddr("192.0.2.0/31", "address"), "192.0.2.0") - self.assertEqual(ipaddr("2001::1", "address"), "2001::1") - self.assertEqual(ipaddr("2001::1/48", "address"), "2001::1") - self.assertEqual(ipaddr("2001::", "address"), "2001::") - self.assertEqual(ipaddr("2001::/48", "address"), "2001::") - - def test_ipaddr_bool_query(self): - self.assertTrue(ipaddr("192.0.2.20", "bool")) - self.assertFalse(ipaddr("192.900.2.20", "bool")) - - def test_netmask(self): - address = "1.1.1.1/24" - self.assertEqual(ipaddr(address, "netmask"), "255.255.255.0") - address = "1.1.1.1/25" - self.assertEqual(ipaddr(address, "netmask"), "255.255.255.128") - address = "1.12.1.34/32" - self.assertEqual(ipaddr(address, "netmask"), "255.255.255.255") - - def test_network(self): - address = "1.12.1.34/32" - self.assertEqual(ipaddr(address, "network"), "1.12.1.34") - address = "1.12.1.34/255.255.255.255" - self.assertEqual(ipaddr(address, "network"), "1.12.1.34") - address = "1.12.1.34" - self.assertEqual(ipaddr(address, "network"), "1.12.1.34") - address = "1.12.1.35/31" - self.assertEqual(ipaddr(address, "network"), "1.12.1.34") - address = "1.12.1.34/24" - self.assertEqual(ipaddr(address, "network"), "1.12.1.0") - - def test_broadcast(self): - address = "1.12.1.34/24" - self.assertEqual(ipaddr(address, "broadcast"), "1.12.1.255") - address = "1.12.1.34/16" - self.assertEqual(ipaddr(address, "broadcast"), "1.12.255.255") - address = "1.12.1.34/27" - self.assertEqual(ipaddr(address, "broadcast"), "1.12.1.63") - address = "1.12.1.34/32" - self.assertEqual(ipaddr(address, "broadcast"), None) - address = "1.12.1.35/31" - self.assertEqual(ipaddr(address, "broadcast"), None) - - def test_first_usable(self): - with pytest.raises(AnsibleFilterError, match="Not a network address"): - ipaddr("1.12.1.34", "first_usable") - - address = "1.12.1.0/24" - self.assertEqual(ipaddr(address, "first_usable"), "1.12.1.1") - address = "1.12.1.36/24" - self.assertEqual(ipaddr(address, "first_usable"), "1.12.1.1") - address = "1.12.1.36/28" - self.assertEqual(ipaddr(address, "first_usable"), "1.12.1.33") - address = "1.12.1.36/255.255.255.240" - self.assertEqual(ipaddr(address, "first_usable"), "1.12.1.33") - address = "1.12.1.36/31" - self.assertEqual(ipaddr(address, "first_usable"), "1.12.1.36") - address = "1.12.1.37/31" - self.assertEqual(ipaddr(address, "first_usable"), "1.12.1.36") - address = "1.12.1.36/32" - self.assertEqual(ipaddr(address, "first_usable"), None) - - def test_host_query(self): - self.assertEqual(ipaddr("192.0.2.1", "host"), "192.0.2.1/32") - address = "192.0.2.12/20" - self.assertEqual(ipaddr(address, "host"), address) - address = "192.0.2.0/31" - self.assertEqual(ipaddr(address, "host"), address) - self.assertIsNone(ipaddr("192.0.2.0/24", "host")) - - def test_last_usable(self): - with pytest.raises(AnsibleFilterError, match="Not a network address"): - ipaddr("1.12.1.34", "last_usable") - - address = "1.12.1.0/24" - self.assertEqual(ipaddr(address, "last_usable"), "1.12.1.254") - address = "1.12.1.36/24" - self.assertEqual(ipaddr(address, "last_usable"), "1.12.1.254") - address = "1.12.1.36/28" - self.assertEqual(ipaddr(address, "last_usable"), "1.12.1.46") - address = "1.12.1.36/255.255.255.240" - self.assertEqual(ipaddr(address, "last_usable"), "1.12.1.46") - address = "1.12.1.36/31" - self.assertEqual(ipaddr(address, "last_usable"), "1.12.1.37") - address = "1.12.1.37/31" - self.assertEqual(ipaddr(address, "last_usable"), "1.12.1.37") - address = "1.12.1.36/32" - self.assertEqual(ipaddr(address, "last_usable"), None) - - def test_wildcard(self): - address = "1.12.1.0/24" - self.assertEqual(ipaddr(address, "wildcard"), "0.0.0.255") - address = "1.12.1.0/25" - self.assertEqual(ipaddr(address, "wildcard"), "0.0.0.127") - address = "1.12.1.36/28" - self.assertEqual(ipaddr(address, "wildcard"), "0.0.0.15") - address = "1.12.1.36/255.255.255.240" - self.assertEqual(ipaddr(address, "wildcard"), "0.0.0.15") - address = "1.12.1.36/31" - self.assertEqual(ipaddr(address, "wildcard"), "0.0.0.1") - address = "1.12.1.37/31" - self.assertEqual(ipaddr(address, "wildcard"), "0.0.0.1") - address = "1.12.1.36/32" - self.assertEqual(ipaddr(address, "wildcard"), "0.0.0.0") - address = "1.12.1.254/24" - self.assertEqual(ipaddr(address, "wildcard"), "0.0.0.255") - - def test_size_usable(self): - address = "1.12.1.0/24" - self.assertEqual(ipaddr(address, "size_usable"), 254) - address = "1.12.1.0/25" - self.assertEqual(ipaddr(address, "size_usable"), 126) - address = "1.12.1.36/28" - self.assertEqual(ipaddr(address, "size_usable"), 14) - address = "1.12.1.36/255.255.255.240" - self.assertEqual(ipaddr(address, "size_usable"), 14) - address = "1.12.1.36/31" - self.assertEqual(ipaddr(address, "size_usable"), 2) - address = "1.12.1.37/31" - self.assertEqual(ipaddr(address, "size_usable"), 2) - address = "1.12.1.36/32" - self.assertEqual(ipaddr(address, "size_usable"), 0) - address = "1.12.1.254/24" - self.assertEqual(ipaddr(address, "size_usable"), 254) - - def test_ipaddr_public_query(self): - self.assertIsNone(ipaddr("192.168.1.12", "public")) - self.assertIsNone(ipaddr("127.0.1.25", "public")) - self.assertIsNone(ipaddr("255.255.240.0", "public")) - self.assertEqual(ipaddr("76.120.99.190", "public"), "76.120.99.190") - self.assertEqual( - ipaddr(["192.168.1.12", "127.0.1.25", "255.255.240.0"], "public"), - [], - ) - self.assertEqual( - ipaddr( - [ - "192.168.1.12", - "127.0.1.25", - "255.255.240.0", - "76.120.99.190", - ], - "public", - ), - ["76.120.99.190"], - ) - - def test_range_usable(self): - address = "1.12.1.0/24" - self.assertEqual(ipaddr(address, "range_usable"), "1.12.1.1-1.12.1.254") - address = "1.12.1.0/25" - self.assertEqual(ipaddr(address, "range_usable"), "1.12.1.1-1.12.1.126") - address = "1.12.1.36/28" - self.assertEqual(ipaddr(address, "range_usable"), "1.12.1.33-1.12.1.46") - address = "1.12.1.36/255.255.255.240" - self.assertEqual(ipaddr(address, "range_usable"), "1.12.1.33-1.12.1.46") - address = "1.12.1.36/31" - self.assertEqual(ipaddr(address, "range_usable"), "1.12.1.36-1.12.1.37") - address = "1.12.1.37/31" - self.assertEqual(ipaddr(address, "range_usable"), "1.12.1.36-1.12.1.37") - address = "1.12.1.36/32" - self.assertEqual(ipaddr(address, "range_usable"), None) - address = "1.12.1.254/24" - self.assertEqual(ipaddr(address, "range_usable"), "1.12.1.1-1.12.1.254") - - def test_address_prefix(self): - # Regular address - address = "1.12.1.12/24" - self.assertEqual(ipaddr(address, "address/prefix"), address) - - # Network address - invalid - address = "1.12.1.0/24" - self.assertFalse(ipaddr(address, "address/prefix")) - # But valid in a /31 - address = "1.12.1.0/31" - self.assertEqual(ipaddr(address, "address/prefix"), address) - - # Broadcast address - invalid - address = "1.12.1.255/24" - self.assertFalse(ipaddr(address, "address/prefix")) - # But valid in a /31 - address = "1.12.1.255/31" - self.assertEqual(ipaddr(address, "address/prefix"), address) - - # /32 - always valid? - address = "1.12.1.0/32" - self.assertEqual(ipaddr(address, "address/prefix"), address) - address = "1.12.1.12/32" - self.assertEqual(ipaddr(address, "address/prefix"), address) - address = "1.12.1.255/32" - self.assertEqual(ipaddr(address, "address/prefix"), address) - - # No prefix means /32 - address = "1.12.1.34" - self.assertEqual(ipaddr(address, "address/prefix"), "1.12.1.34/32") - - # Hostmask also works - address = "1.12.1.36/255.255.255.240" - self.assertEqual(ipaddr(address, "address/prefix"), "1.12.1.36/28") - # But not hostmasks that don't make a valid CIDR prefix - address = "1.12.1.36/255.255.255.88" - self.assertFalse(ipaddr(address, "address/prefix")) - - def test_ip_prefix(self): - address = "1.12.1.0/24" - self.assertEqual(ipaddr(address, "ip/prefix"), None) - address = "1.12.1.0/25" - self.assertEqual(ipaddr(address, "ip/prefix"), None) - address = "1.12.1.36/28" - self.assertEqual(ipaddr(address, "ip/prefix"), "1.12.1.36/28") - address = "1.12.1.36/255.255.255.240" - self.assertEqual(ipaddr(address, "ip/prefix"), "1.12.1.36/28") - address = "1.12.1.36/31" - self.assertEqual(ipaddr(address, "ip/prefix"), "1.12.1.36/31") - address = "1.12.1.37/31" - self.assertEqual(ipaddr(address, "ip/prefix"), "1.12.1.37/31") - address = "1.12.1.36/32" - self.assertEqual(ipaddr(address, "ip/prefix"), None) - address = "1.12.1.254/24" - self.assertEqual(ipaddr(address, "ip/prefix"), "1.12.1.254/24") - - def test_ip_netmask(self): - address = "1.12.1.0/24" - self.assertEqual(ipaddr(address, "ip_netmask"), None) - address = "1.12.1.0/25" - self.assertEqual(ipaddr(address, "ip_netmask"), None) - address = "1.12.1.36/28" - self.assertEqual(ipaddr(address, "ip_netmask"), "1.12.1.36 255.255.255.240") - address = "1.12.1.36/255.255.255.240" - self.assertEqual(ipaddr(address, "ip_netmask"), "1.12.1.36 255.255.255.240") - address = "1.12.1.36/31" - self.assertEqual(ipaddr(address, "ip_netmask"), "1.12.1.36 255.255.255.254") - address = "1.12.1.37/31" - self.assertEqual(ipaddr(address, "ip_netmask"), "1.12.1.37 255.255.255.254") - address = "1.12.1.36/32" - self.assertEqual(ipaddr(address, "ip_netmask"), None) - address = "1.12.1.254/24" - self.assertEqual(ipaddr(address, "ip_netmask"), "1.12.1.254 255.255.255.0") - - def test_ipv6_query(self): - self.assertEqual(ipaddr("fd00:123::97", "ipv6"), "fd00:123::97") - self.assertEqual(ipaddr("192.0.2.230", "ipv6"), "::ffff:192.0.2.230/128") - - def test_ipaddr_link_local_query(self): - self.assertEqual(ipaddr("169.254.0.12", "link-local"), "169.254.0.12") - self.assertIsNone(ipaddr("192.0.2.12", "link-local")) - self.assertEqual(ipaddr("fe80::9", "link-local"), "fe80::9") - self.assertIsNone(ipaddr("2001::", "link-local")) - - def test_network_id(self): - address = "1.12.1.0/24" - self.assertEqual(ipaddr(address, "network_id"), "1.12.1.0") - address = "1.12.1.0/25" - self.assertEqual(ipaddr(address, "network_id"), "1.12.1.0") - address = "1.12.1.36/28" - self.assertEqual(ipaddr(address, "network_id"), "1.12.1.32") - address = "1.12.1.36/255.255.255.240" - self.assertEqual(ipaddr(address, "network_id"), "1.12.1.32") - address = "1.12.1.36/31" - self.assertEqual(ipaddr(address, "network_id"), "1.12.1.36") - address = "1.12.1.37/31" - self.assertEqual(ipaddr(address, "network_id"), "1.12.1.36") - address = "1.12.1.36/32" - self.assertEqual(ipaddr(address, "network_id"), "1.12.1.36") - address = "1.12.1.254/24" - self.assertEqual(ipaddr(address, "network_id"), "1.12.1.0") - - def test_network_prefix(self): - address = "1.12.1.0/24" - self.assertEqual(ipaddr(address, "network/prefix"), "1.12.1.0/24") - address = "1.12.1.0/25" - self.assertEqual(ipaddr(address, "network/prefix"), "1.12.1.0/25") - address = "1.12.1.36/28" - self.assertEqual(ipaddr(address, "network/prefix"), "1.12.1.32/28") - address = "1.12.1.36/255.255.255.240" - self.assertEqual(ipaddr(address, "network/prefix"), "1.12.1.32/28") - address = "1.12.1.36/31" - self.assertEqual(ipaddr(address, "network/prefix"), "1.12.1.36/31") - address = "1.12.1.37/31" - self.assertEqual(ipaddr(address, "network/prefix"), "1.12.1.36/31") - address = "1.12.1.36/32" - self.assertEqual(ipaddr(address, "network/prefix"), "1.12.1.36/32") - address = "1.12.1.254/24" - self.assertEqual(ipaddr(address, "network/prefix"), "1.12.1.0/24") - - def test_network_netmask(self): - address = "1.12.1.0/24" - self.assertEqual(ipaddr(address, "network_netmask"), "1.12.1.0 255.255.255.0") - address = "1.12.1.0/25" - self.assertEqual(ipaddr(address, "network_netmask"), "1.12.1.0 255.255.255.128") - address = "1.12.1.36/28" - self.assertEqual( - ipaddr(address, "network_netmask"), - "1.12.1.32 255.255.255.240", - ) - address = "1.12.1.36/255.255.255.240" - self.assertEqual( - ipaddr(address, "network_netmask"), - "1.12.1.32 255.255.255.240", - ) - address = "1.12.1.36/31" - self.assertEqual( - ipaddr(address, "network_netmask"), - "1.12.1.36 255.255.255.254", - ) - address = "1.12.1.37/31" - self.assertEqual( - ipaddr(address, "network_netmask"), - "1.12.1.36 255.255.255.254", - ) - address = "1.12.1.36/32" - self.assertEqual( - ipaddr(address, "network_netmask"), - "1.12.1.36 255.255.255.255", - ) - address = "1.12.1.254/24" - self.assertEqual(ipaddr(address, "network_netmask"), "1.12.1.0 255.255.255.0") - - def test_network_wildcard(self): - address = "1.12.1.0/24" - self.assertEqual(ipaddr(address, "network_wildcard"), "1.12.1.0 0.0.0.255") - address = "1.12.1.0/25" - self.assertEqual(ipaddr(address, "network_wildcard"), "1.12.1.0 0.0.0.127") - address = "1.12.1.36/28" - self.assertEqual(ipaddr(address, "network_wildcard"), "1.12.1.32 0.0.0.15") - address = "1.12.1.36/255.255.255.240" - self.assertEqual(ipaddr(address, "network_wildcard"), "1.12.1.32 0.0.0.15") - address = "1.12.1.36/31" - self.assertEqual(ipaddr(address, "network_wildcard"), "1.12.1.36 0.0.0.1") - address = "1.12.1.37/31" - self.assertEqual(ipaddr(address, "network_wildcard"), "1.12.1.36 0.0.0.1") - address = "1.12.1.36/32" - self.assertEqual(ipaddr(address, "network_wildcard"), "1.12.1.36 0.0.0.0") - address = "1.12.1.254/24" - self.assertEqual(ipaddr(address, "network_wildcard"), "1.12.1.0 0.0.0.255") - - def test_next_usable(self): - address = "1.12.1.0/24" - self.assertEqual(ipaddr(address, "next_usable"), "1.12.1.1") - address = "1.12.1.36/24" - self.assertEqual(ipaddr(address, "next_usable"), "1.12.1.37") - address = "1.12.1.36/28" - self.assertEqual(ipaddr(address, "next_usable"), "1.12.1.37") - address = "1.12.1.36/255.255.255.240" - self.assertEqual(ipaddr(address, "next_usable"), "1.12.1.37") - address = "1.12.1.36/31" - self.assertEqual(ipaddr(address, "next_usable"), "1.12.1.37") - address = "1.12.1.37/31" - self.assertEqual(ipaddr(address, "next_usable"), None) - address = "1.12.1.36/32" - self.assertEqual(ipaddr(address, "next_usable"), None) - address = "1.12.1.254/24" - self.assertEqual(ipaddr(address, "next_usable"), None) - - def test_peer(self): - address = "1.12.1.0/31" - self.assertEqual(ipaddr(address, "peer"), "1.12.1.1") - address = "1.12.1.1/31" - self.assertEqual(ipaddr(address, "peer"), "1.12.1.0") - address = "1.12.1.1/30" - self.assertEqual(ipaddr(address, "peer"), "1.12.1.2") - address = "1.12.1.2/30" - self.assertEqual(ipaddr(address, "peer"), "1.12.1.1") - with self.assertRaises(AnsibleFilterError): - address = "1.12.1.34" - ipaddr(address, "peer") - with self.assertRaises(AnsibleFilterError): - address = "1.12.1.33/29" - ipaddr(address, "peer") - with self.assertRaises(AnsibleFilterError): - address = "1.12.1.32/30" - ipaddr(address, "peer") - with self.assertRaises(AnsibleFilterError): - address = "1.12.1.35/30" - ipaddr(address, "peer") - with self.assertRaises(AnsibleFilterError): - address = "1.12.1.34/32" - ipaddr(address, "peer") - - def test_previous_usable(self): - address = "1.12.1.0/24" - self.assertEqual(ipaddr(address, "previous_usable"), None) - address = "1.12.1.36/24" - self.assertEqual(ipaddr(address, "previous_usable"), "1.12.1.35") - address = "1.12.1.36/28" - self.assertEqual(ipaddr(address, "previous_usable"), "1.12.1.35") - address = "1.12.1.36/255.255.255.240" - self.assertEqual(ipaddr(address, "previous_usable"), "1.12.1.35") - address = "1.12.1.36/31" - self.assertEqual(ipaddr(address, "previous_usable"), None) - address = "1.12.1.37/31" - self.assertEqual(ipaddr(address, "previous_usable"), "1.12.1.36") - address = "1.12.1.36/32" - self.assertEqual(ipaddr(address, "previous_usable"), None) - address = "1.12.1.254/24" - self.assertEqual(ipaddr(address, "previous_usable"), "1.12.1.253") - - def test_ipmath(self): - self.assertEqual(ipmath("192.168.1.5", 5), "192.168.1.10") - self.assertEqual(ipmath("192.168.1.5", -5), "192.168.1.0") - self.assertEqual(ipmath("192.168.0.5", -10), "192.167.255.251") - - self.assertEqual(ipmath("192.168.1.1/24", 5), "192.168.1.6") - self.assertEqual(ipmath("192.168.1.6/24", -5), "192.168.1.1") - self.assertEqual(ipmath("192.168.2.6/24", -10), "192.168.1.252") - - self.assertEqual(ipmath("2001::1", 8), "2001::9") - self.assertEqual(ipmath("2001::1", 9), "2001::a") - self.assertEqual(ipmath("2001::1", 10), "2001::b") - self.assertEqual(ipmath("2001::5", -3), "2001::2") - self.assertEqual( - ipmath("2001::5", -10), - "2000:ffff:ffff:ffff:ffff:ffff:ffff:fffb", - ) - - expected = "You must pass a valid IP address; invalid_ip is invalid" - with self.assertRaises(AnsibleFilterError) as exc: - ipmath("invalid_ip", 8) - self.assertEqual(exc.exception.message, expected) - - expected = "You must pass an integer for arithmetic; some_number is not a valid integer" - with self.assertRaises(AnsibleFilterError) as exc: - ipmath("1.2.3.4", "some_number") - self.assertEqual(exc.exception.message, expected) - - def test_ipsubnet(self): - test_cases = ( - (("1.1.1.1/24", "30"), "64"), - (("1.12.1.34/32", "1.12.1.34/24"), "35"), - (("192.168.50.0/24", "192.168.0.0/16"), "51"), - (("192.168.144.5", "192.168.0.0/16"), "36870"), - (("192.168.144.5", "192.168.144.5/24"), "6"), - (("192.168.144.5/32", "192.168.144.0/24"), "6"), - (("192.168.144.16/30", "192.168.144.0/24"), "5"), - (("192.168.144.5",), "192.168.144.5/32"), - (("192.168.0.0/16",), "192.168.0.0/16"), - (("192.168.144.5",), "192.168.144.5/32"), - (("192.168.0.0/16", "20"), "16"), - (("192.168.0.0/16", "20", "0"), "192.168.0.0/20"), - (("192.168.0.0/16", "20", "-1"), "192.168.240.0/20"), - (("192.168.0.0/16", "20", "5"), "192.168.80.0/20"), - (("192.168.0.0/16", "20", "-5"), "192.168.176.0/20"), - (("192.168.144.5", "20"), "192.168.144.0/20"), - (("192.168.144.5", "18", "0"), "192.168.128.0/18"), - (("192.168.144.5", "18", "-1"), "192.168.144.4/31"), - (("192.168.144.5", "18", "5"), "192.168.144.0/23"), - (("192.168.144.5", "18", "-5"), "192.168.144.0/27"), - (("span", "test", "error"), False), - (("test",), False), - (("192.168.144.5", "500000", "-5"), False), - (("192.168.144.5", "18", "500000"), False), - (("200000", "18", "-5"), "0.3.13.64/27"), - ) - for args, res in test_cases: - self._test_ipsubnet(args, res) - - def _test_ipsubnet(self, ipsubnet_args, expected_result): - self.assertEqual(ipsubnet(*ipsubnet_args), expected_result) - - expected = "Requested subnet size of 24 is invalid" - with self.assertRaises(AnsibleFilterError) as exc: - ipsubnet("1.1.1.1/25", "24") - self.assertEqual(exc.exception.message, expected) - - with self.assertRaisesRegex( - AnsibleFilterError, - "You must pass a valid subnet or IP address; invalid_subnet is invalid", - ): - ipsubnet("192.168.144.5", "invalid_subnet") - - with self.assertRaisesRegex( - AnsibleFilterError, - "192.168.144.0/30 is not in the subnet 192.168.144.4/30", - ): - ipsubnet("192.168.144.1/30", "192.168.144.5/30") - - def test_nthhost(self): - address = "1.12.1.0/24" - self.assertFalse(nthhost(address)) - self.assertEqual(nthhost(address, 5), "1.12.1.5") - address = "1.12.1.36/24" - self.assertEqual(nthhost(address, 10), "1.12.1.10") - address = "1.12.1.34" - self.assertFalse(nthhost(address, "last_usable"), "Not a network address") - address = "1.12.1.36/28" - self.assertEqual(nthhost(address, 4), "1.12.1.36") - address = "1.12.1.36/255.255.255.240" - self.assertEqual(nthhost(address, 4), "1.12.1.36") - address = "1.12.1.36/31" - self.assertEqual(nthhost(address, 1), "1.12.1.37") - address = "1.12.1.37/31" - self.assertEqual(nthhost(address, 1), "1.12.1.37") - address = "1.12.1.36/32" - self.assertFalse(nthhost(address, 1)) - address = "1.12.1.254/24" - self.assertEqual(nthhost(address, 2), "1.12.1.2") - - def test_next_nth_usable(self): - address = "1.12.1.0/24" - self.assertEqual(next_nth_usable(address, 5), "1.12.1.5") - address = "1.12.1.36/24" - self.assertEqual(next_nth_usable(address, 10), "1.12.1.46") - address = "1.12.1.36/28" - self.assertEqual(next_nth_usable(address, 4), "1.12.1.40") - address = "1.12.1.36/255.255.255.240" - self.assertEqual(next_nth_usable(address, 4), "1.12.1.40") - address = "1.12.1.36/31" - self.assertEqual(next_nth_usable(address, 1), "1.12.1.37") - address = "1.12.1.37/31" - self.assertEqual(next_nth_usable(address, 1), None) - address = "1.12.1.36/32" - self.assertEqual(next_nth_usable(address, 1), None) - address = "1.12.1.254/24" - self.assertEqual(next_nth_usable(address, 2), None) - - def test_previous_nth_usable(self): - address = "1.12.1.0/24" - self.assertEqual(previous_nth_usable(address, 5), None) - address = "1.12.1.36/24" - self.assertEqual(previous_nth_usable(address, 10), "1.12.1.26") - address = "1.12.1.36/28" - self.assertEqual(previous_nth_usable(address, 2), "1.12.1.34") - address = "1.12.1.36/255.255.255.240" - self.assertEqual(previous_nth_usable(address, 2), "1.12.1.34") - address = "1.12.1.36/31" - self.assertEqual(previous_nth_usable(address, 1), None) - address = "1.12.1.37/31" - self.assertEqual(previous_nth_usable(address, 1), "1.12.1.36") - address = "1.12.1.36/32" - self.assertEqual(previous_nth_usable(address, 1), None) - address = "1.12.1.254/24" - self.assertEqual(previous_nth_usable(address, 2), "1.12.1.252") - - def test_network_in_usable(self): - subnet = "1.12.1.0/24" - address = "1.12.1.10" - self.assertEqual(network_in_usable(subnet, address), True) - subnet = "1.12.1.0/24" - address = "1.12.0.10" - self.assertEqual(network_in_usable(subnet, address), False) - subnet = "1.12.1.32/28" - address = "1.12.1.36" - self.assertEqual(network_in_usable(subnet, address), True) - subnet = "1.12.1.32/28" - address = "1.12.1.36/31" - self.assertEqual(network_in_usable(subnet, address), True) - subnet = "1.12.1.32/28" - address = "1.12.1.48/31" - self.assertEqual(network_in_usable(subnet, address), False) - subnet = "1.12.1.32/255.255.255.240" - address = "1.12.1.31" - self.assertEqual(network_in_usable(subnet, address), False) - subnet = "1.12.1.36/31" - address = "1.12.1.36" - self.assertEqual(network_in_usable(subnet, address), True) - subnet = "1.12.1.37/31" - address = "1.12.1.35" - self.assertEqual(network_in_usable(subnet, address), False) - subnet = "1.12.1.36/32" - address = "1.12.1.36" - self.assertEqual(network_in_usable(subnet, address), True) - subnet = "1.12.1.0/24" - address = "1.12.2.0" - self.assertEqual(network_in_usable(subnet, address), False) - - def test_network_in_network(self): - subnet = "1.12.1.0/24" - address = "1.12.1.0" - self.assertEqual(network_in_network(subnet, address), True) - subnet = "1.12.1.0/24" - address = "1.12.0.10" - self.assertEqual(network_in_network(subnet, address), False) - subnet = "1.12.1.32/28" - address = "1.12.1.32/28" - self.assertEqual(network_in_network(subnet, address), True) - subnet = "1.12.1.32/28" - address = "1.12.1.47" - self.assertEqual(network_in_network(subnet, address), True) - subnet = "1.12.1.32/28" - address = "1.12.1.48/31" - self.assertEqual(network_in_network(subnet, address), False) - subnet = "1.12.1.32/255.255.255.240" - address = "1.12.1.31" - self.assertEqual(network_in_network(subnet, address), False) - subnet = "1.12.1.36/31" - address = "1.12.1.36" - self.assertEqual(network_in_network(subnet, address), True) - subnet = "1.12.1.37/31" - address = "1.12.1.35" - self.assertEqual(network_in_network(subnet, address), False) - subnet = "1.12.1.36/32" - address = "1.12.1.36" - self.assertEqual(network_in_network(subnet, address), True) - subnet = "1.12.1.0/24" - address = "1.12.2.0" - self.assertEqual(network_in_network(subnet, address), False) - - def test_reduce_on_network(self): - subnet = "1.12.1.0/28" - addresses = ["1.12.1.0", "1.12.0.10"] - self.assertEqual(reduce_on_network(addresses, subnet), [addresses[0]]) - addresses = ["1.12.2.0", "1.12.1.236"] - self.assertEqual(reduce_on_network(addresses, subnet), []) - - subnet = "1.12.1.32/28" - addresses = ["1.12.1.32/28", "1.12.1.47", "1.12.1.48/31"] - self.assertEqual(reduce_on_network(addresses, subnet), addresses[:-1]) - - subnet = "1.12.1.36/32" - addresses = ["1.12.1.31", "1.12.1.36", "1.12.1.35", "1.12.1.40"] - self.assertEqual(reduce_on_network(addresses, subnet), [addresses[1]]) - subnet = "1.12.1.32/255.255.255.240" - self.assertEqual(reduce_on_network(addresses, subnet), addresses[1:]) - - def test_slaac(self): - mac = "00:50:b6:aa:99:e2" - self.assertFalse(slaac("192.168.1.20", mac)) - self.assertFalse(slaac("fd::9")) - self.assertFalse(slaac("floop")) - - self.assertEqual(slaac("fd::9", mac), "fd::250:b6ff:feaa:99eb") - self.assertEqual( - slaac("fd00:1234:5678:9abc:def0::/20", mac), - "fd00:1000::250:b6ff:feaa:99e2", - ) - - def test_ip4_hex(self): - self.assertEqual(ip4_hex("192.0.2.24"), "c0000218") - self.assertEqual(ip4_hex("192.0.2.24", "."), "c0.00.02.18") diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_ipcut.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_ipcut.py deleted file mode 100644 index a03b3b3d..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_ipcut.py +++ /dev/null @@ -1,36 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2023 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for ipcut filter plugin -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible_collections.ansible.utils.plugins.filter.ipcut import _ipcut - - -class TestIpCut(unittest.TestCase): - def setUp(self): - pass - - def test_get_last_X_bits(self): - """Get last X bits of Ipv6 address""" - - args = ["", "1234:4321:abcd:dcba::17", -80] - result = _ipcut(*args) - self.assertEqual(result, "dcba:0:0:0:17") - - def test_get_first_X_bits(self): - """Get first X bits of Ipv6 address""" - - args = ["", "1234:4321:abcd:dcba::17", 64] - result = _ipcut(*args) - self.assertEqual(result, "1234:4321:abcd:dcba") diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_ipmath.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_ipmath.py deleted file mode 100644 index 02e1553b..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_ipmath.py +++ /dev/null @@ -1,75 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for ipmath filter plugin -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible.errors import AnsibleFilterError - -from ansible_collections.ansible.utils.plugins.filter.ipmath import _ipmath - - -class TestIpAddr(unittest.TestCase): - def setUp(self): - pass - - def test_find_next_fifth_address(self): - """Get the next fifth address based on an IP address""" - - args = ["", "192.168.1.5", 5] - result = _ipmath(*args) - self.assertEqual(result, "192.168.1.10") - - def test_find_previous_fifth_address(self): - """Get the previous fifth address""" - - args = ["", "192.168.1.5", -10] - result = _ipmath(*args) - self.assertEqual(result, "192.168.0.251") - - def test_find_next_fifth_address_cidr(self): - """Get the next fifth address CIDR notation""" - - args = ["", "192.168.1.1/24", 5] - result = _ipmath(*args) - self.assertEqual(result, "192.168.1.6") - - def test_find_previous_fifth_address_cidr(self): - """Get the previous fifth address CIDR notation""" - - args = ["", "192.168.1.6/24", -5] - result = _ipmath(*args) - self.assertEqual(result, "192.168.1.1") - - def test_find_next_fifth_address_ipv6(self): - """Get the next fifth address in ipv6""" - - args = ["", "2001::1", 10] - result = _ipmath(*args) - self.assertEqual(result, "2001::b") - - def test_find_previous_fifth_address_ipv6(self): - """Get the previous fifth address in ipv6""" - - args = ["", "2001::5", -10] - result = _ipmath(*args) - self.assertEqual(result, "2000:ffff:ffff:ffff:ffff:ffff:ffff:fffb") - - def test_invalid_data(self): - """Check passing invalid data""" - - args = ["", "2001::1.999.0", 10] - kwargs = {} - with self.assertRaises(AnsibleFilterError) as error: - _ipmath(*args, **kwargs) - self.assertIn("You must pass a valid IP address", str(error.exception)) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_ipsubnet.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_ipsubnet.py deleted file mode 100644 index 4571b96b..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_ipsubnet.py +++ /dev/null @@ -1,179 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for ipwrap filter plugin -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -import pytest - -from ansible_collections.ansible.utils.plugins.filter.ipsubnet import _ipsubnet - - -address = "192.168.144.5" -subnet = "192.168.0.0/16" - - -class TestIpSubnet(unittest.TestCase): - def setUp(self): - pass - - def test_ipvsubnet_address_subnet(self): - """convert address to subnet""" - args = ["", address, ""] - result = _ipsubnet(*args) - self.assertEqual(result, "192.168.144.5/32") - - def test_ipvsubnet_filter_subnet(self): - """check if a given string is a subnet""" - args = ["", subnet, ""] - result = _ipsubnet(*args) - self.assertEqual(result, "192.168.0.0/16") - - def test_ipvsubnet_filter_subnet_size(self): - """Get the number of subnets a given subnet can be split into.""" - args = ["", subnet, "20"] - result = _ipsubnet(*args) - self.assertEqual(result, "16") - - def test_ipvsubnet_filter_subnet_with_1st_index(self): - """Get the 1st subnet""" - args = ["", subnet, "20", 0] - result = _ipsubnet(*args) - self.assertEqual(result, "192.168.0.0/20") - - def test_ipvsubnet_filter_subnet_with_last_index(self): - """Get the last subnet""" - args = ["", subnet, "20", -1] - result = _ipsubnet(*args) - self.assertEqual(result, "192.168.240.0/20") - - def test_ipvsubnet_filter_address_with_size(self): - """Get biggest subnet that contains that given IP address""" - args = ["", address, "20"] - result = _ipsubnet(*args) - self.assertEqual(result, "192.168.144.0/20") - - def test_ipvsubnet_filter_address_with_1st_index(self): - """Get the 1st subnet""" - args = ["", address, "18", 0] - result = _ipsubnet(*args) - self.assertEqual(result, "192.168.128.0/18") - - def test_ipvsubnet_filter_address_with_last_index(self): - """Get the last subnet""" - args = ["", address, "18", -1] - result = _ipsubnet(*args) - self.assertEqual(result, "192.168.144.4/31") - - def test_ipvsubnet_filter_lots_of_subnets_v4_bottom1(self): - """Use the subnets call to see if it slows way down with v4""" - args = ["", "0.0.0.0/1", "31", -1] - result = _ipsubnet(*args) - self.assertEqual(result, "127.255.255.254/31") - - def test_ipvsubnet_filter_lots_of_subnets_v4_bottom2(self): - """Use the subnets call to see if it slows way down with v4""" - args = ["", "1.0.0.0/1", "3", -1] - result = _ipsubnet(*args) - self.assertEqual(result, "96.0.0.0/3") - - def test_ipvsubnet_filter_lots_of_subnets_v4_top1(self): - """Use the subnets call to see if it slows way down with v4""" - args = ["", "128.0.0.0/1", "31", -1] - result = _ipsubnet(*args) - self.assertEqual(result, "255.255.255.254/31") - - def test_ipvsubnet_filter_lots_of_subnets_v4_top2(self): - """Use the subnets call to see if it slows way down with v4""" - args = ["", "130.0.0.0/1", "31", -1] - result = _ipsubnet(*args) - self.assertEqual(result, "255.255.255.254/31") - - def test_ipvsubnet_filter_lots_of_subnets_v6_bottom1(self): - """Use the subnets call to see if it slows way down with v6""" - args = ["", "8000::/1", "127", -1] - result = _ipsubnet(*args) - self.assertEqual(result, "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe/127") - - def test_ipvsubnet_filter_lots_of_subnets_v6_bottom2(self): - """Use the subnets call to see if it slows way down with v6""" - args = ["", "9000::/1", "127", -1] - result = _ipsubnet(*args) - self.assertEqual(result, "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe/127") - - def test_ipvsubnet_filter_lots_of_subnets_v6_top1(self): - """Use the subnets call to see if it slows way down with v6""" - args = ["", "::/1", "127", -1] - result = _ipsubnet(*args) - self.assertEqual(result, "7fff:ffff:ffff:ffff:ffff:ffff:ffff:fffe/127") - - def test_ipvsubnet_filter_lots_of_subnets_v6_top2(self): - """Use the subnets call to see if it slows way down with v6""" - args = ["", "1000::/1", "127", -1] - result = _ipsubnet(*args) - self.assertEqual(result, "7fff:ffff:ffff:ffff:ffff:ffff:ffff:fffe/127") - - def test_ipvsubnet_filter_rank_address_in_subnet(self): - """The rank of the IP in the subnet (the IP is the 36870nth /32 of the subnet)""" - args = ["", address, subnet] - result = _ipsubnet(*args) - self.assertEqual(result, "36870") - - def test_ipvsubnet_filter_rank_address_in_subnet1(self): - """The rank of the IP in the 192.168.144.0/24""" - args = ["", address, "192.168.144.0/24"] - result = _ipsubnet(*args) - self.assertEqual(result, "6") - - def test_ipvsubnet_filter_rank_address_in_subnet2(self): - """The rank of the IP in the 192.168.144.0/24""" - args = ["", "192.168.144.1/30", "192.168.144.0/24"] - result = _ipsubnet(*args) - self.assertEqual(result, "1") - - def test_ipvsubnet_filter_rank_address_in_subnet3(self): - """The rank of the IP in the 192.168.144.0/24""" - args = ["", "192.168.144.16/30", "192.168.144.0/24"] - result = _ipsubnet(*args) - self.assertEqual(result, "5") - - -@pytest.mark.parametrize( - "test_case,expected", - [ - [["2600:1f1c:1b3:8f00::/56", 64, 0], "2600:1f1c:1b3:8f00::/64"], - [["2600:1f1c:1b3:8f00::/56", "64", "1"], "2600:1f1c:1b3:8f01::/64"], - [["2600:1f1c:1b3:8f00::/56", "64", "2"], "2600:1f1c:1b3:8f02::/64"], - [["2600:1f1c:1b3:8f00::/56", "64", "-2"], "2600:1f1c:1b3:8ffe::/64"], - [["2600:1f1c:1b3:8f00::/56", "64", "-1"], "2600:1f1c:1b3:8fff::/64"], - [["2600:1f1c:1b3:8f00::/56", "65", "0"], "2600:1f1c:1b3:8f00::/65"], - [["2600:1f1c:1b3:8f00::/56", "65", "1"], "2600:1f1c:1b3:8f00:8000::/65"], - [["2600:1f1c:1b3:8f00::/56", "65", "2"], "2600:1f1c:1b3:8f01::/65"], - [["2600:1f1c:1b3:8f00::/56", "65", "-2"], "2600:1f1c:1b3:8fff::/65"], - [["2600:1f1c:1b3:8f00::/56", "65", "-1"], "2600:1f1c:1b3:8fff:8000::/65"], - ], -) -def test_ipvsubnet_get_subnet(test_case, expected): - assert _ipsubnet("", *test_case) == expected - - -@pytest.mark.parametrize( - "test_case", - [ - ["2600:1f1c:1b3:8f00::/56", "64", "257"], # subnet id too big for /64 - ["2600:1f1c:1b3:8f00:::/56", "64", "0"], # Too many colons - ["2600:1f1c:1b3:8f00::/56", "129", "0"], # Must be /128 or less - ], -) -def test_ipvsubnet_get_subnet_fail(test_case): - assert _ipsubnet("", *test_case) is False diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_ipv4.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_ipv4.py deleted file mode 100644 index ecd57a44..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_ipv4.py +++ /dev/null @@ -1,73 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for ipwrap filter plugin -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -import pytest - -from ansible.errors import AnsibleFilterError -from ansible.template import AnsibleUndefined - -from ansible_collections.ansible.utils.plugins.filter.ipv4 import _ipv4 - - -VALID_DATA = [ - "192.24.2.1", - "host.fqdn", - "::1", - "", - "192.168.32.0/24", - "fe80::100/10", - "42540766412265424405338506004571095040/64", - True, -] - - -VALID_OUTPUT = ["192.24.2.1", "192.168.32.0/24"] - -VALID_OUTPUT1 = ["::ffff:192.24.2.1/128", "::ffff:192.168.32.0/120"] - -VALID_OUTPUT2 = ["192.24.2.1"] - - -class TestIp4(unittest.TestCase): - def setUp(self): - pass - - def test_ipv4_undefined_value(self): - """Check ipv4 filter undefined value""" - args = ["", AnsibleUndefined(name="my_ip"), ""] - with pytest.raises( - AnsibleFilterError, - match="Unrecognized type <> for ipv4 filter ", - ): - _ipv4(*args) - - def test_ipv4_filter_empty_query(self): - """Check ipv4 filter empty query""" - args = ["", VALID_DATA, ""] - result = _ipv4(*args) - self.assertEqual(result, VALID_OUTPUT) - - def test_ipv4_ipv6_conversion(self): - """Check ipv4 to ipv6 conversion""" - args = ["", VALID_DATA, "ipv6"] - result = _ipv4(*args) - self.assertEqual(result, VALID_OUTPUT1) - - def test_ipv4_filter_address_query(self): - """Check ipv4 filter address query""" - args = ["", VALID_DATA, "address"] - result = _ipv4(*args) - self.assertEqual(result, VALID_OUTPUT2) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_ipv6.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_ipv6.py deleted file mode 100644 index 4f730f90..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_ipv6.py +++ /dev/null @@ -1,76 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for ipwrap filter plugin -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -import pytest - -from ansible.errors import AnsibleFilterError -from ansible.template import AnsibleUndefined - -from ansible_collections.ansible.utils.plugins.filter.ipv6 import _ipv6 - - -VALID_DATA = [ - "192.24.2.1", - "::ffff:192.168.32.0/120", - "", - "::ffff:192.24.2.1/128", - "192.168.32.0/24", - "fe80::100/10", - True, -] - - -VALID_OUTPUT = [ - "::ffff:192.168.32.0/120", - "::ffff:192.24.2.1/128", - "fe80::100/10", -] - -VALID_OUTPUT1 = ["192.168.32.0/24", "192.24.2.1/32"] - -VALID_OUTPUT2 = ["::ffff:192.168.32.0", "::ffff:192.24.2.1", "fe80::100"] - - -class TestIp6(unittest.TestCase): - def setUp(self): - pass - - def test_ipv6_undefined_value(self): - """Check ipv6 filter undefined value""" - args = ["", AnsibleUndefined(name="my_ip"), ""] - with pytest.raises( - AnsibleFilterError, - match="Unrecognized type <> for ipv6 filter ", - ): - _ipv6(*args) - - def test_ipv6_filter_empty_query(self): - """Check ipv6 filter empty query""" - args = ["", VALID_DATA, ""] - result = _ipv6(*args) - self.assertEqual(result, VALID_OUTPUT) - - def test_ipv6_ipv4_conversion(self): - """Check ipv6 to ipv4 conversion""" - args = ["", VALID_DATA, "ipv4"] - result = _ipv6(*args) - self.assertEqual(result, VALID_OUTPUT1) - - def test_ipv6_filter_address_query(self): - """Check ipv6 filter address query""" - args = ["", VALID_DATA, "address"] - result = _ipv6(*args) - self.assertEqual(result, VALID_OUTPUT2) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_ipv6form.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_ipv6form.py deleted file mode 100644 index b094d555..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_ipv6form.py +++ /dev/null @@ -1,43 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2023 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for ipcut filter plugin -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible_collections.ansible.utils.plugins.filter.ipv6form import _ipv6form - - -class TestIpv6Form(unittest.TestCase): - def setUp(self): - pass - - def test_expand(self): - """Expand given ipv6 address""" - - args = ["", "1234:4321:abcd:dcba::17", "expand"] - result = _ipv6form(*args) - self.assertEqual(result, "1234:4321:abcd:dcba:0000:0000:0000:0017") - - def test_compress(self): - """Compress given ipv6 address""" - - args = ["", "1234:4321:abcd:dcba:0000:0000:0000:0017", "compress"] - result = _ipv6form(*args) - self.assertEqual(result, "1234:4321:abcd:dcba::17") - - def test_x509(self): - """Compress given ipv6 address into x509 form""" - - args = ["", "1234:4321:abcd:dcba::17", "x509"] - result = _ipv6form(*args) - self.assertEqual(result, "1234:4321:abcd:dcba:0:0:0:17") diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_ipwrap.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_ipwrap.py deleted file mode 100644 index fd31d57a..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_ipwrap.py +++ /dev/null @@ -1,74 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for ipwrap filter plugin -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -import pytest - -from ansible.errors import AnsibleFilterError -from ansible.template import AnsibleUndefined - -from ansible_collections.ansible.utils.plugins.filter.ipwrap import _ipwrap - - -VALID_DATA = [ - "192.24.2.1", - "host.fqdn", - "::1", - "", - "192.168.32.0/24", - "fe80::100/10", - "42540766412265424405338506004571095040/64", - True, -] - - -VALID_OUTPUT = [ - "192.24.2.1", - "host.fqdn", - "[::1]", - "", - "192.168.32.0/24", - "[fe80::100]/10", - "[2001:db8:32c:faad::]/64", - True, -] - - -class TestIpWrap(unittest.TestCase): - def setUp(self): - pass - - def test_ipwrap_undefined_value(self): - """Check ipwrap filter undefined value""" - args = ["", AnsibleUndefined(name="my_ip"), ""] - with pytest.raises( - AnsibleFilterError, - match="Unrecognized type <> for ipwrap filter ", - ): - _ipwrap(*args) - - def test_valid_data_list(self): - """Check passing valid argspec(list)""" - args = ["", VALID_DATA, ""] - result = _ipwrap(*args) - print(result) - self.assertEqual(result, VALID_OUTPUT) - - def test_valid_data_string(self): - """Check passing valid argspec(string)""" - - args = ["", "::1", ""] - result = _ipwrap(*args) - self.assertEqual(result, "[::1]") diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_keep_keys.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_keep_keys.py deleted file mode 100644 index 70f42f2e..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_keep_keys.py +++ /dev/null @@ -1,232 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible.errors import AnsibleFilterError - -from ansible_collections.ansible.utils.plugins.filter.keep_keys import _keep_keys - - -class TestKeepKeys(unittest.TestCase): - def setUp(self): - pass - - def test_keep_filter_plugin(self): - data = [ - { - "duplex": "auto", - "enabled": True, - "interface_name": "eth0", - "speed": "auto", - }, - { - "description": "Configured by Ansible - Interface 1", - "duplex": "auto", - "interface_name": "eth1", - "is_enabled": True, - "mtu": 1500, - "speed": "auto", - "vifs": [ - { - "description": "Eth1 - VIF 100", - "is_enabled": True, - "mtu": 400, - "vlan_id": 100, - }, - { - "description": "Eth1 - VIF 101", - "is_enabled": True, - "vlan_id": 101, - }, - ], - }, - { - "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", - "interface_name": "eth2", - "is_enabled": True, - "mtu": 600, - }, - ] - target = ["interface_name", "is_enabled"] - output = [ - {"interface_name": "eth0"}, - { - "is_enabled": True, - "vifs": [{"is_enabled": True}, {"is_enabled": True}], - "interface_name": "eth1", - }, - {"is_enabled": True, "interface_name": "eth2"}, - ] - args = ["", data, target] - - result = _keep_keys(*args) - self.assertEqual(result, output) - - def test_keep_filter_match_starts_with_plugin(self): - data = [ - { - "duplex": "auto", - "enabled": True, - "interface_name": "eth0", - "speed": "auto", - }, - { - "description": "Configured by Ansible - Interface 1", - "duplex": "auto", - "interface_name": "eth1", - "is_enabled": True, - "mtu": 1500, - "speed": "auto", - "vifs": [ - { - "description": "Eth1 - VIF 100", - "is_enabled": True, - "mtu": 400, - "vlan_id": 100, - }, - { - "description": "Eth1 - VIF 101", - "is_enabled": True, - "vlan_id": 101, - }, - ], - }, - { - "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", - "interface_name": "eth2", - "is_enabled": True, - "mtu": 600, - }, - ] - target = ["interface", "is_"] - output = [ - {"interface_name": "eth0"}, - { - "is_enabled": True, - "vifs": [{"is_enabled": True}, {"is_enabled": True}], - "interface_name": "eth1", - }, - {"is_enabled": True, "interface_name": "eth2"}, - ] - args = ["", data, target, "starts_with"] - - result = _keep_keys(*args) - self.assertEqual(result, output) - - def test_keep_filter_match_ends_with_plugin(self): - data = [ - { - "duplex": "auto", - "enabled": True, - "interface_name": "eth0", - "speed": "auto", - }, - { - "description": "Configured by Ansible - Interface 1", - "duplex": "auto", - "interface_name": "eth1", - "is_enabled": True, - "mtu": 1500, - "speed": "auto", - "vifs": [ - { - "description": "Eth1 - VIF 100", - "is_enabled": True, - "mtu": 400, - "vlan_id": 100, - }, - { - "description": "Eth1 - VIF 101", - "is_enabled": True, - "vlan_id": 101, - }, - ], - }, - { - "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", - "interface_name": "eth2", - "is_enabled": True, - "mtu": 600, - }, - ] - target = ["_name", "_enabled"] - output = [ - {"interface_name": "eth0"}, - { - "is_enabled": True, - "vifs": [{"is_enabled": True}, {"is_enabled": True}], - "interface_name": "eth1", - }, - {"is_enabled": True, "interface_name": "eth2"}, - ] - args = ["", data, target, "ends_with"] - - result = _keep_keys(*args) - self.assertEqual(result, output) - - def test_keep_filter_match_regex_plugin(self): - data = [ - { - "duplex": "auto", - "enabled": True, - "interface_name": "eth0", - "speed": "auto", - }, - { - "description": "Configured by Ansible - Interface 1", - "duplex": "auto", - "interface_name": "eth1", - "is_enabled": True, - "mtu": 1500, - "speed": "auto", - "vifs": [ - { - "description": "Eth1 - VIF 100", - "is_enabled": True, - "mtu": 400, - "vlan_id": 100, - }, - { - "description": "Eth1 - VIF 101", - "is_enabled": True, - "vlan_id": 101, - }, - ], - }, - { - "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", - "interface_name": "eth2", - "is_enabled": True, - "mtu": 600, - }, - ] - target = ["^interface_name$", "is_enabled"] - output = [ - {"interface_name": "eth0"}, - { - "is_enabled": True, - "vifs": [{"is_enabled": True}, {"is_enabled": True}], - "interface_name": "eth1", - }, - {"is_enabled": True, "interface_name": "eth2"}, - ] - args = ["", data, target, "regex"] - - result = _keep_keys(*args) - self.assertEqual(result, output) - - def test_invalid_data(self): - self.maxDiff = None - target = ["a", "b"] - args = ["", "string data", target] - with self.assertRaises(AnsibleFilterError) as error: - _keep_keys(*args) - self.assertIn("Error when using plugin 'keep_keys'", str(error.exception)) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_macaddr.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_macaddr.py deleted file mode 100644 index adbc0cd4..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_macaddr.py +++ /dev/null @@ -1,34 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for macaddr filter plugin -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible_collections.ansible.utils.plugins.filter.macaddr import _macaddr - - -class Test_macaddr(unittest.TestCase): - def setUp(self): - pass - - def test_macaddr_filter_1(self): - """macaddr filter""" - args = ["", "1a:2b:3c:4d:5e:6f"] - result = _macaddr(*args) - self.assertEqual(result, "1a:2b:3c:4d:5e:6f") - - def test_macaddr_filter_2(self): - """macaddr filter""" - args = ["", "1a:2b:3c:4d:5e:6f", "cisco"] - result = _macaddr(*args) - self.assertEqual(result, "1a2b.3c4d.5e6f") diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_network_in_network.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_network_in_network.py deleted file mode 100644 index 54a080fa..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_network_in_network.py +++ /dev/null @@ -1,40 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for network_in_network filter plugin -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible_collections.ansible.utils.plugins.filter.network_in_network import _network_in_network - - -class Test_network_in_network(unittest.TestCase): - def setUp(self): - pass - - def test_network_in_network_filter_1(self): - """network_in_network filter""" - args = ["", "192.168.0.0/24", "192.168.0.1"] - result = _network_in_network(*args) - self.assertEqual(result, True) - - def test_network_in_network_filter_2(self): - """network_in_network filter""" - args = ["", "192.168.0.0/24", "10.0.0.1"] - result = _network_in_network(*args) - self.assertEqual(result, False) - - def test_network_in_network_filter_3(self): - """network_in_network filter""" - args = ["", "192.168.0.0/16", "192.168.0.0/24"] - result = _network_in_network(*args) - self.assertEqual(result, True) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_network_in_usable.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_network_in_usable.py deleted file mode 100644 index 27ed21bf..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_network_in_usable.py +++ /dev/null @@ -1,40 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for network_in_usable filter plugin -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible_collections.ansible.utils.plugins.filter.network_in_usable import _network_in_usable - - -class Test_Network_In_Usable(unittest.TestCase): - def setUp(self): - pass - - def test_network_in_usable_filter_1(self): - """network_in_usable filter""" - args = ["", "192.168.0.0/24", "192.168.0.1"] - result = _network_in_usable(*args) - self.assertEqual(result, True) - - def test_network_in_usable_filter_2(self): - """network_in_usable filter""" - args = ["", "192.168.0.0/24", "192.168.0.255"] - result = _network_in_usable(*args) - self.assertEqual(result, False) - - def test_network_in_usable_filter_3(self): - """network_in_usable filter""" - args = ["", "192.168.0.0/16", "192.168.0.255"] - result = _network_in_usable(*args) - self.assertEqual(result, True) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_next_nth_usable.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_next_nth_usable.py deleted file mode 100644 index 615ca89b..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_next_nth_usable.py +++ /dev/null @@ -1,34 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for ipwrap filter plugin -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible_collections.ansible.utils.plugins.filter.next_nth_usable import _next_nth_usable - - -class Test_Next_Nth_Usable(unittest.TestCase): - def setUp(self): - pass - - def test_next_nth_usable_filter(self): - """next_nth_usable filter""" - args = ["", "192.168.122.1/24", 2] - result = _next_nth_usable(*args) - self.assertEqual(result, "192.168.122.3") - - def test_next_nth_usable_with_empty_return_string(self): - """Check ipv4 to ipv6 conversion""" - args = ["", "192.168.122.254/24", 2] - result = _next_nth_usable(*args) - self.assertEqual(result, None) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_nthhost.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_nthhost.py deleted file mode 100644 index 96be24ad..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_nthhost.py +++ /dev/null @@ -1,34 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for nthhost filter plugin -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible_collections.ansible.utils.plugins.filter.nthhost import _nthhost - - -class Test_nthhost(unittest.TestCase): - def setUp(self): - pass - - def test_nthhost_filter_1(self): - """nthhost filter""" - args = ["", "10.0.0.0/8", "305"] - result = _nthhost(*args) - self.assertEqual(result, "10.0.1.49") - - def test_nthhost_filter_2(self): - """nthhost filter""" - args = ["", "10.0.0.0/8", "-1"] - result = _nthhost(*args) - self.assertEqual(result, "10.255.255.255") diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_param_list_compare.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_param_list_compare.py deleted file mode 100644 index 2e6e471d..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_param_list_compare.py +++ /dev/null @@ -1,94 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible.errors import AnsibleFilterError - -from ansible_collections.ansible.utils.plugins.filter.param_list_compare import param_list_compare - - -class TestParam_list_compare_merge(unittest.TestCase): - def test_valid_data(self): - """Check passing valid data as per criteria""" - - base = ["interfaces", "l2_interfaces", "l3_interfaces"] - other = ["all"] - args = [base, other] - kwargs = {} - result = param_list_compare(*args, **kwargs) - self.assertEqual(result["actionable"], base) - - def test_valid_data_same_contents(self): - """Check passing valid data as per criteria""" - - base = ["interfaces", "l2_interfaces", "l3_interfaces"] - other = ["interfaces", "l2_interfaces", "l3_interfaces"] - args = [base, other] - kwargs = {} - result = param_list_compare(*args, **kwargs) - self.assertEqual(result["actionable"], base) - - def test_valid_data_with_not_bang(self): - """Check passing valid data as per criteria""" - - base = ["interfaces", "l2_interfaces", "l3_interfaces"] - other = ["!l2_interfaces", "all"] - args = [base, other] - expected = ["interfaces", "l3_interfaces"] - kwargs = {} - result = param_list_compare(*args, **kwargs) - self.assertEqual(result["actionable"], expected) - - def test_invalid_args_length_data(self): - """Check passing valid data as per criteria""" - - base = {} - args = [base] - kwargs = {} - with self.assertRaises(AnsibleFilterError) as error: - param_list_compare(*args, **kwargs) - self.assertIn( - "Missing either 'base' or 'other value in filter input", - str(error.exception), - ) - - def test_invalid_base_type_data(self): - """Check passing valid data as per criteria""" - - base = {} - other = ["all"] - args = [base, other] - kwargs = {} - with self.assertRaises(AnsibleFilterError) as error: - param_list_compare(*args, **kwargs) - self.assertIn("cannot be converted to a list", str(error.exception)) - - def test_invalid_other_type_data(self): - """Check passing valid data as per criteria""" - - base = ["interfaces"] - other = {"all": None} - args = [base, other] - kwargs = {} - with self.assertRaises(AnsibleFilterError) as error: - param_list_compare(*args, **kwargs) - self.assertIn("cannot be converted to a list", str(error.exception)) - - def test_invalid_unsupported_bang(self): - """Check passing valid data as per criteria""" - - base = ["interfaces"] - other = ["every"] - args = [base, other] - kwargs = {} - result = param_list_compare(*args, **kwargs) - self.assertEqual(result["unsupported"], other) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_previous_nth_usable.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_previous_nth_usable.py deleted file mode 100644 index f2a2c6f8..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_previous_nth_usable.py +++ /dev/null @@ -1,36 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for ipwrap filter plugin -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible_collections.ansible.utils.plugins.filter.previous_nth_usable import ( - _previous_nth_usable, -) - - -class Test_previous_Nth_Usable(unittest.TestCase): - def setUp(self): - pass - - def test_previous_nth_usable_filter(self): - """previous_nth_usable filter""" - args = ["", "192.168.122.10/24", 2] - result = _previous_nth_usable(*args) - self.assertEqual(result, "192.168.122.8") - - def test_previous_nth_usable_with_empty_return_string(self): - """Check ipv4 to ipv6 conversion""" - args = ["", "192.168.122.1/24", 2] - result = _previous_nth_usable(*args) - self.assertEqual(result, None) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_reduce_on_network.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_reduce_on_network.py deleted file mode 100644 index 777409f5..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_reduce_on_network.py +++ /dev/null @@ -1,41 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for reduce_on_network filter plugin -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible.errors import AnsibleError - -from ansible_collections.ansible.utils.plugins.filter.reduce_on_network import _reduce_on_network - - -class Test_reduce_on_network(unittest.TestCase): - def setUp(self): - pass - - def test_invalid_data(self): - """Check passing invalid argspec""" - - # missing required arguments - args = [""] - kwargs = {} - with self.assertRaises(AnsibleError) as error: - _reduce_on_network(*args, **kwargs) - self.assertIn("missing required arguments: value", str(error.exception)) - - def test_reduce_on_network_filter_1(self): - """reduce_on_network filter""" - list1 = ["192.168.0.34", "10.3.0.3", "192.168.2.34"] - args = ["", list1, "192.168.0.0/24"] - result = _reduce_on_network(*args) - self.assertEqual(result, ["192.168.0.34"]) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_remove_keys.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_remove_keys.py deleted file mode 100644 index 92b3a596..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_remove_keys.py +++ /dev/null @@ -1,309 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible.errors import AnsibleFilterError - -from ansible_collections.ansible.utils.plugins.filter.remove_keys import _remove_keys - - -class TestReplaceKeys(unittest.TestCase): - def setUp(self): - pass - - def test_remove_filter_plugin(self): - data = [ - { - "duplex": "auto", - "enabled": True, - "interface_name": "eth0", - "speed": "auto", - "extra": "remove extra", - }, - { - "description": "Configured by Ansible - Interface 1", - "duplex": "auto", - "interface_name": "eth1", - "is_enabled": True, - "mtu": 1500, - "speed": "auto", - "vifs": [ - { - "description": "Eth1 - VIF 100", - "is_enabled": True, - "mtu": 400, - "vlan_id": 100, - "comment": ["comment A", "comment B"], - }, - { - "description": "Eth1 - VIF 101", - "is_enabled": True, - "vlan_id": 101, - }, - ], - }, - { - "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", - "interface_name": "eth2", - "is_enabled": True, - "mtu": 600, - }, - ] - target = ["extra", "comment"] - output = [ - { - "duplex": "auto", - "enabled": True, - "interface_name": "eth0", - "speed": "auto", - }, - { - "is_enabled": True, - "vifs": [ - { - "is_enabled": True, - "description": "Eth1 - VIF 100", - "vlan_id": 100, - "mtu": 400, - }, - { - "is_enabled": True, - "description": "Eth1 - VIF 101", - "vlan_id": 101, - }, - ], - "description": "Configured by Ansible - Interface 1", - "duplex": "auto", - "mtu": 1500, - "interface_name": "eth1", - "speed": "auto", - }, - { - "is_enabled": True, - "interface_name": "eth2", - "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", - "mtu": 600, - }, - ] - args = ["", data, target] - - result = _remove_keys(*args) - self.assertEqual(result, output) - - def test_remove_filter_match_starts_with_plugin(self): - data = [ - { - "duplex": "auto", - "enabled": True, - "interface_name": "eth0", - "speed": "auto", - }, - { - "description": "Configured by Ansible - Interface 1", - "duplex": "auto", - "interface_name": "eth1", - "is_enabled": True, - "mtu": 1500, - "speed": "auto", - "vifs": [ - { - "description": "Eth1 - VIF 100", - "is_enabled": True, - "mtu": 400, - "vlan_id": 100, - }, - { - "description": "Eth1 - VIF 101", - "is_enabled": True, - "vlan_id": 101, - }, - ], - }, - { - "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", - "interface_name": "eth2", - "is_enabled": True, - "mtu": 600, - }, - ] - target = ["is_"] - output = [ - { - "duplex": "auto", - "enabled": True, - "interface_name": "eth0", - "speed": "auto", - }, - { - "vifs": [ - { - "description": "Eth1 - VIF 100", - "vlan_id": 100, - "mtu": 400, - }, - {"description": "Eth1 - VIF 101", "vlan_id": 101}, - ], - "description": "Configured by Ansible - Interface 1", - "duplex": "auto", - "mtu": 1500, - "interface_name": "eth1", - "speed": "auto", - }, - { - "interface_name": "eth2", - "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", - "mtu": 600, - }, - ] - args = ["", data, target, "starts_with"] - - result = _remove_keys(*args) - self.assertEqual(result, output) - - def test_replace_filter_match_ends_with_plugin(self): - data = [ - { - "duplex": "auto", - "enabled": True, - "interface_name": "eth0", - "speed": "auto", - }, - { - "description": "Configured by Ansible - Interface 1", - "duplex": "auto", - "interface_name": "eth1", - "is_enabled": True, - "mtu": 1500, - "speed": "auto", - "vifs": [ - { - "description": "Eth1 - VIF 100", - "is_enabled": True, - "mtu": 400, - "vlan_id": 100, - }, - { - "description": "Eth1 - VIF 101", - "is_enabled": True, - "vlan_id": 101, - }, - ], - }, - { - "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", - "interface_name": "eth2", - "is_enabled": True, - "mtu": 600, - }, - ] - target = ["_enabled"] - output = [ - { - "duplex": "auto", - "enabled": True, - "interface_name": "eth0", - "speed": "auto", - }, - { - "vifs": [ - { - "description": "Eth1 - VIF 100", - "vlan_id": 100, - "mtu": 400, - }, - {"description": "Eth1 - VIF 101", "vlan_id": 101}, - ], - "description": "Configured by Ansible - Interface 1", - "duplex": "auto", - "mtu": 1500, - "interface_name": "eth1", - "speed": "auto", - }, - { - "interface_name": "eth2", - "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", - "mtu": 600, - }, - ] - args = ["", data, target, "ends_with"] - - result = _remove_keys(*args) - self.assertEqual(result, output) - - def test_replace_filter_match_regex_plugin(self): - data = [ - { - "duplex": "auto", - "enabled": True, - "interface_name": "eth0", - "speed": "auto", - }, - { - "description": "Configured by Ansible - Interface 1", - "duplex": "auto", - "interface_name": "eth1", - "is_enabled": True, - "mtu": 1500, - "speed": "auto", - "vifs": [ - { - "description": "Eth1 - VIF 100", - "is_enabled": True, - "mtu": 400, - "vlan_id": 100, - }, - { - "description": "Eth1 - VIF 101", - "is_enabled": True, - "vlan_id": 101, - }, - ], - }, - { - "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", - "interface_name": "eth2", - "is_enabled": True, - "mtu": 600, - }, - ] - target = ["^desc"] - output = [ - { - "duplex": "auto", - "enabled": True, - "interface_name": "eth0", - "speed": "auto", - }, - { - "is_enabled": True, - "vifs": [ - {"is_enabled": True, "vlan_id": 100, "mtu": 400}, - {"is_enabled": True, "vlan_id": 101}, - ], - "duplex": "auto", - "mtu": 1500, - "interface_name": "eth1", - "speed": "auto", - }, - {"is_enabled": True, "interface_name": "eth2", "mtu": 600}, - ] - args = ["", data, target, "regex"] - - result = _remove_keys(*args) - self.assertEqual(result, output) - - def test_invalid_data(self): - self.maxDiff = None - target = [{"before": "pre", "after": "post"}] - args = ["", "string data", target] - with self.assertRaises(AnsibleFilterError) as error: - _remove_keys(*args) - self.assertIn("Error when using plugin 'remove_keys'", str(error.exception)) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_replace_keys.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_replace_keys.py deleted file mode 100644 index a27ec942..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_replace_keys.py +++ /dev/null @@ -1,348 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible.errors import AnsibleFilterError - -from ansible_collections.ansible.utils.plugins.filter.replace_keys import _replace_keys - - -class TestReplaceKeys(unittest.TestCase): - def setUp(self): - pass - - def test_replace_filter_plugin(self): - data = [ - { - "duplex": "auto", - "enabled": True, - "interface_name": "eth0", - "speed": "auto", - }, - { - "description": "Configured by Ansible - Interface 1", - "duplex": "auto", - "interface_name": "eth1", - "is_enabled": True, - "mtu": 1500, - "speed": "auto", - "vifs": [ - { - "description": "Eth1 - VIF 100", - "is_enabled": True, - "mtu": 400, - "vlan_id": 100, - }, - { - "description": "Eth1 - VIF 101", - "is_enabled": True, - "vlan_id": 101, - }, - ], - }, - { - "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", - "interface_name": "eth2", - "is_enabled": True, - "mtu": 600, - }, - ] - target = [ - {"before": "interface_name", "after": "name"}, - {"before": "is_enabled", "after": "enabled"}, - ] - output = [ - { - "duplex": "auto", - "enabled": True, - "speed": "auto", - "name": "eth0", - }, - { - "vifs": [ - { - "enabled": True, - "description": "Eth1 - VIF 100", - "vlan_id": 100, - "mtu": 400, - }, - { - "enabled": True, - "description": "Eth1 - VIF 101", - "vlan_id": 101, - }, - ], - "description": "Configured by Ansible - Interface 1", - "duplex": "auto", - "enabled": True, - "mtu": 1500, - "speed": "auto", - "name": "eth1", - }, - { - "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", - "enabled": True, - "mtu": 600, - "name": "eth2", - }, - ] - args = ["", data, target] - - result = _replace_keys(*args) - self.assertEqual(result, output) - - def test_replace_filter_match_starts_with_plugin(self): - data = [ - { - "duplex": "auto", - "enabled": True, - "interface_name": "eth0", - "speed": "auto", - }, - { - "description": "Configured by Ansible - Interface 1", - "duplex": "auto", - "interface_name": "eth1", - "is_enabled": True, - "mtu": 1500, - "speed": "auto", - "vifs": [ - { - "description": "Eth1 - VIF 100", - "is_enabled": True, - "mtu": 400, - "vlan_id": 100, - }, - { - "description": "Eth1 - VIF 101", - "is_enabled": True, - "vlan_id": 101, - }, - ], - }, - { - "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", - "interface_name": "eth2", - "is_enabled": True, - "mtu": 600, - }, - ] - target = [ - {"before": "interface", "after": "name"}, - {"before": "is", "after": "enabled"}, - ] - output = [ - { - "duplex": "auto", - "enabled": True, - "speed": "auto", - "name": "eth0", - }, - { - "vifs": [ - { - "enabled": True, - "description": "Eth1 - VIF 100", - "vlan_id": 100, - "mtu": 400, - }, - { - "enabled": True, - "description": "Eth1 - VIF 101", - "vlan_id": 101, - }, - ], - "description": "Configured by Ansible - Interface 1", - "duplex": "auto", - "enabled": True, - "mtu": 1500, - "speed": "auto", - "name": "eth1", - }, - { - "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", - "enabled": True, - "mtu": 600, - "name": "eth2", - }, - ] - args = ["", data, target, "starts_with"] - - result = _replace_keys(*args) - self.assertEqual(result, output) - - def test_replace_filter_match_ends_with_plugin(self): - data = [ - { - "duplex": "auto", - "enabled": True, - "interface_name": "eth0", - "speed": "auto", - }, - { - "description": "Configured by Ansible - Interface 1", - "duplex": "auto", - "interface_name": "eth1", - "is_enabled": True, - "mtu": 1500, - "speed": "auto", - "vifs": [ - { - "description": "Eth1 - VIF 100", - "is_enabled": True, - "mtu": 400, - "vlan_id": 100, - }, - { - "description": "Eth1 - VIF 101", - "is_enabled": True, - "vlan_id": 101, - }, - ], - }, - { - "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", - "interface_name": "eth2", - "is_enabled": True, - "mtu": 600, - }, - ] - target = [ - {"before": "ame", "after": "name"}, - {"before": "enabled", "after": "enabled"}, - ] - output = [ - { - "duplex": "auto", - "enabled": True, - "speed": "auto", - "name": "eth0", - }, - { - "vifs": [ - { - "enabled": True, - "description": "Eth1 - VIF 100", - "vlan_id": 100, - "mtu": 400, - }, - { - "enabled": True, - "description": "Eth1 - VIF 101", - "vlan_id": 101, - }, - ], - "description": "Configured by Ansible - Interface 1", - "duplex": "auto", - "enabled": True, - "mtu": 1500, - "speed": "auto", - "name": "eth1", - }, - { - "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", - "enabled": True, - "mtu": 600, - "name": "eth2", - }, - ] - args = ["", data, target, "ends_with"] - - result = _replace_keys(*args) - self.assertEqual(result, output) - - def test_replace_filter_match_regex_plugin(self): - data = [ - { - "duplex": "auto", - "enabled": True, - "interface_name": "eth0", - "speed": "auto", - }, - { - "description": "Configured by Ansible - Interface 1", - "duplex": "auto", - "interface_name": "eth1", - "is_enabled": True, - "mtu": 1500, - "speed": "auto", - "vifs": [ - { - "description": "Eth1 - VIF 100", - "is_enabled": True, - "mtu": 400, - "vlan_id": 100, - }, - { - "description": "Eth1 - VIF 101", - "is_enabled": True, - "vlan_id": 101, - }, - ], - }, - { - "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", - "interface_name": "eth2", - "is_enabled": True, - "mtu": 600, - }, - ] - target = [ - {"before": "^interface_name$", "after": "name"}, - {"before": "is_enabled", "after": "enabled"}, - ] - output = [ - { - "duplex": "auto", - "enabled": True, - "speed": "auto", - "name": "eth0", - }, - { - "vifs": [ - { - "enabled": True, - "description": "Eth1 - VIF 100", - "vlan_id": 100, - "mtu": 400, - }, - { - "enabled": True, - "description": "Eth1 - VIF 101", - "vlan_id": 101, - }, - ], - "description": "Configured by Ansible - Interface 1", - "duplex": "auto", - "enabled": True, - "mtu": 1500, - "speed": "auto", - "name": "eth1", - }, - { - "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", - "enabled": True, - "mtu": 600, - "name": "eth2", - }, - ] - args = ["", data, target, "regex"] - - result = _replace_keys(*args) - self.assertEqual(result, output) - - def test_invalid_data(self): - self.maxDiff = None - target = [{"before": "pre", "after": "post"}] - args = ["", "string data", target] - with self.assertRaises(AnsibleFilterError) as error: - _replace_keys(*args) - self.assertIn("Error when using plugin 'replace_keys'", str(error.exception)) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_slaac.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_slaac.py deleted file mode 100644 index e3d78ec8..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_slaac.py +++ /dev/null @@ -1,32 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for slaac filter plugin -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible_collections.ansible.utils.plugins.filter.slaac import _slaac - - -class Test_slaac(unittest.TestCase): - def setUp(self): - pass - - def test_slaac_filter_1(self): - """slaac filter""" - args = [ - "", - "fdcf:1894:23b5:d38c:0000:0000:0000:0000", - "c2:31:b3:83:bf:2b", - ] - result = _slaac(*args) - self.assertEqual(result, "fdcf:1894:23b5:d38c:c031:b3ff:fe83:bf2b") diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_to_xml.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_to_xml.py deleted file mode 100644 index f1ce6fb0..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_to_xml.py +++ /dev/null @@ -1,97 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2020 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible.errors import AnsibleError, AnsibleFilterError - -from ansible_collections.ansible.utils.plugins.filter.to_xml import _to_xml - - -INVALID_DATA = '' - -VALID_DATA = { - "interface-configurations": { - "@xmlns": "http://cisco.com/ns/yang/Cisco-IOS-XR-ifmgr-cfg", - "key1": "value1", - }, -} - -OUTPUT_TABS = """ - -\tvalue1 -""" - -OUTPUT_SPACES = """ - - value1 -""" - - -class TestToXml(unittest.TestCase): - def setUp(self): - pass - - def test_invalid_data(self): - """Check passing invalid argspec""" - - # missing required arguments - args = ["", INVALID_DATA, "xmltodict"] - kwargs = {} - with self.assertRaises(AnsibleError) as error: - _to_xml(*args, **kwargs) - self.assertIn("we were unable to convert to dict", str(error.exception)) - - def test_valid_data(self): - """Check passing valid data as per criteria""" - self.maxDiff = None - args = ["", VALID_DATA, "xmltodict"] - result = _to_xml(*args) - self.assertEqual(result, OUTPUT_TABS) - - def test_args(self): - """Check passing invalid argspec""" - - # missing required arguments - args = [] - kwargs = {} - with self.assertRaises(AnsibleFilterError) as error: - _to_xml(*args, **kwargs) - self.assertIn("missing required arguments: data", str(error.exception)) - - def test_invalid_engine(self): - """Check passing invalid argspec""" - - # missing required arguments - args = ["", VALID_DATA, "test"] - kwargs = {} - with self.assertRaises(AnsibleError) as error: - _to_xml(*args, **kwargs) - self.assertIn("engine: test is not supported", str(error.exception)) - - def test_indent_with_spaces(self): - """Check passing indent with spaces and default indent_width""" - self.maxDiff = None - args = ["", VALID_DATA, "xmltodict", "spaces", 4] - result = _to_xml(*args) - self.assertEqual(result, OUTPUT_SPACES) - - def test_invalid_indent(self): - """Check passing invalid indent value""" - - # missing required arguments - args = ["", VALID_DATA, "xmltodict", "test"] - kwargs = {} - with self.assertRaises(AnsibleError) as error: - _to_xml(*args, **kwargs) - self.assertIn( - "value of indent must be one of: tabs, spaces, got: test", - str(error.exception), - ) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_usable_range.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_usable_range.py deleted file mode 100644 index 14450e80..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_usable_range.py +++ /dev/null @@ -1,127 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for usable_range filter plugin -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible.errors import AnsibleError - -from ansible_collections.ansible.utils.plugins.filter.usable_range import _usable_range - - -INVALID_DATA_1 = [ - "helloworld", - "192.0.2.0/23/24", - "::/20/30", - "10.0.0.0/322", - "2001:db8:abcd:0012::0/129", -] -INVALID_DATA_2 = ["192.168.1.25/24", "2001:db8:abcd:12::2/126"] - -VALID_DATA = [ - "10.0.0.8/30", - "192.0.2.0/28", - "2001:db8:abcd:0012::0/126", - "2001:DB8:ABCD:12::", -] - -VALID_OUTPUT_1 = { - "number_of_ips": 4, - "usable_ips": ["10.0.0.8", "10.0.0.9", "10.0.0.10", "10.0.0.11"], -} -VALID_OUTPUT_2 = { - "number_of_ips": 16, - "usable_ips": [ - "192.0.2.0", - "192.0.2.1", - "192.0.2.2", - "192.0.2.3", - "192.0.2.4", - "192.0.2.5", - "192.0.2.6", - "192.0.2.7", - "192.0.2.8", - "192.0.2.9", - "192.0.2.10", - "192.0.2.11", - "192.0.2.12", - "192.0.2.13", - "192.0.2.14", - "192.0.2.15", - ], -} - -VALID_OUTPUT_3 = { - "number_of_ips": 4, - "usable_ips": [ - "2001:db8:abcd:12::", - "2001:db8:abcd:12::1", - "2001:db8:abcd:12::2", - "2001:db8:abcd:12::3", - ], -} -VALID_OUTPUT_4 = {"number_of_ips": 1, "usable_ips": ["2001:db8:abcd:12::"]} - - -class TestUsableRange(unittest.TestCase): - def setUp(self): - pass - - def test_missing_data(self): - """Check passing missing argspec""" - - # missing required arguments - ip = "" - with self.assertRaises(AnsibleError) as error: - _usable_range(ip) - self.assertIn( - "does not appear to be an IPv4 or IPv6 network", - str(error.exception), - ) - - def test_invalid_data(self): - """Check passing invalid argspec""" - - # invalid required arguments - - for invalid_data in INVALID_DATA_1: - with self.assertRaises(AnsibleError) as error: - _usable_range(invalid_data) - self.assertIn( - "does not appear to be an IPv4 or IPv6 network", - str(error.exception), - ) - - for invalid_data in INVALID_DATA_2: - with self.assertRaises(AnsibleError) as error: - _usable_range(invalid_data) - self.assertIn("has host bits set", str(error.exception)) - - def test_valid_data(self): - """Check passing valid data as per criteria""" - - ip = VALID_DATA[0] - result = _usable_range(ip) - self.assertEqual(result, VALID_OUTPUT_1) - - ip = VALID_DATA[1] - result = _usable_range(ip) - self.assertEqual(result, VALID_OUTPUT_2) - - ip = VALID_DATA[2] - result = _usable_range(ip) - self.assertEqual(result, VALID_OUTPUT_3) - - ip = VALID_DATA[3] - result = _usable_range(ip) - self.assertEqual(result, VALID_OUTPUT_4) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_validate.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_validate.py deleted file mode 100644 index 6082d2ed..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/filter/test_validate.py +++ /dev/null @@ -1,163 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2020 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible.errors import AnsibleFilterError - -from ansible_collections.ansible.utils.plugins.filter.validate import validate - - -DATA = { - "GigabitEthernet0/0/0/0": { - "auto_negotiate": False, - "counters": { - "in_crc_errors": 0, - "in_errors": 0, - "rate": {"in_rate": 0, "out_rate": 0}, - }, - "description": "configured using Ansible", - "duplex_mode": "full", - "enabled": True, - "line_protocol": "up", - "mtu": 1514, - "oper_status": "down", - "type": "GigabitEthernet", - }, - "GigabitEthernet0/0/0/1": { - "auto_negotiate": False, - "counters": { - "in_crc_errors": 10, - "in_errors": 0, - "rate": {"in_rate": 0, "out_rate": 0}, - }, - "description": "# interface is configures with Ansible", - "duplex_mode": "full", - "enabled": False, - "line_protocol": "up", - "mtu": 1514, - "oper_status": "up", - "type": "GigabitEthernet", - }, -} - -CRITERIA_CRC_ERROR_CHECK = { - "type": "object", - "patternProperties": { - "^.*": { - "type": "object", - "properties": { - "counters": {"properties": {"in_crc_errors": {"type": "number", "maximum": 0}}}, - }, - }, - }, -} - -CRITERIA_ENABLED_CHECK = { - "type": "object", - "patternProperties": {"^.*": {"type": "object", "properties": {"enabled": {"enum": [True]}}}}, -} - -CRITERIA_OPER_STATUS_UP_CHECK = { - "type": "object", - "patternProperties": { - "^.*": { - "type": "object", - "properties": {"oper_status": {"type": "string", "pattern": "up"}}, - }, - }, -} - -CRITERIA_IN_RATE_CHECK = { - "type": "object", - "patternProperties": { - "^.*": { - "type": "object", - "properties": { - "counters": { - "properties": { - "rate": {"properties": {"in_rate": {"type": "number", "maximum": 0}}}, - }, - }, - }, - }, - }, -} - - -class TestValidate(unittest.TestCase): - def setUp(self): - pass - - def test_invalid_argspec(self): - """Check passing invalid argspec""" - - # missing required arguments - args = [DATA] - kwargs = {} - with self.assertRaises(AnsibleFilterError) as error: - validate(*args, **kwargs) - self.assertIn( - "Missing either 'data' or 'criteria' value in filter input, refer 'ansible.utils.validate' filter", - str(error.exception), - ) - - # missing required arguments - with self.assertRaises(AnsibleFilterError) as error: - validate([DATA]) - self.assertIn("Missing either 'data' or 'criteria' value", str(error.exception)) - - args = [DATA, [CRITERIA_IN_RATE_CHECK]] - kwargs = {"engine": "ansible.utils.sample"} - with self.assertRaises(AnsibleFilterError) as error: - validate(*args, **kwargs) - self.assertIn( - "For engine 'ansible.utils.sample' error loading", - str(error.exception), - ) - - args = ["invalid data", [CRITERIA_IN_RATE_CHECK]] - kwargs = {"engine": "ansible.utils.jsonschema"} - with self.assertRaises(AnsibleFilterError) as error: - validate(*args, **kwargs) - self.assertIn("'data' option value is invalid", str(error.exception)) - - args = [DATA, "invalid criteria"] - kwargs = {"engine": "ansible.utils.jsonschema"} - with self.assertRaises(AnsibleFilterError) as error: - validate(*args, **kwargs) - self.assertIn("'criteria' option value is invalid", str(error.exception)) - - def test_invalid_validate_plugin_config_options(self): - """Check passing invalid validate plugin options""" - - args = [ - DATA, - [ - CRITERIA_CRC_ERROR_CHECK, - CRITERIA_ENABLED_CHECK, - CRITERIA_OPER_STATUS_UP_CHECK, - ], - ] - kwargs = {"engine": "ansible.utils.jsonschema", "draft": "draft0"} - with self.assertRaises(AnsibleFilterError) as error: - validate(*args, **kwargs) - self.assertIn( - "value of draft must be one of: draft3, draft4, draft6, draft7, 2019-09, 2020-12, got: draft0", - str(error.exception), - ) - - def test_valid_data(self): - """Check passing valid data as per criteria""" - - args = [DATA, CRITERIA_IN_RATE_CHECK] - kwargs = {"engine": "ansible.utils.jsonschema"} - result = validate(*args, **kwargs) - self.assertEqual(result, []) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/lookup/__init__.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/lookup/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/lookup/test_validate.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/lookup/test_validate.py deleted file mode 100644 index 85bbc6bd..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/lookup/test_validate.py +++ /dev/null @@ -1,159 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2020 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible.errors import AnsibleLookupError - -from ansible_collections.ansible.utils.plugins.lookup.validate import LookupModule - - -DATA = { - "GigabitEthernet0/0/0/0": { - "auto_negotiate": False, - "counters": { - "in_crc_errors": 0, - "in_errors": 0, - "rate": {"in_rate": 0, "out_rate": 0}, - }, - "description": "configured using Ansible", - "duplex_mode": "full", - "enabled": True, - "line_protocol": "up", - "mtu": 1514, - "oper_status": "down", - "type": "GigabitEthernet", - }, - "GigabitEthernet0/0/0/1": { - "auto_negotiate": False, - "counters": { - "in_crc_errors": 10, - "in_errors": 0, - "rate": {"in_rate": 0, "out_rate": 0}, - }, - "description": "# interface is configures with Ansible", - "duplex_mode": "full", - "enabled": False, - "line_protocol": "up", - "mtu": 1514, - "oper_status": "up", - "type": "GigabitEthernet", - }, -} - -CRITERIA_CRC_ERROR_CHECK = { - "type": "object", - "patternProperties": { - "^.*": { - "type": "object", - "properties": { - "counters": {"properties": {"in_crc_errors": {"type": "number", "maximum": 0}}}, - }, - }, - }, -} - -CRITERIA_ENABLED_CHECK = { - "type": "object", - "patternProperties": {"^.*": {"type": "object", "properties": {"enabled": {"enum": [True]}}}}, -} - -CRITERIA_OPER_STATUS_UP_CHECK = { - "type": "object", - "patternProperties": { - "^.*": { - "type": "object", - "properties": {"oper_status": {"type": "string", "pattern": "up"}}, - }, - }, -} - -CRITERIA_IN_RATE_CHECK = { - "type": "object", - "patternProperties": { - "^.*": { - "type": "object", - "properties": { - "counters": { - "properties": { - "rate": {"properties": {"in_rate": {"type": "number", "maximum": 0}}}, - }, - }, - }, - }, - }, -} - - -class TestValidate(unittest.TestCase): - def setUp(self): - self._lp = LookupModule() - - def test_invalid_argspec(self): - """Check passing invalid argspec""" - - # missing required arguments - with self.assertRaises(AnsibleLookupError) as error: - self._lp.run([DATA], {}) - self.assertIn("missing either 'data' or 'criteria' value", str(error.exception)) - - terms = [DATA, [CRITERIA_IN_RATE_CHECK]] - kwargs = {"engine": "ansible.utils.sample"} - variables = {} - with self.assertRaises(AnsibleLookupError) as error: - self._lp.run(terms, variables, **kwargs) - self.assertIn( - "For engine 'ansible.utils.sample' error loading", - str(error.exception), - ) - - terms = ["invalid data", [CRITERIA_IN_RATE_CHECK]] - kwargs = {"engine": "ansible.utils.jsonschema"} - variables = {} - with self.assertRaises(AnsibleLookupError) as error: - self._lp.run(terms, variables, **kwargs) - self.assertIn("'data' option value is invalid", str(error.exception)) - - terms = [DATA, "invalid criteria"] - kwargs = {"engine": "ansible.utils.jsonschema"} - variables = {} - with self.assertRaises(AnsibleLookupError) as error: - self._lp.run(terms, variables, **kwargs) - self.assertIn("'criteria' option value is invalid", str(error.exception)) - - def test_invalid_validate_plugin_config_options(self): - """Check passing invalid validate plugin options""" - - terms = [ - DATA, - [ - CRITERIA_CRC_ERROR_CHECK, - CRITERIA_ENABLED_CHECK, - CRITERIA_OPER_STATUS_UP_CHECK, - ], - ] - kwargs = {"engine": "ansible.utils.jsonschema"} - variables = {} - result = self._lp.run(terms, variables, **kwargs) - self.assertIn( - "GigabitEthernet0/0/0/1.counters.in_crc_errors", - result[0]["data_path"], - ) - self.assertIn("GigabitEthernet0/0/0/1.enabled", result[1]["data_path"]) - self.assertIn("GigabitEthernet0/0/0/0.oper_status", result[2]["data_path"]) - - def test_valid_data(self): - """Check passing valid data as per criteria""" - - terms = [DATA, CRITERIA_IN_RATE_CHECK] - kwargs = {"engine": "ansible.utils.jsonschema"} - variables = {} - result = self._lp.run(terms, variables, **kwargs) - self.assertEqual(result, []) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/plugin_utils/test_index_of.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/plugin_utils/test_index_of.py deleted file mode 100644 index bc426e42..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/plugin_utils/test_index_of.py +++ /dev/null @@ -1,119 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2020 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - - -import unittest - -from ansible.template import Templar - -from ansible_collections.ansible.utils.plugins.plugin_utils.index_of import index_of - - -class TestIndexOfFilter(unittest.TestCase): - def setUp(self): - self._tests = Templar(loader=None).environment.tests - - def test_fail_no_qualfier(self): - obj, test, value = [1, 2], "@@", 1 - with self.assertRaises(Exception) as exc: - index_of(obj, test, value, tests=self._tests) - self.assertIn("the test '@@' was not found", str(exc.exception)) - obj, test, value, key = [{"a": 1}], "@@", 1, "a" - with self.assertRaises(Exception) as exc: - index_of(obj, test, value, key, tests=self._tests) - self.assertIn("the test '@@' was not found", str(exc.exception)) - - def test_fail_mixed_list(self): - obj, test, value, key = [{"a": "b"}, True, 1, "a"], "==", "b", "a" - with self.assertRaises(Exception) as exc: - index_of(obj, test, value, key, tests=self._tests) - self.assertIn("required to be dictionaries", str(exc.exception)) - - def test_fail_key_not_valid(self): - obj, test, value, key = [{"a": "b"}], "==", "b", [1, 2] - with self.assertRaises(Exception) as exc: - index_of(obj, test, value, key, tests=self._tests) - self.assertIn("Unknown key type", str(exc.exception)) - - def test_fail_on_missing(self): - obj, test, value, key = [{"a": True}, {"c": False}], "==", True, "a" - with self.assertRaises(Exception) as exc: - index_of(obj, test, value, key, fail_on_missing=True, tests=self._tests) - self.assertIn("'a' was not found", str(exc.exception)) - - def test_just_test(self): - """Limit to jinja < 2.11 tests""" - objs = [ - # ([True], "true", 0), - # ([False], "not false", []), - # ([False, 5], "boolean", 0), - # ([0, False], "false", 1), - ([3, 4], "not even", 0), - ([3, 4], "even", 1), - ([3, 3], "even", []), - ([3, 3, 3, 4], "odd", [0, 1, 2]), - # ([3.3, 3.4], "float", [0, 1]), - ] - for entry in objs: - obj, test, answer = entry - result = index_of(obj, test, tests=self._tests) - expected = answer - self.assertEqual(result, expected) - - def test_simple_lists(self): - objs = [ - ([1, 2, 3], "==", 2, 1), - (["a", "b", "c"], "eq", "c", 2), - ([True, False, 0, 1], "equalto", False, [1, 2]), - ([True, False, "0", "1"], "==", False, 1), - ([True, False, "", "1"], "==", False, 1), - ([True, False, "", "1"], "in", False, 1), - ([True, False, "", "1", "a"], "in", [False, "1"], [1, 3]), - ([1, 2, 3, "a", "b", "c"], "!=", "c", [0, 1, 2, 3, 4]), - ([1, 2, 3], "!<", 3, 2), - ] - for entry in objs: - obj, test, value, answer = entry - result = index_of(obj, test, value, tests=self._tests) - expected = answer - self.assertEqual(result, expected) - - def test_simple_dict(self): - objs = [ - ([{"a": 1}], "==", 1, "a", 0), - ([{"a": 1}], "==", 1, "b", []), - ([{"a": 1}], "==", 2, "a", []), - ( - [{"a": 1}, {"a": 1}, {"a": 1}, {"a": 2}], - "==", - 1, - "a", - [0, 1, 2], - ), - ( - [{"a": "abc"}, {"a": "def"}, {"a": "ghi"}, {"a": "jkl"}], - "ansible.builtin.match", - "^a", - "a", - 0, - ), - ( - [{"a": "abc"}, {"a": "def"}, {"a": "ghi"}, {"a": "jkl"}], - "ansible.builtin.search", - "e", - "a", - 1, - ), - ] - for entry in objs: - obj, test, value, key, answer = entry - result = index_of(obj, test, value, key, tests=self._tests) - self.assertEqual(result, answer) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/sub_plugins/cli_parsers/__init__.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/sub_plugins/cli_parsers/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/sub_plugins/cli_parsers/fixtures/ios_show_ip_interface_brief.cfg b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/sub_plugins/cli_parsers/fixtures/ios_show_ip_interface_brief.cfg deleted file mode 100644 index ebaf6c50..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/sub_plugins/cli_parsers/fixtures/ios_show_ip_interface_brief.cfg +++ /dev/null @@ -1,4 +0,0 @@ -Interface IP-Address OK? Method Status Protocol -GigabitEthernet0/0 10.8.38.75 YES manual up up -GigabitEthernet0/1 unassigned YES unset up up -GigabitEthernet0/2 unassigned YES unset up up diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/sub_plugins/cli_parsers/fixtures/nxos_show_version.cfg b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/sub_plugins/cli_parsers/fixtures/nxos_show_version.cfg deleted file mode 100644 index c4c36b8d..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/sub_plugins/cli_parsers/fixtures/nxos_show_version.cfg +++ /dev/null @@ -1,39 +0,0 @@ -an-nxos9k-01# show version -Cisco Nexus Operating System (NX-OS) Software -TAC support: http://www.cisco.com/tac -Documents: http://www.cisco.com/en/US/products/ps9372/tsd_products_support_series_home.html -Copyright (c) 2002-2017, Cisco Systems, Inc. All rights reserved. -The copyrights to certain works contained herein are owned by -other third parties and are used and distributed under license. -Some parts of this software are covered under the GNU Public -License. A copy of the license is available at -http://www.gnu.org/licenses/gpl.html. - -Nexus 9000v is a demo version of the Nexus Operating System - -Software - BIOS: version - NXOS: version 7.0(3)I7(1) - BIOS compile time: - NXOS image file is: bootflash:///nxos.7.0.3.I7.1.bin - NXOS compile time: 8/31/2017 14:00:00 [08/31/2017 22:29:32] - - -Hardware - cisco Nexus9000 9000v Chassis - with 4041236 kB of memory. - Processor Board ID 96NK4OUJH32 - - Device name: an-nxos9k-01 - bootflash: 3509454 kB -Kernel uptime is 12 day(s), 23 hour(s), 48 minute(s), 10 second(s) - -Last reset - Reason: Unknown - System version: - Service: - -plugin - Core Plugin, Ethernet Plugin - -Active Package(s): diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/sub_plugins/cli_parsers/fixtures/nxos_show_version.textfsm b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/sub_plugins/cli_parsers/fixtures/nxos_show_version.textfsm deleted file mode 100644 index 0ee8fe9e..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/sub_plugins/cli_parsers/fixtures/nxos_show_version.textfsm +++ /dev/null @@ -1,16 +0,0 @@ -Value BOOT_IMAGE (.*) -Value UPTIME ((\d+\s\w+.s.,?\s?){4}) -Value LAST_REBOOT_REASON (.+) -Value OS (\d+.\d+(.+)?) -Value PLATFORM (\w+) - -Start - ^\s*(NXOS: version|system:\s+version)\s+${OS}\s*$$ - ^\s*(NXOS|kickstart)\s+image\s+file\s+is:\s+${BOOT_IMAGE}\s*$$ - ^\s+cisco\s+${PLATFORM}\s+[cC]hassis - ^\s+cisco\s+Nexus\d+\s+${PLATFORM} - # Cisco N5K platform - ^\s+cisco\s+Nexus\s+${PLATFORM}\s+[cC]hassis - ^\s+cisco\s+.+-${PLATFORM}\s* - ^Kernel\s+uptime\s+is\s+${UPTIME} - ^\s+Reason:\s${LAST_REBOOT_REASON} -> Record diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/sub_plugins/cli_parsers/fixtures/nxos_show_version.ttp b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/sub_plugins/cli_parsers/fixtures/nxos_show_version.ttp deleted file mode 100644 index 88808869..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/sub_plugins/cli_parsers/fixtures/nxos_show_version.ttp +++ /dev/null @@ -1,7 +0,0 @@ - - NXOS: version {{ os }} - NXOS image file is: {{ boot_image }} -Kernel uptime is {{ uptime | ORPHRASE }} - cisco Nexus9000 {{ platform }} Chassis - -""" diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/sub_plugins/cli_parsers/fixtures/nxos_show_version_invalid.textfsm b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/sub_plugins/cli_parsers/fixtures/nxos_show_version_invalid.textfsm deleted file mode 100644 index 6554b9a6..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/sub_plugins/cli_parsers/fixtures/nxos_show_version_invalid.textfsm +++ /dev/null @@ -1,16 +0,0 @@ -Value BOOT_IMAGE (.*) -Value UPTIME ((\d+\s\w+.s.,?\s?){4}) -Value LAST_REBOOT_REASON (.+) -Value OS (\d+.\d+(.+)?) -Value PLATFORM (\w+) - -Start - ^\s*(NXOS: version|system:\s+version)\s+${OS}\s*$$ - \s*(NXOS|kickstart)\s+image\s+file\s+is:\s+${BOOT_IMAGE}\s*$$ - ^\s+cisco\s+${PLATFORM}\s+[cC]hassis - ^\s+cisco\s+Nexus\d+\s+${PLATFORM} - # Cisco N5K platform - ^\s+cisco\s+Nexus\s+${PLATFORM}\s+[cC]hassis - cisco\s+.+-${PLATFORM}\s* - ^Kernel\s+uptime\s+is\s+${UPTIME} - ^\s+Reason:\s${LAST_REBOOT_REASON} -> Record diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/sub_plugins/cli_parsers/test_json_parser.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/sub_plugins/cli_parsers/test_json_parser.py deleted file mode 100644 index 71117489..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/sub_plugins/cli_parsers/test_json_parser.py +++ /dev/null @@ -1,43 +0,0 @@ -# (c) 2020 Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import json - -from ansible_collections.ansible.utils.plugins.sub_plugins.cli_parser.json_parser import CliParser -from ansible_collections.ansible.utils.tests.unit.compat import unittest - - -class TestJsonParser(unittest.TestCase): - def test_json_parser(self): - test_value = { - "string": "This is a string", - "list": ["This", "is", "a", "list"], - "bool": True, - "int": 27, - "dict": { - "This": "string", - "is": ["l", "i", "s", "t"], - "a": True, - "dict": 42, - }, - } - task_args = {"text": json.dumps(test_value)} - parser = CliParser(task_args=task_args, task_vars=[], debug=False) - - result = parser.parse() - self.assertEqual(result, {"parsed": test_value}) - - def test_invalid_json(self): - task_args = {"text": "Definitely not JSON"} - parser = CliParser(task_args=task_args, task_vars=[], debug=False) - - result = parser.parse() - # Errors are different between Python 2 and 3, so we have to be a bit roundabout. - self.assertEqual(len(result), 1) - assert "errors" in result - self.assertEqual(len(result["errors"]), 1) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/sub_plugins/cli_parsers/test_textfsm_parser.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/sub_plugins/cli_parsers/test_textfsm_parser.py deleted file mode 100644 index 4e9936e7..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/sub_plugins/cli_parsers/test_textfsm_parser.py +++ /dev/null @@ -1,69 +0,0 @@ -# (c) 2020 Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import os - -import pytest - -from ansible_collections.ansible.utils.plugins.sub_plugins.cli_parser.textfsm_parser import ( - CliParser, -) -from ansible_collections.ansible.utils.tests.unit.compat import unittest - - -textfsm = pytest.importorskip("textfsm") - - -class TestTextfsmParser(unittest.TestCase): - def test_textfsm_parser(self): - nxos_cfg_path = os.path.join(os.path.dirname(__file__), "fixtures", "nxos_show_version.cfg") - nxos_template_path = os.path.join( - os.path.dirname(__file__), - "fixtures", - "nxos_show_version.textfsm", - ) - - with open(nxos_cfg_path) as fhand: - nxos_show_version_output = fhand.read() - - task_args = { - "text": nxos_show_version_output, - "parser": { - "name": "ansible.utils.textfsm", - "command": "show version", - "template_path": nxos_template_path, - }, - } - parser = CliParser(task_args=task_args, task_vars=[], debug=False) - - result = parser.parse() - parsed_output = [ - { - "BOOT_IMAGE": "bootflash:///nxos.7.0.3.I7.1.bin", - "LAST_REBOOT_REASON": "Unknown", - "OS": "7.0(3)I7(1)", - "PLATFORM": "9000v", - "UPTIME": "12 day(s), 23 hour(s), 48 minute(s), 10 second(s)", - }, - ] - self.assertEqual(result, {"parsed": parsed_output}) - - def test_textfsm_parser_invalid_parser(self): - fake_path = "/ /I hope this doesn't exist" - task_args = { - "text": "", - "parser": { - "name": "ansible.utils.textfsm", - "command": "show version", - "template_path": fake_path, - }, - } - parser = CliParser(task_args=task_args, task_vars=[], debug=False) - result = parser.parse() - errors = {"errors": "error while reading template_path file {0}".format(fake_path)} - self.assertEqual(result, errors) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/sub_plugins/cli_parsers/test_ttp_parser.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/sub_plugins/cli_parsers/test_ttp_parser.py deleted file mode 100644 index 3f47bda7..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/sub_plugins/cli_parsers/test_ttp_parser.py +++ /dev/null @@ -1,67 +0,0 @@ -# (c) 2020 Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import os - -import pytest - -from ansible_collections.ansible.utils.plugins.sub_plugins.cli_parser.ttp_parser import CliParser -from ansible_collections.ansible.utils.tests.unit.compat import unittest - - -textfsm = pytest.importorskip("ttp") - - -class TestTextfsmParser(unittest.TestCase): - def test_ttp_parser(self): - nxos_cfg_path = os.path.join(os.path.dirname(__file__), "fixtures", "nxos_show_version.cfg") - nxos_template_path = os.path.join( - os.path.dirname(__file__), - "fixtures", - "nxos_show_version.ttp", - ) - - with open(nxos_cfg_path) as fhand: - nxos_show_version_output = fhand.read() - - task_args = { - "text": nxos_show_version_output, - "parser": { - "name": "ansible.utils.ttp", - "command": "show version", - "template_path": nxos_template_path, - }, - } - parser = CliParser(task_args=task_args, task_vars=[], debug=False) - - result = parser.parse() - # import pdb; pdb.set_trace() - parsed_output = [ - { - "boot_image": "bootflash:///nxos.7.0.3.I7.1.bin", - "os": "7.0(3)I7(1)", - "platform": "9000v", - "uptime": "12 day(s), 23 hour(s), 48 minute(s), 10 second(s)", - }, - ] - self.assertEqual(result["parsed"][0][0], parsed_output) - - def test_textfsm_parser_invalid_parser(self): - fake_path = "/ /I hope this doesn't exist" - task_args = { - "text": "", - "parser": { - "name": "ansible.utils.ttp", - "command": "show version", - "template_path": fake_path, - }, - } - parser = CliParser(task_args=task_args, task_vars=[], debug=False) - result = parser.parse() - errors = {"errors": "error while reading template_path file {0}".format(fake_path)} - self.assertEqual(result, errors) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/sub_plugins/cli_parsers/test_xml_parser.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/sub_plugins/cli_parsers/test_xml_parser.py deleted file mode 100644 index 817fb583..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/sub_plugins/cli_parsers/test_xml_parser.py +++ /dev/null @@ -1,41 +0,0 @@ -# (c) 2020 Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -from collections import OrderedDict - -import pytest - -from ansible_collections.ansible.utils.plugins.sub_plugins.cli_parser.xml_parser import CliParser -from ansible_collections.ansible.utils.tests.unit.compat import unittest - - -xmltodict = pytest.importorskip("xmltodict") - - -class TestXmlParser(unittest.TestCase): - def test_valid_xml(self): - xml = "text" - xml_dict = OrderedDict( - tag1=OrderedDict(tag2=OrderedDict([("@arg", "foo"), ("#text", "text")])), - ) - task_args = {"text": xml, "parser": {"os": "none"}} - parser = CliParser(task_args=task_args, task_vars=[], debug=False) - - result = parser.parse() - self.assertEqual(result["parsed"], xml_dict) - - def test_invalid_xml(self): - task_args = {"text": "Definitely not XML", "parser": {"os": "none"}} - parser = CliParser(task_args=task_args, task_vars=[], debug=False) - - result = parser.parse() - self.assertEqual(len(result["errors"]), 1) - self.assertEqual( - result["errors"][0], - "XML parser returned an error while parsing. Error: syntax error: line 1, column 0", - ) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/sub_plugins/validate/__init__.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/sub_plugins/validate/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/sub_plugins/validate/test_config.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/sub_plugins/validate/test_config.py deleted file mode 100644 index 01ca3ac1..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/sub_plugins/validate/test_config.py +++ /dev/null @@ -1,106 +0,0 @@ -# (c) 2022 Ansible Project -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import pytest - -from ansible.errors import AnsibleError -from ansible.module_utils._text import to_text - -from ansible_collections.ansible.utils.plugins.plugin_utils.base.validate import _load_validator - - -@pytest.fixture(name="test_rule") -def criterion(): - return {"name": "Rule name", "rule": "Rule regex", "action": "warn"} - - -@pytest.fixture(name="validator") -def config_validator(): - engine, result = _load_validator(engine="ansible.utils.config", data="", criteria=[]) - return engine - - -@pytest.mark.parametrize("key", ["name", "rule", "action"]) -def test_check_args_missing_key(validator, test_rule, key): - del test_rule[key] - original = to_text(test_rule) - validator._criteria.append(test_rule) - - try: - validator._check_args() - error = "" - except AnsibleError as exc: - error = to_text(exc) - - assert error == 'Criteria {rule} missing "{key}" key'.format(rule=original, key=key) - - -def test_invalid_yaml(validator): - test_rule = "[This is not valid YAML" - validator._criteria = test_rule - - try: - validator._check_args() - error = "" - except AnsibleError as exc: - error = to_text(exc) - - expected_error = "'criteria' option value is invalid, value should be valid YAML." - # Don't test for exact error string, varies with Python version - assert error.startswith(expected_error) - - -def test_invalid_action(validator, test_rule): - test_rule["action"] = "flunge" - original = to_text(test_rule) - validator._criteria.append(test_rule) - - try: - validator._check_args() - error = "" - except AnsibleError as exc: - error = to_text(exc) - - expected_error = 'Action in criteria {item} is not one of "warn" or "fail"'.format( - item=original, - ) - assert error == expected_error - - -def test_invalid_regex(validator, test_rule): - test_rule["rule"] = "reg(ex" - validator._criteria.append(test_rule) - - try: - validator._check_args() - error = "" - except AnsibleError as exc: - error = to_text(exc) - - expected_error = 'Failed to compile regex "reg(ex":' - # Don't test for exact error string, varies with Python version - assert error.startswith(expected_error) - - -def test_valid_warning(validator, test_rule): - validator._criteria.append(test_rule) - validator._data = "This line matches Rule regex." - - validator.validate() - assert "errors" not in validator._result - assert len(validator._result["warnings"]) == 1 - - -def test_valid_error(validator, test_rule): - test_rule["action"] = "fail" - validator._criteria.append(test_rule) - validator._data = "This line matches Rule regex." - - validator.validate() - assert len(validator._result["errors"]) == 1 - assert "warnings" not in validator._result diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/__init__.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_in_any_network.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_in_any_network.py deleted file mode 100644 index 9e45958b..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_in_any_network.py +++ /dev/null @@ -1,47 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for netaddr test plugin: in_any_network -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible.errors import AnsibleError - -from ansible_collections.ansible.utils.plugins.test.in_any_network import _in_any_network - - -class TestInAnyNetwork(unittest.TestCase): - def setUp(self): - pass - - def test_invalid_data(self): - """Check passing invalid argspec""" - - # invalid argument - with self.assertRaises(AnsibleError) as error: - _in_any_network( - ip="10.1.1.1", - networks={ - "name": "networks", - "value": ["10.0.0.0/8", "192.168.1.0/24"], - }, - ) - self.assertIn("unable to convert to list", str(error.exception)) - - def test_valid_data(self): - """Check passing valid data as per criteria""" - - result = _in_any_network(ip="10.1.1.1", networks=["10.0.0.0/8", "192.168.1.0/24"]) - self.assertEqual(result, True) - - result = _in_any_network(ip="8.8.8.8", networks=["10.0.0.0/8", "192.168.1.0/24"]) - self.assertEqual(result, False) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_in_network.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_in_network.py deleted file mode 100644 index 5ad621a2..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_in_network.py +++ /dev/null @@ -1,45 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for netaddr test plugin: in_network -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible_collections.ansible.utils.plugins.test.in_network import _in_network - - -class TestInNetwork(unittest.TestCase): - def setUp(self): - pass - - def test_invalid_data(self): - """Check passing invalid argspec""" - - # invalid argument - with self.assertRaises(TypeError) as error: - _in_network(ip="10.1.1.1") - self.assertIn("argument", str(error.exception)) - - def test_valid_data(self): - """Check passing valid data as per criteria""" - - result = _in_network(ip="10.1.1.1", network="10.0.0.0/8") - self.assertEqual(result, True) - - result = _in_network(ip="8.8.8.8", network="192.168.1.0/24") - self.assertEqual(result, False) - - result = _in_network(ip="2001:db8:a::123", network="2001:db8:a::/64") - self.assertEqual(result, True) - - result = _in_network(ip="2001:db8:a::123", network="10.0.0.0/8") - self.assertEqual(result, False) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_in_one_network.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_in_one_network.py deleted file mode 100644 index 25276a9d..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_in_one_network.py +++ /dev/null @@ -1,47 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for netaddr test plugin: in_one_network -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible.errors import AnsibleError - -from ansible_collections.ansible.utils.plugins.test.in_one_network import _in_one_network - - -class TestInOneNetwork(unittest.TestCase): - def setUp(self): - pass - - def test_invalid_data(self): - """Check passing invalid argspec""" - - # invalid argument - with self.assertRaises(AnsibleError) as error: - _in_one_network( - ip="10.1.1.1", - networks={ - "name": "networks", - "value": ["10.0.0.0/8", "192.168.1.0/24"], - }, - ) - self.assertIn("unable to convert to list", str(error.exception)) - - def test_valid_data(self): - """Check passing valid data as per criteria""" - - result = _in_one_network(ip="10.1.1.1", networks=["10.0.0.0/8", "192.168.1.0/24"]) - self.assertEqual(result, True) - - result = _in_one_network(ip="8.8.8.8", networks=["10.0.0.0/8", "10.1.1.0/24"]) - self.assertEqual(result, False) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_ip.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_ip.py deleted file mode 100644 index 1c862900..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_ip.py +++ /dev/null @@ -1,48 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for netaddr test plugin: ip -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible_collections.ansible.utils.plugins.test.ip import _ip - - -class TestIp(unittest.TestCase): - def setUp(self): - pass - - def test_invalid_data(self): - """Check passing invalid argspec""" - - # missing argument - with self.assertRaises(TypeError) as error: - _ip() - self.assertIn("argument", str(error.exception)) - - def test_valid_data(self): - """Check passing valid data as per criteria""" - - result = _ip(ip="10.1.1.1") - self.assertEqual(result, True) - - result = _ip(ip="2001:db8:a::123") - self.assertEqual(result, True) - - result = _ip(ip="string") - self.assertEqual(result, False) - - result = _ip(ip="300.1.1.1") - self.assertEqual(result, False) - - result = _ip(ip="10.0.0.0/8") - self.assertEqual(result, True) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_ip_address.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_ip_address.py deleted file mode 100644 index b311597e..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_ip_address.py +++ /dev/null @@ -1,48 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for netaddr test plugin: ip_address -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible_collections.ansible.utils.plugins.test.ip_address import _ip_address - - -class TestIpAddress(unittest.TestCase): - def setUp(self): - pass - - def test_invalid_data(self): - """Check passing invalid argspec""" - - # missing argument - with self.assertRaises(TypeError) as error: - _ip_address() - self.assertIn("argument", str(error.exception)) - - def test_valid_data(self): - """Check passing valid data as per criteria""" - - result = _ip_address(ip="10.1.1.1") - self.assertEqual(result, True) - - result = _ip_address(ip="2001:db8:a::123") - self.assertEqual(result, True) - - result = _ip_address(ip="string") - self.assertEqual(result, False) - - result = _ip_address(ip="300.1.1.1") - self.assertEqual(result, False) - - result = _ip_address(ip="10.0.0.0/8") - self.assertEqual(result, False) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_ipv4.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_ipv4.py deleted file mode 100644 index 3e219289..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_ipv4.py +++ /dev/null @@ -1,45 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for netaddr test plugin: ipv4 -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible_collections.ansible.utils.plugins.test.ipv4 import _ipv4 - - -class TestIpV4(unittest.TestCase): - def setUp(self): - pass - - def test_invalid_data(self): - """Check passing invalid argspec""" - - # missing argument - with self.assertRaises(TypeError) as error: - _ipv4() - self.assertIn("argument", str(error.exception)) - - def test_valid_data(self): - """Check passing valid data as per criteria""" - - result = _ipv4(ip="10.1.1.1") - self.assertEqual(result, True) - - result = _ipv4(ip="10.0.0.0/8") - self.assertEqual(result, True) - - result = _ipv4(ip="2001:db8:a::123") - self.assertEqual(result, False) - - result = _ipv4(ip="string") - self.assertEqual(result, False) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_ipv4_address.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_ipv4_address.py deleted file mode 100644 index 536f3726..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_ipv4_address.py +++ /dev/null @@ -1,45 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for netaddr test plugin: ipv4_address -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible_collections.ansible.utils.plugins.test.ipv4_address import _ipv4_address - - -class TestIpV4Address(unittest.TestCase): - def setUp(self): - pass - - def test_invalid_data(self): - """Check passing invalid argspec""" - - # missing argument - with self.assertRaises(TypeError) as error: - _ipv4_address() - self.assertIn("argument", str(error.exception)) - - def test_valid_data(self): - """Check passing valid data as per criteria""" - - result = _ipv4_address(ip="10.1.1.1") - self.assertEqual(result, True) - - result = _ipv4_address(ip="10.0.0.0/8") - self.assertEqual(result, False) - - result = _ipv4_address(ip="2001:db8:a::123") - self.assertEqual(result, False) - - result = _ipv4_address(ip="string") - self.assertEqual(result, False) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_ipv4_hostmask.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_ipv4_hostmask.py deleted file mode 100644 index 69a659e6..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_ipv4_hostmask.py +++ /dev/null @@ -1,45 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for netaddr test plugin: ipv4_hostmask -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible_collections.ansible.utils.plugins.test.ipv4_hostmask import _ipv4_hostmask - - -class TestIpV4Hostmask(unittest.TestCase): - def setUp(self): - pass - - def test_invalid_data(self): - """Check passing invalid argspec""" - - # missing argument - with self.assertRaises(TypeError) as error: - _ipv4_hostmask() - self.assertIn("argument", str(error.exception)) - - def test_valid_data(self): - """Check passing valid data as per criteria""" - - result = _ipv4_hostmask(ip="0.1.255.255") - self.assertEqual(result, True) - - result = _ipv4_hostmask(ip="255.255.255.0") - self.assertEqual(result, False) - - result = _ipv4_hostmask(ip="10.1.1.1") - self.assertEqual(result, False) - - result = _ipv4_hostmask(ip="string") - self.assertEqual(result, False) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_ipv4_netmask.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_ipv4_netmask.py deleted file mode 100644 index 82e2951d..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_ipv4_netmask.py +++ /dev/null @@ -1,45 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for netaddr test plugin: ipv4_netmask -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible_collections.ansible.utils.plugins.test.ipv4_netmask import _ipv4_netmask - - -class TestIpV4Netmask(unittest.TestCase): - def setUp(self): - pass - - def test_invalid_data(self): - """Check passing invalid argspec""" - - # missing argument - with self.assertRaises(TypeError) as error: - _ipv4_netmask() - self.assertIn("argument", str(error.exception)) - - def test_valid_data(self): - """Check passing valid data as per criteria""" - - result = _ipv4_netmask(mask="255.255.255.0") - self.assertEqual(result, True) - - result = _ipv4_netmask(mask="0.1.255.255") - self.assertEqual(result, False) - - result = _ipv4_netmask(mask="10.1.1.1") - self.assertEqual(result, False) - - result = _ipv4_netmask(mask="string") - self.assertEqual(result, False) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_ipv6.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_ipv6.py deleted file mode 100644 index 3ab24b81..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_ipv6.py +++ /dev/null @@ -1,45 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for netaddr test plugin: ipv6 -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible_collections.ansible.utils.plugins.test.ipv6 import _ipv6 - - -class TestIpV6(unittest.TestCase): - def setUp(self): - pass - - def test_invalid_data(self): - """Check passing invalid argspec""" - - # missing argument - with self.assertRaises(TypeError) as error: - _ipv6() - self.assertIn("argument", str(error.exception)) - - def test_valid_data(self): - """Check passing valid data as per criteria""" - - result = _ipv6(ip="fe80::216:3eff:fee4:16f3") - self.assertEqual(result, True) - - result = _ipv6(ip="2001:db8:a::/64") - self.assertEqual(result, True) - - result = _ipv6(ip="10.1.1.1") - self.assertEqual(result, False) - - result = _ipv6(ip="string") - self.assertEqual(result, False) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_ipv6_address.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_ipv6_address.py deleted file mode 100644 index 52ecd469..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_ipv6_address.py +++ /dev/null @@ -1,45 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for netaddr test plugin: ipv6_address -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible_collections.ansible.utils.plugins.test.ipv6_address import _ipv6_address - - -class TestIpV6Address(unittest.TestCase): - def setUp(self): - pass - - def test_invalid_data(self): - """Check passing invalid argspec""" - - # missing argument - with self.assertRaises(TypeError) as error: - _ipv6_address() - self.assertIn("argument", str(error.exception)) - - def test_valid_data(self): - """Check passing valid data as per criteria""" - - result = _ipv6_address(ip="fe80::216:3eff:fee4:16f3") - self.assertEqual(result, True) - - result = _ipv6_address(ip="2001:db8:a::/64") - self.assertEqual(result, False) - - result = _ipv6_address(ip="10.1.1.1") - self.assertEqual(result, False) - - result = _ipv6_address(ip="string") - self.assertEqual(result, False) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_ipv6_ipv4_mapped.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_ipv6_ipv4_mapped.py deleted file mode 100644 index 22e63e27..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_ipv6_ipv4_mapped.py +++ /dev/null @@ -1,42 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for netaddr test plugin: ipv6_ipv4_mapped -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible_collections.ansible.utils.plugins.test.ipv6_ipv4_mapped import _ipv6_ipv4_mapped - - -class TestIpV6IpV4Mapped(unittest.TestCase): - def setUp(self): - pass - - def test_invalid_data(self): - """Check passing invalid argspec""" - - # missing argument - with self.assertRaises(TypeError) as error: - _ipv6_ipv4_mapped() - self.assertIn("argument", str(error.exception)) - - def test_valid_data(self): - """Check passing valid data as per criteria""" - - result = _ipv6_ipv4_mapped(ip="::FFFF:10.1.1.1") - self.assertEqual(result, True) - - result = _ipv6_ipv4_mapped(ip="::AAAA:10.1.1.1") - self.assertEqual(result, False) - - result = _ipv6_ipv4_mapped(ip="string") - self.assertEqual(result, False) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_ipv6_sixtofour.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_ipv6_sixtofour.py deleted file mode 100644 index afcbc7f1..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_ipv6_sixtofour.py +++ /dev/null @@ -1,42 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for netaddr test plugin: ipv6_sixtofour -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible_collections.ansible.utils.plugins.test.ipv6_sixtofour import _ipv6_sixtofour - - -class TestIpV6SixToFour(unittest.TestCase): - def setUp(self): - pass - - def test_invalid_data(self): - """Check passing invalid argspec""" - - # missing argument - with self.assertRaises(TypeError) as error: - _ipv6_sixtofour() - self.assertIn("argument", str(error.exception)) - - def test_valid_data(self): - """Check passing valid data as per criteria""" - - result = _ipv6_sixtofour(ip="2002:c0a8:6301:1::1") - self.assertEqual(result, True) - - result = _ipv6_sixtofour(ip="2001:c0a8:6301:1::1") - self.assertEqual(result, False) - - result = _ipv6_sixtofour(ip="string") - self.assertEqual(result, False) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_ipv6_teredo.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_ipv6_teredo.py deleted file mode 100644 index d0167254..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_ipv6_teredo.py +++ /dev/null @@ -1,42 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for netaddr test plugin: ipv6_teredo -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible_collections.ansible.utils.plugins.test.ipv6_teredo import _ipv6_teredo - - -class TestIpV6Teredo(unittest.TestCase): - def setUp(self): - pass - - def test_invalid_data(self): - """Check passing invalid argspec""" - - # missing argument - with self.assertRaises(TypeError) as error: - _ipv6_teredo() - self.assertIn("argument", str(error.exception)) - - def test_valid_data(self): - """Check passing valid data as per criteria""" - - result = _ipv6_teredo(ip="2001::c0a8:6301:1") - self.assertEqual(result, True) - - result = _ipv6_teredo(ip="2002::c0a8:6301:1") - self.assertEqual(result, False) - - result = _ipv6_teredo(ip="string") - self.assertEqual(result, False) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_loopback.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_loopback.py deleted file mode 100644 index 04a03b84..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_loopback.py +++ /dev/null @@ -1,42 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for netaddr test plugin: loopback -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible_collections.ansible.utils.plugins.test.loopback import _loopback - - -class TestLoopback(unittest.TestCase): - def setUp(self): - pass - - def test_invalid_data(self): - """Check passing invalid argspec""" - - # missing argument - with self.assertRaises(TypeError) as error: - _loopback() - self.assertIn("argument", str(error.exception)) - - def test_valid_data(self): - """Check passing valid data as per criteria""" - - result = _loopback(ip="127.10.10.10") - self.assertEqual(result, True) - - result = _loopback(ip="::1") - self.assertEqual(result, True) - - result = _loopback(ip="10.1.1.1") - self.assertEqual(result, False) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_mac.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_mac.py deleted file mode 100644 index de1236ae..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_mac.py +++ /dev/null @@ -1,48 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for netaddr test plugin: mac -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible_collections.ansible.utils.plugins.test.mac import _mac - - -class TestMac(unittest.TestCase): - def setUp(self): - pass - - def test_invalid_data(self): - """Check passing invalid argspec""" - - # missing argument - with self.assertRaises(TypeError) as error: - _mac() - self.assertIn("argument", str(error.exception)) - - def test_valid_data(self): - """Check passing valid data as per criteria""" - - result = _mac(mac="02:16:3e:e4:16:f3") - self.assertEqual(result, True) - - result = _mac(mac="02-16-3e-e4-16-f3") - self.assertEqual(result, True) - - result = _mac(mac="0216.3ee4.16f3") - self.assertEqual(result, True) - - result = _mac(mac="02163ee416f3") - self.assertEqual(result, True) - - result = _mac(mac="string") - self.assertEqual(result, False) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_multicast.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_multicast.py deleted file mode 100644 index 6fe7901b..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_multicast.py +++ /dev/null @@ -1,45 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for netaddr test plugin: multicast -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible_collections.ansible.utils.plugins.test.multicast import _multicast - - -class TestMulticast(unittest.TestCase): - def setUp(self): - pass - - def test_invalid_data(self): - """Check passing invalid argspec""" - - # missing argument - with self.assertRaises(TypeError) as error: - _multicast() - self.assertIn("argument", str(error.exception)) - - def test_valid_data(self): - """Check passing valid data as per criteria""" - - result = _multicast(ip="224.0.0.1") - self.assertEqual(result, True) - - result = _multicast(ip="ff02::1") - self.assertEqual(result, True) - - result = _multicast(ip="127.0.0.1") - self.assertEqual(result, False) - - result = _multicast(ip="string") - self.assertEqual(result, False) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_private.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_private.py deleted file mode 100644 index 3d8c6f32..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_private.py +++ /dev/null @@ -1,42 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for netaddr test plugin: private -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible_collections.ansible.utils.plugins.test.private import _private - - -class TestPrivate(unittest.TestCase): - def setUp(self): - pass - - def test_invalid_data(self): - """Check passing invalid argspec""" - - # missing argument - with self.assertRaises(TypeError) as error: - _private() - self.assertIn("argument", str(error.exception)) - - def test_valid_data(self): - """Check passing valid data as per criteria""" - - result = _private(ip="10.1.1.1") - self.assertEqual(result, True) - - result = _private(ip="8.8.8.8") - self.assertEqual(result, False) - - result = _private(ip="string") - self.assertEqual(result, False) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_public.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_public.py deleted file mode 100644 index b3913246..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_public.py +++ /dev/null @@ -1,42 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for netaddr test plugin: public -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible_collections.ansible.utils.plugins.test.public import _public - - -class TestPublic(unittest.TestCase): - def setUp(self): - pass - - def test_invalid_data(self): - """Check passing invalid argspec""" - - # missing argument - with self.assertRaises(TypeError) as error: - _public() - self.assertIn("argument", str(error.exception)) - - def test_valid_data(self): - """Check passing valid data as per criteria""" - - result = _public(ip="8.8.8.8") - self.assertEqual(result, True) - - result = _public(ip="10.1.1.1") - self.assertEqual(result, False) - - result = _public(ip="string") - self.assertEqual(result, False) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_reserved.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_reserved.py deleted file mode 100644 index 60be18f6..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_reserved.py +++ /dev/null @@ -1,42 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for netaddr test plugin: reserved -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible_collections.ansible.utils.plugins.test.reserved import _reserved - - -class TestReserved(unittest.TestCase): - def setUp(self): - pass - - def test_invalid_data(self): - """Check passing invalid argspec""" - - # missing argument - with self.assertRaises(TypeError) as error: - _reserved() - self.assertIn("argument", str(error.exception)) - - def test_valid_data(self): - """Check passing valid data as per criteria""" - - result = _reserved(ip="253.0.0.1") - self.assertEqual(result, True) - - result = _reserved(ip="128.146.1.7") - self.assertEqual(result, False) - - result = _reserved(ip="string") - self.assertEqual(result, False) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_resolvable.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_resolvable.py deleted file mode 100644 index 900a86a0..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_resolvable.py +++ /dev/null @@ -1,48 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for netaddr test plugin: resolvable -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible_collections.ansible.utils.plugins.test.resolvable import _resolvable - - -class TestResolvable(unittest.TestCase): - def setUp(self): - pass - - def test_invalid_data(self): - """Check passing invalid argspec""" - - # missing argument - with self.assertRaises(TypeError) as error: - _resolvable() - self.assertIn("argument", str(error.exception)) - - def test_valid_data(self): - """Check passing valid data as per criteria""" - - result = _resolvable(host="www.google.com") - self.assertEqual(result, True) - - result = _resolvable(host="127.0.0.1") - self.assertEqual(result, True) - - result = _resolvable(host="::1") - self.assertEqual(result, True) - - result = _resolvable(host="foo.google.com") - self.assertEqual(result, False) - - result = _resolvable(host="invalidhost") - self.assertEqual(result, False) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_subnet_of.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_subnet_of.py deleted file mode 100644 index de35ec65..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_subnet_of.py +++ /dev/null @@ -1,50 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for netaddr test plugin: subnet_of -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible_collections.ansible.utils.plugins.test.subnet_of import _subnet_of - - -class TestSubnetOf(unittest.TestCase): - def setUp(self): - pass - - def test_invalid_data(self): - """Check passing invalid argspec""" - - # missing argument - with self.assertRaises(TypeError) as error: - _subnet_of() - self.assertIn("argument", str(error.exception)) - - with self.assertRaises(TypeError) as error: - _subnet_of(network_a="10.1.1.0/24") - self.assertIn("argument", str(error.exception)) - - with self.assertRaises(TypeError) as error: - _subnet_of(network_b="10.0.0.0/8") - self.assertIn("argument", str(error.exception)) - - def test_valid_data(self): - """Check passing valid data as per criteria""" - - result = _subnet_of(network_a="10.1.1.0/24", network_b="10.0.0.0/8") - self.assertEqual(result, True) - - result = _subnet_of(network_a="10.0.0.0/8", network_b="10.1.1.0/24") - self.assertEqual(result, False) - - result = _subnet_of(network_a="192.168.1.0/24", network_b="10.0.0.0/8") - self.assertEqual(result, False) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_supernet_of.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_supernet_of.py deleted file mode 100644 index e375b3ab..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_supernet_of.py +++ /dev/null @@ -1,50 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for netaddr test plugin: supernet_of -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible_collections.ansible.utils.plugins.test.supernet_of import _supernet_of - - -class TestSupernetOf(unittest.TestCase): - def setUp(self): - pass - - def test_invalid_data(self): - """Check passing invalid argspec""" - - # missing argument - with self.assertRaises(TypeError) as error: - _supernet_of() - self.assertIn("argument", str(error.exception)) - - with self.assertRaises(TypeError) as error: - _supernet_of(network_a="10.0.0.0/8") - self.assertIn("argument", str(error.exception)) - - with self.assertRaises(TypeError) as error: - _supernet_of(network_b="10.1.1.0/24") - self.assertIn("argument", str(error.exception)) - - def test_valid_data(self): - """Check passing valid data as per criteria""" - - result = _supernet_of(network_a="10.0.0.0/8", network_b="10.1.1.0/24") - self.assertEqual(result, True) - - result = _supernet_of(network_a="10.1.1.0/24", network_b="10.0.0.0/8") - self.assertEqual(result, False) - - result = _supernet_of(network_a="10.0.0.0/8", network_b="192.168.1.0/24") - self.assertEqual(result, False) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_unspecified.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_unspecified.py deleted file mode 100644 index 8151e896..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_unspecified.py +++ /dev/null @@ -1,48 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2021 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -""" -Unit test file for netaddr test plugin: unspecified -""" - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible_collections.ansible.utils.plugins.test.unspecified import _unspecified - - -class TestUnspecified(unittest.TestCase): - def setUp(self): - pass - - def test_invalid_data(self): - """Check passing invalid argspec""" - - # missing argument - with self.assertRaises(TypeError) as error: - _unspecified() - self.assertIn("argument", str(error.exception)) - - def test_valid_data(self): - """Check passing valid data as per criteria""" - - result = _unspecified(ip="0.0.0.0") - self.assertEqual(result, True) - - result = _unspecified(ip="0:0:0:0:0:0:0:0") - self.assertEqual(result, True) - - result = _unspecified(ip="::") - self.assertEqual(result, True) - - result = _unspecified(ip="127.0.0.1") - self.assertEqual(result, False) - - result = _unspecified(ip="::1") - self.assertEqual(result, False) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_validate.py b/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_validate.py deleted file mode 100644 index f70125ed..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/plugins/test/test_validate.py +++ /dev/null @@ -1,177 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2020 Red Hat -# GNU General Public License v3.0+ -# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -import unittest - -from ansible.errors import AnsibleError - -from ansible_collections.ansible.utils.plugins.test.validate import validate - - -DATA = { - "GigabitEthernet0/0/0/0": { - "auto_negotiate": False, - "counters": { - "in_crc_errors": 0, - "in_errors": 0, - "rate": {"in_rate": 0, "out_rate": 0}, - }, - "description": "configured using Ansible", - "duplex_mode": "full", - "enabled": True, - "line_protocol": "up", - "mtu": 1514, - "oper_status": "down", - "type": "GigabitEthernet", - }, - "GigabitEthernet0/0/0/1": { - "auto_negotiate": False, - "counters": { - "in_crc_errors": 10, - "in_errors": 0, - "rate": {"in_rate": 0, "out_rate": 0}, - }, - "description": "# interface is configures with Ansible", - "duplex_mode": "full", - "enabled": False, - "line_protocol": "up", - "mtu": 1514, - "oper_status": "up", - "type": "GigabitEthernet", - }, -} - -CRITERIA_CRC_ERROR_CHECK = { - "type": "object", - "patternProperties": { - "^.*": { - "type": "object", - "properties": { - "counters": {"properties": {"in_crc_errors": {"type": "number", "maximum": 0}}}, - }, - }, - }, -} - -CRITERIA_ENABLED_CHECK = { - "type": "object", - "patternProperties": {"^.*": {"type": "object", "properties": {"enabled": {"enum": [True]}}}}, -} - -CRITERIA_OPER_STATUS_UP_CHECK = { - "type": "object", - "patternProperties": { - "^.*": { - "type": "object", - "properties": {"oper_status": {"type": "string", "pattern": "up"}}, - }, - }, -} - -CRITERIA_IN_RATE_CHECK = { - "type": "object", - "patternProperties": { - "^.*": { - "type": "object", - "properties": { - "counters": { - "properties": { - "rate": {"properties": {"in_rate": {"type": "number", "maximum": 0}}}, - }, - }, - }, - }, - }, -} - - -class TestValidate(unittest.TestCase): - def setUp(self): - pass - - def test_invalid_argspec(self): - """Check passing invalid argspec""" - - # missing required arguments - args = [DATA] - kwargs = {} - with self.assertRaises(AnsibleError) as error: - validate(*args, **kwargs) - msg = "missing required arguments: criteria" - self.assertIn(msg, str(error.exception)) - - kwargs = { - "criteria": CRITERIA_IN_RATE_CHECK, - "engine": "ansible.utils.sample", - } - with self.assertRaises(AnsibleError) as error: - validate(*args, **kwargs) - self.assertIn( - "For engine 'ansible.utils.sample' error loading", - str(error.exception), - ) - - args = ["invalid data"] - kwargs = { - "criteria": [CRITERIA_IN_RATE_CHECK], - "engine": "ansible.utils.jsonschema", - } - with self.assertRaises(AnsibleError) as error: - validate(*args, **kwargs) - self.assertIn("'data' option value is invalid", str(error.exception)) - - args = [DATA] - kwargs = { - "criteria": "invalid criteria", - "engine": "ansible.utils.jsonschema", - } - with self.assertRaises(AnsibleError) as error: - validate(*args, **kwargs) - self.assertIn("'criteria' option value is invalid", str(error.exception)) - - def test_invalid_validate_plugin_config_options(self): - """Check passing invalid validate plugin options""" - args = [DATA] - kwargs = { - "criteria": "invalid criteria", - "engine": "ansible.utils.jsonschema", - "draft": "draft0", - } - - with self.assertRaises(AnsibleError) as error: - validate(*args, **kwargs) - self.assertIn( - "value of draft must be one of: draft3, draft4, draft6, draft7, 2019-09, 2020-12, got: draft0", - str(error.exception), - ) - - def test_invalid_data(self): - """Check passing invalid data as per criteria""" - args = [DATA] - kwargs = { - "criteria": [ - CRITERIA_ENABLED_CHECK, - CRITERIA_OPER_STATUS_UP_CHECK, - CRITERIA_CRC_ERROR_CHECK, - ], - "engine": "ansible.utils.jsonschema", - } - result = validate(*args, **kwargs) - self.assertEqual(result, False) - - def test_valid_data(self): - """Check passing valid data as per criteria""" - args = [DATA] - kwargs = { - "criteria": CRITERIA_IN_RATE_CHECK, - "engine": "ansible.utils.jsonschema", - } - result = validate(*args, **kwargs) - self.assertEqual(result, True) diff --git a/ansible/collections/ansible_collections/ansible/utils/tests/unit/requirements.txt b/ansible/collections/ansible_collections/ansible/utils/tests/unit/requirements.txt deleted file mode 100644 index 90689f51..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tests/unit/requirements.txt +++ /dev/null @@ -1,5 +0,0 @@ -jsonschema -netaddr -textfsm -ttp -unittest2 ; python_version < '2.7' diff --git a/ansible/collections/ansible_collections/ansible/utils/tox-ansible.ini b/ansible/collections/ansible_collections/ansible/utils/tox-ansible.ini deleted file mode 100644 index fe560ad9..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tox-ansible.ini +++ /dev/null @@ -1,9 +0,0 @@ -[ansible] -skip = - py3.7 - py3.8 - 2.9 - 2.10 - 2.11 - 2.12 - 2.13 diff --git a/ansible/collections/ansible_collections/ansible/utils/tox.ini b/ansible/collections/ansible_collections/ansible/utils/tox.ini deleted file mode 100644 index 24c6fb04..00000000 --- a/ansible/collections/ansible_collections/ansible/utils/tox.ini +++ /dev/null @@ -1,22 +0,0 @@ -[tox] -minversion = 1.4.2 -envlist = linters -skipsdist = True - -[testenv] -deps = -r{toxinidir}/requirements.txt - -r{toxinidir}/test-requirements.txt - -[testenv:black] -install_command = pip install {opts} {packages} -commands = - black -v {toxinidir} - -[testenv:linters] -install_command = pip install {opts} {packages} -commands = - black -v --check {toxinidir} - flake8 {posargs} - -[testenv:venv] -commands = {posargs} diff --git a/ansible/collections/ansible_collections/community.general-8.3.0.info/GALAXY.yml b/ansible/collections/ansible_collections/community.general-8.3.0.info/GALAXY.yml deleted file mode 100644 index d25512fe..00000000 --- a/ansible/collections/ansible_collections/community.general-8.3.0.info/GALAXY.yml +++ /dev/null @@ -1,8 +0,0 @@ -download_url: https://galaxy.ansible.com/api/v3/plugin/ansible/content/published/collections/artifacts/community-general-8.3.0.tar.gz -format_version: 1.0.0 -name: general -namespace: community -server: https://galaxy.ansible.com/api/ -signatures: [] -version: 8.3.0 -version_url: /api/v3/plugin/ansible/content/published/collections/index/community/general/versions/8.3.0/ diff --git a/ansible/collections/ansible_collections/community/general/.azure-pipelines/README.md b/ansible/collections/ansible_collections/community/general/.azure-pipelines/README.md deleted file mode 100644 index 9e8ad741..00000000 --- a/ansible/collections/ansible_collections/community/general/.azure-pipelines/README.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## Azure Pipelines Configuration - -Please see the [Documentation](https://github.com/ansible/community/wiki/Testing:-Azure-Pipelines) for more information. diff --git a/ansible/collections/ansible_collections/community/general/.azure-pipelines/azure-pipelines.yml b/ansible/collections/ansible_collections/community/general/.azure-pipelines/azure-pipelines.yml deleted file mode 100644 index 8cca179a..00000000 --- a/ansible/collections/ansible_collections/community/general/.azure-pipelines/azure-pipelines.yml +++ /dev/null @@ -1,421 +0,0 @@ ---- -# Copyright (c) Ansible Project -# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) -# SPDX-License-Identifier: GPL-3.0-or-later - -trigger: - batch: true - branches: - include: - - main - - stable-* - -pr: - autoCancel: true - branches: - include: - - main - - stable-* - -schedules: - - cron: 0 8 * * * - displayName: Nightly (main) - always: true - branches: - include: - - main - - cron: 0 10 * * * - displayName: Nightly (active stable branches) - always: true - branches: - include: - - stable-8 - - stable-7 - - cron: 0 11 * * 0 - displayName: Weekly (old stable branches) - always: true - branches: - include: - - stable-6 - -variables: - - name: checkoutPath - value: ansible_collections/community/general - - name: coverageBranches - value: main - - name: pipelinesCoverage - value: coverage - - name: entryPoint - value: tests/utils/shippable/shippable.sh - - name: fetchDepth - value: 0 - -resources: - containers: - - container: default - image: quay.io/ansible/azure-pipelines-test-container:4.0.1 - -pool: Standard - -stages: -### Sanity - - stage: Sanity_devel - displayName: Sanity devel - dependsOn: [] - jobs: - - template: templates/matrix.yml - parameters: - nameFormat: Test {0} - testFormat: devel/sanity/{0} - targets: - - test: 1 - - test: 2 - - test: 3 - - test: 4 - - test: extra - - stage: Sanity_2_16 - displayName: Sanity 2.16 - dependsOn: [] - jobs: - - template: templates/matrix.yml - parameters: - nameFormat: Test {0} - testFormat: 2.16/sanity/{0} - targets: - - test: 1 - - test: 2 - - test: 3 - - test: 4 - - stage: Sanity_2_15 - displayName: Sanity 2.15 - dependsOn: [] - jobs: - - template: templates/matrix.yml - parameters: - nameFormat: Test {0} - testFormat: 2.15/sanity/{0} - targets: - - test: 1 - - test: 2 - - test: 3 - - test: 4 - - stage: Sanity_2_14 - displayName: Sanity 2.14 - dependsOn: [] - jobs: - - template: templates/matrix.yml - parameters: - nameFormat: Test {0} - testFormat: 2.14/sanity/{0} - targets: - - test: 1 - - test: 2 - - test: 3 - - test: 4 -### Units - - stage: Units_devel - displayName: Units devel - dependsOn: [] - jobs: - - template: templates/matrix.yml - parameters: - nameFormat: Python {0} - testFormat: devel/units/{0}/1 - targets: - - test: 3.7 - - test: 3.8 - - test: 3.9 - - test: '3.10' - - test: '3.11' - - test: '3.12' - - stage: Units_2_16 - displayName: Units 2.16 - dependsOn: [] - jobs: - - template: templates/matrix.yml - parameters: - nameFormat: Python {0} - testFormat: 2.16/units/{0}/1 - targets: - - test: 2.7 - - test: 3.6 - - test: "3.11" - - stage: Units_2_15 - displayName: Units 2.15 - dependsOn: [] - jobs: - - template: templates/matrix.yml - parameters: - nameFormat: Python {0} - testFormat: 2.15/units/{0}/1 - targets: - - test: 3.5 - - test: "3.10" - - stage: Units_2_14 - displayName: Units 2.14 - dependsOn: [] - jobs: - - template: templates/matrix.yml - parameters: - nameFormat: Python {0} - testFormat: 2.14/units/{0}/1 - targets: - - test: 3.9 - -## Remote - - stage: Remote_devel_extra_vms - displayName: Remote devel extra VMs - dependsOn: [] - jobs: - - template: templates/matrix.yml - parameters: - testFormat: devel/{0} - targets: - - name: Alpine 3.18 - test: alpine/3.18 - # - name: Fedora 39 - # test: fedora/39 - - name: Ubuntu 22.04 - test: ubuntu/22.04 - groups: - - vm - - stage: Remote_devel - displayName: Remote devel - dependsOn: [] - jobs: - - template: templates/matrix.yml - parameters: - testFormat: devel/{0} - targets: - - name: macOS 13.2 - test: macos/13.2 - - name: RHEL 9.3 - test: rhel/9.3 - - name: FreeBSD 13.2 - test: freebsd/13.2 - groups: - - 1 - - 2 - - 3 - - stage: Remote_2_16 - displayName: Remote 2.16 - dependsOn: [] - jobs: - - template: templates/matrix.yml - parameters: - testFormat: 2.16/{0} - targets: - #- name: macOS 13.2 - # test: macos/13.2 - - name: RHEL 9.2 - test: rhel/9.2 - - name: RHEL 8.8 - test: rhel/8.8 - #- name: FreeBSD 13.2 - # test: freebsd/13.2 - groups: - - 1 - - 2 - - 3 - - stage: Remote_2_15 - displayName: Remote 2.15 - dependsOn: [] - jobs: - - template: templates/matrix.yml - parameters: - testFormat: 2.15/{0} - targets: - - name: RHEL 9.1 - test: rhel/9.1 - - name: RHEL 8.7 - test: rhel/8.7 - - name: RHEL 7.9 - test: rhel/7.9 - # - name: FreeBSD 13.1 - # test: freebsd/13.1 - # - name: FreeBSD 12.4 - # test: freebsd/12.4 - groups: - - 1 - - 2 - - 3 - - stage: Remote_2_14 - displayName: Remote 2.14 - dependsOn: [] - jobs: - - template: templates/matrix.yml - parameters: - testFormat: 2.14/{0} - targets: - #- name: macOS 12.0 - # test: macos/12.0 - - name: RHEL 9.0 - test: rhel/9.0 - #- name: FreeBSD 12.4 - # test: freebsd/12.4 - groups: - - 1 - - 2 - - 3 - -### Docker - - stage: Docker_devel - displayName: Docker devel - dependsOn: [] - jobs: - - template: templates/matrix.yml - parameters: - testFormat: devel/linux/{0} - targets: - - name: Fedora 39 - test: fedora39 - - name: Ubuntu 20.04 - test: ubuntu2004 - - name: Ubuntu 22.04 - test: ubuntu2204 - - name: Alpine 3 - test: alpine3 - groups: - - 1 - - 2 - - 3 - - stage: Docker_2_16 - displayName: Docker 2.16 - dependsOn: [] - jobs: - - template: templates/matrix.yml - parameters: - testFormat: 2.16/linux/{0} - targets: - - name: Fedora 38 - test: fedora38 - - name: openSUSE 15 - test: opensuse15 - groups: - - 1 - - 2 - - 3 - - stage: Docker_2_15 - displayName: Docker 2.15 - dependsOn: [] - jobs: - - template: templates/matrix.yml - parameters: - testFormat: 2.15/linux/{0} - targets: - - name: Fedora 37 - test: fedora37 - - name: CentOS 7 - test: centos7 - groups: - - 1 - - 2 - - 3 - - stage: Docker_2_14 - displayName: Docker 2.14 - dependsOn: [] - jobs: - - template: templates/matrix.yml - parameters: - testFormat: 2.14/linux/{0} - targets: - - name: Alpine 3 - test: alpine3 - groups: - - 1 - - 2 - - 3 - -### Community Docker - - stage: Docker_community_devel - displayName: Docker (community images) devel - dependsOn: [] - jobs: - - template: templates/matrix.yml - parameters: - testFormat: devel/linux-community/{0} - targets: - - name: Debian Bullseye - test: debian-bullseye/3.9 - - name: Debian Bookworm - test: debian-bookworm/3.11 - - name: ArchLinux - test: archlinux/3.11 - groups: - - 1 - - 2 - - 3 - -### Generic - - stage: Generic_devel - displayName: Generic devel - dependsOn: [] - jobs: - - template: templates/matrix.yml - parameters: - nameFormat: Python {0} - testFormat: devel/generic/{0}/1 - targets: - - test: '3.7' - - test: '3.12' - - stage: Generic_2_16 - displayName: Generic 2.16 - dependsOn: [] - jobs: - - template: templates/matrix.yml - parameters: - nameFormat: Python {0} - testFormat: 2.16/generic/{0}/1 - targets: - - test: '2.7' - - test: '3.6' - - test: '3.11' - - stage: Generic_2_15 - displayName: Generic 2.15 - dependsOn: [] - jobs: - - template: templates/matrix.yml - parameters: - nameFormat: Python {0} - testFormat: 2.15/generic/{0}/1 - targets: - - test: '3.9' - - stage: Generic_2_14 - displayName: Generic 2.14 - dependsOn: [] - jobs: - - template: templates/matrix.yml - parameters: - nameFormat: Python {0} - testFormat: 2.14/generic/{0}/1 - targets: - - test: '3.10' - - - stage: Summary - condition: succeededOrFailed() - dependsOn: - - Sanity_devel - - Sanity_2_16 - - Sanity_2_15 - - Sanity_2_14 - - Units_devel - - Units_2_16 - - Units_2_15 - - Units_2_14 - - Remote_devel_extra_vms - - Remote_devel - - Remote_2_16 - - Remote_2_15 - - Remote_2_14 - - Docker_devel - - Docker_2_16 - - Docker_2_15 - - Docker_2_14 - - Docker_community_devel -# Right now all generic tests are disabled. Uncomment when at least one of them is re-enabled. -# - Generic_devel -# - Generic_2_16 -# - Generic_2_15 -# - Generic_2_14 - jobs: - - template: templates/coverage.yml diff --git a/ansible/collections/ansible_collections/community/general/.azure-pipelines/scripts/aggregate-coverage.sh b/ansible/collections/ansible_collections/community/general/.azure-pipelines/scripts/aggregate-coverage.sh deleted file mode 100755 index ca2b19de..00000000 --- a/ansible/collections/ansible_collections/community/general/.azure-pipelines/scripts/aggregate-coverage.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/env bash -# Copyright (c) Ansible Project -# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) -# SPDX-License-Identifier: GPL-3.0-or-later - -# Aggregate code coverage results for later processing. - -set -o pipefail -eu - -agent_temp_directory="$1" - -PATH="${PWD}/bin:${PATH}" - -mkdir "${agent_temp_directory}/coverage/" - -options=(--venv --venv-system-site-packages --color -v) - -ansible-test coverage combine --group-by command --export "${agent_temp_directory}/coverage/" "${options[@]}" - -if ansible-test coverage analyze targets generate --help >/dev/null 2>&1; then - # Only analyze coverage if the installed version of ansible-test supports it. - # Doing so allows this script to work unmodified for multiple Ansible versions. - ansible-test coverage analyze targets generate "${agent_temp_directory}/coverage/coverage-analyze-targets.json" "${options[@]}" -fi diff --git a/ansible/collections/ansible_collections/community/general/.azure-pipelines/scripts/combine-coverage.py b/ansible/collections/ansible_collections/community/general/.azure-pipelines/scripts/combine-coverage.py deleted file mode 100755 index 3b2fd993..00000000 --- a/ansible/collections/ansible_collections/community/general/.azure-pipelines/scripts/combine-coverage.py +++ /dev/null @@ -1,64 +0,0 @@ -#!/usr/bin/env python -# Copyright (c) Ansible Project -# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) -# SPDX-License-Identifier: GPL-3.0-or-later - -""" -Combine coverage data from multiple jobs, keeping the data only from the most recent attempt from each job. -Coverage artifacts must be named using the format: "Coverage $(System.JobAttempt) {StableUniqueNameForEachJob}" -The recommended coverage artifact name format is: Coverage $(System.JobAttempt) $(System.StageDisplayName) $(System.JobDisplayName) -Keep in mind that Azure Pipelines does not enforce unique job display names (only names). -It is up to pipeline authors to avoid name collisions when deviating from the recommended format. -""" - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -import os -import re -import shutil -import sys - - -def main(): - """Main program entry point.""" - source_directory = sys.argv[1] - - if '/ansible_collections/' in os.getcwd(): - output_path = "tests/output" - else: - output_path = "test/results" - - destination_directory = os.path.join(output_path, 'coverage') - - if not os.path.exists(destination_directory): - os.makedirs(destination_directory) - - jobs = {} - count = 0 - - for name in os.listdir(source_directory): - match = re.search('^Coverage (?P[0-9]+) (?P