annet 3.4.2__tar.gz → 3.5.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of annet might be problematic. Click here for more details.
- {annet-3.4.2/annet.egg-info → annet-3.5.0}/PKG-INFO +1 -1
- {annet-3.4.2 → annet-3.5.0}/annet/adapters/netbox/common/models.py +1 -1
- {annet-3.4.2 → annet-3.5.0}/annet/annlib/command.py +2 -1
- {annet-3.4.2 → annet-3.5.0}/annet/deploy_ui.py +2 -1
- {annet-3.4.2 → annet-3.5.0}/annet/executor.py +1 -1
- {annet-3.4.2 → annet-3.5.0}/annet/implicit.py +2 -2
- {annet-3.4.2 → annet-3.5.0}/annet/mesh/executor.py +3 -3
- {annet-3.4.2 → annet-3.5.0}/annet/mesh/models_converter.py +11 -1
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/__init__.py +1 -1
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/b4com/iface.py +5 -1
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/texts/b4com.order +1 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/texts/b4com.rul +2 -1
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/texts/huawei.rul +5 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/texts/juniper.rul +5 -0
- {annet-3.4.2 → annet-3.5.0/annet.egg-info}/PKG-INFO +1 -1
- {annet-3.4.2 → annet-3.5.0}/AUTHORS +0 -0
- {annet-3.4.2 → annet-3.5.0}/LICENSE +0 -0
- {annet-3.4.2 → annet-3.5.0}/MANIFEST.in +0 -0
- {annet-3.4.2 → annet-3.5.0}/README.md +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/__init__.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/adapters/__init__.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/adapters/fetchers/__init__.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/adapters/fetchers/stub/__init__.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/adapters/fetchers/stub/fetcher.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/adapters/file/__init__.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/adapters/file/provider.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/adapters/netbox/__init__.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/adapters/netbox/common/__init__.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/adapters/netbox/common/adapter.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/adapters/netbox/common/client.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/adapters/netbox/common/manufacturer.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/adapters/netbox/common/query.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/adapters/netbox/common/status_client.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/adapters/netbox/common/storage_base.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/adapters/netbox/common/storage_opts.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/adapters/netbox/provider.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/adapters/netbox/v24/__init__.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/adapters/netbox/v24/models.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/adapters/netbox/v24/storage.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/adapters/netbox/v37/__init__.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/adapters/netbox/v37/models.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/adapters/netbox/v37/storage.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/adapters/netbox/v41/__init__.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/adapters/netbox/v41/models.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/adapters/netbox/v41/storage.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/adapters/netbox/v42/__init__.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/adapters/netbox/v42/models.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/adapters/netbox/v42/storage.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/annet.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/annlib/__init__.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/annlib/diff.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/annlib/errors.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/annlib/filter_acl.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/annlib/jsontools.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/annlib/lib.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/annlib/netdev/__init__.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/annlib/netdev/db.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/annlib/netdev/devdb/__init__.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/annlib/netdev/devdb/data/devdb.json +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/annlib/netdev/views/__init__.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/annlib/netdev/views/dump.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/annlib/netdev/views/hardware.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/annlib/output.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/annlib/patching.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/annlib/rbparser/__init__.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/annlib/rbparser/acl.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/annlib/rbparser/deploying.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/annlib/rbparser/ordering.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/annlib/rbparser/platform.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/annlib/rbparser/syntax.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/annlib/rulebook/__init__.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/annlib/rulebook/common.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/annlib/types.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/api/__init__.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/argparse.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/bgp_models.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/cli.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/cli_args.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/configs/context.yml +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/configs/logging.yaml +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/connectors.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/deploy.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/diff.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/filtering.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/gen.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/generators/__init__.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/generators/base.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/generators/common/__init__.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/generators/common/initial.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/generators/entire.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/generators/exceptions.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/generators/jsonfragment.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/generators/partial.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/generators/perf.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/generators/ref.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/generators/result.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/hardware.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/lib.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/mesh/__init__.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/mesh/basemodel.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/mesh/device_models.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/mesh/match_args.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/mesh/peer_models.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/mesh/port_processor.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/mesh/registry.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/output.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/parallel.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/patching.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/reference.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rpl/__init__.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rpl/action.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rpl/condition.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rpl/match_builder.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rpl/policy.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rpl/result.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rpl/routemap.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rpl/statement_builder.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rpl_generators/__init__.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rpl_generators/aspath.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rpl_generators/community.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rpl_generators/cumulus_frr.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rpl_generators/entities.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rpl_generators/execute.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rpl_generators/policy.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rpl_generators/prefix_lists.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rpl_generators/rd.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/arista/__init__.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/arista/aaa.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/arista/iface.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/aruba/__init__.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/aruba/ap_env.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/aruba/misc.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/b4com/__init__.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/b4com/file.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/cisco/__init__.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/cisco/iface.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/cisco/misc.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/cisco/vlandb.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/common.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/deploying.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/huawei/__init__.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/huawei/aaa.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/huawei/bgp.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/huawei/iface.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/huawei/misc.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/huawei/vlandb.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/juniper/__init__.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/nexus/__init__.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/nexus/iface.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/patching.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/routeros/__init__.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/routeros/file.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/texts/arista.deploy +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/texts/arista.order +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/texts/arista.rul +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/texts/aruba.deploy +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/texts/aruba.order +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/texts/aruba.rul +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/texts/b4com.deploy +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/texts/cisco.deploy +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/texts/cisco.order +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/texts/cisco.rul +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/texts/huawei.deploy +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/texts/huawei.order +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/texts/iosxr.deploy +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/texts/iosxr.order +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/texts/iosxr.rul +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/texts/juniper.order +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/texts/nexus.deploy +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/texts/nexus.order +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/texts/nexus.rul +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/texts/nokia.rul +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/texts/optixtrans.deploy +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/texts/optixtrans.order +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/texts/optixtrans.rul +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/texts/pc.deploy +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/texts/pc.order +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/texts/pc.rul +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/texts/ribbon.deploy +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/texts/ribbon.rul +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/texts/routeros.order +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/rulebook/texts/routeros.rul +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/storage.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/text_term_format.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/tracing.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/types.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/vendors/__init__.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/vendors/base.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/vendors/library/__init__.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/vendors/library/arista.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/vendors/library/aruba.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/vendors/library/b4com.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/vendors/library/cisco.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/vendors/library/h3c.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/vendors/library/huawei.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/vendors/library/iosxr.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/vendors/library/juniper.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/vendors/library/nexus.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/vendors/library/nokia.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/vendors/library/optixtrans.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/vendors/library/pc.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/vendors/library/ribbon.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/vendors/library/routeros.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/vendors/registry.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet/vendors/tabparser.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet.egg-info/SOURCES.txt +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet.egg-info/dependency_links.txt +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet.egg-info/entry_points.txt +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet.egg-info/requires.txt +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet.egg-info/top_level.txt +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet_generators/__init__.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet_generators/example/__init__.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet_generators/example/hostname.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet_generators/example/lldp.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet_generators/mesh_example/__init__.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet_generators/mesh_example/bgp.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet_generators/mesh_example/mesh_logic.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet_generators/rpl_example/__init__.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet_generators/rpl_example/generator.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet_generators/rpl_example/items.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet_generators/rpl_example/mesh.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/annet_generators/rpl_example/route_policy.py +0 -0
- {annet-3.4.2 → annet-3.5.0}/requirements.txt +0 -0
- {annet-3.4.2 → annet-3.5.0}/setup.cfg +0 -0
- {annet-3.4.2 → annet-3.5.0}/setup.py +0 -0
|
@@ -19,7 +19,8 @@ class Command:
|
|
|
19
19
|
cmd: str
|
|
20
20
|
questions: Optional[List[Question]] = None
|
|
21
21
|
exc_handler: Optional[List[Question]] = None
|
|
22
|
-
timeout: Optional[int] = None
|
|
22
|
+
timeout: Optional[int] = None # total timeout
|
|
23
|
+
read_timeout: Optional[int] = None # timeout between consecutive reads
|
|
23
24
|
suppress_nonzero: bool = False
|
|
24
25
|
suppress_eof: bool = False
|
|
25
26
|
|
|
@@ -5,6 +5,7 @@ import os
|
|
|
5
5
|
import sys
|
|
6
6
|
import math
|
|
7
7
|
import asyncio
|
|
8
|
+
import platform
|
|
8
9
|
import textwrap
|
|
9
10
|
import time
|
|
10
11
|
import traceback
|
|
@@ -23,7 +24,7 @@ try:
|
|
|
23
24
|
except ImportError:
|
|
24
25
|
curses = None
|
|
25
26
|
|
|
26
|
-
uname =
|
|
27
|
+
uname = platform.uname()[0]
|
|
27
28
|
NCURSES_SIZE_T = 2 ** 15 - 1
|
|
28
29
|
MIN_CONTENT_HEIGHT = 20
|
|
29
30
|
|
|
@@ -133,9 +133,9 @@ def _implicit_tree(device):
|
|
|
133
133
|
no shutdown
|
|
134
134
|
"""
|
|
135
135
|
elif device.hw.Cisco:
|
|
136
|
-
# C2900/C3500/C3600 does not support the MTU on a per-interface basis
|
|
136
|
+
# C2900/C3500/C3600/AIR does not support the MTU on a per-interface basis
|
|
137
137
|
if device.hw.Cisco.Catalyst.C2900 or device.hw.Cisco.Catalyst.C3500 \
|
|
138
|
-
or device.hw.Cisco.Catalyst.C3600:
|
|
138
|
+
or device.hw.Cisco.Catalyst.C3600 or device.hw.Cisco.AIR:
|
|
139
139
|
text += r"""
|
|
140
140
|
!interface */\S*Ethernet\S+/
|
|
141
141
|
no shutdown
|
|
@@ -370,7 +370,7 @@ class MeshExecutor:
|
|
|
370
370
|
device,
|
|
371
371
|
direct_pair.device,
|
|
372
372
|
direct_pair.ports,
|
|
373
|
-
to_interface_changes(direct_pair.local),
|
|
373
|
+
to_interface_changes(direct_pair.local, direct_pair.connected),
|
|
374
374
|
)
|
|
375
375
|
peers.append(self._to_bgp_peer(direct_pair, target_interface))
|
|
376
376
|
|
|
@@ -378,7 +378,7 @@ class MeshExecutor:
|
|
|
378
378
|
target_interface = self._apply_nondirect_interface_changes(
|
|
379
379
|
device,
|
|
380
380
|
getattr(virtual_pair.local, "ifname", None),
|
|
381
|
-
to_interface_changes(virtual_pair.local),
|
|
381
|
+
to_interface_changes(virtual_pair.local, virtual_pair.connected),
|
|
382
382
|
)
|
|
383
383
|
peers.append(self._virtual_to_bgp_peer(virtual_pair, target_interface))
|
|
384
384
|
|
|
@@ -386,7 +386,7 @@ class MeshExecutor:
|
|
|
386
386
|
target_interface = self._apply_nondirect_interface_changes(
|
|
387
387
|
device,
|
|
388
388
|
getattr(connected_pair.local, "ifname", None),
|
|
389
|
-
to_interface_changes(connected_pair.local),
|
|
389
|
+
to_interface_changes(connected_pair.local, connected_pair.connected),
|
|
390
390
|
)
|
|
391
391
|
peers.append(self._to_bgp_peer(connected_pair, target_interface))
|
|
392
392
|
|
|
@@ -67,7 +67,17 @@ retort = Retort(
|
|
|
67
67
|
)
|
|
68
68
|
|
|
69
69
|
to_bgp_global_options = retort.get_loader(GlobalOptions)
|
|
70
|
-
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def to_interface_changes(local: LocalDTO, peer: PeerDTO) -> InterfaceChanges:
|
|
73
|
+
return InterfaceChanges(
|
|
74
|
+
addr=getattr(local, "addr", None),
|
|
75
|
+
lag_links_min=getattr(local, "lag_links_min", None),
|
|
76
|
+
svi=getattr(local, "svi", None),
|
|
77
|
+
subif=getattr(local, "subif", None),
|
|
78
|
+
vrf=getattr(peer, "vrf", None),
|
|
79
|
+
lag=getattr(local, "lag", None),
|
|
80
|
+
)
|
|
71
81
|
|
|
72
82
|
|
|
73
83
|
def to_bgp_peer(local: LocalDTO, connected: PeerDTO, connected_hostname: str, interface: Optional[str]) -> Peer:
|
|
@@ -99,7 +99,7 @@ class DefaultRulebookProvider(RulebookProvider):
|
|
|
99
99
|
return self._escaped_rul_cache[name]
|
|
100
100
|
for root_dir in self.root_dir:
|
|
101
101
|
try:
|
|
102
|
-
with open(path.join(root_dir, "texts", name), "r") as f:
|
|
102
|
+
with open(path.join(root_dir, "texts", name), "r", encoding="utf-8") as f:
|
|
103
103
|
self._escaped_rul_cache[name] = self._escape_mako(f.read())
|
|
104
104
|
return self._escaped_rul_cache[name]
|
|
105
105
|
except FileNotFoundError:
|
|
@@ -42,11 +42,15 @@ def sflow(rule, key, diff, **kwargs):
|
|
|
42
42
|
|
|
43
43
|
def lldp(rule, key, diff, **kwargs):
|
|
44
44
|
"""
|
|
45
|
-
|
|
45
|
+
Обрабатываем блок lldp-agent
|
|
46
46
|
"""
|
|
47
47
|
result = common.default(rule, key, diff, **kwargs)
|
|
48
48
|
for op, cmd, ch in result:
|
|
49
|
+
# Не удаляем все что начинается с set, т.к. set перезаписывает предыдущий конфиг
|
|
49
50
|
if diff[Op.REMOVED] and "set lldp" in cmd:
|
|
50
51
|
pass
|
|
52
|
+
# В случае lldp tlv ... select удаляем все что до select
|
|
53
|
+
elif diff[Op.REMOVED] and cmd.endswith("select"):
|
|
54
|
+
yield (op, " ".join(cmd.split()[:-1]), ch)
|
|
51
55
|
else:
|
|
52
56
|
yield (op, cmd, ch)
|
|
@@ -13,11 +13,12 @@
|
|
|
13
13
|
# Physical
|
|
14
14
|
sflow *
|
|
15
15
|
|
|
16
|
-
interface */(ce|xe|eth)[0-9\/]+$/ %logic=common.permanent %diff_logic=cisco.iface.diff
|
|
16
|
+
interface */(ce|xe|eth|vlan)[0-9\/]+$/ %logic=common.permanent %diff_logic=cisco.iface.diff
|
|
17
17
|
description * %logic=b4com.iface.description
|
|
18
18
|
ip vrf forwarding *
|
|
19
19
|
ip address *
|
|
20
20
|
ipv6 address *
|
|
21
|
+
ipv6 nd *
|
|
21
22
|
mtu * %logic=b4com.iface.mtu
|
|
22
23
|
sflow * %logic=b4com.iface.sflow
|
|
23
24
|
lldp-agent
|
|
@@ -55,6 +55,11 @@ dhcp snooping user-bind http
|
|
|
55
55
|
|
|
56
56
|
ntp server disable
|
|
57
57
|
ntp ipv6 server disable
|
|
58
|
+
ntp unicast-server domain *
|
|
59
|
+
ntp unicast-server ipv6 *
|
|
60
|
+
ntp unicast-server *
|
|
61
|
+
ntp-service unicast-server ipv6 *
|
|
62
|
+
ntp-service unicast-server *
|
|
58
63
|
ntp ~
|
|
59
64
|
dns snooping ttl delay-time
|
|
60
65
|
dns ~
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|