annet 3.12.1__tar.gz → 3.13.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.12.1/annet.egg-info → annet-3.13.0}/PKG-INFO +1 -1
- {annet-3.12.1 → annet-3.13.0}/annet/adapters/netbox/common/models.py +2 -0
- {annet-3.12.1 → annet-3.13.0}/annet/adapters/netbox/provider.py +2 -1
- {annet-3.12.1 → annet-3.13.0}/annet/bgp_models.py +12 -3
- {annet-3.12.1 → annet-3.13.0}/annet/mesh/device_models.py +2 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/texts/huawei.rul +5 -0
- {annet-3.12.1 → annet-3.13.0}/annet/vendors/tabparser.py +12 -30
- {annet-3.12.1 → annet-3.13.0/annet.egg-info}/PKG-INFO +1 -1
- {annet-3.12.1 → annet-3.13.0}/AUTHORS +0 -0
- {annet-3.12.1 → annet-3.13.0}/LICENSE +0 -0
- {annet-3.12.1 → annet-3.13.0}/MANIFEST.in +0 -0
- {annet-3.12.1 → annet-3.13.0}/README.md +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/__init__.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/adapters/__init__.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/adapters/fetchers/__init__.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/adapters/fetchers/stub/__init__.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/adapters/fetchers/stub/fetcher.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/adapters/file/__init__.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/adapters/file/provider.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/adapters/netbox/__init__.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/adapters/netbox/common/__init__.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/adapters/netbox/common/adapter.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/adapters/netbox/common/client.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/adapters/netbox/common/manufacturer.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/adapters/netbox/common/query.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/adapters/netbox/common/status_client.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/adapters/netbox/common/storage_base.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/adapters/netbox/common/storage_opts.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/adapters/netbox/v24/__init__.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/adapters/netbox/v24/models.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/adapters/netbox/v24/storage.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/adapters/netbox/v37/__init__.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/adapters/netbox/v37/models.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/adapters/netbox/v37/storage.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/adapters/netbox/v41/__init__.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/adapters/netbox/v41/models.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/adapters/netbox/v41/storage.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/adapters/netbox/v42/__init__.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/adapters/netbox/v42/models.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/adapters/netbox/v42/storage.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/annet.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/annlib/__init__.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/annlib/command.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/annlib/diff.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/annlib/errors.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/annlib/filter_acl.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/annlib/jsontools.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/annlib/lib.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/annlib/netdev/__init__.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/annlib/netdev/db.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/annlib/netdev/devdb/__init__.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/annlib/netdev/devdb/data/devdb.json +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/annlib/netdev/views/__init__.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/annlib/netdev/views/dump.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/annlib/netdev/views/hardware.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/annlib/output.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/annlib/patching.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/annlib/rbparser/__init__.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/annlib/rbparser/acl.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/annlib/rbparser/deploying.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/annlib/rbparser/ordering.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/annlib/rbparser/platform.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/annlib/rbparser/syntax.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/annlib/rulebook/__init__.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/annlib/rulebook/common.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/annlib/types.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/api/__init__.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/argparse.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/cli.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/cli_args.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/configs/context.yml +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/configs/logging.yaml +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/connectors.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/deploy.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/deploy_ui.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/diff.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/filtering.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/gen.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/generators/__init__.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/generators/base.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/generators/common/__init__.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/generators/common/initial.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/generators/entire.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/generators/exceptions.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/generators/jsonfragment.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/generators/partial.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/generators/perf.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/generators/ref.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/generators/result.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/hardware.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/implicit.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/lib.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/mesh/__init__.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/mesh/basemodel.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/mesh/executor.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/mesh/match_args.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/mesh/models_converter.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/mesh/peer_models.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/mesh/port_processor.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/mesh/registry.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/output.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/parallel.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/patching.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/reference.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rpl/__init__.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rpl/action.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rpl/condition.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rpl/match_builder.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rpl/policy.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rpl/result.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rpl/routemap.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rpl/statement_builder.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rpl_generators/__init__.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rpl_generators/aspath.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rpl_generators/community.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rpl_generators/cumulus_frr.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rpl_generators/entities.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rpl_generators/execute.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rpl_generators/policy.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rpl_generators/prefix_lists.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rpl_generators/rd.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/__init__.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/arista/__init__.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/arista/aaa.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/arista/iface.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/aruba/__init__.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/aruba/ap_env.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/aruba/misc.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/b4com/__init__.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/b4com/file.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/b4com/iface.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/cisco/__init__.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/cisco/iface.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/cisco/misc.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/cisco/vlandb.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/common.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/deploying.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/generic/__init__.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/generic/misc.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/huawei/__init__.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/huawei/aaa.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/huawei/bgp.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/huawei/iface.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/huawei/misc.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/huawei/vlandb.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/juniper/__init__.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/juniper/iface.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/nexus/__init__.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/nexus/iface.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/patching.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/routeros/__init__.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/routeros/file.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/texts/arista.deploy +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/texts/arista.order +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/texts/arista.rul +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/texts/aruba.deploy +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/texts/aruba.order +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/texts/aruba.rul +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/texts/b4com.deploy +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/texts/b4com.order +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/texts/b4com.rul +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/texts/cisco.deploy +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/texts/cisco.order +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/texts/cisco.rul +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/texts/huawei.deploy +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/texts/huawei.order +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/texts/iosxr.deploy +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/texts/iosxr.order +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/texts/iosxr.rul +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/texts/juniper.order +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/texts/juniper.rul +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/texts/nexus.deploy +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/texts/nexus.order +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/texts/nexus.rul +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/texts/nokia.rul +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/texts/optixtrans.deploy +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/texts/optixtrans.order +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/texts/optixtrans.rul +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/texts/pc.deploy +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/texts/pc.order +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/texts/pc.rul +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/texts/ribbon.deploy +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/texts/ribbon.rul +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/texts/routeros.order +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/rulebook/texts/routeros.rul +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/storage.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/text_term_format.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/tracing.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/types.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/vendors/__init__.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/vendors/base.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/vendors/library/__init__.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/vendors/library/arista.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/vendors/library/aruba.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/vendors/library/b4com.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/vendors/library/cisco.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/vendors/library/h3c.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/vendors/library/huawei.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/vendors/library/iosxr.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/vendors/library/juniper.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/vendors/library/nexus.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/vendors/library/nokia.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/vendors/library/optixtrans.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/vendors/library/pc.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/vendors/library/ribbon.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/vendors/library/routeros.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet/vendors/registry.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet.egg-info/SOURCES.txt +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet.egg-info/dependency_links.txt +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet.egg-info/entry_points.txt +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet.egg-info/requires.txt +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet.egg-info/top_level.txt +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet_generators/__init__.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet_generators/example/__init__.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet_generators/example/hostname.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet_generators/example/lldp.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet_generators/mesh_example/__init__.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet_generators/mesh_example/bgp.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet_generators/mesh_example/mesh_logic.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet_generators/rpl_example/__init__.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet_generators/rpl_example/generator.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet_generators/rpl_example/items.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet_generators/rpl_example/mesh.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/annet_generators/rpl_example/route_policy.py +0 -0
- {annet-3.12.1 → annet-3.13.0}/requirements.txt +0 -0
- {annet-3.12.1 → annet-3.13.0}/setup.cfg +0 -0
- {annet-3.12.1 → annet-3.13.0}/setup.py +0 -0
|
@@ -189,6 +189,8 @@ class Interface(Entity, Generic[_IpAddressT, _FHRPGroupAssignmentT]):
|
|
|
189
189
|
lag_min_links: int | None = None
|
|
190
190
|
speed: int | None = None
|
|
191
191
|
|
|
192
|
+
custom_fields: Dict[str, Any] = field(default_factory=dict)
|
|
193
|
+
|
|
192
194
|
ip_addresses: List[_IpAddressT] = field(default_factory=list)
|
|
193
195
|
count_ipaddresses: int = 0
|
|
194
196
|
fhrp_groups: List[_FHRPGroupAssignmentT] = field(default_factory=list)
|
|
@@ -45,12 +45,13 @@ def storage_factory(opts: NetboxStorageOpts) -> Storage:
|
|
|
45
45
|
|
|
46
46
|
class NetboxProvider(StorageProvider, AdapterWithName, AdapterWithConfig):
|
|
47
47
|
def __init__(self, url: Optional[str] = None, token: Optional[str] = None, insecure: bool = False,
|
|
48
|
-
exact_host_filter: bool = False, threads: int = 1):
|
|
48
|
+
exact_host_filter: bool = False, threads: int = 1, all_hosts_filter: dict[str, list[str]] | None = None):
|
|
49
49
|
self.url = url
|
|
50
50
|
self.token = token
|
|
51
51
|
self.insecure = insecure
|
|
52
52
|
self.exact_host_filter = exact_host_filter
|
|
53
53
|
self.threads = threads
|
|
54
|
+
self.all_hosts_filter = all_hosts_filter
|
|
54
55
|
|
|
55
56
|
@classmethod
|
|
56
57
|
def with_config(cls, **kwargs: Dict[str, Any]) -> T:
|
|
@@ -255,6 +255,8 @@ class FamilyOptions:
|
|
|
255
255
|
rib_group: bool = False
|
|
256
256
|
loops: int = 0
|
|
257
257
|
advertise_bgp_static: bool = False
|
|
258
|
+
import_policy: Optional[str] = None
|
|
259
|
+
export_policy: Optional[str] = None
|
|
258
260
|
|
|
259
261
|
|
|
260
262
|
@dataclass(frozen=True)
|
|
@@ -387,7 +389,7 @@ def _used_policies(peer: Union[Peer, PeerGroup, VrfOptions]) -> Iterable[str]:
|
|
|
387
389
|
yield peer.export_policy
|
|
388
390
|
|
|
389
391
|
|
|
390
|
-
def
|
|
392
|
+
def _used_families_policies(opts: Union[GlobalOptions, VrfOptions]) -> Iterable[str]:
|
|
391
393
|
for family_opts in (
|
|
392
394
|
opts.ipv4_unicast,
|
|
393
395
|
opts.ipv6_unicast,
|
|
@@ -400,6 +402,13 @@ def _used_redistribute_policies(opts: Union[GlobalOptions, VrfOptions]) -> Itera
|
|
|
400
402
|
yield red.policy
|
|
401
403
|
if family_opts.aggregate and family_opts.aggregate.policy:
|
|
402
404
|
yield family_opts.aggregate.policy
|
|
405
|
+
for aggregate in family_opts.aggregates:
|
|
406
|
+
if aggregate.policy:
|
|
407
|
+
yield aggregate.policy
|
|
408
|
+
if family_opts.export_policy:
|
|
409
|
+
yield family_opts.export_policy
|
|
410
|
+
if family_opts.import_policy:
|
|
411
|
+
yield family_opts.import_policy
|
|
403
412
|
|
|
404
413
|
|
|
405
414
|
def extract_policies(config: BgpConfig) -> Sequence[str]:
|
|
@@ -407,11 +416,11 @@ def extract_policies(config: BgpConfig) -> Sequence[str]:
|
|
|
407
416
|
for vrf in config.global_options.vrf.values():
|
|
408
417
|
for group in vrf.groups:
|
|
409
418
|
result.extend(_used_policies(group))
|
|
410
|
-
result.extend(
|
|
419
|
+
result.extend(_used_families_policies(vrf))
|
|
411
420
|
result.extend(_used_policies(vrf))
|
|
412
421
|
for group in config.global_options.groups:
|
|
413
422
|
result.extend(_used_policies(group))
|
|
414
423
|
for peer in config.peers:
|
|
415
424
|
result.extend(_used_policies(peer))
|
|
416
|
-
result.extend(
|
|
425
|
+
result.extend(_used_families_policies(config.global_options))
|
|
417
426
|
return result
|
|
@@ -823,41 +823,23 @@ class RosFormatter(CommonFormatter):
|
|
|
823
823
|
(re.compile(r"^add "), ""),
|
|
824
824
|
(re.compile(r"^print file="), "name="),
|
|
825
825
|
)
|
|
826
|
-
|
|
826
|
+
|
|
827
|
+
commands = odict()
|
|
827
828
|
for item in patch.itms:
|
|
828
829
|
key, childs, context = item.row, item.child, item.context
|
|
829
830
|
if childs:
|
|
830
|
-
|
|
831
|
+
childs_prev = f"{_prev} {key.strip()}".lstrip()
|
|
832
|
+
commands.update(self.cmd_paths(childs, _prev=childs_prev))
|
|
831
833
|
else:
|
|
832
|
-
|
|
834
|
+
if key.startswith("remove"):
|
|
835
|
+
find_cmd = key.removeprefix("remove").strip()
|
|
836
|
+
for regex, repl_line in rm_regexs:
|
|
837
|
+
find_cmd = regex.sub(repl_line, find_cmd)
|
|
838
|
+
cmd = f"/{_prev} remove [ find {find_cmd} ]"
|
|
839
|
+
else:
|
|
840
|
+
cmd = f"/{_prev} {key}"
|
|
841
|
+
commands[(cmd,)] = context
|
|
833
842
|
|
|
834
|
-
commands = odict()
|
|
835
|
-
prev_cmd = None
|
|
836
|
-
prev_context = None
|
|
837
|
-
for childs, items in itertools.groupby(patch_items, lambda x: x[1]):
|
|
838
|
-
if childs is None:
|
|
839
|
-
if prev_cmd:
|
|
840
|
-
commands[(prev_cmd,)] = prev_context
|
|
841
|
-
for key, _, context in items:
|
|
842
|
-
if key.startswith("remove"):
|
|
843
|
-
find_cmd = key.replace("remove", "", 1).strip()
|
|
844
|
-
for (regex, repl_line) in rm_regexs:
|
|
845
|
-
find_cmd = regex.sub(repl_line, find_cmd)
|
|
846
|
-
cmd = "remove [ find " + find_cmd + " ]"
|
|
847
|
-
else:
|
|
848
|
-
cmd = key
|
|
849
|
-
commands[(cmd,)] = context
|
|
850
|
-
else:
|
|
851
|
-
for key, _, context in items:
|
|
852
|
-
if _prev:
|
|
853
|
-
prev_cmd = _prev
|
|
854
|
-
prev_context = context
|
|
855
|
-
block_cmd = f"{_prev} {key}"
|
|
856
|
-
else:
|
|
857
|
-
block_cmd = f"/{key}"
|
|
858
|
-
commands[(block_cmd,)] = context
|
|
859
|
-
for k, v in self.cmd_paths(childs, block_cmd).items():
|
|
860
|
-
commands[k] = v
|
|
861
843
|
return commands
|
|
862
844
|
|
|
863
845
|
|
|
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
|
|
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
|