├── .github └── CODEOWNERS ├── docs ├── logo.png ├── .DS_Store ├── favicon.ico ├── tcl │ ├── q.jpg │ └── index.rst ├── log │ ├── tonystark.jpg │ ├── index.rst │ └── introduction.rst ├── overview │ ├── logo.png │ └── toolbox.png ├── changelog │ ├── 2014 │ │ └── index.rst │ ├── 2015 │ │ ├── wall_of_text.png │ │ ├── index.rst │ │ ├── november.rst │ │ ├── july.rst │ │ └── february.rst │ ├── 2016 │ │ ├── index.rst │ │ ├── march.rst │ │ ├── april.rst │ │ ├── december.rst │ │ ├── october.rst │ │ └── june.rst │ ├── 2017 │ │ ├── index.rst │ │ ├── oct.rst │ │ ├── dec.rst │ │ ├── february.rst │ │ ├── june.rst │ │ ├── aug.rst │ │ ├── july.rst │ │ ├── sep.rst │ │ ├── january.rst │ │ └── nov.rst │ ├── 2018 │ │ ├── index.rst │ │ ├── july.rst │ │ ├── nov.rst │ │ ├── jan.rst │ │ ├── aug.rst │ │ ├── sep.rst │ │ └── may.rst │ ├── 2019 │ │ ├── index.rst │ │ ├── june.rst │ │ ├── apr.rst │ │ ├── dec.rst │ │ └── sept.rst │ ├── 2020 │ │ ├── index.rst │ │ ├── nov.rst │ │ ├── jan.rst │ │ ├── mar.rst │ │ └── oct.rst │ ├── 2021 │ │ ├── january.rst │ │ └── april.rst │ ├── 2022 │ │ ├── november.rst │ │ ├── april.rst │ │ ├── october.rst │ │ ├── july.rst │ │ ├── january.rst │ │ ├── march.rst │ │ ├── june.rst │ │ └── august.rst │ ├── 2023 │ │ ├── january.rst │ │ ├── july.rst │ │ ├── march.rst │ │ ├── june.rst │ │ ├── february.rst │ │ ├── october.rst │ │ ├── august.rst │ │ ├── may.rst │ │ └── april.rst │ ├── 2024 │ │ ├── october.rst │ │ ├── September.rst │ │ ├── june.rst │ │ ├── july.rst │ │ ├── may.rst │ │ └── march.rst │ ├── 2025 │ │ ├── february.rst │ │ ├── october.rst │ │ ├── march.rst │ │ ├── april.rst │ │ ├── may.rst │ │ ├── december.rst │ │ ├── september.rst │ │ ├── august.rst │ │ ├── july.rst │ │ └── january.rst │ ├── .DS_Store │ └── index.rst ├── connections │ ├── Thumbs.db │ ├── concept.png │ ├── mutex_flow.png │ ├── pool_flow.png │ ├── index.rst │ ├── mutex_flow.xml │ └── pool_flow.xml ├── aereport │ ├── AEReport_UML.png │ └── AEReport_BlockDiag.png ├── aetest │ ├── script_structure.png │ ├── parameter_relations.png │ └── index.rst ├── cli │ ├── logs_webpage_example.png │ ├── index.rst │ ├── pyats_migrate.rst │ └── pyats.rst ├── apidoc │ ├── kleenex │ │ ├── pyats.bringup.rst │ │ ├── pyats.clean.loader.rst │ │ ├── pyats.kleenex.reporter.rst │ │ └── index.rst │ ├── log │ │ ├── pyats.atslog.rst │ │ ├── pyats.log.commands.parser.rst │ │ ├── pyats.log.commands.rst │ │ └── index.rst │ ├── utils │ │ ├── pyats.utils.fileutils.plugins.rst │ │ ├── pyats.utils.fileutils.bases.rst │ │ ├── pyats.utils.fileutils.core.rst │ │ ├── pyats.utils.fileutils.plugins.localhost.ftp.rst │ │ ├── pyats.utils.fileutils.plugins.localhost.scp.rst │ │ ├── pyats.utils.fileutils.plugins.localhost.sftp.rst │ │ ├── pyats.utils.fileutils.plugins.localhost.curl.tftp.rst │ │ ├── pyats.utils.fileutils.rst │ │ ├── pyats.utils.fileutils.plugins.localhost.curl.rst │ │ ├── pyats.utils.import_utils.rst │ │ ├── pyats.utils.yaml.rst │ │ ├── pyats.utils.fileutils.plugins.localhost.rst │ │ └── index.rst │ ├── aereport │ │ ├── pyats.aereport.tsinitinfo.rst │ │ ├── pyats.aereport.utils.rst │ │ ├── pyats.aereport.iou.diou.rst │ │ ├── pyats.aereport.logview.rst │ │ ├── pyats.aereport.initinfo.id.rst │ │ ├── pyats.aereport.tsinitinfo.atstree.rst │ │ ├── pyats.aereport.tsinitinfo.params.report.rst │ │ ├── pyats.aereport.testscriptinitinfo.script.rst │ │ ├── pyats.aereport.tims.rst │ │ ├── pyats.aereport.exceptions.rst │ │ ├── pyats.aereport.tsinitinfo.params.rst │ │ ├── pyats.aereport.testscriptinitinfo.rst │ │ ├── pyats.aereport.iou.rst │ │ ├── pyats.aereport.initinfo.rst │ │ ├── pyats.aereport.runinfo.rst │ │ ├── pyats.aereport.results.rst │ │ ├── pyats.aereport.testsuite.rst │ │ ├── pyats.aereport.toplevel.rst │ │ ├── pyats.aereport.testscript.rst │ │ └── index.rst │ ├── aetest │ │ ├── pyats.aetest.runtime.rst │ │ ├── pyats.aetest.executer.rst │ │ ├── pyats.aetest.utils.rst │ │ ├── pyats.aetest.datafile.rst │ │ ├── pyats.aetest.steps.rst │ │ ├── pyats.aetest.reporter.rst │ │ ├── pyats.aetest.processors.rst │ │ └── index.rst │ ├── topology │ │ ├── pyats.topology.loader.rst │ │ └── index.rst │ ├── index.rst │ ├── robot │ │ ├── index.rst │ │ ├── pyats.robot.commands.rst │ │ └── pyats.robot.runner.rst │ ├── easypy │ │ ├── pyats.easypy.runinfo.rst │ │ ├── pyats.easypy.reporter.rst │ │ ├── pyats.easypy.config.rst │ │ ├── index.rst │ │ └── pyats.easypy.plugins.rst │ ├── core │ │ ├── pyats.cli.commands.version.rst │ │ ├── index.rst │ │ └── pyats.cli.commands.rst │ ├── async │ │ └── index.rst │ ├── results │ │ └── index.rst │ ├── connections │ │ └── index.rst │ ├── reporter │ │ └── index.rst │ └── datastructures │ │ └── index.rst ├── reporter │ ├── index.rst │ └── subscribe.rst ├── utilities │ └── index.rst ├── manifest │ └── index.rst ├── topology │ ├── index.rst │ └── introduction.rst ├── kleenex │ └── index.rst ├── async │ ├── index.rst │ └── introduction.rst ├── easypy │ ├── index.rst │ └── introduction.rst ├── datastructures │ ├── index.rst │ ├── orderabledict.rst │ └── configuration.rst ├── results │ ├── index.rst │ └── introduction.rst ├── resources │ └── index.rst ├── robot │ ├── index.rst │ └── native.rst ├── index.rst ├── README.md └── terminology.rst ├── .gitignore └── README.md /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @CiscoTestAutomation/pyats-genie-devs -------------------------------------------------------------------------------- /docs/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CiscoTestAutomation/pyats/HEAD/docs/logo.png -------------------------------------------------------------------------------- /docs/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CiscoTestAutomation/pyats/HEAD/docs/.DS_Store -------------------------------------------------------------------------------- /docs/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CiscoTestAutomation/pyats/HEAD/docs/favicon.ico -------------------------------------------------------------------------------- /docs/tcl/q.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CiscoTestAutomation/pyats/HEAD/docs/tcl/q.jpg -------------------------------------------------------------------------------- /docs/log/tonystark.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CiscoTestAutomation/pyats/HEAD/docs/log/tonystark.jpg -------------------------------------------------------------------------------- /docs/overview/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CiscoTestAutomation/pyats/HEAD/docs/overview/logo.png -------------------------------------------------------------------------------- /docs/changelog/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CiscoTestAutomation/pyats/HEAD/docs/changelog/.DS_Store -------------------------------------------------------------------------------- /docs/connections/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CiscoTestAutomation/pyats/HEAD/docs/connections/Thumbs.db -------------------------------------------------------------------------------- /docs/overview/toolbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CiscoTestAutomation/pyats/HEAD/docs/overview/toolbox.png -------------------------------------------------------------------------------- /docs/connections/concept.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CiscoTestAutomation/pyats/HEAD/docs/connections/concept.png -------------------------------------------------------------------------------- /docs/aereport/AEReport_UML.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CiscoTestAutomation/pyats/HEAD/docs/aereport/AEReport_UML.png -------------------------------------------------------------------------------- /docs/connections/mutex_flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CiscoTestAutomation/pyats/HEAD/docs/connections/mutex_flow.png -------------------------------------------------------------------------------- /docs/connections/pool_flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CiscoTestAutomation/pyats/HEAD/docs/connections/pool_flow.png -------------------------------------------------------------------------------- /docs/aetest/script_structure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CiscoTestAutomation/pyats/HEAD/docs/aetest/script_structure.png -------------------------------------------------------------------------------- /docs/cli/logs_webpage_example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CiscoTestAutomation/pyats/HEAD/docs/cli/logs_webpage_example.png -------------------------------------------------------------------------------- /docs/aereport/AEReport_BlockDiag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CiscoTestAutomation/pyats/HEAD/docs/aereport/AEReport_BlockDiag.png -------------------------------------------------------------------------------- /docs/aetest/parameter_relations.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CiscoTestAutomation/pyats/HEAD/docs/aetest/parameter_relations.png -------------------------------------------------------------------------------- /docs/changelog/2015/wall_of_text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CiscoTestAutomation/pyats/HEAD/docs/changelog/2015/wall_of_text.png -------------------------------------------------------------------------------- /docs/changelog/2014/index.rst: -------------------------------------------------------------------------------- 1 | 2014 2 | ==== 3 | 4 | .. toctree:: 5 | :maxdepth: 2 6 | 7 | november 8 | december 9 | 10 | 11 | -------------------------------------------------------------------------------- /docs/apidoc/kleenex/pyats.bringup.rst: -------------------------------------------------------------------------------- 1 | pyats.bringup package 2 | ===================== 3 | 4 | .. automodule:: pyats.bringup 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/changelog/2016/index.rst: -------------------------------------------------------------------------------- 1 | 2016 2 | ==== 3 | 4 | .. toctree:: 5 | :maxdepth: 2 6 | 7 | december 8 | november 9 | october 10 | july 11 | june 12 | may 13 | april 14 | march 15 | february -------------------------------------------------------------------------------- /docs/changelog/2017/index.rst: -------------------------------------------------------------------------------- 1 | 2017 2 | ==== 3 | 4 | .. toctree:: 5 | :maxdepth: 2 6 | 7 | dec 8 | nov 9 | oct 10 | sep 11 | aug 12 | july 13 | june 14 | may 15 | february 16 | january -------------------------------------------------------------------------------- /docs/reporter/index.rst: -------------------------------------------------------------------------------- 1 | .. _reporter: 2 | 3 | Reporter 4 | ======== 5 | 6 | .. toctree:: 7 | :maxdepth: 2 8 | 9 | overview 10 | subscribe 11 | 12 | .. sectionauthor:: Ben Astell 13 | -------------------------------------------------------------------------------- /docs/changelog/2018/index.rst: -------------------------------------------------------------------------------- 1 | 2018 2 | ==== 3 | 4 | .. toctree:: 5 | :maxdepth: 2 6 | 7 | dec 8 | nov 9 | oct 10 | sep 11 | aug 12 | july 13 | june 14 | may 15 | apr 16 | mar 17 | jan -------------------------------------------------------------------------------- /docs/changelog/2019/index.rst: -------------------------------------------------------------------------------- 1 | 2019 2 | ==== 3 | 4 | .. toctree:: 5 | :maxdepth: 2 6 | 7 | dec 8 | nov 9 | oct 10 | sept 11 | aug 12 | july 13 | june 14 | may 15 | apr 16 | mar 17 | jan -------------------------------------------------------------------------------- /docs/changelog/2020/index.rst: -------------------------------------------------------------------------------- 1 | 2020 2 | ==== 3 | 4 | .. toctree:: 5 | :maxdepth: 2 6 | 7 | dec 8 | nov 9 | oct 10 | sep 11 | aug 12 | jul 13 | may 14 | apr 15 | mar 16 | feb 17 | jan -------------------------------------------------------------------------------- /docs/changelog/2015/index.rst: -------------------------------------------------------------------------------- 1 | 2015 2 | ==== 3 | 4 | .. toctree:: 5 | :maxdepth: 2 6 | 7 | november 8 | october 9 | september 10 | july 11 | june 12 | april 13 | march 14 | february 15 | january 16 | 17 | 18 | -------------------------------------------------------------------------------- /docs/utilities/index.rst: -------------------------------------------------------------------------------- 1 | .. _utilities-index: 2 | 3 | Utilities 4 | ========= 5 | 6 | .. toctree:: 7 | :maxdepth: 2 8 | 9 | helper_functions 10 | secret_strings 11 | file_transfer_utilities 12 | file_transfer_server 13 | import_utils 14 | yaml_markup 15 | 16 | .. sectionauthor:: Myles Dear 17 | -------------------------------------------------------------------------------- /docs/connections/index.rst: -------------------------------------------------------------------------------- 1 | Connection Meta 2 | =============== 3 | 4 | The section will guide you through how various forms of device connections 5 | integrates into the pyATS topology model. 6 | 7 | .. toctree:: 8 | :maxdepth: 2 9 | 10 | introduction 11 | integration 12 | manager 13 | class 14 | wrapper 15 | sharing -------------------------------------------------------------------------------- /docs/apidoc/log/pyats.atslog.rst: -------------------------------------------------------------------------------- 1 | pyats.atslog package 2 | ==================== 3 | 4 | .. automodule:: pyats.atslog 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.atslog.utils 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | -------------------------------------------------------------------------------- /docs/manifest/index.rst: -------------------------------------------------------------------------------- 1 | .. _manifest: 2 | 3 | Manifest 4 | ======== 5 | 6 | This is a sub-component of pyATS that uses a file with YAML syntax 7 | (the "manifest" file) to capture the runtime requirements, script 8 | arguments and execution profile for test scripts. 9 | 10 | .. toctree:: 11 | :maxdepth: 2 12 | 13 | introduction 14 | schema 15 | -------------------------------------------------------------------------------- /docs/apidoc/utils/pyats.utils.fileutils.plugins.rst: -------------------------------------------------------------------------------- 1 | pyats.utils.fileutils.plugins package 2 | ===================================== 3 | 4 | .. automodule:: pyats.utils.fileutils.plugins 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Subpackages 10 | ----------- 11 | 12 | .. toctree:: 13 | 14 | pyats.utils.fileutils.plugins.localhost 15 | -------------------------------------------------------------------------------- /docs/apidoc/kleenex/pyats.clean.loader.rst: -------------------------------------------------------------------------------- 1 | pyats.clean.loader package 2 | ============================ 3 | 4 | .. automodule:: pyats.clean.loader 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.clean.loader.markup 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | -------------------------------------------------------------------------------- /docs/apidoc/aereport/pyats.aereport.tsinitinfo.rst: -------------------------------------------------------------------------------- 1 | pyats.aereport.tsinitinfo package 2 | ================================= 3 | 4 | .. automodule:: pyats.aereport.tsinitinfo 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Subpackages 10 | ----------- 11 | 12 | .. toctree:: 13 | 14 | pyats.aereport.tsinitinfo.atstree 15 | pyats.aereport.tsinitinfo.params 16 | -------------------------------------------------------------------------------- /docs/apidoc/aereport/pyats.aereport.utils.rst: -------------------------------------------------------------------------------- 1 | pyats.aereport.utils package 2 | ============================ 3 | 4 | .. automodule:: pyats.aereport.utils 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.aereport.utils.argsvalidator 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | -------------------------------------------------------------------------------- /docs/apidoc/aetest/pyats.aetest.runtime.rst: -------------------------------------------------------------------------------- 1 | pyats.aetest.runtime package 2 | ============================ 3 | 4 | .. automodule:: pyats.aetest.runtime 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.aetest.runtime.implementation 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | -------------------------------------------------------------------------------- /docs/apidoc/topology/pyats.topology.loader.rst: -------------------------------------------------------------------------------- 1 | pyats.topology.loader package 2 | ============================= 3 | 4 | .. automodule:: pyats.topology.loader 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.topology.loader.markup 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | -------------------------------------------------------------------------------- /docs/apidoc/aereport/pyats.aereport.iou.diou.rst: -------------------------------------------------------------------------------- 1 | pyats.aereport.iou.diou package 2 | =============================== 3 | 4 | .. automodule:: pyats.aereport.iou.diou 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.aereport.iou.diou.ci 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | -------------------------------------------------------------------------------- /docs/apidoc/aetest/pyats.aetest.executer.rst: -------------------------------------------------------------------------------- 1 | pyats.aetest.executer package 2 | ============================= 3 | 4 | .. automodule:: pyats.aetest.executer 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.aetest.executer.implementation 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | -------------------------------------------------------------------------------- /docs/apidoc/kleenex/pyats.kleenex.reporter.rst: -------------------------------------------------------------------------------- 1 | pyats.kleenex.reporter package 2 | ============================== 3 | 4 | .. automodule:: pyats.kleenex.reporter 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.kleenex.reporter.reporter 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | -------------------------------------------------------------------------------- /docs/apidoc/aereport/pyats.aereport.logview.rst: -------------------------------------------------------------------------------- 1 | pyats.aereport.logview package 2 | ============================== 3 | 4 | .. automodule:: pyats.aereport.logview 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.aereport.logview.logviewmaker 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | -------------------------------------------------------------------------------- /docs/log/index.rst: -------------------------------------------------------------------------------- 1 | 2 | .. highlightlang:: python 3 | 4 | Logging 5 | ======= 6 | 7 | This user guide will cover python logging components. 8 | 9 | .. toctree:: 10 | :maxdepth: 2 11 | 12 | introduction 13 | concept 14 | logging 15 | implementation 16 | integration 17 | utilities 18 | examples 19 | 20 | .. sectionauthor:: Ke Liu , Siming Yuan 21 | -------------------------------------------------------------------------------- /docs/tcl/index.rst: -------------------------------------------------------------------------------- 1 | Tcl Integration 2 | =============== 3 | 4 | This user guide covers on how to integrate Tcl within Python, aligning the 5 | data-structures and re-using existing libraries. 6 | 7 | 8 | .. toctree:: 9 | :maxdepth: 2 10 | 11 | introduction 12 | tcl 13 | variables 14 | datastructures 15 | q 16 | history 17 | 18 | .. sectionauthor:: Siming Yuan 19 | -------------------------------------------------------------------------------- /docs/apidoc/aereport/pyats.aereport.initinfo.id.rst: -------------------------------------------------------------------------------- 1 | pyats.aereport.initinfo.id package 2 | ================================== 3 | 4 | .. automodule:: pyats.aereport.initinfo.id 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.aereport.initinfo.id.idtims 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | -------------------------------------------------------------------------------- /docs/apidoc/utils/pyats.utils.fileutils.bases.rst: -------------------------------------------------------------------------------- 1 | pyats.utils.fileutils.bases package 2 | =================================== 3 | 4 | .. automodule:: pyats.utils.fileutils.bases 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.utils.fileutils.bases.fileutils 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | -------------------------------------------------------------------------------- /docs/apidoc/utils/pyats.utils.fileutils.core.rst: -------------------------------------------------------------------------------- 1 | pyats.utils.fileutils.core package 2 | ================================== 3 | 4 | .. automodule:: pyats.utils.fileutils.core 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.utils.fileutils.core.plugin_manager 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | -------------------------------------------------------------------------------- /docs/apidoc/index.rst: -------------------------------------------------------------------------------- 1 | API Documentation 2 | ================= 3 | 4 | .. toctree:: 5 | :maxdepth: 1 6 | 7 | core/index 8 | aetest/index 9 | easypy/index 10 | topology/index 11 | connections/index 12 | kleenex/index 13 | robot/index 14 | async/index 15 | datastructures/index 16 | log/index 17 | reporter/index 18 | results/index 19 | utils/index 20 | aereport/index 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /docs/apidoc/aereport/pyats.aereport.tsinitinfo.atstree.rst: -------------------------------------------------------------------------------- 1 | pyats.aereport.tsinitinfo.atstree package 2 | ========================================= 3 | 4 | .. automodule:: pyats.aereport.tsinitinfo.atstree 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.aereport.tsinitinfo.atstree.atspackage 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | -------------------------------------------------------------------------------- /docs/apidoc/robot/index.rst: -------------------------------------------------------------------------------- 1 | pyats.robot package 2 | =================== 3 | 4 | .. automodule:: pyats.robot 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Subpackages 10 | ----------- 11 | 12 | .. toctree:: 13 | 14 | pyats.robot.commands 15 | pyats.robot.runner 16 | 17 | Submodules 18 | ---------- 19 | 20 | 21 | .. automodule:: pyats.robot.pyATSRobot 22 | :members: 23 | :undoc-members: 24 | :show-inheritance: 25 | 26 | -------------------------------------------------------------------------------- /docs/topology/index.rst: -------------------------------------------------------------------------------- 1 | .. _testbed-index: 2 | 3 | Testbed & Topology Information 4 | ============================== 5 | 6 | This tutorial explains how pyATS ``topology`` module functions, and as well how 7 | script testbed topology is handled in Python. 8 | 9 | .. toctree:: 10 | :maxdepth: 2 11 | 12 | introduction 13 | concept 14 | creation 15 | usage 16 | schema 17 | example 18 | 19 | .. sectionauthor:: Siming Yuan 20 | -------------------------------------------------------------------------------- /docs/kleenex/index.rst: -------------------------------------------------------------------------------- 1 | .. _kleenex_index: 2 | 3 | Testbed & Device Cleaning 4 | ========================= 5 | 6 | 7 | This user guide covers on how to prepare your testbed: cleaning each device and 8 | loading it with new images. 9 | 10 | 11 | .. toctree:: 12 | :maxdepth: 2 13 | 14 | introduction 15 | usages 16 | inputs 17 | clean 18 | 19 | .. sectionauthor:: Myles Dear , 20 | Siming Yuan 21 | -------------------------------------------------------------------------------- /docs/apidoc/aereport/pyats.aereport.tsinitinfo.params.report.rst: -------------------------------------------------------------------------------- 1 | pyats.aereport.tsinitinfo.params.report package 2 | =============================================== 3 | 4 | .. automodule:: pyats.aereport.tsinitinfo.params.report 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.aereport.tsinitinfo.params.report.sem 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | -------------------------------------------------------------------------------- /docs/async/index.rst: -------------------------------------------------------------------------------- 1 | 2 | .. _async_index: 3 | 4 | Asynchronous Library 5 | ==================== 6 | 7 | This user guide covers the basics of asynchronous execution in pyATS: the 8 | design concept, how stuff works, the library functions & etc. 9 | 10 | .. toctree:: 11 | :maxdepth: 2 12 | 13 | introduction 14 | versus 15 | integration 16 | pcall 17 | multiprocessing 18 | semaphores 19 | 20 | .. sectionauthor:: Siming Yuan 21 | -------------------------------------------------------------------------------- /docs/apidoc/aereport/pyats.aereport.testscriptinitinfo.script.rst: -------------------------------------------------------------------------------- 1 | pyats.aereport.testscriptinitinfo.script package 2 | ================================================ 3 | 4 | .. automodule:: pyats.aereport.testscriptinitinfo.script 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.aereport.testscriptinitinfo.script.scm 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | -------------------------------------------------------------------------------- /docs/apidoc/utils/pyats.utils.fileutils.plugins.localhost.ftp.rst: -------------------------------------------------------------------------------- 1 | pyats.utils.fileutils.plugins.localhost.ftp package 2 | =================================================== 3 | 4 | .. automodule:: pyats.utils.fileutils.plugins.localhost.ftp 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.utils.fileutils.plugins.localhost.ftp.fileutils 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | -------------------------------------------------------------------------------- /docs/apidoc/utils/pyats.utils.fileutils.plugins.localhost.scp.rst: -------------------------------------------------------------------------------- 1 | pyats.utils.fileutils.plugins.localhost.scp package 2 | =================================================== 3 | 4 | .. automodule:: pyats.utils.fileutils.plugins.localhost.scp 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.utils.fileutils.plugins.localhost.scp.fileutils 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | -------------------------------------------------------------------------------- /docs/easypy/index.rst: -------------------------------------------------------------------------------- 1 | .. _easypy: 2 | 3 | Easypy - Runtime Environment 4 | ============================ 5 | 6 | This user guide will cover the basics of Easypy: the script execution 7 | environment it offers, the standard arguments, how testscripts are aggregated 8 | into job files, and various other optional functionalities. 9 | 10 | .. toctree:: 11 | :maxdepth: 2 12 | 13 | introduction 14 | jobfile 15 | usages 16 | behavior 17 | email 18 | plugins 19 | rerun 20 | -------------------------------------------------------------------------------- /docs/apidoc/aetest/pyats.aetest.utils.rst: -------------------------------------------------------------------------------- 1 | pyats.aetest.utils package 2 | ========================== 3 | 4 | .. automodule:: pyats.aetest.utils 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.aetest.utils.interaction 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | 19 | .. automodule:: pyats.aetest.utils.pause 20 | :members: 21 | :undoc-members: 22 | :show-inheritance: 23 | 24 | -------------------------------------------------------------------------------- /docs/apidoc/robot/pyats.robot.commands.rst: -------------------------------------------------------------------------------- 1 | pyats.robot.commands package 2 | ============================ 3 | 4 | .. automodule:: pyats.robot.commands 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.robot.commands.impl 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | 19 | .. automodule:: pyats.robot.commands.job 20 | :members: 21 | :undoc-members: 22 | :show-inheritance: 23 | 24 | -------------------------------------------------------------------------------- /docs/apidoc/utils/pyats.utils.fileutils.plugins.localhost.sftp.rst: -------------------------------------------------------------------------------- 1 | pyats.utils.fileutils.plugins.localhost.sftp package 2 | ==================================================== 3 | 4 | .. automodule:: pyats.utils.fileutils.plugins.localhost.sftp 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.utils.fileutils.plugins.localhost.sftp.fileutils 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | -------------------------------------------------------------------------------- /docs/apidoc/aereport/pyats.aereport.tims.rst: -------------------------------------------------------------------------------- 1 | pyats.aereport.tims package 2 | =========================== 3 | 4 | .. automodule:: pyats.aereport.tims 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.aereport.tims.timsattributes 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | 19 | .. automodule:: pyats.aereport.tims.timspost 20 | :members: 21 | :undoc-members: 22 | :show-inheritance: 23 | 24 | -------------------------------------------------------------------------------- /docs/apidoc/aetest/pyats.aetest.datafile.rst: -------------------------------------------------------------------------------- 1 | pyats.aetest.datafile package 2 | ============================= 3 | 4 | .. automodule:: pyats.aetest.datafile 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.aetest.datafile.loader 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | 19 | .. automodule:: pyats.aetest.datafile.schema 20 | :members: 21 | :undoc-members: 22 | :show-inheritance: 23 | 24 | -------------------------------------------------------------------------------- /docs/apidoc/easypy/pyats.easypy.runinfo.rst: -------------------------------------------------------------------------------- 1 | pyats.easypy.runinfo package 2 | ============================ 3 | 4 | .. automodule:: pyats.easypy.runinfo 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.easypy.runinfo.base 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | 19 | .. automodule:: pyats.easypy.runinfo.jenkins 20 | :members: 21 | :undoc-members: 22 | :show-inheritance: 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /docs/apidoc/utils/pyats.utils.fileutils.plugins.localhost.curl.tftp.rst: -------------------------------------------------------------------------------- 1 | pyats.utils.fileutils.plugins.localhost.curl.tftp package 2 | ========================================================= 3 | 4 | .. automodule:: pyats.utils.fileutils.plugins.localhost.curl.tftp 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.utils.fileutils.plugins.localhost.curl.tftp.fileutils 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | -------------------------------------------------------------------------------- /docs/datastructures/index.rst: -------------------------------------------------------------------------------- 1 | Datastructures 2 | ============== 3 | 4 | This section provides details on datastructures introduced & maintained as part 5 | of the pyATS infrastructure. These new datastructures are used as part of the 6 | pyATS source code, and may prove to be useful in our users' day to day coding. 7 | 8 | 9 | .. toctree:: 10 | :maxdepth: 2 11 | 12 | attrdict 13 | weaklist 14 | listdict 15 | orderabledict 16 | logic 17 | configuration 18 | 19 | .. sectionauthor:: Siming Yuan 20 | -------------------------------------------------------------------------------- /docs/changelog/2017/oct.rst: -------------------------------------------------------------------------------- 1 | October 2017 2 | ============ 3 | 4 | Oct 1, 2017 5 | ----------- 6 | 7 | .. csv-table:: New Module Versions 8 | :header: "Modules", "Versions" 9 | 10 | ``ats.kleenex``, v3.3.3 11 | ``ats.easypy``, v3.3.7 12 | 13 | 14 | Upgrade Instructions 15 | ^^^^^^^^^^^^^^^^^^^^ 16 | 17 | .. code-block:: bash 18 | 19 | bash$ pip install --upgrade ats.kleenex ats.easypy 20 | 21 | Changes 22 | ^^^^^^^ 23 | 24 | - Kleenex, Easypy 25 | 26 | - Bug fix for just-in-time bringup orchestrator clean generation. 27 | -------------------------------------------------------------------------------- /docs/apidoc/core/pyats.cli.commands.version.rst: -------------------------------------------------------------------------------- 1 | pyats.cli.commands.version package 2 | ================================== 3 | 4 | .. automodule:: pyats.cli.commands.version 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.cli.commands.version.check 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | 19 | .. automodule:: pyats.cli.commands.version.update 20 | :members: 21 | :undoc-members: 22 | :show-inheritance: 23 | 24 | -------------------------------------------------------------------------------- /docs/apidoc/aereport/pyats.aereport.exceptions.rst: -------------------------------------------------------------------------------- 1 | pyats.aereport.exceptions package 2 | ================================= 3 | 4 | .. automodule:: pyats.aereport.exceptions 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.aereport.exceptions.aereport_errors 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | 19 | .. automodule:: pyats.aereport.exceptions.utils_errors 20 | :members: 21 | :undoc-members: 22 | :show-inheritance: 23 | 24 | -------------------------------------------------------------------------------- /docs/apidoc/aereport/pyats.aereport.tsinitinfo.params.rst: -------------------------------------------------------------------------------- 1 | pyats.aereport.tsinitinfo.params package 2 | ======================================== 3 | 4 | .. automodule:: pyats.aereport.tsinitinfo.params 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Subpackages 10 | ----------- 11 | 12 | .. toctree:: 13 | 14 | pyats.aereport.tsinitinfo.params.report 15 | 16 | Submodules 17 | ---------- 18 | 19 | 20 | .. automodule:: pyats.aereport.tsinitinfo.params.maxlimit 21 | :members: 22 | :undoc-members: 23 | :show-inheritance: 24 | 25 | -------------------------------------------------------------------------------- /docs/apidoc/utils/pyats.utils.fileutils.rst: -------------------------------------------------------------------------------- 1 | pyats.utils.fileutils package 2 | ============================= 3 | 4 | .. automodule:: pyats.utils.fileutils 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Subpackages 10 | ----------- 11 | 12 | .. toctree:: 13 | 14 | pyats.utils.fileutils.bases 15 | pyats.utils.fileutils.core 16 | pyats.utils.fileutils.plugins 17 | 18 | Submodules 19 | ---------- 20 | 21 | 22 | .. automodule:: pyats.utils.fileutils.exceptions 23 | :members: 24 | :undoc-members: 25 | :show-inheritance: 26 | 27 | -------------------------------------------------------------------------------- /docs/apidoc/aereport/pyats.aereport.testscriptinitinfo.rst: -------------------------------------------------------------------------------- 1 | pyats.aereport.testscriptinitinfo package 2 | ========================================= 3 | 4 | .. automodule:: pyats.aereport.testscriptinitinfo 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Subpackages 10 | ----------- 11 | 12 | .. toctree:: 13 | 14 | pyats.aereport.testscriptinitinfo.script 15 | 16 | Submodules 17 | ---------- 18 | 19 | 20 | .. automodule:: pyats.aereport.testscriptinitinfo.testscriptaehandler 21 | :members: 22 | :undoc-members: 23 | :show-inheritance: 24 | 25 | -------------------------------------------------------------------------------- /docs/apidoc/async/index.rst: -------------------------------------------------------------------------------- 1 | pyats.async package 2 | =================== 3 | 4 | .. automodule:: pyats.async_ 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | .. automodule:: pyats.async_.exceptions 13 | :members: 14 | :undoc-members: 15 | :show-inheritance: 16 | 17 | 18 | .. automodule:: pyats.async_.parallelcall 19 | :members: 20 | :undoc-members: 21 | :show-inheritance: 22 | 23 | 24 | .. automodule:: pyats.async_.synchronize 25 | :members: 26 | :undoc-members: 27 | :show-inheritance: 28 | -------------------------------------------------------------------------------- /docs/changelog/2017/dec.rst: -------------------------------------------------------------------------------- 1 | December 2017 2 | ============= 3 | 4 | 5 | Dec 4, 2017 6 | ----------- 7 | 8 | .. csv-table:: New Module Versions 9 | :header: "Modules", "Versions" 10 | 11 | ``ats.easypy``, v3.3.10 12 | 13 | 14 | Upgrade Instructions 15 | ^^^^^^^^^^^^^^^^^^^^ 16 | 17 | .. code-block:: bash 18 | 19 | bash$ pip install --upgrade ats.easypy 20 | 21 | Changes 22 | ^^^^^^^ 23 | 24 | - fixed a bug with easypy integration & Jenkins, where if ``-xunit`` argument 25 | is enabled with pyATS Jenkins plugin, an exception is thrown regarding TRADe 26 | log url 27 | -------------------------------------------------------------------------------- /docs/changelog/2020/nov.rst: -------------------------------------------------------------------------------- 1 | November 2020 2 | ============= 3 | 4 | November 3, 2020 5 | ---------------- 6 | 7 | .. csv-table:: New Module Versions 8 | :header: "Modules", "Versions" 9 | 10 | ``pyats.reporter``, v20.10.1 11 | 12 | 13 | Upgrade Instructions 14 | ^^^^^^^^^^^^^^^^^^^^ 15 | 16 | .. code-block:: bash 17 | 18 | # DevNet Community 19 | bash$ pip install --upgrade pyats.reporter 20 | 21 | # Cisco Internal Developers 22 | bash$ pip install --upgrade ats.reporter 23 | 24 | Changes 25 | - adding `totaltasks` value to testsuite in results file 26 | -------------------------------------------------------------------------------- /docs/apidoc/results/index.rst: -------------------------------------------------------------------------------- 1 | pyats.results package 2 | ===================== 3 | 4 | .. automodule:: pyats.results 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.results.context 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | 19 | .. automodule:: pyats.results.counter 20 | :members: 21 | :undoc-members: 22 | :show-inheritance: 23 | 24 | 25 | .. automodule:: pyats.results.result 26 | :members: 27 | :undoc-members: 28 | :show-inheritance: 29 | 30 | -------------------------------------------------------------------------------- /docs/results/index.rst: -------------------------------------------------------------------------------- 1 | 2 | .. highlightlang:: python 3 | 4 | .. _result_objects: 5 | 6 | Result Objects 7 | ============== 8 | 9 | .. warning:: 10 | 11 | Results are no longer singletons. Any comparisons using ``is`` will no 12 | longer be valid. 13 | 14 | This guide will cover the basics of how pyATS results work: the different types 15 | of results, their corresponding code, and how they roll up together. 16 | 17 | 18 | .. toctree:: 19 | :maxdepth: 2 20 | 21 | introduction 22 | objects 23 | rollup 24 | 25 | 26 | .. sectionauthor:: Siming Yuan 27 | -------------------------------------------------------------------------------- /docs/changelog/2016/march.rst: -------------------------------------------------------------------------------- 1 | March 2016 2 | ========== 3 | 4 | .. warning:: 5 | 6 | Starting Jan 1st, 2016, Python 2.x is no longer supported by pyATS. All 7 | development features & bug fixes will only be released for Python 3.x+ 8 | versions. 9 | 10 | Please upgrade your Python dependencies as soon as possible. 11 | 12 | March 26, 2016 13 | -------------- 14 | 15 | .. csv-table:: New Module Versions 16 | :header: "Modules", "Versions" 17 | 18 | ``ats.aereport``, v2.2.1 19 | 20 | Bug Fixes 21 | ^^^^^^^^^ 22 | 23 | * Description field is now supported for commonsubsections. 24 | -------------------------------------------------------------------------------- /docs/apidoc/aereport/pyats.aereport.iou.rst: -------------------------------------------------------------------------------- 1 | pyats.aereport.iou package 2 | ========================== 3 | 4 | .. automodule:: pyats.aereport.iou 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Subpackages 10 | ----------- 11 | 12 | .. toctree:: 13 | 14 | pyats.aereport.iou.diou 15 | 16 | Submodules 17 | ---------- 18 | 19 | 20 | .. automodule:: pyats.aereport.iou.iouinitinfo 21 | :members: 22 | :undoc-members: 23 | :show-inheritance: 24 | 25 | 26 | .. automodule:: pyats.aereport.iou.ioulive 27 | :members: 28 | :undoc-members: 29 | :show-inheritance: 30 | 31 | -------------------------------------------------------------------------------- /docs/changelog/2018/july.rst: -------------------------------------------------------------------------------- 1 | July 18, 2018 2 | ------------- 3 | 4 | .. csv-table:: New Module Versions 5 | :header: "Modules", "Versions" 6 | 7 | ``ats.easypy``, v4.1.9 8 | 9 | Upgrade Instructions 10 | ^^^^^^^^^^^^^^^^^^^^ 11 | 12 | .. code-block:: bash 13 | 14 | # DevNet Community 15 | bash$ pip install --upgrade pyats.easypy 16 | 17 | # Cisco Internal Developers 18 | bash$ pip install --upgrade ats.easypy 19 | 20 | Changes 21 | ^^^^^^^ 22 | 23 | - fixed a bug where sometimes email generation crashes when error message 24 | contains strings that confuses the formatter 25 | -------------------------------------------------------------------------------- /docs/changelog/2020/jan.rst: -------------------------------------------------------------------------------- 1 | January 2020 2 | ============ 3 | 4 | 5 | Jan 26, 2020 6 | ------------ 7 | 8 | .. csv-table:: New Module Versions 9 | :header: "Modules", "Versions" 10 | 11 | ``pyats.log``, v19.12.1 12 | 13 | 14 | Upgrade Instructions 15 | ^^^^^^^^^^^^^^^^^^^^ 16 | 17 | .. code-block:: bash 18 | 19 | # DevNet Community 20 | bash$ pip install --upgrade pyats.log 21 | 22 | # Cisco Internal Developers 23 | bash$ pip install --upgrade ats.log 24 | 25 | Changes 26 | ^^^^^^^ 27 | 28 | - fixed not properly opening browser automatically in linux environments. 29 | 30 | -------------------------------------------------------------------------------- /docs/changelog/2020/mar.rst: -------------------------------------------------------------------------------- 1 | March 2020 2 | ========== 3 | 4 | Mar 3, 2020 5 | ----------- 6 | 7 | .. csv-table:: New Module Versions 8 | :header: "Modules", "Version" 9 | 10 | ``pyats.reporter``, v20.2.2 11 | 12 | 13 | Upgrade Instructions 14 | ^^^^^^^^^^^^^^^^^^^^ 15 | 16 | .. code-block:: bash 17 | 18 | # DevNet Community 19 | bash$ pip install --upgrade pyats.reporter 20 | 21 | # Cisco Internal Developers 22 | bash$ pip install --upgrade ats.reporter 23 | 24 | Changes 25 | ^^^^^^^ 26 | 27 | Reporter 28 | - No longer dumping arbitrary object __dict__ to results.yaml 29 | 30 | -------------------------------------------------------------------------------- /docs/resources/index.rst: -------------------------------------------------------------------------------- 1 | Resources 2 | ========= 3 | 4 | This section aims to provide additional Python-relevant resources to the user 5 | base. Keep in mind that Python is an open-source development language, and 6 | thus the best help is usually found on-line via search engines. 7 | 8 | .. note:: 9 | 10 | all resources pointed here not for your information only. They are not part 11 | of pyATS, and thus will not be supported by the pyATS team. 12 | 13 | 14 | .. toctree:: 15 | :maxdepth: 2 16 | 17 | testbench 18 | debugging 19 | 20 | .. sectionauthor:: Siming Yuan 21 | -------------------------------------------------------------------------------- /docs/cli/index.rst: -------------------------------------------------------------------------------- 1 | .. _pyats_cli: 2 | 3 | Command Line Tools 4 | ================== 5 | 6 | pyATS comes out of box with a series of command-line utilities. Below is the 7 | complete list of the built-in CLIs. Click to view their detailed documentation 8 | and usage. 9 | 10 | 11 | .. toctree:: 12 | :maxdepth: 1 13 | 14 | pyats 15 | pyats_create 16 | pyats_develop 17 | pyats_logs 18 | pyats_migrate 19 | pyats_run 20 | pyats_secret 21 | pyats_shell 22 | pyats_undevelop 23 | pyats_validate 24 | pyats_version 25 | 26 | .. sectionauthor:: Siming Yuan 27 | -------------------------------------------------------------------------------- /docs/changelog/2016/april.rst: -------------------------------------------------------------------------------- 1 | April 2016 2 | ========== 3 | 4 | .. warning:: 5 | 6 | Starting Jan 1st, 2016, Python 2.x is no longer supported by pyATS. All 7 | development features & bug fixes will only be released for Python 3.x+ 8 | versions. 9 | 10 | Please upgrade your Python dependencies as soon as possible. 11 | 12 | April 8, 2016 13 | ------------- 14 | 15 | .. csv-table:: New Module Versions 16 | :header: "Modules", "Versions" 17 | 18 | ``ats.connections``, v2.2.1 19 | 20 | Bug Fixes 21 | ^^^^^^^^^ 22 | 23 | * added ``--width 2014`` option to csccon integration with XRUT. 24 | 25 | -------------------------------------------------------------------------------- /docs/apidoc/robot/pyats.robot.runner.rst: -------------------------------------------------------------------------------- 1 | pyats.robot.runner package 2 | ========================== 3 | 4 | .. automodule:: pyats.robot.runner 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.robot.runner.harness 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | 19 | .. automodule:: pyats.robot.runner.listener 20 | :members: 21 | :undoc-members: 22 | :show-inheritance: 23 | 24 | 25 | .. automodule:: pyats.robot.runner.task 26 | :members: 27 | :undoc-members: 28 | :show-inheritance: 29 | 30 | -------------------------------------------------------------------------------- /docs/apidoc/utils/pyats.utils.fileutils.plugins.localhost.curl.rst: -------------------------------------------------------------------------------- 1 | pyats.utils.fileutils.plugins.localhost.curl package 2 | ==================================================== 3 | 4 | .. automodule:: pyats.utils.fileutils.plugins.localhost.curl 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Subpackages 10 | ----------- 11 | 12 | .. toctree:: 13 | 14 | pyats.utils.fileutils.plugins.localhost.curl.tftp 15 | 16 | Submodules 17 | ---------- 18 | 19 | 20 | .. automodule:: pyats.utils.fileutils.plugins.localhost.curl.fileutils 21 | :members: 22 | :undoc-members: 23 | :show-inheritance: 24 | 25 | -------------------------------------------------------------------------------- /docs/apidoc/aereport/pyats.aereport.initinfo.rst: -------------------------------------------------------------------------------- 1 | pyats.aereport.initinfo package 2 | =============================== 3 | 4 | .. automodule:: pyats.aereport.initinfo 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Subpackages 10 | ----------- 11 | 12 | .. toctree:: 13 | 14 | pyats.aereport.initinfo.id 15 | 16 | Submodules 17 | ---------- 18 | 19 | 20 | .. automodule:: pyats.aereport.initinfo.interface 21 | :members: 22 | :undoc-members: 23 | :show-inheritance: 24 | 25 | 26 | .. automodule:: pyats.aereport.initinfo.uut 27 | :members: 28 | :undoc-members: 29 | :show-inheritance: 30 | 31 | -------------------------------------------------------------------------------- /docs/apidoc/aetest/pyats.aetest.steps.rst: -------------------------------------------------------------------------------- 1 | pyats.aetest.steps package 2 | ========================== 3 | 4 | .. automodule:: pyats.aetest.steps 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.aetest.steps.implementation 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | 19 | .. automodule:: pyats.aetest.steps.loader 20 | :members: 21 | :undoc-members: 22 | :show-inheritance: 23 | 24 | 25 | .. automodule:: pyats.aetest.steps.schema 26 | :members: 27 | :undoc-members: 28 | :show-inheritance: 29 | 30 | -------------------------------------------------------------------------------- /docs/apidoc/easypy/pyats.easypy.reporter.rst: -------------------------------------------------------------------------------- 1 | pyats.easypy.reporter package 2 | ============================= 3 | 4 | .. automodule:: pyats.easypy.reporter 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.easypy.reporter.ae 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | 19 | .. automodule:: pyats.easypy.reporter.base 20 | :members: 21 | :undoc-members: 22 | :show-inheritance: 23 | 24 | 25 | .. automodule:: pyats.easypy.reporter.context 26 | :members: 27 | :undoc-members: 28 | :show-inheritance: 29 | 30 | -------------------------------------------------------------------------------- /docs/apidoc/aetest/pyats.aetest.reporter.rst: -------------------------------------------------------------------------------- 1 | pyats.aetest.reporter package 2 | ============================= 3 | 4 | .. automodule:: pyats.aetest.reporter 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.aetest.reporter.aereport 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | 19 | .. automodule:: pyats.aetest.reporter.base 20 | :members: 21 | :undoc-members: 22 | :show-inheritance: 23 | 24 | 25 | .. automodule:: pyats.aetest.reporter.default 26 | :members: 27 | :undoc-members: 28 | :show-inheritance: 29 | 30 | -------------------------------------------------------------------------------- /docs/apidoc/aereport/pyats.aereport.runinfo.rst: -------------------------------------------------------------------------------- 1 | pyats.aereport.runinfo package 2 | ============================== 3 | 4 | .. automodule:: pyats.aereport.runinfo 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.aereport.runinfo.abort 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | 19 | .. automodule:: pyats.aereport.runinfo.device 20 | :members: 21 | :undoc-members: 22 | :show-inheritance: 23 | 24 | 25 | .. automodule:: pyats.aereport.runinfo.userdef 26 | :members: 27 | :undoc-members: 28 | :show-inheritance: 29 | 30 | -------------------------------------------------------------------------------- /docs/apidoc/utils/pyats.utils.import_utils.rst: -------------------------------------------------------------------------------- 1 | pyats.utils.import\_utils package 2 | ================================= 3 | 4 | .. automodule:: pyats.utils.import_utils 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.utils.import_utils.flex 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | 19 | .. automodule:: pyats.utils.import_utils.legacy 20 | :members: 21 | :undoc-members: 22 | :show-inheritance: 23 | 24 | 25 | .. automodule:: pyats.utils.import_utils.misc 26 | :members: 27 | :undoc-members: 28 | :show-inheritance: 29 | 30 | -------------------------------------------------------------------------------- /docs/apidoc/aereport/pyats.aereport.results.rst: -------------------------------------------------------------------------------- 1 | pyats.aereport.results package 2 | ============================== 3 | 4 | .. automodule:: pyats.aereport.results 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.aereport.results.resultsummary 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | 19 | .. automodule:: pyats.aereport.results.rollupresult 20 | :members: 21 | :undoc-members: 22 | :show-inheritance: 23 | 24 | 25 | .. automodule:: pyats.aereport.results.summary 26 | :members: 27 | :undoc-members: 28 | :show-inheritance: 29 | 30 | -------------------------------------------------------------------------------- /docs/apidoc/log/pyats.log.commands.parser.rst: -------------------------------------------------------------------------------- 1 | pyats.log.commands.parser package 2 | ================================= 3 | 4 | .. automodule:: pyats.log.commands.parser 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.log.commands.parser.base_parser 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | 19 | .. automodule:: pyats.log.commands.parser.xml_parser 20 | :members: 21 | :undoc-members: 22 | :show-inheritance: 23 | 24 | 25 | .. automodule:: pyats.log.commands.parser.yaml_parser 26 | :members: 27 | :undoc-members: 28 | :show-inheritance: 29 | 30 | -------------------------------------------------------------------------------- /docs/changelog/2018/nov.rst: -------------------------------------------------------------------------------- 1 | November 2018 2 | ============= 3 | 4 | Nov 19, 2018 5 | ------------ 6 | 7 | .. csv-table:: New Module Versions 8 | :header: "Modules", "Versions" 9 | 10 | ``pyats.utils``, v5.0.3 11 | ``pyats.cisco``, v5.0.3 (internal only) 12 | 13 | 14 | Upgrade Instructions 15 | ^^^^^^^^^^^^^^^^^^^^ 16 | 17 | .. code-block:: bash 18 | 19 | # DevNet Community 20 | bash$ pip install --upgrade pyats.utils 21 | 22 | # Cisco Internal Developers 23 | bash$ pip install --upgrade ats.utils ats.cisco 24 | 25 | Changes 26 | ^^^^^^^ 27 | 28 | - `Operator` for the `Find` apis are now copyable. 29 | - removed httplib2 dependency and now uses requests instead 30 | -------------------------------------------------------------------------------- /docs/aetest/index.rst: -------------------------------------------------------------------------------- 1 | 2 | .. highlightlang:: python 3 | 4 | .. _aetest_index: 5 | 6 | AEtest - Test Infrastructure 7 | ============================ 8 | 9 | This user guide will cover the basics of AEtest: where it came about, what a 10 | typical test script looks like, and introduce the various sections and building 11 | blocks. 12 | 13 | 14 | .. toctree:: 15 | :maxdepth: 2 16 | 17 | introduction 18 | structure 19 | objects 20 | behavior 21 | parameters 22 | loop 23 | retry 24 | results 25 | steps 26 | run 27 | processors 28 | datafile 29 | control 30 | reports 31 | debugging 32 | examples 33 | 34 | .. sectionauthor:: Siming Yuan 35 | -------------------------------------------------------------------------------- /docs/apidoc/log/pyats.log.commands.rst: -------------------------------------------------------------------------------- 1 | pyats.log.commands package 2 | ========================== 3 | 4 | .. automodule:: pyats.log.commands 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Subpackages 10 | ----------- 11 | 12 | .. toctree:: 13 | 14 | pyats.log.commands.parser 15 | 16 | Submodules 17 | ---------- 18 | 19 | 20 | .. automodule:: pyats.log.commands.archive 21 | :members: 22 | :undoc-members: 23 | :show-inheritance: 24 | 25 | 26 | .. automodule:: pyats.log.commands.logs 27 | :members: 28 | :undoc-members: 29 | :show-inheritance: 30 | 31 | 32 | .. automodule:: pyats.log.commands.server 33 | :members: 34 | :undoc-members: 35 | :show-inheritance: 36 | 37 | -------------------------------------------------------------------------------- /docs/apidoc/connections/index.rst: -------------------------------------------------------------------------------- 1 | pyats.connections package 2 | ========================= 3 | 4 | .. automodule:: pyats.connections 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.connections.bases 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | 19 | .. automodule:: pyats.connections.hooks 20 | :members: 21 | :undoc-members: 22 | :show-inheritance: 23 | 24 | 25 | .. automodule:: pyats.connections.manager 26 | :members: 27 | :undoc-members: 28 | :show-inheritance: 29 | 30 | 31 | .. automodule:: pyats.connections.pool 32 | :members: 33 | :undoc-members: 34 | :show-inheritance: 35 | 36 | -------------------------------------------------------------------------------- /docs/apidoc/utils/pyats.utils.yaml.rst: -------------------------------------------------------------------------------- 1 | pyats.utils.yaml package 2 | ======================== 3 | 4 | .. automodule:: pyats.utils.yaml 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.utils.yaml.dumper 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | 19 | .. automodule:: pyats.utils.yaml.exceptions 20 | :members: 21 | :undoc-members: 22 | :show-inheritance: 23 | 24 | 25 | .. automodule:: pyats.utils.yaml.loader 26 | :members: 27 | :undoc-members: 28 | :show-inheritance: 29 | 30 | 31 | .. automodule:: pyats.utils.yaml.markup 32 | :members: 33 | :undoc-members: 34 | :show-inheritance: 35 | 36 | -------------------------------------------------------------------------------- /docs/apidoc/utils/pyats.utils.fileutils.plugins.localhost.rst: -------------------------------------------------------------------------------- 1 | pyats.utils.fileutils.plugins.localhost package 2 | =============================================== 3 | 4 | .. automodule:: pyats.utils.fileutils.plugins.localhost 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Subpackages 10 | ----------- 11 | 12 | .. toctree:: 13 | 14 | pyats.utils.fileutils.plugins.localhost.curl 15 | pyats.utils.fileutils.plugins.localhost.ftp 16 | pyats.utils.fileutils.plugins.localhost.scp 17 | pyats.utils.fileutils.plugins.localhost.sftp 18 | 19 | Submodules 20 | ---------- 21 | 22 | 23 | .. automodule:: pyats.utils.fileutils.plugins.localhost.fileutils 24 | :members: 25 | :undoc-members: 26 | :show-inheritance: 27 | 28 | -------------------------------------------------------------------------------- /docs/apidoc/easypy/pyats.easypy.config.rst: -------------------------------------------------------------------------------- 1 | pyats.easypy.config package 2 | =========================== 3 | 4 | .. automodule:: pyats.easypy.config 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.easypy.config.defaults 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | 19 | .. automodule:: pyats.easypy.config.loader 20 | :members: 21 | :undoc-members: 22 | :show-inheritance: 23 | 24 | 25 | .. automodule:: pyats.easypy.config.manager 26 | :members: 27 | :undoc-members: 28 | :show-inheritance: 29 | 30 | 31 | .. automodule:: pyats.easypy.config.schema 32 | :members: 33 | :undoc-members: 34 | :show-inheritance: 35 | 36 | -------------------------------------------------------------------------------- /docs/apidoc/log/index.rst: -------------------------------------------------------------------------------- 1 | pyats.log package 2 | ================= 3 | 4 | .. automodule:: pyats.log 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Subpackages 10 | ----------- 11 | 12 | .. toctree:: 13 | 14 | pyats.log.commands 15 | pyats.atslog 16 | 17 | Submodules 18 | ---------- 19 | 20 | 21 | .. automodule:: pyats.log.cisco 22 | :members: 23 | :undoc-members: 24 | :show-inheritance: 25 | 26 | 27 | .. automodule:: pyats.log.colour 28 | :members: 29 | :undoc-members: 30 | :show-inheritance: 31 | 32 | 33 | .. automodule:: pyats.log.utils 34 | :members: 35 | :undoc-members: 36 | :show-inheritance: 37 | 38 | 39 | .. automodule:: pyats.log.warnings 40 | :members: 41 | :undoc-members: 42 | :show-inheritance: 43 | 44 | -------------------------------------------------------------------------------- /docs/changelog/2018/jan.rst: -------------------------------------------------------------------------------- 1 | January 2018 2 | ============ 3 | 4 | Jan 8, 2018 5 | ----------- 6 | 7 | .. csv-table:: New Module Versions 8 | :header: "Modules", "Versions" 9 | 10 | ``ats.aetest``, v3.3.4 11 | ``ats.tims``, v3.3.2 12 | 13 | 14 | Upgrade Instructions 15 | ^^^^^^^^^^^^^^^^^^^^ 16 | 17 | .. code-block:: bash 18 | 19 | bash$ pip install --upgrade ats.aetest 20 | bash$ pip install --upgrade ats.tims 21 | 22 | Changes 23 | ^^^^^^^ 24 | 25 | - Now detecting and truncating excessively long filenames when writing to 26 | runinfo/taskresults. These files now contain the full name if truncation 27 | occurs. 28 | 29 | - Minor refactoring, provide warning and filter out unpicklable characters 30 | when attempting to generate TIMS results file. 31 | -------------------------------------------------------------------------------- /docs/apidoc/aereport/pyats.aereport.testsuite.rst: -------------------------------------------------------------------------------- 1 | pyats.aereport.testsuite package 2 | ================================ 3 | 4 | .. automodule:: pyats.aereport.testsuite 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.aereport.testsuite.clean 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | 19 | .. automodule:: pyats.aereport.testsuite.jobexecution 20 | :members: 21 | :undoc-members: 22 | :show-inheritance: 23 | 24 | 25 | .. automodule:: pyats.aereport.testsuite.mailattachment 26 | :members: 27 | :undoc-members: 28 | :show-inheritance: 29 | 30 | 31 | .. automodule:: pyats.aereport.testsuite.tsabort 32 | :members: 33 | :undoc-members: 34 | :show-inheritance: 35 | 36 | -------------------------------------------------------------------------------- /docs/apidoc/aereport/pyats.aereport.toplevel.rst: -------------------------------------------------------------------------------- 1 | pyats.aereport.toplevel package 2 | =============================== 3 | 4 | .. automodule:: pyats.aereport.toplevel 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.aereport.toplevel.aereport_top 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | 19 | .. automodule:: pyats.aereport.toplevel.aereportelement 20 | :members: 21 | :undoc-members: 22 | :show-inheritance: 23 | 24 | 25 | .. automodule:: pyats.aereport.toplevel.decorators 26 | :members: 27 | :undoc-members: 28 | :show-inheritance: 29 | 30 | 31 | .. automodule:: pyats.aereport.toplevel.simplelist 32 | :members: 33 | :undoc-members: 34 | :show-inheritance: 35 | 36 | -------------------------------------------------------------------------------- /docs/apidoc/core/index.rst: -------------------------------------------------------------------------------- 1 | pyats.cli package 2 | ================= 3 | 4 | .. automodule:: pyats.cli 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Subpackages 10 | ----------- 11 | 12 | .. toctree:: 13 | 14 | pyats.cli.commands 15 | 16 | Submodules 17 | ---------- 18 | 19 | 20 | .. automodule:: pyats.cli.base 21 | :members: 22 | :undoc-members: 23 | :show-inheritance: 24 | 25 | 26 | .. automodule:: pyats.cli.core 27 | :members: 28 | :undoc-members: 29 | :show-inheritance: 30 | 31 | 32 | .. automodule:: pyats.cli.formatter 33 | :members: 34 | :undoc-members: 35 | :show-inheritance: 36 | 37 | 38 | .. automodule:: pyats.cli.parser 39 | :members: 40 | :undoc-members: 41 | :show-inheritance: 42 | 43 | 44 | .. automodule:: pyats.cli.utils 45 | :members: 46 | :undoc-members: 47 | :show-inheritance: 48 | 49 | -------------------------------------------------------------------------------- /docs/changelog/2016/december.rst: -------------------------------------------------------------------------------- 1 | December 2016 2 | ============= 3 | 4 | December 13, 2016 5 | ----------------- 6 | 7 | .. csv-table:: New Module Versions 8 | :header: "Modules", "Versions" 9 | 10 | ``ats.aetest``, v3.2.1 11 | 12 | 13 | Upgrade Instructions 14 | ^^^^^^^^^^^^^^^^^^^^ 15 | 16 | .. code-block:: bash 17 | 18 | bash$ pip install --upgrade ats.aetest 19 | 20 | 21 | Changes 22 | ^^^^^^^ 23 | 24 | - Fixed a bug where pause on phrase with email would always pause twice. 25 | 26 | 27 | December 5, 2016 28 | ---------------- 29 | 30 | .. csv-table:: New Module Versions 31 | :header: "Modules", "Versions" 32 | 33 | ``ats.templates``, v3.2.1 34 | 35 | 36 | Upgrade Instructions 37 | ^^^^^^^^^^^^^^^^^^^^ 38 | 39 | .. code-block:: bash 40 | 41 | bash$ pip install --upgrade ats.templates 42 | 43 | 44 | Changes 45 | ^^^^^^^ 46 | 47 | - Fixed a syntax error reported by a user. 48 | -------------------------------------------------------------------------------- /docs/apidoc/reporter/index.rst: -------------------------------------------------------------------------------- 1 | pyats.reporter package 2 | ====================== 3 | 4 | .. automodule:: pyats.reporter 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.reporter.base 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | 19 | .. automodule:: pyats.reporter.client 20 | :members: 21 | :undoc-members: 22 | :show-inheritance: 23 | 24 | 25 | .. automodule:: pyats.reporter.exceptions 26 | :members: 27 | :undoc-members: 28 | :show-inheritance: 29 | 30 | 31 | .. automodule:: pyats.reporter.server 32 | :members: 33 | :undoc-members: 34 | :show-inheritance: 35 | 36 | 37 | .. automodule:: pyats.reporter.testsuite 38 | :members: 39 | :undoc-members: 40 | :show-inheritance: 41 | 42 | 43 | .. automodule:: pyats.reporter.xmlreport 44 | :members: 45 | :undoc-members: 46 | :show-inheritance: 47 | 48 | -------------------------------------------------------------------------------- /docs/changelog/2016/october.rst: -------------------------------------------------------------------------------- 1 | October 2016 2 | ============ 3 | 4 | October 27, 2016 5 | ---------------- 6 | 7 | 8 | .. csv-table:: New Module Versions 9 | :header: "Modules", "Versions" 10 | 11 | ``ats.aetest``, v3.1.1 12 | 13 | 14 | Upgrade Instructions 15 | ^^^^^^^^^^^^^^^^^^^^ 16 | 17 | .. code-block:: bash 18 | 19 | bash$ pip install --upgrade ats.aetest 20 | 21 | 22 | Changes 23 | ^^^^^^^ 24 | 25 | - fix a bug in AEtest where pause on phrase email was not getting sent 26 | 27 | 28 | October 5, 2016 29 | --------------- 30 | 31 | .. csv-table:: New Module Versions 32 | :header: "Modules", "Versions" 33 | 34 | ``ats.utils``, v3.1.1 35 | 36 | Upgrade Instructions 37 | ^^^^^^^^^^^^^^^^^^^^ 38 | 39 | .. code-block:: bash 40 | 41 | bash$ pip install --upgrade ats.utils 42 | 43 | Changes 44 | ^^^^^^^ 45 | 46 | - Add default html templates to utils package data. These html files were 47 | missing in user instances. -------------------------------------------------------------------------------- /docs/apidoc/core/pyats.cli.commands.rst: -------------------------------------------------------------------------------- 1 | pyats.cli.commands package 2 | ========================== 3 | 4 | .. automodule:: pyats.cli.commands 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Subpackages 10 | ----------- 11 | 12 | .. toctree:: 13 | 14 | pyats.cli.commands.version 15 | 16 | Submodules 17 | ---------- 18 | 19 | 20 | .. automodule:: pyats.cli.commands.create 21 | :members: 22 | :undoc-members: 23 | :show-inheritance: 24 | 25 | 26 | .. automodule:: pyats.cli.commands.run 27 | :members: 28 | :undoc-members: 29 | :show-inheritance: 30 | 31 | 32 | .. automodule:: pyats.cli.commands.secret 33 | :members: 34 | :undoc-members: 35 | :show-inheritance: 36 | 37 | 38 | .. automodule:: pyats.cli.commands.shell 39 | :members: 40 | :undoc-members: 41 | :show-inheritance: 42 | 43 | 44 | .. automodule:: pyats.cli.commands.validate 45 | :members: 46 | :undoc-members: 47 | :show-inheritance: 48 | 49 | -------------------------------------------------------------------------------- /docs/changelog/2017/february.rst: -------------------------------------------------------------------------------- 1 | 2 | February 2017 3 | ============= 4 | 5 | February 17, 2017 6 | ----------------- 7 | 8 | .. csv-table:: New Module Versions 9 | :header: "Modules", "Versions" 10 | 11 | ``ats.topology``, v3.2.2 12 | 13 | 14 | Upgrade Instructions 15 | ^^^^^^^^^^^^^^^^^^^^ 16 | 17 | .. code-block:: bash 18 | 19 | bash$ pip install --upgrade ats.topology 20 | 21 | 22 | Changes 23 | ^^^^^^^ 24 | 25 | - Fixed a unit test / CI failure occuring after a dependent server 26 | moved to the data center. 27 | 28 | 29 | February 1, 2017 30 | ---------------- 31 | 32 | .. csv-table:: New Module Versions 33 | :header: "Modules", "Versions" 34 | 35 | ``ats.easypy``, v3.2.2 36 | 37 | 38 | Upgrade Instructions 39 | ^^^^^^^^^^^^^^^^^^^^ 40 | 41 | .. code-block:: bash 42 | 43 | bash$ pip install --upgrade ats.easypy 44 | 45 | 46 | Changes 47 | ^^^^^^^ 48 | 49 | - Fixed a rerun issue seen when a testscript was specified via 50 | relative pathname. 51 | 52 | -------------------------------------------------------------------------------- /docs/changelog/2017/june.rst: -------------------------------------------------------------------------------- 1 | June 2017 2 | ========= 3 | 4 | June 29, 2017 5 | ------------- 6 | 7 | .. csv-table:: New Module Versions 8 | :header: "Modules", "Versions" 9 | 10 | ``ats.kleenex``, v3.3.1 11 | ``ats.easypy``, v3.3.3 12 | 13 | 14 | Upgrade Instructions 15 | ^^^^^^^^^^^^^^^^^^^^ 16 | 17 | .. code-block:: bash 18 | 19 | bash$ pip install --upgrade ats.kleenex ats.easypy 20 | 21 | Changes 22 | ^^^^^^^ 23 | 24 | * Bug fix : static testbed YAML file is no longer being ignored when 25 | specified together with a logical testbed YAML file and invoked 26 | via easypy. 27 | 28 | 29 | 30 | June 15, 2017 31 | ------------- 32 | 33 | .. csv-table:: New Module Versions 34 | :header: "Modules", "Versions" 35 | 36 | ``ats.easypy``, v3.3.2 37 | 38 | 39 | Upgrade Instructions 40 | ^^^^^^^^^^^^^^^^^^^^ 41 | 42 | .. code-block:: bash 43 | 44 | bash$ pip install --upgrade ats.easypy 45 | 46 | 47 | Changes 48 | ^^^^^^^ 49 | 50 | - Downgraded the exception message for testbed topology creation to warning. 51 | 52 | -------------------------------------------------------------------------------- /docs/changelog/2023/january.rst: -------------------------------------------------------------------------------- 1 | January 2023 2 | ========== 3 | 4 | January 31 - Pyats v23.1 5 | ------------------------ 6 | 7 | 8 | 9 | .. csv-table:: New Module Versions 10 | :header: "Modules", "Version" 11 | 12 | ``pyats``, v23.1 13 | ``pyats.aereport``, v23.1 14 | ``pyats.aetest``, v23.1 15 | ``pyats.async``, v23.1 16 | ``pyats.cisco``, v23.1 17 | ``pyats.connections``, v23.1 18 | ``pyats.datastructures``, v23.1 19 | ``pyats.easypy``, v23.1 20 | ``pyats.kleenex``, v23.1 21 | ``pyats.log``, v23.1 22 | ``pyats.reporter``, v23.1 23 | ``pyats.results``, v23.1 24 | ``pyats.robot``, v23.1 25 | ``pyats.tcl``, v23.1 26 | ``pyats.topology``, v23.1 27 | ``pyats.utils``, v23.1 28 | 29 | Upgrade Instructions 30 | ^^^^^^^^^^^^^^^^^^^^ 31 | 32 | .. code-block:: bash 33 | 34 | # DevNet Community 35 | bash$ pip install --upgrade pyats 36 | 37 | # Cisco Internal Developers 38 | bash$ pip install --upgrade ats 39 | 40 | 41 | 42 | 43 | Changelogs 44 | ^^^^^^^^^^ 45 | 46 | 47 | -------------------------------------------------------------------------------- /docs/changelog/2017/aug.rst: -------------------------------------------------------------------------------- 1 | August 2017 2 | =========== 3 | 4 | Aug 31, 2017 5 | ------------ 6 | 7 | .. csv-table:: New Module Versions 8 | :header: "Modules", "Versions" 9 | 10 | ``ats.utils``, v3.3.3 11 | 12 | 13 | Upgrade Instructions 14 | ^^^^^^^^^^^^^^^^^^^^ 15 | 16 | .. code-block:: bash 17 | 18 | bash$ pip install --upgrade ats.utils 19 | 20 | Changes 21 | ^^^^^^^ 22 | 23 | * Bug fix: find API matched wrong data where syntax is used in find requirements 24 | 25 | 26 | Aug 14, 2017 27 | ------------ 28 | 29 | .. csv-table:: New Module Versions 30 | :header: "Modules", "Versions" 31 | 32 | ``ats.aereport``, v3.3.2 33 | ``ats.utils``, v3.3.2 34 | 35 | 36 | Upgrade Instructions 37 | ^^^^^^^^^^^^^^^^^^^^ 38 | 39 | .. code-block:: bash 40 | 41 | bash$ pip install --upgrade ats.aereport 42 | bash$ pip install --upgrade ats.utils 43 | 44 | Changes 45 | ^^^^^^^ 46 | 47 | * fixed a bug in AEreport where the testcase's name is not used as TIMS entry 48 | title. 49 | * Added new parameters `filter_`, `index` and `all_keys` to find API, giving 50 | users more fine-grained control on matching results. -------------------------------------------------------------------------------- /docs/changelog/2024/october.rst: -------------------------------------------------------------------------------- 1 | October 2024 2 | ========== 3 | 4 | October 29 - Pyats v24.10 5 | ------------------------ 6 | 7 | 8 | 9 | .. csv-table:: New Module Versions 10 | :header: "Modules", "Version" 11 | 12 | ``pyats``, v24.10 13 | ``pyats.aereport``, v24.10 14 | ``pyats.aetest``, v24.10 15 | ``pyats.async``, v24.10 16 | ``pyats.cisco``, v24.10 17 | ``pyats.connections``, v24.10 18 | ``pyats.datastructures``, v24.10 19 | ``pyats.easypy``, v24.10 20 | ``pyats.kleenex``, v24.10 21 | ``pyats.log``, v24.10 22 | ``pyats.reporter``, v24.10 23 | ``pyats.results``, v24.10 24 | ``pyats.robot``, v24.10 25 | ``pyats.tcl``, v24.10 26 | ``pyats.topology``, v24.10 27 | ``pyats.utils``, v24.10 28 | 29 | 30 | 31 | 32 | Changelogs 33 | ^^^^^^^^^^ 34 | -------------------------------------------------------------------------------- 35 | Fix 36 | -------------------------------------------------------------------------------- 37 | 38 | * fixed the schema for management routes 39 | * Update to add static route ipv4 40 | 41 | 42 | -------------------------------------------------------------------------------- /docs/changelog/2025/february.rst: -------------------------------------------------------------------------------- 1 | February 2025 2 | ========== 3 | 4 | February 25 - Pyats v25.2 5 | ------------------------ 6 | 7 | 8 | 9 | .. csv-table:: New Module Versions 10 | :header: "Modules", "Version" 11 | 12 | ``pyats``, v25.2 13 | ``pyats.aereport``, v25.2 14 | ``pyats.aetest``, v25.2 15 | ``pyats.async``, v25.2 16 | ``pyats.cisco``, v25.2 17 | ``pyats.connections``, v25.2 18 | ``pyats.datastructures``, v25.2 19 | ``pyats.easypy``, v25.2 20 | ``pyats.kleenex``, v25.2 21 | ``pyats.log``, v25.2 22 | ``pyats.reporter``, v25.2 23 | ``pyats.results``, v25.2 24 | ``pyats.robot``, v25.2 25 | ``pyats.tcl``, v25.2 26 | ``pyats.topology``, v25.2 27 | ``pyats.utils``, v25.2 28 | 29 | 30 | 31 | 32 | Changelogs 33 | ^^^^^^^^^^ 34 | -------------------------------------------------------------------------------- 35 | Fix 36 | -------------------------------------------------------------------------------- 37 | 38 | * devat 39 | * device compliance 40 | * update the device compliance package 41 | 42 | 43 | -------------------------------------------------------------------------------- /docs/apidoc/aetest/pyats.aetest.processors.rst: -------------------------------------------------------------------------------- 1 | pyats.aetest.processors package 2 | =============================== 3 | 4 | .. automodule:: pyats.aetest.processors 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.aetest.processors.bases 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | 19 | .. automodule:: pyats.aetest.processors.decorator 20 | :members: 21 | :undoc-members: 22 | :show-inheritance: 23 | 24 | 25 | .. automodule:: pyats.aetest.processors.exceptions 26 | :members: 27 | :undoc-members: 28 | :show-inheritance: 29 | 30 | 31 | .. automodule:: pyats.aetest.processors.handler 32 | :members: 33 | :undoc-members: 34 | :show-inheritance: 35 | 36 | 37 | .. automodule:: pyats.aetest.processors.skips 38 | :members: 39 | :undoc-members: 40 | :show-inheritance: 41 | 42 | 43 | .. automodule:: pyats.aetest.processors.store 44 | :members: 45 | :undoc-members: 46 | :show-inheritance: 47 | 48 | 49 | .. automodule:: pyats.aetest.processors.wrappers 50 | :members: 51 | :undoc-members: 52 | :show-inheritance: 53 | 54 | -------------------------------------------------------------------------------- /docs/apidoc/easypy/index.rst: -------------------------------------------------------------------------------- 1 | pyats.easypy package 2 | ==================== 3 | 4 | .. automodule:: pyats.easypy 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Subpackages 10 | ----------- 11 | 12 | .. toctree:: 13 | 14 | pyats.easypy.config 15 | pyats.easypy.plugins 16 | pyats.easypy.reporter 17 | pyats.easypy.runinfo 18 | 19 | Submodules 20 | ---------- 21 | 22 | 23 | .. automodule:: pyats.easypy.base 24 | :members: 25 | :undoc-members: 26 | :show-inheritance: 27 | 28 | 29 | .. automodule:: pyats.easypy.commands 30 | :members: 31 | :undoc-members: 32 | :show-inheritance: 33 | 34 | 35 | .. automodule:: pyats.easypy.email 36 | :members: 37 | :undoc-members: 38 | :show-inheritance: 39 | 40 | 41 | .. automodule:: pyats.easypy.job 42 | :members: 43 | :undoc-members: 44 | :show-inheritance: 45 | 46 | 47 | .. automodule:: pyats.easypy.main 48 | :members: 49 | :undoc-members: 50 | :show-inheritance: 51 | 52 | 53 | .. automodule:: pyats.easypy.tasks 54 | :members: 55 | :undoc-members: 56 | :show-inheritance: 57 | 58 | 59 | .. automodule:: pyats.easypy.utils 60 | :members: 61 | :undoc-members: 62 | :show-inheritance: 63 | 64 | -------------------------------------------------------------------------------- /docs/changelog/2016/june.rst: -------------------------------------------------------------------------------- 1 | June 2016 2 | ========= 3 | 4 | June 6, 2016 5 | ------------ 6 | 7 | .. csv-table:: New Module Versions 8 | :header: "Modules", "Versions", "Comments" 9 | 10 | ``ats.kleenex``, v3.0.6, 11 | 12 | Upgrade Instructions 13 | ^^^^^^^^^^^^^^^^^^^^ 14 | 15 | .. code-block:: bash 16 | 17 | bash$ pip install --upgrade ats.kleenex 18 | 19 | Changes 20 | ^^^^^^^ 21 | 22 | - `US58609 `_ 23 | 24 | - Fixed a failing unit test from the previously released version. 25 | 26 | 27 | June 3, 2016 28 | ------------ 29 | 30 | .. csv-table:: New Module Versions 31 | :header: "Modules", "Versions", "Comments" 32 | 33 | ``ats.easypy``, v3.0.3, 34 | ``ats.kleenex``, v3.0.5, 35 | ``ats.utils``, v3.0.1, 36 | 37 | Upgrade Instructions 38 | ^^^^^^^^^^^^^^^^^^^^ 39 | 40 | .. code-block:: bash 41 | 42 | bash$ pip install --upgrade ats.kleenex ats.utils ats.easypy 43 | 44 | Changes 45 | ^^^^^^^ 46 | 47 | - `US58609 `_ 48 | 49 | - Now allowing both uppercase and lowercase for ``-loglevel`` arguments to 50 | kleenex and easypy tools, and also for the ``-bringup_log_level`` argument. 51 | 52 | -------------------------------------------------------------------------------- /docs/changelog/index.rst: -------------------------------------------------------------------------------- 1 | 2 | .. _changelog: 3 | 4 | Changelog 5 | ========= 6 | 7 | 8 | .. toctree:: 9 | :maxdepth: 2 10 | 11 | 2025/december 12 | 2025/october 13 | 2025/september 14 | 2025/august 15 | 2025/july 16 | 2025/june 17 | 2025/may 18 | 2025/april 19 | 2025/march 20 | 2025/february 21 | 2025/january 22 | 2024/october 23 | 2024/September 24 | 2024/july 25 | 2024/june 26 | 2024/may 27 | 2024/april 28 | 2024/march 29 | 2024/february 30 | 2024/january 31 | 2023/november 32 | 2023/october 33 | 2023/september 34 | 2023/august 35 | 2023/july 36 | 2023/june 37 | 2023/may 38 | 2023/april 39 | 2023/march 40 | 2023/february 41 | 2023/january 42 | 2022/november 43 | 2022/october 44 | 2022/september 45 | 2022/august 46 | 2022/july 47 | 2022/june 48 | 2022/may 49 | 2022/april 50 | 2022/march 51 | 2022/february 52 | 2022/january 53 | 2021/december 54 | 2021/august 55 | 2021/july 56 | 2021/june 57 | 2021/may 58 | 2021/april 59 | 2021/march 60 | 2021/february 61 | 2021/january 62 | 2020/index 63 | 2019/index 64 | 2018/index 65 | 2017/index 66 | 2016/index 67 | 2015/index 68 | 2014/index 69 | -------------------------------------------------------------------------------- /docs/results/introduction.rst: -------------------------------------------------------------------------------- 1 | Introduction 2 | ============ 3 | 4 | In most test infrastructures, such as `pytest`_ and `unittest`_, test results 5 | are only available as ``pass``, ``fail`` or ``error``. This works quite well in 6 | unit and simplistic testing. However, the downside of having only three 7 | result types is the inability to describe testcase result relationships, or 8 | distinguish a test's genuine failure, versus a failure of the test script caused 9 | by mal-design/mal-coding (e.g. the testcase encountered a coding Exception). 10 | 11 | In order to accomodate complex test environments, pyATS supports more 12 | complicated result types such as "test blocked", "test skipped", "test code 13 | errored" etc, and uses objects and object relationships to describe them. These 14 | objects simplify the whole result tracking & aggregation infrastructure, and 15 | grant the ability to easily roll-up results together. 16 | 17 | .. code-block:: python 18 | 19 | # Example 20 | # ------- 21 | # 22 | # pyATS result objects 23 | 24 | from pyats.results import Passed, Failed 25 | 26 | # rolling up passed + failed yields failed 27 | Passed + Failed 28 | # Failed 29 | 30 | 31 | .. _pytest: http://pytest.org/latest/ 32 | .. _unittest: https://docs.python.org/3.4/library/unittest.html 33 | 34 | -------------------------------------------------------------------------------- /docs/robot/index.rst: -------------------------------------------------------------------------------- 1 | RobotFramework Support 2 | ====================== 3 | 4 | `RobotFramework`_ is generic Python/Java test automation framework that focuses 5 | on acceptance test automation by through English-like keyword-driven test 6 | approach. 7 | 8 | 9 | .. sidebar:: Section Index 10 | 11 | .. toctree:: 12 | :maxdepth: 2 13 | 14 | easypy 15 | native 16 | 17 | - `pyATS Keywords`_ 18 | 19 | 20 | .. _RobotFramework: http://robotframework.org/ 21 | .. _pyATS Keywords: ../robot.html 22 | 23 | 24 | You can now freely integrate pyATS into RobotFramework, or vice versa: 25 | 26 | 1. running RobotFramework scripts directly within Easypy, saving runtime logs 27 | under runinfo directory, and aggregating results into Easypy report. 28 | 29 | 2. leverage pyATS infrastructure and libraries within RobotFramework scripts. 30 | 31 | However, as **RobotFramework support is an optional component** under pyATS, you 32 | must install the package explicitly before being able to leverage it: 33 | 34 | .. code-block:: bash 35 | 36 | # Installing RobotFramework support for pyATS 37 | # ------------------------------------------- 38 | 39 | # DevNet Community 40 | bash$ pip install --upgrade pyats.robot 41 | 42 | # Cisco Internal Developers 43 | bash$ pip install --upgrade ats.robot 44 | -------------------------------------------------------------------------------- /docs/index.rst: -------------------------------------------------------------------------------- 1 | pyATS Documentation 2 | =================== 3 | 4 | .. image:: logo.png 5 | :align: center 6 | 7 | Welcome to pyATS documentation! Here you will find all there is to know about 8 | the infrastructure, including user guides, api documentation, examples, case 9 | studies and more. 10 | 11 | ------------------------------------------------------------------------------- 12 | 13 | .. toctree:: 14 | :maxdepth: 1 15 | :caption: Getting Started 16 | 17 | overview/index 18 | getting_started/index 19 | cli/index 20 | configuration/index 21 | 22 | .. toctree:: 23 | :maxdepth: 1 24 | :caption: Main Components 25 | 26 | aereport/index 27 | aetest/index 28 | easypy/index 29 | topology/index 30 | kleenex/index 31 | connections/index 32 | 33 | 34 | .. toctree:: 35 | :maxdepth: 1 36 | :caption: Supporting Components 37 | 38 | async/index 39 | datastructures/index 40 | tcl/index 41 | log/index 42 | results/index 43 | reporter/index 44 | utilities/index 45 | robot/index 46 | manifest/index 47 | 48 | .. toctree:: 49 | :maxdepth: 1 50 | :caption: Resources 51 | 52 | terminology 53 | resources/index 54 | changelog/index 55 | 56 | .. toctree:: 57 | :maxdepth: 1 58 | :caption: API Doc 59 | 60 | apidoc/index 61 | -------------------------------------------------------------------------------- /docs/changelog/2017/july.rst: -------------------------------------------------------------------------------- 1 | July 2017 2 | ========= 3 | 4 | July 14, 2017 5 | ------------- 6 | 7 | .. csv-table:: New Module Versions 8 | :header: "Modules", "Versions" 9 | 10 | ``ats.easypy``, v3.3.5 11 | 12 | 13 | Upgrade Instructions 14 | ^^^^^^^^^^^^^^^^^^^^ 15 | 16 | .. code-block:: bash 17 | 18 | bash$ pip install --upgrade ats.easypy 19 | 20 | Changes 21 | ^^^^^^^ 22 | 23 | * Reverted previous bug fix, as behavior was design intent. 24 | 25 | 26 | July 10, 2017 27 | ------------- 28 | 29 | .. csv-table:: New Module Versions 30 | :header: "Modules", "Versions" 31 | 32 | ``ats.easypy``, v3.3.4 33 | 34 | 35 | Upgrade Instructions 36 | ^^^^^^^^^^^^^^^^^^^^ 37 | 38 | .. code-block:: bash 39 | 40 | bash$ pip install --upgrade ats.easypy 41 | 42 | Changes 43 | ^^^^^^^ 44 | 45 | * Bug fix : Users may now specify a nonexistent directory and expect 46 | it to be created when using ``-archive_dir`` or ``-runinfo_dir``. 47 | 48 | July 3, 2017 49 | ------------ 50 | 51 | .. csv-table:: New Module Versions 52 | :header: "Modules", "Versions" 53 | 54 | ``ats.utils``, v3.3.1 55 | 56 | 57 | Upgrade Instructions 58 | ^^^^^^^^^^^^^^^^^^^^ 59 | 60 | .. code-block:: bash 61 | 62 | bash$ pip install --upgrade ats.utils 63 | 64 | Changes 65 | ^^^^^^^ 66 | 67 | * Bug fix : The mpip command now works on CEL72 ADS machines. 68 | -------------------------------------------------------------------------------- /docs/changelog/2022/november.rst: -------------------------------------------------------------------------------- 1 | November 2022 2 | ========== 3 | 4 | November 28 - Pyats v22.11 5 | ------------------------ 6 | 7 | 8 | 9 | .. csv-table:: New Module Versions 10 | :header: "Modules", "Version" 11 | 12 | ``pyats``, v22.11 13 | ``pyats.aereport``, v22.11 14 | ``pyats.aetest``, v22.11 15 | ``pyats.async``, v22.11 16 | ``pyats.cisco``, v22.11 17 | ``pyats.connections``, v22.11 18 | ``pyats.datastructures``, v22.11 19 | ``pyats.easypy``, v22.11 20 | ``pyats.kleenex``, v22.11 21 | ``pyats.log``, v22.11 22 | ``pyats.reporter``, v22.11 23 | ``pyats.results``, v22.11 24 | ``pyats.robot``, v22.11 25 | ``pyats.tcl``, v22.11 26 | ``pyats.topology``, v22.11 27 | ``pyats.utils``, v22.11 28 | 29 | Upgrade Instructions 30 | ^^^^^^^^^^^^^^^^^^^^ 31 | 32 | .. code-block:: bash 33 | 34 | # DevNet Community 35 | bash$ pip install --upgrade pyats 36 | 37 | # Cisco Internal Developers 38 | bash$ pip install --upgrade ats 39 | 40 | 41 | 42 | 43 | Changelogs 44 | ^^^^^^^^^^ 45 | -------------------------------------------------------------------------------- 46 | Fix 47 | -------------------------------------------------------------------------------- 48 | 49 | * pyats.cisco 50 | * Fix TIMS upload (Cisco internal use only) 51 | 52 | 53 | -------------------------------------------------------------------------------- /docs/apidoc/datastructures/index.rst: -------------------------------------------------------------------------------- 1 | pyats.datastructures package 2 | ============================ 3 | 4 | .. automodule:: pyats.datastructures 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.datastructures.attrdict 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | 19 | .. automodule:: pyats.datastructures.classproperty 20 | :members: 21 | :undoc-members: 22 | :show-inheritance: 23 | 24 | 25 | .. automodule:: pyats.datastructures.configuration 26 | :members: 27 | :undoc-members: 28 | :show-inheritance: 29 | 30 | 31 | .. automodule:: pyats.datastructures.factory 32 | :members: 33 | :undoc-members: 34 | :show-inheritance: 35 | 36 | 37 | .. automodule:: pyats.datastructures.listdict 38 | :members: 39 | :undoc-members: 40 | :show-inheritance: 41 | 42 | 43 | .. automodule:: pyats.datastructures.logic 44 | :members: 45 | :undoc-members: 46 | :show-inheritance: 47 | 48 | 49 | .. automodule:: pyats.datastructures.orderabledict 50 | :members: 51 | :undoc-members: 52 | :show-inheritance: 53 | 54 | 55 | .. automodule:: pyats.datastructures.treenode 56 | :members: 57 | :undoc-members: 58 | :show-inheritance: 59 | 60 | 61 | .. automodule:: pyats.datastructures.weaklist 62 | :members: 63 | :undoc-members: 64 | :show-inheritance: 65 | 66 | -------------------------------------------------------------------------------- /docs/changelog/2023/july.rst: -------------------------------------------------------------------------------- 1 | July 2023 2 | ========== 3 | 4 | July 25 - Pyats v23.7 5 | ------------------------ 6 | 7 | 8 | 9 | .. csv-table:: New Module Versions 10 | :header: "Modules", "Version" 11 | 12 | ``pyats``, v23.7 13 | ``pyats.aereport``, v23.7 14 | ``pyats.aetest``, v23.7 15 | ``pyats.async``, v23.7 16 | ``pyats.cisco``, v23.7 17 | ``pyats.connections``, v23.7 18 | ``pyats.datastructures``, v23.7 19 | ``pyats.easypy``, v23.7 20 | ``pyats.kleenex``, v23.7 21 | ``pyats.log``, v23.7 22 | ``pyats.reporter``, v23.7 23 | ``pyats.results``, v23.7 24 | ``pyats.robot``, v23.7 25 | ``pyats.tcl``, v23.7 26 | ``pyats.topology``, v23.7 27 | ``pyats.utils``, v23.7 28 | 29 | Upgrade Instructions 30 | ^^^^^^^^^^^^^^^^^^^^ 31 | 32 | .. code-block:: bash 33 | 34 | # DevNet Community 35 | bash$ pip install --upgrade pyats 36 | 37 | # Cisco Internal Developers 38 | bash$ pip install --upgrade ats 39 | 40 | 41 | 42 | 43 | Changelogs 44 | ^^^^^^^^^^ 45 | -------------------------------------------------------------------------------- 46 | Fix 47 | -------------------------------------------------------------------------------- 48 | 49 | * ats.kleenex 50 | * Allow users to override device `type` and `alias` with values from logical testbed 51 | 52 | 53 | -------------------------------------------------------------------------------- /docs/changelog/2023/march.rst: -------------------------------------------------------------------------------- 1 | March 2023 2 | ========== 3 | 4 | March 28 - Pyats v23.3 5 | ------------------------ 6 | 7 | 8 | 9 | .. csv-table:: New Module Versions 10 | :header: "Modules", "Version" 11 | 12 | ``pyats``, v23.3 13 | ``pyats.aereport``, v23.3 14 | ``pyats.aetest``, v23.3 15 | ``pyats.async``, v23.3 16 | ``pyats.cisco``, v23.3 17 | ``pyats.connections``, v23.3 18 | ``pyats.datastructures``, v23.3 19 | ``pyats.easypy``, v23.3 20 | ``pyats.kleenex``, v23.3 21 | ``pyats.log``, v23.3 22 | ``pyats.reporter``, v23.3 23 | ``pyats.results``, v23.3 24 | ``pyats.robot``, v23.3 25 | ``pyats.tcl``, v23.3 26 | ``pyats.topology``, v23.3 27 | ``pyats.utils``, v23.3 28 | 29 | Upgrade Instructions 30 | ^^^^^^^^^^^^^^^^^^^^ 31 | 32 | .. code-block:: bash 33 | 34 | # DevNet Community 35 | bash$ pip install --upgrade pyats 36 | 37 | # Cisco Internal Developers 38 | bash$ pip install --upgrade ats 39 | 40 | 41 | 42 | 43 | Changelogs 44 | ^^^^^^^^^^ 45 | -------------------------------------------------------------------------------- 46 | Fix 47 | -------------------------------------------------------------------------------- 48 | 49 | * pyats.manifest 50 | * Add support for CLI arguments with * as value 51 | 52 | * pyats.utils 53 | * Fixed default value with CLI markup usage 54 | 55 | 56 | -------------------------------------------------------------------------------- /docs/changelog/2025/october.rst: -------------------------------------------------------------------------------- 1 | October 2025 2 | ========== 3 | 4 | October 28 - Pyats v25.10 5 | ------------------------ 6 | 7 | 8 | 9 | .. csv-table:: New Module Versions 10 | :header: "Modules", "Version" 11 | 12 | ``pyats``, v25.10 13 | ``pyats.aereport``, v25.10 14 | ``pyats.aetest``, v25.10 15 | ``pyats.async``, v25.10 16 | ``pyats.cisco``, v25.10 17 | ``pyats.connections``, v25.10 18 | ``pyats.datastructures``, v25.10 19 | ``pyats.easypy``, v25.10 20 | ``pyats.kleenex``, v25.10 21 | ``pyats.log``, v25.10 22 | ``pyats.reporter``, v25.10 23 | ``pyats.results``, v25.10 24 | ``pyats.robot``, v25.10 25 | ``pyats.tcl``, v25.10 26 | ``pyats.topology``, v25.10 27 | ``pyats.utils``, v25.10 28 | 29 | 30 | 31 | 32 | Changelogs 33 | ^^^^^^^^^^ 34 | -------------------------------------------------------------------------------- 35 | Fix 36 | -------------------------------------------------------------------------------- 37 | 38 | * yaml.markup 39 | * Added support for multiple callables in a single line 40 | * Added support for callable with attribute, e.g. `%CALLABLE{datetime.datetime.now().year}` 41 | 42 | * kleenex-pkg 43 | * Moved the logic of merging jit clean to _update_device_cleaning_info_using_template 44 | 45 | * pyats 46 | * Removed all usage of deprecated pkg_resources module in favor of importlib.metadata where possible. 47 | 48 | 49 | -------------------------------------------------------------------------------- /docs/apidoc/aereport/pyats.aereport.testscript.rst: -------------------------------------------------------------------------------- 1 | pyats.aereport.testscript package 2 | ================================= 3 | 4 | .. automodule:: pyats.aereport.testscript 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.aereport.testscript.basetestresult 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | 19 | .. automodule:: pyats.aereport.testscript.commonsubsection 20 | :members: 21 | :undoc-members: 22 | :show-inheritance: 23 | 24 | 25 | .. automodule:: pyats.aereport.testscript.result 26 | :members: 27 | :undoc-members: 28 | :show-inheritance: 29 | 30 | 31 | .. automodule:: pyats.aereport.testscript.subtestresult 32 | :members: 33 | :undoc-members: 34 | :show-inheritance: 35 | 36 | 37 | .. automodule:: pyats.aereport.testscript.testgroup 38 | :members: 39 | :undoc-members: 40 | :show-inheritance: 41 | 42 | 43 | .. automodule:: pyats.aereport.testscript.testresult 44 | :members: 45 | :undoc-members: 46 | :show-inheritance: 47 | 48 | 49 | .. automodule:: pyats.aereport.testscript.testscriptabort 50 | :members: 51 | :undoc-members: 52 | :show-inheritance: 53 | 54 | 55 | .. automodule:: pyats.aereport.testscript.testsection 56 | :members: 57 | :undoc-members: 58 | :show-inheritance: 59 | 60 | 61 | .. automodule:: pyats.aereport.testscript.teststep 62 | :members: 63 | :undoc-members: 64 | :show-inheritance: 65 | 66 | -------------------------------------------------------------------------------- /docs/changelog/2023/june.rst: -------------------------------------------------------------------------------- 1 | June 2023 2 | ========== 3 | 4 | June 27 - Pyats v23.6 5 | ------------------------ 6 | 7 | 8 | 9 | .. csv-table:: New Module Versions 10 | :header: "Modules", "Version" 11 | 12 | ``pyats``, v23.6 13 | ``pyats.aereport``, v23.6 14 | ``pyats.aetest``, v23.6 15 | ``pyats.async``, v23.6 16 | ``pyats.cisco``, v23.6 17 | ``pyats.connections``, v23.6 18 | ``pyats.datastructures``, v23.6 19 | ``pyats.easypy``, v23.6 20 | ``pyats.kleenex``, v23.6 21 | ``pyats.log``, v23.6 22 | ``pyats.reporter``, v23.6 23 | ``pyats.results``, v23.6 24 | ``pyats.robot``, v23.6 25 | ``pyats.tcl``, v23.6 26 | ``pyats.topology``, v23.6 27 | ``pyats.utils``, v23.6 28 | 29 | Upgrade Instructions 30 | ^^^^^^^^^^^^^^^^^^^^ 31 | 32 | .. code-block:: bash 33 | 34 | # DevNet Community 35 | bash$ pip install --upgrade pyats 36 | 37 | # Cisco Internal Developers 38 | bash$ pip install --upgrade ats 39 | 40 | 41 | 42 | 43 | Changelogs 44 | ^^^^^^^^^^ 45 | -------------------------------------------------------------------------------- 46 | Fix 47 | -------------------------------------------------------------------------------- 48 | 49 | * pyats.easypy 50 | * Fixed issue with multiprocessing causing socket usage collisions 51 | 52 | * pyats.kleenex 53 | * Updated bringup logic to allow users to specify any interface type 54 | 55 | 56 | -------------------------------------------------------------------------------- /docs/apidoc/topology/index.rst: -------------------------------------------------------------------------------- 1 | pyats.topology package 2 | ====================== 3 | 4 | .. automodule:: pyats.topology 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Subpackages 10 | ----------- 11 | 12 | .. toctree:: 13 | 14 | pyats.topology.loader 15 | 16 | Submodules 17 | ---------- 18 | 19 | 20 | .. automodule:: pyats.topology.bases 21 | :members: 22 | :undoc-members: 23 | :show-inheritance: 24 | 25 | 26 | .. automodule:: pyats.topology.commands 27 | :members: 28 | :undoc-members: 29 | :show-inheritance: 30 | 31 | 32 | .. automodule:: pyats.topology.credentials 33 | :members: 34 | :undoc-members: 35 | :show-inheritance: 36 | 37 | 38 | .. automodule:: pyats.topology.device 39 | :members: 40 | :undoc-members: 41 | :show-inheritance: 42 | 43 | 44 | .. automodule:: pyats.topology.exceptions 45 | :members: 46 | :undoc-members: 47 | :show-inheritance: 48 | 49 | 50 | .. automodule:: pyats.topology.factory 51 | :members: 52 | :undoc-members: 53 | :show-inheritance: 54 | 55 | 56 | .. automodule:: pyats.topology.interface 57 | :members: 58 | :undoc-members: 59 | :show-inheritance: 60 | 61 | 62 | .. automodule:: pyats.topology.link 63 | :members: 64 | :undoc-members: 65 | :show-inheritance: 66 | 67 | 68 | .. automodule:: pyats.topology.schema 69 | :members: 70 | :undoc-members: 71 | :show-inheritance: 72 | 73 | 74 | .. automodule:: pyats.topology.testbed 75 | :members: 76 | :undoc-members: 77 | :show-inheritance: 78 | 79 | -------------------------------------------------------------------------------- /docs/changelog/2019/june.rst: -------------------------------------------------------------------------------- 1 | June 2019 2 | ========= 3 | 4 | June 25, 2019 - pyATS v19.6 5 | --------------------------- 6 | 7 | .. csv-table:: New Module Versions 8 | :header: "Modules", "Version" 9 | 10 | ``pyats``, v19.6 11 | ``pyats.aereport``, v19.6 12 | ``pyats.aetest``, v19.6 13 | ``pyats.async``, v19.6 14 | ``pyats.cisco``, v19.6 15 | ``pyats.connections``, v19.6 16 | ``pyats.datastructures``, v19.6 17 | ``pyats.easypy``, v19.6 18 | ``pyats.examples``, v19.6 19 | ``pyats.kleenex``, v19.6 20 | ``pyats.log``, v19.6 21 | ``pyats.results``, v19.6 22 | ``pyats.robot``, v19.6 23 | ``pyats.tcl``, v19.6 24 | ``pyats.templates``, v19.6 25 | ``pyats.topology``, v19.6 26 | ``pyats.utils``, v19.6 27 | 28 | Upgrade Instructions 29 | ^^^^^^^^^^^^^^^^^^^^ 30 | 31 | .. code-block:: bash 32 | 33 | # DevNet Community 34 | bash$ pip install --upgrade pyats 35 | 36 | # Cisco Internal Developers 37 | bash$ pip install --upgrade ats 38 | 39 | 40 | Changes 41 | ^^^^^^^ 42 | 43 | - now prints deprecation warnings in pyats cli 44 | 45 | - fixed a bug with regex for file listing match in FileUtils ftp plugin 46 | 47 | - fixed a bug with Easypy job file loader where it does not add job directory 48 | to ``sys.path``. 49 | 50 | - updated SMTP server customization documentation to reflect latest uses of 51 | pyATS configuration file 52 | 53 | - [Cisco Internal only] fixed a bug in ``pyats.cisco`` TIMS uploading module 54 | where ``archive_file`` is not uploaded as an attribute field -------------------------------------------------------------------------------- /docs/changelog/2025/march.rst: -------------------------------------------------------------------------------- 1 | March 2025 2 | ========== 3 | 4 | March 25 - Pyats v25.3 5 | ------------------------ 6 | 7 | 8 | 9 | .. csv-table:: New Module Versions 10 | :header: "Modules", "Version" 11 | 12 | ``pyats``, v25.3 13 | ``pyats.aereport``, v25.3 14 | ``pyats.aetest``, v25.3 15 | ``pyats.async``, v25.3 16 | ``pyats.cisco``, v25.3 17 | ``pyats.connections``, v25.3 18 | ``pyats.datastructures``, v25.3 19 | ``pyats.easypy``, v25.3 20 | ``pyats.kleenex``, v25.3 21 | ``pyats.log``, v25.3 22 | ``pyats.reporter``, v25.3 23 | ``pyats.results``, v25.3 24 | ``pyats.robot``, v25.3 25 | ``pyats.tcl``, v25.3 26 | ``pyats.topology``, v25.3 27 | ``pyats.utils``, v25.3 28 | 29 | 30 | 31 | 32 | Changelogs 33 | ^^^^^^^^^^ 34 | -------------------------------------------------------------------------------- 35 | Fix 36 | -------------------------------------------------------------------------------- 37 | 38 | * kleenex/bringup 39 | * bases 40 | * remove the servers with logical services 41 | 42 | 43 | -------------------------------------------------------------------------------- 44 | New 45 | -------------------------------------------------------------------------------- 46 | 47 | * discovery 48 | * Added support to retry the triggers. 49 | 50 | * retry 51 | * Optimized should_retry function. 52 | 53 | 54 | -------------------------------------------------------------------------------- /docs/changelog/2024/September.rst: -------------------------------------------------------------------------------- 1 | September 2024 2 | ========== 3 | 4 | September 24 - Pyats v24.9 5 | ------------------------ 6 | 7 | 8 | 9 | .. csv-table:: New Module Versions 10 | :header: "Modules", "Version" 11 | 12 | ``pyats``, v24.9 13 | ``pyats.aereport``, v24.9 14 | ``pyats.aetest``, v24.9 15 | ``pyats.async``, v24.9 16 | ``pyats.cisco``, v24.9 17 | ``pyats.connections``, v24.9 18 | ``pyats.datastructures``, v24.9 19 | ``pyats.easypy``, v24.9 20 | ``pyats.kleenex``, v24.9 21 | ``pyats.log``, v24.9 22 | ``pyats.reporter``, v24.9 23 | ``pyats.results``, v24.9 24 | ``pyats.robot``, v24.9 25 | ``pyats.tcl``, v24.9 26 | ``pyats.topology``, v24.9 27 | ``pyats.utils``, v24.9 28 | 29 | 30 | 31 | 32 | Changelogs 33 | ^^^^^^^^^^ 34 | -------------------------------------------------------------------------------- 35 | New 36 | -------------------------------------------------------------------------------- 37 | 38 | * pyats.connections.wrapper 39 | * Added add_service_wrapper_usage_data function to push service wrapper data to business telemetry. 40 | 41 | 42 | -------------------------------------------------------------------------------- 43 | Fix 44 | -------------------------------------------------------------------------------- 45 | 46 | * topology 47 | * schema 48 | * Added device id to schema 49 | 50 | 51 | -------------------------------------------------------------------------------- /docs/changelog/2017/sep.rst: -------------------------------------------------------------------------------- 1 | September 2017 2 | ============== 3 | 4 | Sep 25, 2017 5 | ------------ 6 | 7 | .. csv-table:: New Module Versions 8 | :header: "Modules", "Versions" 9 | 10 | ``ats.kleenex``, v3.3.2 11 | ``ats.easypy``, v3.3.6 12 | ``ats.utils``, v3.3.4 13 | 14 | 15 | Upgrade Instructions 16 | ^^^^^^^^^^^^^^^^^^^^ 17 | 18 | .. code-block:: bash 19 | 20 | bash$ pip install --upgrade ats.kleenex ats.easypy ats.utils 21 | 22 | Changes 23 | ^^^^^^^ 24 | 25 | - Kleenex 26 | 27 | - If a bringup orchestrator emits clean configuration it is merged 28 | on top of the user's clean configuration. 29 | 30 | - Migration of bringup configuration from the legacy pre-v3.0.0 format 31 | has now been deprecated. 32 | 33 | - Relaxed a few Kleenex restrictions : now in the following cases 34 | instead of throwing an exception, only a warning is logged: 35 | 36 | - One or more specified images cannot be found. 37 | 38 | - The clean YAML contains devices not present in the testbed YAML. 39 | 40 | - Enhanced the Kleenex clean schema to allow images to be specified by 41 | type (for example, rp, lc, kickstart, system, smu, pie). 42 | 43 | - NOTE: Explicit cleaner support is required for this expanded format. 44 | 45 | - Easypy 46 | 47 | - Now a logical testbed must be specified using the 48 | ``-logical_testbed_file`` parameter. Auto-detection of logical devices 49 | in the non-logical testbed file has been deprecated. 50 | 51 | - Utils 52 | 53 | - Made clean/testbed YAML schema failure reports more human-readable. 54 | -------------------------------------------------------------------------------- /docs/changelog/2017/january.rst: -------------------------------------------------------------------------------- 1 | January 2017 2 | ============ 3 | 4 | January 20, 2017 5 | ---------------- 6 | 7 | .. csv-table:: New Module Versions 8 | :header: "Modules", "Versions" 9 | 10 | ``ats.utils``, v3.2.1 11 | 12 | 13 | Upgrade Instructions 14 | ^^^^^^^^^^^^^^^^^^^^ 15 | 16 | .. code-block:: bash 17 | 18 | bash$ pip install --upgrade ats.utils 19 | 20 | 21 | Changes 22 | ^^^^^^^ 23 | 24 | - Minor refactoring, delivered to fix a breakage seen with the most recent 25 | release of ats.topology. 26 | 27 | 28 | January 19, 2017 29 | ---------------- 30 | 31 | .. csv-table:: New Module Versions 32 | :header: "Modules", "Versions" 33 | 34 | ``ats.topology``, v3.2.1 35 | 36 | 37 | Upgrade Instructions 38 | ^^^^^^^^^^^^^^^^^^^^ 39 | 40 | .. code-block:: bash 41 | 42 | bash$ pip install --upgrade ats.topology 43 | 44 | 45 | Changes 46 | ^^^^^^^ 47 | 48 | - Added a new option ``extend_devices_from_links`` to testbed.squeeze, 49 | giving users more fine-grained control. 50 | 51 | January 17, 2017 52 | ---------------- 53 | 54 | .. csv-table:: New Module Versions 55 | :header: "Modules", "Versions" 56 | 57 | ``ats.kleenex``, v3.2.1 58 | ``ats.easypy``, v3.2.1 59 | 60 | 61 | Upgrade Instructions 62 | ^^^^^^^^^^^^^^^^^^^^ 63 | 64 | .. code-block:: bash 65 | 66 | bash$ pip install --upgrade ats.kleenex ats.easypy 67 | 68 | 69 | Changes 70 | ^^^^^^^ 71 | 72 | - Fixed a bug preventing Kleenex Bringup and Clean from being run together 73 | (newly brought up devices were being ignored instead of cleaned). 74 | 75 | -------------------------------------------------------------------------------- /docs/changelog/2019/apr.rst: -------------------------------------------------------------------------------- 1 | April 2019 2 | ========== 3 | 4 | Apr 30, 2019 - pyATS v19.4 5 | -------------------------- 6 | 7 | .. csv-table:: New Module Versions 8 | :header: "Modules", "Version" 9 | 10 | ``pyats``, v19.4 11 | ``pyats.aereport``, v19.4 12 | ``pyats.aetest``, v19.4 13 | ``pyats.async``, v19.4 14 | ``pyats.cisco``, v19.4.3 15 | ``pyats.connections``, v19.4 16 | ``pyats.datastructures``, v19.4 17 | ``pyats.easypy``, v19.4.2 18 | ``pyats.examples``, v19.4 19 | ``pyats.kleenex``, v19.4.1 20 | ``pyats.log``, v19.4 21 | ``pyats.results``, v19.4 22 | ``pyats.robot``, v19.4 23 | ``pyats.tcl``, v19.4 24 | ``pyats.templates``, v19.4 25 | ``pyats.topology``, v19.4 26 | ``pyats.utils``, v19.4.3 27 | 28 | Upgrade Instructions 29 | ^^^^^^^^^^^^^^^^^^^^ 30 | 31 | .. code-block:: bash 32 | 33 | # DevNet Community 34 | bash$ pip install --upgrade pyats 35 | 36 | # Cisco Internal Developers 37 | bash$ pip install --upgrade ats 38 | 39 | 40 | Changes 41 | ^^^^^^^ 42 | 43 | - added new ``pyats.configuration`` module for central configuration support 44 | 45 | - introducing new ``pyats.datastructures.Configuration`` class. 46 | 47 | - introducing new ``pyats.datastructures.NestedAttrDict`` class. 48 | 49 | - now supports sending emails using SMTP server through TLS/SSL. 50 | 51 | - Kleenex now supports a virtual device type of ``routem``. 52 | 53 | - Cisco-internal installer now uses https to access BitBucket and uses 54 | /router/bin/curl if it exists (otherwise, system default curl is used). 55 | 56 | -------------------------------------------------------------------------------- /docs/changelog/2025/april.rst: -------------------------------------------------------------------------------- 1 | April 2025 2 | ========== 3 | 4 | April 29 - Pyats v25.4 5 | ------------------------ 6 | 7 | 8 | 9 | .. csv-table:: New Module Versions 10 | :header: "Modules", "Version" 11 | 12 | ``pyats``, v25.4 13 | ``pyats.aereport``, v25.4 14 | ``pyats.aetest``, v25.4 15 | ``pyats.async``, v25.4 16 | ``pyats.cisco``, v25.4 17 | ``pyats.connections``, v25.4 18 | ``pyats.datastructures``, v25.4 19 | ``pyats.easypy``, v25.4 20 | ``pyats.kleenex``, v25.4 21 | ``pyats.log``, v25.4 22 | ``pyats.reporter``, v25.4 23 | ``pyats.results``, v25.4 24 | ``pyats.robot``, v25.4 25 | ``pyats.tcl``, v25.4 26 | ``pyats.topology``, v25.4 27 | ``pyats.utils``, v25.4 28 | 29 | 30 | 31 | 32 | Changelogs 33 | ^^^^^^^^^^ 34 | -------------------------------------------------------------------------------- 35 | Fix 36 | -------------------------------------------------------------------------------- 37 | 38 | * devat-pkg 39 | * Fix name object has no attribute value 40 | 41 | * aetest 42 | * commons 43 | * update uid normalization logic for common setup and cleanup 44 | 45 | 46 | -------------------------------------------------------------------------------- 47 | New 48 | -------------------------------------------------------------------------------- 49 | 50 | * easypy 51 | * Rerun plugin 52 | * Save results to `rerun.input.yaml` in the archive 53 | 54 | 55 | -------------------------------------------------------------------------------- /docs/apidoc/easypy/pyats.easypy.plugins.rst: -------------------------------------------------------------------------------- 1 | pyats.easypy.plugins package 2 | ============================ 3 | 4 | .. automodule:: pyats.easypy.plugins 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Submodules 10 | ---------- 11 | 12 | 13 | .. automodule:: pyats.easypy.plugins.bases 14 | :members: 15 | :undoc-members: 16 | :show-inheritance: 17 | 18 | 19 | .. automodule:: pyats.easypy.plugins.debug 20 | :members: 21 | :undoc-members: 22 | :show-inheritance: 23 | 24 | 25 | .. automodule:: pyats.easypy.plugins.htmllogs 26 | :members: 27 | :undoc-members: 28 | :show-inheritance: 29 | 30 | 31 | .. automodule:: pyats.easypy.plugins.kleenex 32 | :members: 33 | :undoc-members: 34 | :show-inheritance: 35 | 36 | 37 | .. automodule:: pyats.easypy.plugins.logs 38 | :members: 39 | :undoc-members: 40 | :show-inheritance: 41 | 42 | 43 | .. automodule:: pyats.easypy.plugins.manager 44 | :members: 45 | :undoc-members: 46 | :show-inheritance: 47 | 48 | 49 | .. automodule:: pyats.easypy.plugins.rerun 50 | :members: 51 | :undoc-members: 52 | :show-inheritance: 53 | 54 | 55 | .. automodule:: pyats.easypy.plugins.runinfo 56 | :members: 57 | :undoc-members: 58 | :show-inheritance: 59 | 60 | 61 | .. automodule:: pyats.easypy.plugins.stages 62 | :members: 63 | :undoc-members: 64 | :show-inheritance: 65 | 66 | 67 | .. automodule:: pyats.easypy.plugins.testbed 68 | :members: 69 | :undoc-members: 70 | :show-inheritance: 71 | 72 | 73 | .. automodule:: pyats.easypy.plugins.xunit 74 | :members: 75 | :undoc-members: 76 | :show-inheritance: 77 | 78 | -------------------------------------------------------------------------------- /docs/changelog/2023/february.rst: -------------------------------------------------------------------------------- 1 | February 2023 2 | ========== 3 | 4 | February 28 - Pyats v23.2 5 | ------------------------ 6 | 7 | 8 | 9 | .. csv-table:: New Module Versions 10 | :header: "Modules", "Version" 11 | 12 | ``pyats``, v23.2 13 | ``pyats.aereport``, v23.2 14 | ``pyats.aetest``, v23.2 15 | ``pyats.async``, v23.2 16 | ``pyats.cisco``, v23.2 17 | ``pyats.connections``, v23.2 18 | ``pyats.datastructures``, v23.2 19 | ``pyats.easypy``, v23.2 20 | ``pyats.kleenex``, v23.2 21 | ``pyats.log``, v23.2 22 | ``pyats.reporter``, v23.2 23 | ``pyats.results``, v23.2 24 | ``pyats.robot``, v23.2 25 | ``pyats.tcl``, v23.2 26 | ``pyats.topology``, v23.2 27 | ``pyats.utils``, v23.2 28 | 29 | Upgrade Instructions 30 | ^^^^^^^^^^^^^^^^^^^^ 31 | 32 | .. code-block:: bash 33 | 34 | # DevNet Community 35 | bash$ pip install --upgrade pyats 36 | 37 | # Cisco Internal Developers 38 | bash$ pip install --upgrade ats 39 | 40 | 41 | 42 | 43 | Changelogs 44 | ^^^^^^^^^^ 45 | -------------------------------------------------------------------------------- 46 | New 47 | -------------------------------------------------------------------------------- 48 | 49 | * pyats.utils 50 | * Modified %CLI markup 51 | * Added support for default value, including list syntax support 52 | 53 | * install 54 | * Updated the pyats installer. 55 | * The installer can now install all the required and optional packages. 56 | 57 | * topology 58 | * Updated the schema to support management apis 59 | 60 | 61 | -------------------------------------------------------------------------------- /docs/changelog/2022/april.rst: -------------------------------------------------------------------------------- 1 | April 2022 2 | ========== 3 | 4 | April 26 - Pyats v22.4 5 | ------------------------ 6 | 7 | 8 | 9 | .. csv-table:: New Module Versions 10 | :header: "Modules", "Version" 11 | 12 | ``pyats``, v22.4 13 | ``pyats.aereport``, v22.4 14 | ``pyats.aetest``, v22.4 15 | ``pyats.async``, v22.4 16 | ``pyats.cisco``, v22.4 17 | ``pyats.connections``, v22.4 18 | ``pyats.datastructures``, v22.4 19 | ``pyats.easypy``, v22.4 20 | ``pyats.kleenex``, v22.4 21 | ``pyats.log``, v22.4 22 | ``pyats.reporter``, v22.4 23 | ``pyats.results``, v22.4 24 | ``pyats.robot``, v22.4 25 | ``pyats.tcl``, v22.4 26 | ``pyats.topology``, v22.4 27 | ``pyats.utils``, v22.4 28 | 29 | Upgrade Instructions 30 | ^^^^^^^^^^^^^^^^^^^^ 31 | 32 | .. code-block:: bash 33 | 34 | # DevNet Community 35 | bash$ pip install --upgrade pyats 36 | 37 | # Cisco Internal Developers 38 | bash$ pip install --upgrade ats 39 | 40 | 41 | 42 | 43 | Changelogs 44 | ^^^^^^^^^^ 45 | -------------------------------------------------------------------------------- 46 | Fix 47 | -------------------------------------------------------------------------------- 48 | 49 | * pyats.connections 50 | * Modified BaseConnection class to accept any argument to allow NotImlpemented error to propagate 51 | 52 | * aetest 53 | * Modified Interaction UT 54 | * More robust UT for interaction feature 55 | 56 | * pyats.utils 57 | * remove key.lower() in create_extended_dict 58 | 59 | * pyats.topology 60 | * Modified TopologyDict class to allow attribute lookup of device aliases 61 | 62 | 63 | -------------------------------------------------------------------------------- /docs/changelog/2024/june.rst: -------------------------------------------------------------------------------- 1 | June 2024 2 | ========== 3 | 4 | - Pyats v24.6 5 | ------------------------ 6 | 7 | 8 | 9 | .. csv-table:: New Module Versions 10 | :header: "Modules", "Version" 11 | 12 | ``pyats``, v24.6 13 | ``pyats.aereport``, v24.6 14 | ``pyats.aetest``, v24.6 15 | ``pyats.async``, v24.6 16 | ``pyats.cisco``, v24.6 17 | ``pyats.connections``, v24.6 18 | ``pyats.datastructures``, v24.6 19 | ``pyats.easypy``, v24.6 20 | ``pyats.kleenex``, v24.6 21 | ``pyats.log``, v24.6 22 | ``pyats.reporter``, v24.6 23 | ``pyats.results``, v24.6 24 | ``pyats.robot``, v24.6 25 | ``pyats.tcl``, v24.6 26 | ``pyats.topology``, v24.6 27 | ``pyats.utils``, v24.6 28 | 29 | Upgrade Instructions 30 | ^^^^^^^^^^^^^^^^^^^^ 31 | 32 | .. code-block:: bash 33 | 34 | # DevNet Community 35 | bash$ pip install --upgrade pyats 36 | 37 | # Cisco Internal Developers 38 | bash$ pip install --upgrade ats 39 | 40 | 41 | 42 | 43 | Changelogs 44 | ^^^^^^^^^^ 45 | -------------------------------------------------------------------------------- 46 | Fix 47 | -------------------------------------------------------------------------------- 48 | 49 | * easy/plugins 50 | * kleenex 51 | * Fixed clean default image issue. 52 | * kleenex 53 | * Fixed clean default image where multiple images being passed to each device, instead 54 | 55 | * kleenex 56 | * clean/loader 57 | * Fixed a bug with clean templates, where it was not updating the clean image properly. 58 | 59 | * topology 60 | * Modified schema 61 | * Added submodel key in device schema 62 | 63 | 64 | -------------------------------------------------------------------------------- /docs/changelog/2021/january.rst: -------------------------------------------------------------------------------- 1 | January 2021 2 | ============ 3 | 4 | January 27, 2021 5 | ---------------- 6 | 7 | .. csv-table:: New Module Versions 8 | :header: "Modules", "Version" 9 | 10 | ``pyats``, v21.1 11 | ``pyats.aereport``, v21.1 12 | ``pyats.aetest``, v21.1 13 | ``pyats.async``, v21.1 14 | ``pyats.cisco``, v21.1 15 | ``pyats.connections``, v21.1 16 | ``pyats.datastructures``, v21.1 17 | ``pyats.easypy``, v21.1 18 | ``pyats.kleenex``, v21.1 19 | ``pyats.log``, v21.1 20 | ``pyats.reporter``, v21.1 21 | ``pyats.results``, v21.1 22 | ``pyats.robot``, v21.1 23 | ``pyats.tcl``, v21.1 24 | ``pyats.topology``, v21.1 25 | ``pyats.utils``, v21.1 26 | 27 | Upgrade Instructions 28 | ^^^^^^^^^^^^^^^^^^^^ 29 | 30 | .. code-block:: bash 31 | 32 | # DevNet Community 33 | bash$ pip install --upgrade pyats 34 | 35 | # Cisco Internal Developers 36 | bash$ pip install --upgrade ats 37 | 38 | 39 | Other Changes 40 | ^^^^^^^^^^^^^ 41 | Topology/Utils 42 | - Enhanced testbed and clean YAML file validation for Xpresso 43 | (environment-independent validation) 44 | 45 | Utils 46 | - Enable markup references in YAML to be used in callable 47 | %CALLABLE{func(%{path1},%{path2})} 48 | - Fixed %INCLUDE{} markup in YAML breaking references 49 | 50 | Reporter 51 | - Possible socket path length incresed to 120 52 | 53 | Log 54 | - Fixed logviewer/liveview to show results detail page instead of overview 55 | page by default 56 | - Command ```pyats logs view abc.zip``` now opens abc.zip directly instead of 57 | result list page 58 | - Faster loading of result list page - UI now requests for correct number of 59 | results instead of parsing 100 results at once 60 | 61 | 62 | -------------------------------------------------------------------------------- /docs/changelog/2020/oct.rst: -------------------------------------------------------------------------------- 1 | October 2020 2 | ============ 3 | 4 | Octoboer 27, 2020 5 | ----------------- 6 | 7 | .. csv-table:: New Module Versions 8 | :header: "Modules", "Version" 9 | 10 | ``pyats``, v20.10 11 | ``pyats.aereport``, v20.10 12 | ``pyats.aetest``, v20.10 13 | ``pyats.async``, v20.10 14 | ``pyats.cisco``, v20.10 15 | ``pyats.connections``, v20.10 16 | ``pyats.datastructures``, v20.10 17 | ``pyats.easypy``, v20.10 18 | ``pyats.kleenex``, v20.10 19 | ``pyats.log``, v20.10 20 | ``pyats.reporter``, v20.10 21 | ``pyats.results``, v20.10 22 | ``pyats.robot``, v20.10 23 | ``pyats.tcl``, v20.10 24 | ``pyats.topology``, v20.10 25 | ``pyats.utils``, v20.10 26 | 27 | Upgrade Instructions 28 | ^^^^^^^^^^^^^^^^^^^^ 29 | 30 | .. code-block:: bash 31 | 32 | # DevNet Community 33 | bash$ pip install --upgrade pyats 34 | 35 | # Cisco Internal Developers 36 | bash$ pip install --upgrade ats 37 | 38 | Changes 39 | ^^^^^^^ 40 | 41 | Easypy 42 | - Fix for rerun cli argument parsing for improved support with pyATS Jenkins 43 | Plugin 44 | 45 | Topology/Utils 46 | - Improved testbed validation with line number identification for issues in 47 | testbed YAML file 48 | 49 | October 1, 2020 50 | --------------- 51 | 52 | .. csv-table:: New Module Versions 53 | :header: "Modules", "Versions" 54 | 55 | ``pyats.aetest``, v20.9.2 56 | 57 | 58 | Upgrade Instructions 59 | ^^^^^^^^^^^^^^^^^^^^ 60 | 61 | .. code-block:: bash 62 | 63 | # DevNet Community 64 | bash$ pip install --upgrade pyats.aetest 65 | 66 | # Cisco Internal Developers 67 | bash$ pip install --upgrade ats.aetest 68 | 69 | Changes 70 | ^^^^^^^ 71 | - Improved unwrapping of processors for getting the correct arguments 72 | -------------------------------------------------------------------------------- /docs/connections/mutex_flow.xml: -------------------------------------------------------------------------------- 1 | 7Vpfc6M2EP80nkkf4jHgP8nj2b1cX65zM+lM20cFZFAjkE+I2OmnvxWsbJDAITZ17nrxgw2LtFr99rfalfAoWKW7T5Jsks8ionzkT6LdKPh15PveZDGHHy15riRzP6gEsWQRNjoI7tm/1PREacEimjcaKiG4YpumMBRZRkPVkBEpxbbZbC14c9QNic2IB8F9SLgr/ZNFKqmkNz5OS8t/oyxOzMje/LZ68kDCx1iKIsPxRn6wLj/V45QYXTjRPCGR2NZEwUfAVQoBmvVVultRrrE1sFX97jqe7u2WNEPbjneAR7rDE+EFTv0zYdkXKUKa52iiejawbBOm6P2GhPp+C64fBctEpRzuPLhEXVQqapjg2lOK0JhPVKRUyWdogh0WiAvyZraobrcHJ3gGuqTmgDnKCPo93is+zB0ucPrtUCBDa1A486dZ9EGzC+5CTvKchU0A6I6pv+B6Mp7h3d8NaGjk0M4CBoYThSzxNd5xsaqhMWsBw8gk5USxp+aIbQjhCF8EA1v2rrj2DKqWM4yKylLsVeeYpcgLmnqCW0uRIjKmylEEUBM9XdNsoxuUpOw3jocG97YLgevdHvE58Kuy+MC2vc96EfDmfAL2pdlbccoLsAtC6E+swO3PqaaiYIrhOzSnbtsN7rTLam/sGoojJkG+DUlwktNJhxd7kuh74IudMQbiy7TD4C677PZDrykeqm/wBSgJfCFS24EVFBPZyJ9zcNQyYk9wGZeX9ImFdIxtrkKuUfiD8oyq1b7fL6Yj2FLr69ASigItrxExV1I80pXgQoIkExm0XK4Z55aIcBZncMvpWmvQBQaDWu0DilMWRXqQZVt5IqD1mpfBkEA7Ch2Wa5GpO5IyrkFfAYMYlWDr7xRaDVHE2InT890yJjDJpB4g0wHKGM8t6Y6tEAhxzStH0YGed+AgXeO8qqqpwqvOybdLQZZzpieWNdeeWYxRU7+q5pQgbitNdRBXuCmh2+Y5PNPxnKYEdh+dwUx3NCwUvQLx10JvM5Z5AkwAXIssY1l8DdG+ZvHhcWd8OyOgUYm2Qzz8U1ql90RFrs284iJ8pNFr1Y3HY80NwjT0a1gW/IlW9L7o2El5ZmUef+osOvvtVT2ujOysRWd2LM1QoONkzWQOLuzwcuVSZA08IqnGsfruZvcDIHiEPq8OAXBAXmXCE7jfZVJ7137Sn5bN+0J3X0fh7qjO5raTgEHY3LYT68OvTnrveQthkLE8KSPCpbmkqpAZrJnnM+d4nJXrMiRSSnJtyjv5LPJZS6nZ1L1EvgDPB88iH54kXqJ+Azzkc3lgZW70edVk7Ovjq47irlHJYaD0hzZY2PtjnN3wW0d7J37q1tE22QN0/qNCz3DqpYWnFskk/FowqYMYtHflyRcXh0vUhq/Ljx11IFXh+3L1QuUXTHC/cInKr+UNAr49uHbXrfN9EgImgN4P4JXgFpOBWTZu3EOyNqeYNeAsp7gbRuMU85bh53SKZ4XKRZ2C+7HvNbGfnsTh9e6FkrjjiL5J3CnpbEUDJnGM+x/fz3MLtGDmbsKG8bNzDO5ZlXRfPzu50FY0oJ/xvO//52d/cSk/OzumU/3sKDrZz3B7+PtF1fzwH5fg4zc= -------------------------------------------------------------------------------- /docs/apidoc/aetest/index.rst: -------------------------------------------------------------------------------- 1 | pyats.aetest package 2 | ==================== 3 | 4 | .. automodule:: pyats.aetest 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Subpackages 10 | ----------- 11 | 12 | .. toctree:: 13 | 14 | pyats.aetest.datafile 15 | pyats.aetest.executer 16 | pyats.aetest.processors 17 | pyats.aetest.reporter 18 | pyats.aetest.runtime 19 | pyats.aetest.steps 20 | pyats.aetest.utils 21 | 22 | Submodules 23 | ---------- 24 | 25 | 26 | .. automodule:: pyats.aetest.base 27 | :members: 28 | :undoc-members: 29 | :show-inheritance: 30 | 31 | 32 | .. automodule:: pyats.aetest.commons 33 | :members: 34 | :undoc-members: 35 | :show-inheritance: 36 | 37 | 38 | .. automodule:: pyats.aetest.discovery 39 | :members: 40 | :undoc-members: 41 | :show-inheritance: 42 | 43 | 44 | .. automodule:: pyats.aetest.exceptions 45 | :members: 46 | :undoc-members: 47 | :show-inheritance: 48 | 49 | 50 | .. automodule:: pyats.aetest.loop 51 | :members: 52 | :undoc-members: 53 | :show-inheritance: 54 | 55 | 56 | .. automodule:: pyats.aetest.main 57 | :members: 58 | :undoc-members: 59 | :show-inheritance: 60 | 61 | 62 | .. automodule:: pyats.aetest.parameters 63 | :members: 64 | :undoc-members: 65 | :show-inheritance: 66 | 67 | 68 | .. automodule:: pyats.aetest.script 69 | :members: 70 | :undoc-members: 71 | :show-inheritance: 72 | 73 | 74 | .. automodule:: pyats.aetest.sections 75 | :members: 76 | :undoc-members: 77 | :show-inheritance: 78 | 79 | 80 | .. automodule:: pyats.aetest.signals 81 | :members: 82 | :undoc-members: 83 | :show-inheritance: 84 | 85 | 86 | .. automodule:: pyats.aetest.testcase 87 | :members: 88 | :undoc-members: 89 | :show-inheritance: 90 | 91 | -------------------------------------------------------------------------------- /docs/apidoc/kleenex/index.rst: -------------------------------------------------------------------------------- 1 | pyats.kleenex package 2 | ===================== 3 | 4 | .. automodule:: pyats.kleenex 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Subpackages 10 | ----------- 11 | 12 | .. toctree:: 13 | 14 | pyats.clean.loader 15 | pyats.kleenex.reporter 16 | pyats.bringup 17 | 18 | Submodules 19 | ---------- 20 | 21 | 22 | .. automodule:: pyats.bringup.bases 23 | :members: 24 | :undoc-members: 25 | :show-inheritance: 26 | 27 | 28 | .. automodule:: pyats.bringup.base_cli_parser 29 | :members: 30 | :undoc-members: 31 | :show-inheritance: 32 | 33 | 34 | .. automodule:: pyats.bringup.manager 35 | :members: 36 | :undoc-members: 37 | :show-inheritance: 38 | 39 | 40 | .. automodule:: pyats.bringup.manager_cli_parser 41 | :members: 42 | :undoc-members: 43 | :show-inheritance: 44 | 45 | 46 | .. automodule:: pyats.bringup.signals 47 | :members: 48 | :undoc-members: 49 | :show-inheritance: 50 | 51 | 52 | .. automodule:: pyats.kleenex.engine 53 | :members: 54 | :undoc-members: 55 | :show-inheritance: 56 | 57 | 58 | .. automodule:: pyats.kleenex.exceptions 59 | :members: 60 | :undoc-members: 61 | :show-inheritance: 62 | 63 | 64 | .. automodule:: pyats.kleenex.kleenex_main 65 | :members: 66 | :undoc-members: 67 | :show-inheritance: 68 | 69 | 70 | .. automodule:: pyats.clean.traceback 71 | :members: 72 | :undoc-members: 73 | :show-inheritance: 74 | 75 | 76 | .. automodule:: pyats.clean.schema 77 | :members: 78 | :undoc-members: 79 | :show-inheritance: 80 | 81 | 82 | .. automodule:: pyats.clean.utils 83 | :members: 84 | :undoc-members: 85 | :show-inheritance: 86 | 87 | 88 | .. automodule:: pyats.kleenex.worker 89 | :members: 90 | :undoc-members: 91 | :show-inheritance: 92 | 93 | -------------------------------------------------------------------------------- /docs/easypy/introduction.rst: -------------------------------------------------------------------------------- 1 | Introduction 2 | ============ 3 | 4 | Easypy provides a standardized runtime environment for testscript execution in 5 | pyATS. It offers a simple, straight-forward way for users to aggregate 6 | testscripts together into **jobs**, integrates various pyATS modules together 7 | into a collectively managed ecosystem, and archives all resulting information 8 | for post-mortem debugging. 9 | 10 | Features 11 | -------- 12 | 13 | - **Jobs**: aggregation of multiple testscripts into one *job*. 14 | - **TaskLog**: stores all runtime log outputs to :ref:`tasklog`. 15 | - **E-mail Notification**: emails the user result information upon 16 | finishing. 17 | - **Multiprocessing Integration**: executes each jobfile Task in a child 18 | process, and configures the environment to allow for hands-off forking. 19 | - **Clean**: clean/brings up the current testbed with new images & fresh 20 | configuration. 21 | - **Plugins**: plugin-based design, allowing custom user injections to alter 22 | and/or enhance the current runtime environment. 23 | 24 | 25 | Installation & Updates 26 | ---------------------- 27 | 28 | Easypy module ``easypy`` is installed by default as part of pyATS installation. 29 | The package is also featured in the PyPI server, and can be installed 30 | separately. 31 | 32 | Note that ``easypy`` module is part of the ``pyats`` namespace, and therefore, 33 | users should always refer to the full namespace when installing & using: 34 | 35 | .. code-block:: bash 36 | 37 | pip install pyats.easypy 38 | 39 | To upgrade an existing installation of Easypy package in your environment, do: 40 | 41 | .. code-block:: bash 42 | 43 | pip install pyats.easypy --upgrade 44 | 45 | .. note :: 46 | 47 | always read the :ref:`changelog` first before you upgrade. 48 | 49 | 50 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | __build__/ 4 | *.py[cod] 5 | *$py.class 6 | 7 | # C extensions 8 | *.so 9 | 10 | # Distribution / packaging 11 | .Python 12 | env/ 13 | build/ 14 | develop-eggs/ 15 | dist/ 16 | downloads/ 17 | eggs/ 18 | .eggs/ 19 | lib/ 20 | lib64/ 21 | parts/ 22 | sdist/ 23 | var/ 24 | wheels/ 25 | *.egg-info/ 26 | .installed.cfg 27 | *.egg 28 | 29 | # PyInstaller 30 | # Usually these files are written by a python script from a template 31 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 32 | *.manifest 33 | *.spec 34 | 35 | # Installer logs 36 | pip-log.txt 37 | pip-delete-this-directory.txt 38 | 39 | # Unit test / coverage reports 40 | htmlcov/ 41 | .tox/ 42 | .coverage 43 | .coverage.* 44 | .cache 45 | nosetests.xml 46 | coverage.xml 47 | *.cover 48 | .hypothesis/ 49 | 50 | # Translations 51 | *.mo 52 | *.pot 53 | 54 | # Django stuff: 55 | *.log 56 | local_settings.py 57 | 58 | # Flask stuff: 59 | instance/ 60 | .webassets-cache 61 | 62 | # Scrapy stuff: 63 | .scrapy 64 | 65 | # Sphinx documentation 66 | docs/_build/ 67 | 68 | # PyBuilder 69 | target/ 70 | 71 | # Jupyter Notebook 72 | .ipynb_checkpoints 73 | 74 | # pyenv 75 | .python-version 76 | 77 | # celery beat schedule file 78 | celerybeat-schedule 79 | 80 | # SageMath parsed files 81 | *.sage.py 82 | 83 | # dotenv 84 | .env 85 | 86 | # virtualenv 87 | .venv 88 | venv/ 89 | ENV/ 90 | 91 | # Spyder project settings 92 | .spyderproject 93 | .spyproject 94 | 95 | # Rope project settings 96 | .ropeproject 97 | 98 | # mkdocs documentation 99 | /site 100 | 101 | # mypy 102 | .mypy_cache/ 103 | 104 | # Internal styling and template 105 | _static 106 | _templates 107 | 108 | # .vscode 109 | .vscode 110 | .history -------------------------------------------------------------------------------- /docs/robot/native.rst: -------------------------------------------------------------------------------- 1 | RobotFramework Keywords 2 | ======================= 3 | 4 | The ``pyats.robot`` module also features RobotFramework keywords_, enabling 5 | users to leverage pyATS features and scripts. 6 | 7 | .. _keywords: http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#creating-user-keywords 8 | 9 | Features 10 | -------- 11 | 12 | - run pyATS AEtest testcases and converting results to Robot 13 | 14 | - loading/using pyATS testbed topology YAML files 15 | 16 | - connect/interact with testbed devices dynamically 17 | 18 | Keywords 19 | -------- 20 | 21 | For the complete set of keywords supported by this package, refer to 22 | `pyATS Keywords`_. 23 | 24 | .. _pyATS Keywords: ../robot.html 25 | 26 | 27 | Example 28 | ------- 29 | 30 | .. code-block:: robotframework 31 | 32 | # Example 33 | # ------- 34 | # 35 | # Demonstration of pyATS Robot Framework Keywords 36 | 37 | *** Settings *** 38 | # Importing test libraries, resource files and variable files. 39 | 40 | Library ats.robot.pyATSRobot 41 | 42 | *** Variables *** 43 | # Defining variables that can be used elsewhere in the test data. 44 | # Can also be driven as dash argument at runtime 45 | 46 | ${datafile} datafile.yaml 47 | ${testbed} testbed.yaml 48 | 49 | *** Test Cases *** 50 | # Creating test cases from available keywords. 51 | 52 | Initialize 53 | # select the testbed to use 54 | use testbed "${testbed}" 55 | 56 | # connec to testbed device through cli 57 | connect to device "ios" as alias "cli" 58 | 59 | CommonSetup 60 | # calling pyats common_setup 61 | run testcase "basic_example_script.common_setup" 62 | 63 | Testcase pass 64 | # calling pyats testcase 65 | run testcase "basic_example_script.tc_one" 66 | -------------------------------------------------------------------------------- /docs/connections/pool_flow.xml: -------------------------------------------------------------------------------- 1 | 7VpfU9s4EP80mfYeYPwnBHhsQum99KYz3Mxdn26ErdgaFIuTFf7cp++uvYptyQGTGAo98pDY69Vqtb+fVis5k3ixuvui2XX+VaVcTqIgvZvEZ5MoCqdxAD8oua8lx/GsFmRapKTUCC7Ef5yE1C5bi5SXHUWjlDTiuitMVFHwxHRkTGt121VbKtnt9ZpltsdGcJEw6Uv/EqnJa+lJRKNA+e9cZLntOZyd1k8uWXKVabUuqL9JFC+rT/14xawtGmiZs1TdtkTxZ4irVgos49XqbsElxtaGrW53vuXpxm/NC/Lt4QbwCBvcMLmmoX9lovimVcLLklw09zYst7kw/OKaJXh/C9BP4nluVhLuQrgkW1wbbpng+1OJyJkvXK240fegQg2OKS7Em6Pj+va2ASG0octbAMxIxgj3bGO4GTtc0PD7QxF7ofDGz4v0E7IL7hLJylIk3QDwO2H+huvg8IjuvndCw1OPdk5goDu11lV8LTp+rFrROOoJhpVpLpkRN90e+yJEPXxTAnzZQHEQ2qg6YFgTtafUqs0xx1BoswHZiU8dQ4bpjBvPEISa4XCt2jUqVKQc1k9IDg/2iwI3WJ/i0/Cr9rhh2wazQQQ82Z+AQ2n2szgVxtSEQhgFzsQdzqmuoXhK03dsTp32O7zVL0ff+jUWR+wC+XNIQoOcBltQHEii18AX15eR+DJ1cuZjfHH1nRy0P19o2B2+ACWBL0yjH1RBCVUgBaDGgh8F1UpQYlEWBaA+k4DfPBU3cJlVl/xGJPywMvEPtvm4ZIlR6NPZn1wW3CxaVsHH2gL42jLSYxd+2QpriuKyxB/o/rWKqujEZxCdX3J4TIqK8R8Q3Q+/bRuik3ig7EN5K9WURqsrvlBSaZAUqgDN+VJI6Yigv6yAW8mXaAFLSAHV+CcSr0SaYifzvgJUgfZSVukuBz0ODeZLVZhzthISKbmAHCG4Bl//4KA1RpnqlkZh6BeqsS0XOoWqs0ztUqiGftH+0BpAIW6h8mB0oOU5AIRV7JsoKBwgbJ5/8gLhIhqHh1EcHM9O628L8CPrxS4pum/jgSmalVe4780xDVNmNgrRuONJlblXKwb7zK35GfXWhn8E8b9r3FDOyxwYATFfF4UosgPI/UuRNY+3zvOeVIYOklMlh606AK70FdcHEP9A4P3lugTgnmSQSakSZtrmqpjjKMFoCfHxxv2ek2wpceKWHnRa0ZqJkdVpT0W7594rJx2NTeJhIqI6Wt7OdwhrWZUiexK9h54AyUOWniL1Z0NDe+zxnff9vN/siTa8p410m/d9S9AovO/btO/I5Rr1DczBUhSizDlebkq0+rtaN81aF8CLZ6MfcB2nbrUxcHM7rNqclejaOxkdMjobVnse0CZj3wmmPSDfi4x0CP0ShSHEQ99XZ532Bo86g8MITz63VI11zdSdOMNDGx+7Rys0uvFPHdxDnF1PHVyXQ4jOM1WRllPeAuzlE5y/j+aTIdkAu3vPBk8pyeKAav12NrDLUCcbOLuNXbJBz7sdeq+DyI2OSQIxgei9BVQiiq6dlRalFip9oNgpthco/mbPgmLf//w/QQmPnFT5kqBMX/e6ufsaGc1eao30gBi6RnoVk2toxDWSaqy3j/Ns6r428Pc84+DsvaAInUJ1KM7eWugaGhFnyu+/Hs7PN5+9F1e7zmfvGGq0+Qy3zR9javXm30fx5x8= -------------------------------------------------------------------------------- /docs/changelog/2015/november.rst: -------------------------------------------------------------------------------- 1 | November 2015 2 | ============= 3 | 4 | 5 | Nov 11, 2015 6 | ------------ 7 | 8 | 9 | .. csv-table:: Module Versions 10 | :header: "Modules", "Versions" 11 | 12 | ``ats.examples``, v2.1.3 13 | 14 | Changes 15 | """"""" 16 | 17 | - Examples should reflect using ``-testbed_file`` rather than ``-tf``. 18 | 19 | 20 | Upgrade Instructions 21 | """""""""""""""""""" 22 | 23 | - if you are upgrading from ``v2.0.1+``, it is pretty straightforward: 24 | 25 | .. code-block:: bash 26 | 27 | bash$ pip install --upgrade ats.topology ats.examples ats.bringup 28 | 29 | - if you are upgrading from a lower version, please refer to ``v2.0.0`` and 30 | ``v2.0.1`` upgrade instructions first. 31 | 32 | 33 | 34 | Nov 2, 2015 35 | ----------- 36 | 37 | 38 | .. csv-table:: Module Versions 39 | :header: "Modules", "Versions" 40 | 41 | ``ats.bringup``, v2.1.2 42 | ``ats.examples``, v2.1.2 43 | ``ats.topology``, v2.1.1 44 | 45 | Changes 46 | """"""" 47 | 48 | - Added support for invoking IOSv and NXOSv (Titanium) on a LaaS backend server. 49 | - Added support for invoking multiple parallel LaaS topologies via the 50 | :ref:`async_index`. 51 | - Changed `is_logical` testbed configuration key to `logical`, but the old form 52 | is still supported. 53 | - Added working examples of using bringup to launch and test a 54 | topology on a LaaS backend. 55 | - Extended the testbed schema to support LaaS server configuration for 56 | bringup. 57 | 58 | 59 | 60 | Upgrade Instructions 61 | """""""""""""""""""" 62 | 63 | - if you are upgrading from ``v2.0.1+``, it is pretty straightforward: 64 | 65 | .. code-block:: bash 66 | 67 | bash$ pip install --upgrade ats.topology ats.examples ats.bringup 68 | 69 | - if you are upgrading from a lower version, please refer to ``v2.0.0`` and 70 | ``v2.0.1`` upgrade instructions first. 71 | 72 | 73 | -------------------------------------------------------------------------------- /docs/changelog/2022/october.rst: -------------------------------------------------------------------------------- 1 | October 2022 2 | ========== 3 | 4 | October 25 - Pyats v22.10 5 | ------------------------ 6 | 7 | 8 | 9 | .. csv-table:: New Module Versions 10 | :header: "Modules", "Version" 11 | 12 | ``pyats``, v22.10 13 | ``pyats.aereport``, v22.10 14 | ``pyats.aetest``, v22.10 15 | ``pyats.async``, v22.10 16 | ``pyats.cisco``, v22.10 17 | ``pyats.connections``, v22.10 18 | ``pyats.datastructures``, v22.10 19 | ``pyats.easypy``, v22.10 20 | ``pyats.kleenex``, v22.10 21 | ``pyats.log``, v22.10 22 | ``pyats.reporter``, v22.10 23 | ``pyats.results``, v22.10 24 | ``pyats.robot``, v22.10 25 | ``pyats.tcl``, v22.10 26 | ``pyats.topology``, v22.10 27 | ``pyats.utils``, v22.10 28 | 29 | Upgrade Instructions 30 | ^^^^^^^^^^^^^^^^^^^^ 31 | 32 | .. code-block:: bash 33 | 34 | # DevNet Community 35 | bash$ pip install --upgrade pyats 36 | 37 | # Cisco Internal Developers 38 | bash$ pip install --upgrade ats 39 | 40 | 41 | 42 | 43 | Changelogs 44 | ^^^^^^^^^^ 45 | -------------------------------------------------------------------------------- 46 | Fix 47 | -------------------------------------------------------------------------------- 48 | 49 | * pyats.utils 50 | * Updated markup processer to support keys() as target 51 | * Support %EXTEND_LIST markup to extend one or more lists as a value 52 | * Modified recursive dict update to support hierarchical use of EXTEND_LIST markup 53 | 54 | * log 55 | * Modified archive.py 56 | * Added await to fix the bug where exposed API calls for results does not return file contents. 57 | 58 | * reporter 59 | * Added Schema 60 | * schema for results.json 61 | * Modified commands.py 62 | * added pyats validate results 63 | 64 | 65 | -------------------------------------------------------------------------------- /docs/changelog/2022/july.rst: -------------------------------------------------------------------------------- 1 | July 2022 2 | ========== 3 | 4 | July 26 - Pyats v22.7 5 | ------------------------ 6 | 7 | 8 | 9 | .. csv-table:: New Module Versions 10 | :header: "Modules", "Version" 11 | 12 | ``pyats``, v22.7 13 | ``pyats.aereport``, v22.7 14 | ``pyats.aetest``, v22.7 15 | ``pyats.async``, v22.7 16 | ``pyats.cisco``, v22.7 17 | ``pyats.connections``, v22.7 18 | ``pyats.datastructures``, v22.7 19 | ``pyats.easypy``, v22.7 20 | ``pyats.kleenex``, v22.7 21 | ``pyats.log``, v22.7 22 | ``pyats.reporter``, v22.7 23 | ``pyats.results``, v22.7 24 | ``pyats.robot``, v22.7 25 | ``pyats.tcl``, v22.7 26 | ``pyats.topology``, v22.7 27 | ``pyats.utils``, v22.7 28 | 29 | Upgrade Instructions 30 | ^^^^^^^^^^^^^^^^^^^^ 31 | 32 | .. code-block:: bash 33 | 34 | # DevNet Community 35 | bash$ pip install --upgrade pyats 36 | 37 | # Cisco Internal Developers 38 | bash$ pip install --upgrade ats 39 | 40 | 41 | 42 | 43 | Changelogs 44 | ^^^^^^^^^^ 45 | -------------------------------------------------------------------------------- 46 | Fix 47 | -------------------------------------------------------------------------------- 48 | 49 | * pyats.topology 50 | * Update schema to correctly reflect peripheral structure 51 | 52 | * pyats.easypy 53 | * Modified MailBot: 54 | * Enabled {runtime} formatting for custom subjects on CLI 55 | * Added `email.subject` configuration option 56 | 57 | -------------------------------------------------------------------------------- 58 | New 59 | -------------------------------------------------------------------------------- 60 | 61 | * ats.devat 62 | * Add DevAT package to pyats repo 63 | 64 | 65 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # pyATS Issue Tracker 2 | 3 | This is a place-holder repository used only so there's a bug tracking/forum/wiki for Cisco pyATS Test Framework. 4 | 5 | Use the issue tab above to create issues for pyATS. 6 | 7 | ## General Information 8 | 9 | - Website: https://developer.cisco.com/pyats/ 10 | - Documentation: https://developer.cisco.com/docs/pyats/ 11 | - Support: pyats-support-ext@cisco.com 12 | 13 | ## Common Questions 14 | 15 | ##### Is pyATS Free to Use 16 | Yes, pyATS is 100% free to use for anyone and everyone, and available through Python Package Index. 17 | 18 | ``` 19 | $ pip install pyats[full] 20 | ``` 21 | 22 | ##### Where do I get support? 23 | You can send an email to pyats-support-ext@cisco.com directly, or post a question in the issues page in this repo. The team will get back to you as soon as possible. 24 | 25 | Note that if you received pyATS/scripts as part of a collaborated effort with a Cisco development/test/engineering team, you should be approaching that team instead for script support. 26 | 27 | ##### Is pyATS Open Source? 28 | Not yet. At the moment the core of pyATS is still closed-source as it is a critical part of the sanity/regression test infrastructure. Through DevNet we are only releasing the Cythonized, binary format of pyATS core framework, enabling customer/external developer usage & close team collaboration. 29 | 30 | However, other packages that are developed to be used with pyATS, such as Unicon plugins, parser libraries, packages, YANG/REST connectors and etc, will be open source to public, and available to all in GitHub. 31 | 32 | ##### Will the pyATS core framework be open source one day? 33 | We consider DevNet as the first baby step towards opening up the infrastructure to the general public. All other options, including open sourcing, are not out of the picture. We will be closely monitoring community adoption, feedback, and take the next steps accordingly. 34 | -------------------------------------------------------------------------------- /docs/changelog/2025/may.rst: -------------------------------------------------------------------------------- 1 | May 2025 2 | ========== 3 | 4 | - Pyats v25.5 5 | ------------------------ 6 | 7 | 8 | 9 | .. csv-table:: New Module Versions 10 | :header: "Modules", "Version" 11 | 12 | ``pyats``, v25.5 13 | ``pyats.aereport``, v25.5 14 | ``pyats.aetest``, v25.5 15 | ``pyats.async``, v25.5 16 | ``pyats.cisco``, v25.5 17 | ``pyats.connections``, v25.5 18 | ``pyats.datastructures``, v25.5 19 | ``pyats.easypy``, v25.5 20 | ``pyats.kleenex``, v25.5 21 | ``pyats.log``, v25.5 22 | ``pyats.reporter``, v25.5 23 | ``pyats.results``, v25.5 24 | ``pyats.robot``, v25.5 25 | ``pyats.tcl``, v25.5 26 | ``pyats.topology``, v25.5 27 | ``pyats.utils``, v25.5 28 | 29 | 30 | 31 | 32 | Changelogs 33 | ^^^^^^^^^^ 34 | -------------------------------------------------------------------------------- 35 | New 36 | -------------------------------------------------------------------------------- 37 | 38 | * utils 39 | * fileutils 40 | * removed fileutils logic and moved it to filetransferutils pkg in genielibs. 41 | 42 | 43 | -------------------------------------------------------------------------------- 44 | Fix 45 | -------------------------------------------------------------------------------- 46 | 47 | * reporter 48 | * server 49 | * Changed from select.select() to select.poll() to avoid file descriptor leak 50 | * client 51 | * Added retry logic for connection to server 52 | 53 | * easypy 54 | * Replace special characters in job UID with `_` 55 | * Ingore testscript path for rerun check 56 | 57 | * pyats 58 | * Add log_level option to cmd utility function 59 | 60 | * pyats.cisco 61 | * Make TIMS testcase lookup optional 62 | 63 | 64 | -------------------------------------------------------------------------------- /docs/cli/pyats_migrate.rst: -------------------------------------------------------------------------------- 1 | pyats migrate 2 | ============= 3 | 4 | Command to identify and inform a user of required upcoming changes to their 5 | environment. 6 | 7 | .. code-block:: text 8 | 9 | Usage: 10 | pyats migrate [options] 11 | 12 | Subcommands: 13 | abstract Discover what changes must be made to existing test environments to conform 14 | to the new token discovery. 15 | 16 | 17 | pyats migrate abstract 18 | --------------------- 19 | 20 | The mechanism for `Genie Abstract`_ and the organization of `Unicon Supported Platforms`_ 21 | are being updated for better consistency and utility. This subcommand will 22 | examine your environment and inform you of any potential changes that may be 23 | required. The usage of ``os``, ``model``, ``platform`` will be strictly defined within 24 | Unicon in the `PID tokens`_ file and may require updates to testbeds and scripts to correctly reflect 25 | these definitions. 26 | 27 | .. _Genie Abstract: https://pubhub.devnetcloud.com/media/genie-docs/docs/abstract/index.html 28 | .. _Unicon Supported Platforms: https://pubhub.devnetcloud.com/media/unicon/docs/user_guide/supported_platforms.html 29 | .. _PID tokens: https://github.com/CiscoTestAutomation/unicon.plugins/blob/master/src/unicon/plugins/pid_tokens.csv 30 | 31 | .. code-block:: text 32 | 33 | Usage: 34 | pyats migrate abstract [options] 35 | 36 | Description: 37 | Discover what changes must be made to existing test environments to conform to the new token discovery. 38 | 39 | Abstract Options: 40 | path Path to start searching for files 41 | --init Only process __init__.py files 42 | --python Only process Python files 43 | --yaml Only process YAML files 44 | --threads THREADS Max number of threads to run while processing files (default 100) 45 | -------------------------------------------------------------------------------- /docs/apidoc/utils/index.rst: -------------------------------------------------------------------------------- 1 | pyats.utils package 2 | =================== 3 | 4 | .. automodule:: pyats.utils 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Subpackages 10 | ----------- 11 | 12 | .. toctree:: 13 | 14 | pyats.utils.fileutils 15 | pyats.utils.import_utils 16 | pyats.utils.yaml 17 | 18 | Submodules 19 | ---------- 20 | 21 | 22 | .. automodule:: pyats.utils.ansi 23 | :members: 24 | :undoc-members: 25 | :show-inheritance: 26 | 27 | 28 | .. automodule:: pyats.utils.cli_parse_helpers 29 | :members: 30 | :undoc-members: 31 | :show-inheritance: 32 | 33 | 34 | .. automodule:: pyats.utils.commands 35 | :members: 36 | :undoc-members: 37 | :show-inheritance: 38 | 39 | 40 | .. automodule:: pyats.utils.dicts 41 | :members: 42 | :undoc-members: 43 | :show-inheritance: 44 | 45 | 46 | .. automodule:: pyats.utils.email 47 | :members: 48 | :undoc-members: 49 | :show-inheritance: 50 | 51 | 52 | .. automodule:: pyats.utils.exceptions 53 | :members: 54 | :undoc-members: 55 | :show-inheritance: 56 | 57 | 58 | .. automodule:: pyats.utils.objects 59 | :members: 60 | :undoc-members: 61 | :show-inheritance: 62 | 63 | 64 | .. automodule:: pyats.utils.parser 65 | :members: 66 | :undoc-members: 67 | :show-inheritance: 68 | 69 | 70 | .. automodule:: pyats.utils.schemaengine 71 | :members: 72 | :undoc-members: 73 | :show-inheritance: 74 | 75 | 76 | .. automodule:: pyats.utils.secret_strings 77 | :members: 78 | :undoc-members: 79 | :show-inheritance: 80 | 81 | 82 | .. automodule:: pyats.utils.sig_handlers 83 | :members: 84 | :undoc-members: 85 | :show-inheritance: 86 | 87 | 88 | .. automodule:: pyats.utils.strings 89 | :members: 90 | :undoc-members: 91 | :show-inheritance: 92 | 93 | 94 | .. automodule:: pyats.utils.utils 95 | :members: 96 | :undoc-members: 97 | :show-inheritance: 98 | 99 | -------------------------------------------------------------------------------- /docs/changelog/2023/october.rst: -------------------------------------------------------------------------------- 1 | October 2023 2 | ========== 3 | 4 | October 31 - Pyats v23.10 5 | ------------------------ 6 | 7 | 8 | 9 | .. csv-table:: New Module Versions 10 | :header: "Modules", "Version" 11 | 12 | ``pyats``, v23.10 13 | ``pyats.aereport``, v23.10 14 | ``pyats.aetest``, v23.10 15 | ``pyats.async``, v23.10 16 | ``pyats.cisco``, v23.10 17 | ``pyats.connections``, v23.10 18 | ``pyats.datastructures``, v23.10 19 | ``pyats.easypy``, v23.10 20 | ``pyats.kleenex``, v23.10 21 | ``pyats.log``, v23.10 22 | ``pyats.reporter``, v23.10 23 | ``pyats.results``, v23.10 24 | ``pyats.robot``, v23.10 25 | ``pyats.tcl``, v23.10 26 | ``pyats.topology``, v23.10 27 | ``pyats.utils``, v23.10 28 | 29 | Upgrade Instructions 30 | ^^^^^^^^^^^^^^^^^^^^ 31 | 32 | .. code-block:: bash 33 | 34 | # DevNet Community 35 | bash$ pip install --upgrade pyats 36 | 37 | # Cisco Internal Developers 38 | bash$ pip install --upgrade ats 39 | 40 | 41 | 42 | 43 | Changelogs 44 | ^^^^^^^^^^ 45 | -------------------------------------------------------------------------------- 46 | Fix 47 | -------------------------------------------------------------------------------- 48 | 49 | * pyats.kleenex 50 | * Modified markup processor to use chainattrget utility function to allow object attribute and key lookup 51 | 52 | * easypy 53 | * Modified update_job 54 | * Modified update_job to format elapsedtime 55 | 56 | 57 | -------------------------------------------------------------------------------- 58 | New 59 | -------------------------------------------------------------------------------- 60 | 61 | * topology 62 | * Updated schema for fallback credentials 63 | * Add fallback credentials under connection 64 | 65 | 66 | -------------------------------------------------------------------------------- /docs/changelog/2017/nov.rst: -------------------------------------------------------------------------------- 1 | November 2017 2 | ============= 3 | 4 | 5 | Nov 22, 2017 6 | ------------ 7 | 8 | .. csv-table:: New Module Versions 9 | :header: "Modules", "Versions" 10 | 11 | ``ats.easypy``, v3.3.9 12 | 13 | 14 | Upgrade Instructions 15 | ^^^^^^^^^^^^^^^^^^^^ 16 | 17 | .. code-block:: bash 18 | 19 | bash$ pip install --upgrade ats.easypy 20 | 21 | Changes 22 | ^^^^^^^ 23 | 24 | - easypy 25 | 26 | .. warning:: 27 | 28 | **Backwards-incompatiable change**. Please add the 29 | ``-invoke_clean`` parameter to your easypy command if you want 30 | clean to be executed. 31 | 32 | - Now clean is only executed when the ``-invoke_clean`` parameter is 33 | specified. 34 | 35 | - If ``-clean_file`` is specified it is parsed and loaded into your 36 | ``testbed.devices[].clean`` object(s) as usual, whether or not 37 | ``-invoke_clean`` is specified. Please see :ref:`clean_file` for details. 38 | 39 | 40 | 41 | 42 | Nov 20, 2017 43 | ------------ 44 | 45 | .. csv-table:: New Module Versions 46 | :header: "Modules", "Versions" 47 | 48 | ``ats.aetest``, v3.3.3 49 | 50 | 51 | Upgrade Instructions 52 | ^^^^^^^^^^^^^^^^^^^^ 53 | 54 | .. code-block:: bash 55 | 56 | bash$ pip install --upgrade ats.aetest 57 | 58 | Changes 59 | ^^^^^^^ 60 | 61 | - AEtest 62 | 63 | - Enhanced the logger to auto escape invalid XML character in logged message 64 | before transmitting to AEReport over XMLRPC. 65 | 66 | 67 | Nov 7, 2017 68 | ----------- 69 | 70 | .. csv-table:: New Module Versions 71 | :header: "Modules", "Versions" 72 | 73 | ``ats.easypy``, v3.3.8 74 | 75 | 76 | Upgrade Instructions 77 | ^^^^^^^^^^^^^^^^^^^^ 78 | 79 | .. code-block:: bash 80 | 81 | bash$ pip install --upgrade ats.easypy 82 | 83 | Changes 84 | ^^^^^^^ 85 | 86 | - Easypy 87 | 88 | - Fixed a bug where archive top-level directory was still being created when 89 | ``-no_archive`` option is provided. 90 | -------------------------------------------------------------------------------- /docs/cli/pyats.rst: -------------------------------------------------------------------------------- 1 | pyats 2 | ===== 3 | 4 | Top-level command-line entry point for pyATS. All other functions 5 | are loaded as subcommands of this command. 6 | 7 | 8 | Synopsis 9 | -------- 10 | 11 | .. code-block:: bash 12 | 13 | Usage: 14 | pyats [options] 15 | 16 | Commands: 17 | clean runs the provided clean file 18 | create create scripts and libraries from template 19 | diff Command to diff two snapshots saved to file or directory 20 | learn Command to learn device features and save to file 21 | logs command enabling log archive viewing in local browser 22 | migrate utilities for migrating to future versions of pyATS 23 | parse Command to parse show commands 24 | run runs the provided script and output corresponding results. 25 | secret utilities for working with secret strings. 26 | shell enter Python shell, loading a pyATS testbed file and/or pickled data 27 | validate utilities that help to validate input files 28 | version commands related to version display and manipulation 29 | 30 | General Options: 31 | -h, --help Show help 32 | 33 | Run 'pyats --help' for more information on a command. 34 | 35 | 36 | .. tip:: 37 | 38 | the number of subcommands homed under top-level ``pyats`` command may vary 39 | depending on your pyATS version, packages installed, and other variables. 40 | 41 | Common Options 42 | -------------- 43 | 44 | Optional arguments built into the core ``pyats`` command, that can be added to 45 | any level/subcommands. 46 | 47 | ``-h``, ``--help`` 48 | display help for the given command and/or subcommand 49 | 50 | ``-v``, ``--verbose`` 51 | increase the verbosity of display output 52 | 53 | ``-q``, ``--quiet`` 54 | decrease the verbosity of displayed output 55 | -------------------------------------------------------------------------------- /docs/changelog/2025/december.rst: -------------------------------------------------------------------------------- 1 | December 2025 2 | ========== 3 | 4 | December 30 - Pyats v25.11 5 | ------------------------ 6 | 7 | 8 | 9 | .. csv-table:: New Module Versions 10 | :header: "Modules", "Version" 11 | 12 | ``pyats``, v25.11 13 | ``pyats.aereport``, v25.11 14 | ``pyats.aetest``, v25.11 15 | ``pyats.async``, v25.11 16 | ``pyats.cisco``, v25.11 17 | ``pyats.connections``, v25.11 18 | ``pyats.datastructures``, v25.11 19 | ``pyats.easypy``, v25.11 20 | ``pyats.kleenex``, v25.11 21 | ``pyats.log``, v25.11 22 | ``pyats.reporter``, v25.11 23 | ``pyats.results``, v25.11 24 | ``pyats.robot``, v25.11 25 | ``pyats.tcl``, v25.11 26 | ``pyats.topology``, v25.11 27 | ``pyats.utils``, v25.11 28 | 29 | 30 | 31 | 32 | Changelogs 33 | ^^^^^^^^^^ 34 | -------------------------------------------------------------------------------- 35 | Fix 36 | -------------------------------------------------------------------------------- 37 | 38 | * kleenex-pkg/clean/loader/_impl 39 | * Update the logic to handle clean when device is not provided in the 40 | 41 | * devat-pkg 42 | * Update device compliance to check for password complexity for devices 43 | 44 | * aetest 45 | * Testscripts that are unable to load will now properly report their failure in the Reporter. 46 | 47 | * topology.schema 48 | * Added 'os' key to server definition 49 | 50 | 51 | -------------------------------------------------------------------------------- 52 | New 53 | -------------------------------------------------------------------------------- 54 | 55 | * pyats-pkg 56 | * Added Manifest Schema Support for Per-Profile Tags 57 | * Enhanced manifest schema to support optional 'tags' field within profile definitions 58 | 59 | * reporter 60 | * Added ability to override Task result in Reporter server API. 61 | 62 | 63 | -------------------------------------------------------------------------------- /docs/changelog/2025/september.rst: -------------------------------------------------------------------------------- 1 | September 2025 2 | ========== 3 | 4 | September 30 - Pyats v25.9 5 | 6 | ------------------------ 7 | 8 | 9 | 10 | .. csv-table:: New Module Versions 11 | :header: "Modules", "Version" 12 | 13 | ``pyats``, v25.9 14 | ``pyats.aereport``, v25.9 15 | ``pyats.aetest``, v25.9 16 | ``pyats.async``, v25.9 17 | ``pyats.cisco``, v25.9 18 | ``pyats.connections``, v25.9 19 | ``pyats.datastructures``, v25.9 20 | ``pyats.easypy``, v25.9 21 | ``pyats.kleenex``, v25.9 22 | ``pyats.log``, v25.9 23 | ``pyats.reporter``, v25.9 24 | ``pyats.results``, v25.9 25 | ``pyats.robot``, v25.9 26 | ``pyats.tcl``, v25.9 27 | ``pyats.topology``, v25.9 28 | ``pyats.utils``, v25.9 29 | 30 | 31 | 32 | 33 | Changelogs 34 | ^^^^^^^^^^ 35 | -------------------------------------------------------------------------------- 36 | Fix 37 | -------------------------------------------------------------------------------- 38 | 39 | * pyats.topology 40 | * Enhanced TopologyDict.get() to support alias based lookups in addition to keys 41 | 42 | * pyats.devat 43 | * Update the check for device console to exempt windows devices, and Update the exempt VRF models to include c9800cl and c9800cl. 44 | 45 | * reporter 46 | * Added handling for issues encountered while terminating a client unexptectedly 47 | 48 | 49 | -------------------------------------------------------------------------------- 50 | New 51 | -------------------------------------------------------------------------------- 52 | 53 | * pyats.devat 54 | * Add a new method `Update_device_compliance_attribute` to update the device compliance attribute for devices based on their compliance status. 55 | 56 | * pyats.utils 57 | * Added new singleton `working_set` to utils.py to take over for deprecated `pkg_resources.working_set`. 58 | 59 | 60 | -------------------------------------------------------------------------------- /docs/changelog/2024/july.rst: -------------------------------------------------------------------------------- 1 | July 2024 2 | ========== 3 | 4 | July 30 - Pyats v24.7 5 | ------------------------ 6 | 7 | 8 | 9 | .. csv-table:: New Module Versions 10 | :header: "Modules", "Version" 11 | 12 | ``pyats``, v24.7 13 | ``pyats.aereport``, v24.7 14 | ``pyats.aetest``, v24.7 15 | ``pyats.async``, v24.7 16 | ``pyats.cisco``, v24.7 17 | ``pyats.connections``, v24.7 18 | ``pyats.datastructures``, v24.7 19 | ``pyats.easypy``, v24.7 20 | ``pyats.kleenex``, v24.7 21 | ``pyats.log``, v24.7 22 | ``pyats.reporter``, v24.7 23 | ``pyats.results``, v24.7 24 | ``pyats.robot``, v24.7 25 | ``pyats.tcl``, v24.7 26 | ``pyats.topology``, v24.7 27 | ``pyats.utils``, v24.7 28 | 29 | Upgrade Instructions 30 | ^^^^^^^^^^^^^^^^^^^^ 31 | 32 | .. code-block:: bash 33 | 34 | # DevNet Community 35 | bash$ pip install --upgrade pyats 36 | 37 | # Cisco Internal Developers 38 | bash$ pip install --upgrade ats 39 | 40 | 41 | 42 | 43 | Changelogs 44 | ^^^^^^^^^^ 45 | -------------------------------------------------------------------------------- 46 | Fix 47 | -------------------------------------------------------------------------------- 48 | 49 | * pyats.utils 50 | * Modified argv parser helper function 51 | * Ignore arguments after `--` 52 | * Allow `-` to be passed as a value 53 | 54 | * pyats.cli 55 | * Modified version update 56 | * Ignore packages that have no matching version 57 | 58 | 59 | -------------------------------------------------------------------------------- 60 | New 61 | -------------------------------------------------------------------------------- 62 | 63 | * pyats.reporter 64 | * update the log offset for each sub process 65 | 66 | * pyats 67 | * remove init file for declaring namespaces for all the packages to avoid deprecation messages. 68 | 69 | 70 | -------------------------------------------------------------------------------- /docs/changelog/2018/aug.rst: -------------------------------------------------------------------------------- 1 | August 20, 2018 2 | --------------- 3 | 4 | .. csv-table:: New Module Versions 5 | :header: "Modules", "Versions" 6 | 7 | ``ats.utils``, v4.1.6 8 | ``ats.topology``, 4.1.4 9 | 10 | Upgrade Instructions 11 | ^^^^^^^^^^^^^^^^^^^^ 12 | 13 | .. code-block:: bash 14 | 15 | # DevNet Community 16 | bash$ pip install --upgrade pyats.topology pyats.utils 17 | 18 | # Cisco Internal Developers 19 | bash$ pip install --upgrade ats.topology ats.utils 20 | 21 | Changes 22 | ^^^^^^^ 23 | 24 | - Enhancement for multiprotocol file transfer utilities : 25 | 26 | - multiple addresses can be specified per server, where the first 27 | network reachable address will be preferred. 28 | 29 | 30 | 31 | August 8, 2018 32 | -------------- 33 | 34 | .. csv-table:: New Module Versions 35 | :header: "Modules", "Versions" 36 | 37 | ``ats.utils``, v4.1.5 38 | 39 | 40 | Upgrade Instructions 41 | ^^^^^^^^^^^^^^^^^^^^ 42 | 43 | .. code-block:: bash 44 | 45 | # DevNet Community 46 | bash$ pip install --upgrade pyats.utils 47 | 48 | # Cisco Internal Developers 49 | bash$ pip install --upgrade ats.utils 50 | 51 | Changes 52 | ^^^^^^^ 53 | 54 | - Fixes for multiprotocol file transfer utilities Linux plugin: 55 | 56 | - Now supporting Cisco switching/routing devices acting as servers. 57 | - Now allowing relative local paths to be specified. 58 | 59 | 60 | August 7, 2018 61 | -------------- 62 | 63 | .. csv-table:: New Module Versions 64 | :header: "Modules", "Versions" 65 | 66 | ``ats.easypy``, v4.1.10 67 | 68 | 69 | Upgrade Instructions 70 | ^^^^^^^^^^^^^^^^^^^^ 71 | 72 | .. code-block:: bash 73 | 74 | # DevNet Community 75 | bash$ pip install --upgrade pyats.easypy 76 | 77 | # Cisco Internal Developers 78 | bash$ pip install --upgrade ats.easypy 79 | 80 | Changes 81 | ^^^^^^^ 82 | 83 | - fixed a bug where when rerun feature is used, unused tasks (not destined 84 | to rerun) are not initialized properly as processes. 85 | -------------------------------------------------------------------------------- /docs/changelog/2025/august.rst: -------------------------------------------------------------------------------- 1 | August 2025 2 | ========== 3 | 4 | August 23 - Pyats v25.8 5 | ------------------------ 6 | 7 | 8 | 9 | .. csv-table:: New Module Versions 10 | :header: "Modules", "Version" 11 | 12 | ``pyats``, v25.8 13 | ``pyats.aereport``, v25.8 14 | ``pyats.aetest``, v25.8 15 | ``pyats.async``, v25.8 16 | ``pyats.cisco``, v25.8 17 | ``pyats.connections``, v25.8 18 | ``pyats.datastructures``, v25.8 19 | ``pyats.easypy``, v25.8 20 | ``pyats.kleenex``, v25.8 21 | ``pyats.log``, v25.8 22 | ``pyats.reporter``, v25.8 23 | ``pyats.results``, v25.8 24 | ``pyats.robot``, v25.8 25 | ``pyats.tcl``, v25.8 26 | ``pyats.topology``, v25.8 27 | ``pyats.utils``, v25.8 28 | 29 | 30 | 31 | 32 | Changelogs 33 | ^^^^^^^^^^ 34 | -------------------------------------------------------------------------------- 35 | Fix 36 | -------------------------------------------------------------------------------- 37 | 38 | * pyats.devat 39 | * Update check for device console to exempt linux devices. 40 | 41 | * pyats 42 | * Installer 43 | * Removed requirement for bitbucket token as all repositories are now public. 44 | 45 | * markup 46 | * Added support for runtime yaml markup 47 | 48 | 49 | -------------------------------------------------------------------------------- 50 | New 51 | -------------------------------------------------------------------------------- 52 | 53 | * kleenex 54 | * Added support for overriding configuration values in the clean file using the `--clean-config-override` argument. This allows users to specify configuration overrides in the format `path__to__some_key=value`, enabling dynamic adjustments to the clean configuration without modifying the original file. 55 | 56 | * easypy 57 | * CLI arguments and manifest meta field support for product, component, feature, owner 58 | 59 | 60 | -------------------------------------------------------------------------------- /docs/changelog/2019/dec.rst: -------------------------------------------------------------------------------- 1 | December 2019 2 | ============= 3 | 4 | December 17, 2019 5 | ----------------- 6 | 7 | .. csv-table:: New Module Versions 8 | :header: "Modules", "Version" 9 | 10 | ``pyats``, v19.12 11 | ``pyats.aereport``, v19.12 12 | ``pyats.aetest``, v19.12 13 | ``pyats.async``, v19.12 14 | ``pyats.cisco``, v19.12 15 | ``pyats.connections``, v19.12 16 | ``pyats.datastructures``, v19.12 17 | ``pyats.easypy``, v19.12 18 | ``pyats.kleenex``, v19.12 19 | ``pyats.log``, v19.12 20 | ``pyats.reporter``, v19.12 21 | ``pyats.results``, v19.12 22 | ``pyats.robot``, v19.12 23 | ``pyats.tcl``, v19.12 24 | ``pyats.topology``, v19.12 25 | ``pyats.utils``, v19.12 26 | 27 | Changes 28 | ^^^^^^^ 29 | 30 | Topology 31 | - Added %ASK{user specified prompt} markup, deprecated ASK() for passwords. 32 | 33 | - Added %ENC{encoded string, optional alternate representer} markup, 34 | deprecated ENC() for passwords. 35 | 36 | FileUtils 37 | - Added getspace method to FileUtils for getting available disk space info 38 | from remote server 39 | 40 | AEtest 41 | - Added separate description for steps. The step description no longer 42 | defaults to the name if not specified. 43 | 44 | Reporter 45 | - Change Results.yaml -> results.yaml 46 | 47 | - Results.yaml version 2.1 processors now divided into 'pre' and 'post' 48 | lists. 49 | 50 | - Including processors as sections in ResultsDetails.xml with configuration 51 | option to disable. 52 | 53 | Kleenex 54 | - Added clean by platform by introducing the platforms: key to the Kleenex 55 | schema. 56 | 57 | - The cleaners block of the clean YAML is now autopopulated if not specified 58 | by the user. All clean YAML devices (including those specified via platform 59 | and group) are assigned to a default cleaner as long as they also exist in 60 | the testbed content as well. 61 | 62 | - Accepts multiple clean files from cli 63 | 64 | - Markups are now processed in the logical testbed file if specified. 65 | -------------------------------------------------------------------------------- /docs/changelog/2018/sep.rst: -------------------------------------------------------------------------------- 1 | September 2018 2 | ============== 3 | 4 | September 24, 2018 5 | ------------------ 6 | 7 | .. csv-table:: New Module Versions 8 | :header: "Modules", "Versions" 9 | 10 | ``ats.easypy``, v4.1.12 11 | ``ats.kleenex``, v4.1.1 12 | 13 | 14 | Upgrade Instructions 15 | ^^^^^^^^^^^^^^^^^^^^ 16 | 17 | .. code-block:: bash 18 | 19 | # DevNet Community 20 | bash$ pip install --upgrade pyats.easypy 21 | 22 | # Cisco Internal Developers 23 | bash$ pip install --upgrade ats.easypy 24 | 25 | Changes 26 | ^^^^^^^ 27 | 28 | - Now allowing bringup users to override task-scope bringup configuration 29 | directly from the job file. 30 | 31 | - Now allowing bringup of virtual devices with type 'n9000v'. 32 | 33 | 34 | September 14, 2018 35 | ------------------ 36 | 37 | .. csv-table:: New Module Versions 38 | :header: "Modules", "Versions" 39 | 40 | ``ats.utils``, v4.1.7 41 | ``ats.easypy``, v4.1.11 42 | 43 | 44 | Upgrade Instructions 45 | ^^^^^^^^^^^^^^^^^^^^ 46 | 47 | .. code-block:: bash 48 | 49 | # DevNet Community 50 | bash$ pip install --upgrade pyats.utils pyats.easypy 51 | 52 | # Cisco Internal Developers 53 | bash$ pip install --upgrade ats.utils ats.easypy 54 | 55 | Changes 56 | ^^^^^^^ 57 | 58 | - Fixed a bug in easypy when mail_html argument is used, only text email 59 | format was sent 60 | 61 | September 8, 2018 62 | ----------------- 63 | 64 | .. csv-table:: New Module Versions 65 | :header: "Modules", "Versions" 66 | 67 | ``ats.utils``, v4.1.7 68 | 69 | Upgrade Instructions 70 | ^^^^^^^^^^^^^^^^^^^^ 71 | 72 | .. code-block:: bash 73 | 74 | # DevNet Community 75 | bash$ pip install --upgrade pyats.utils 76 | 77 | # Cisco Internal Developers 78 | bash$ pip install --upgrade ats.utils 79 | 80 | Changes 81 | ^^^^^^^ 82 | 83 | - Enhancement for multiprotocol file transfer utilities : 84 | 85 | - Now logging a descriptive warning in checkfile informing the 86 | details of any file stat failure encountered. 87 | -------------------------------------------------------------------------------- /docs/apidoc/aereport/index.rst: -------------------------------------------------------------------------------- 1 | pyats.aereport package 2 | ====================== 3 | 4 | .. automodule:: pyats.aereport 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | 9 | Subpackages 10 | ----------- 11 | 12 | .. toctree:: 13 | 14 | pyats.aereport.exceptions 15 | pyats.aereport.initinfo 16 | pyats.aereport.iou 17 | pyats.aereport.logview 18 | pyats.aereport.results 19 | pyats.aereport.runinfo 20 | pyats.aereport.testscript 21 | pyats.aereport.testscriptinitinfo 22 | pyats.aereport.testsuite 23 | pyats.aereport.tims 24 | pyats.aereport.toplevel 25 | pyats.aereport.tsinitinfo 26 | pyats.aereport.utils 27 | 28 | Submodules 29 | ---------- 30 | 31 | 32 | .. automodule:: pyats.aereport.aerunner 33 | :members: 34 | :undoc-members: 35 | :show-inheritance: 36 | 37 | 38 | .. automodule:: pyats.aereport.clean 39 | :members: 40 | :undoc-members: 41 | :show-inheritance: 42 | 43 | 44 | .. automodule:: pyats.aereport.client 45 | :members: 46 | :undoc-members: 47 | :show-inheritance: 48 | 49 | 50 | .. automodule:: pyats.aereport.clientSection 51 | :members: 52 | :undoc-members: 53 | :show-inheritance: 54 | 55 | 56 | .. automodule:: pyats.aereport.clientSubtest 57 | :members: 58 | :undoc-members: 59 | :show-inheritance: 60 | 61 | 62 | .. automodule:: pyats.aereport.clientTestcase 63 | :members: 64 | :undoc-members: 65 | :show-inheritance: 66 | 67 | 68 | .. automodule:: pyats.aereport.clientTestscript 69 | :members: 70 | :undoc-members: 71 | :show-inheritance: 72 | 73 | 74 | .. automodule:: pyats.aereport.easypy_sim 75 | :members: 76 | :undoc-members: 77 | :show-inheritance: 78 | 79 | 80 | .. automodule:: pyats.aereport.handlers 81 | :members: 82 | :undoc-members: 83 | :show-inheritance: 84 | 85 | 86 | .. automodule:: pyats.aereport.infra 87 | :members: 88 | :undoc-members: 89 | :show-inheritance: 90 | 91 | 92 | .. automodule:: pyats.aereport.template 93 | :members: 94 | :undoc-members: 95 | :show-inheritance: 96 | 97 | -------------------------------------------------------------------------------- /docs/changelog/2023/august.rst: -------------------------------------------------------------------------------- 1 | August 2023 2 | ========== 3 | 4 | August 29 - Pyats v23.8 5 | ------------------------ 6 | 7 | 8 | 9 | .. csv-table:: New Module Versions 10 | :header: "Modules", "Version" 11 | 12 | ``pyats``, v23.8 13 | ``pyats.aereport``, v23.8 14 | ``pyats.aetest``, v23.8 15 | ``pyats.async``, v23.8 16 | ``pyats.cisco``, v23.8 17 | ``pyats.connections``, v23.8 18 | ``pyats.datastructures``, v23.8 19 | ``pyats.easypy``, v23.8 20 | ``pyats.kleenex``, v23.8 21 | ``pyats.log``, v23.8 22 | ``pyats.reporter``, v23.8 23 | ``pyats.results``, v23.8 24 | ``pyats.robot``, v23.8 25 | ``pyats.tcl``, v23.8 26 | ``pyats.topology``, v23.8 27 | ``pyats.utils``, v23.8 28 | 29 | Upgrade Instructions 30 | ^^^^^^^^^^^^^^^^^^^^ 31 | 32 | .. code-block:: bash 33 | 34 | # DevNet Community 35 | bash$ pip install --upgrade pyats 36 | 37 | # Cisco Internal Developers 38 | bash$ pip install --upgrade ats 39 | 40 | 41 | 42 | 43 | Changelogs 44 | ^^^^^^^^^^ 45 | -------------------------------------------------------------------------------- 46 | New 47 | -------------------------------------------------------------------------------- 48 | 49 | * pyats.aetest 50 | * Added support for YAML Markup with datafiles, including testbed references 51 | 52 | * pyats.utils 53 | * add new function chainattrget 54 | 55 | * pyats.easypy 56 | * Added section result statistics to job report 57 | 58 | 59 | -------------------------------------------------------------------------------- 60 | Fix 61 | -------------------------------------------------------------------------------- 62 | 63 | * pyats.kleenex 64 | * Update device name mapping logic to support missing entries from orchestrator 65 | * Fix device names used with actual testbed vs logical testbed for use with clean image overrides 66 | 67 | * pyats.utils 68 | * Updated implementation of enforce_max_key_value_length to support hierarchical dictionaries 69 | 70 | 71 | -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | #### Contribute to documentation 2 | 3 | 4 | To contribute, you need to fork the repository, do your modifications and create a new pull request. 5 | 6 | > Here we are using the pyATS docs as an example; Same steps could be applied to other packages 7 | 8 | - Go to the [pyATS Github repository](https://github.com/CiscoTestAutomation/pyats) 9 | 10 | - On the top right corner, click ```Fork```. (see https://help.github.com/en/articles/fork-a-repo) 11 | 12 | Screen Shot 2020-12-21 at 2 37 19 PM 13 | 14 | - Clone the repository by running ```git clone https://github.com//pyats``` 15 | 16 | - ```cd pyats/docs``` 17 | 18 | > :warning: **Please make sure you have the full pyats package installed via pip install pyats[full].** 19 | 20 | - Use ```make install_build_deps``` to install all of the build dependencies 21 | 22 | - Run ```make docs``` to generate documentation in HTML 23 | 24 | - Wait until you see ```Done``` in your terminal 25 | 26 | - The documentation is now built and stored under the directory 27 | ```pyats/docs/__build__``` 28 | 29 | - Run ```make serve``` to view the documentation on your browser 30 | 31 | - Please create a PR after you have made your changes (see [commit your changes](https://pubhub.devnetcloud.com/media/pyats-development-guide/docs/contribute/contribute.html#commit-your-changes) & [open a PR](https://pubhub.devnetcloud.com/media/pyats-development-guide/docs/contribute/contribute.html#open-a-pull-request)) 32 | 33 | Here are a few examples that could be great pull request: 34 | 35 | - Fix Typos 36 | - Better wording, easier explanation 37 | - More details, examples 38 | - Anything else to enhance the documentation 39 | 40 | 41 | #### How to contribute to the pyATS community 42 | 43 | - For detail on contributing to pyATS, please follow the [contribution guidelines](https://pubhub.devnetcloud.com/media/pyats-development-guide/docs/contribute/contribute.html#) 44 | -------------------------------------------------------------------------------- /docs/changelog/2015/july.rst: -------------------------------------------------------------------------------- 1 | July 2015 2 | ========= 3 | 4 | July 23, 2015 5 | ------------- 6 | 7 | .. csv-table:: New Module Versions 8 | :header: "Modules", "Versions" 9 | 10 | ``ats.aetest``, v2.0.3 11 | 12 | Upgrade Instructions 13 | ^^^^^^^^^^^^^^^^^^^^ 14 | 15 | - if you are upgrading from v2.0.1+, it's pretty straightforward. 16 | 17 | .. code-block:: bash 18 | 19 | bash$ pip install --upgrade ats 20 | 21 | - if you are upgrading from a lower version, refer to v2.0.0 and v2.0.1 upgrade 22 | instructions for details. 23 | 24 | - if you've upgraded your ``pip`` package to 7.x.x, please also perform the 25 | following: 26 | 27 | - Modify your ``env.sh`` file, starting from ``# BEGIN CUSTOM pyATS CONTENT``: 28 | 29 | .. code-block:: bash 30 | 31 | # BEGIN CUSTOM pyATS CONTENT 32 | export PIP_TRUSTED_HOST=ats-pypi-server.cisco.com 33 | export PIP_INDEX_URL=http://ats-pypi-server.cisco.com/simple 34 | export PIP_DISABLE_PIP_VERSION_CHECK=1 35 | 36 | - Modify your ``env.csh`` file, starting from ``# BEGIN CUSTOM pyATS 37 | CONTENT``: 38 | 39 | .. code-block:: bash 40 | 41 | # BEGIN CUSTOM pyATS CONTENT 42 | setenv PIP_TRUSTED_HOST ats-pypi-server.cisco.com 43 | setenv PIP_INDEX_URL http://ats-pypi-server.cisco.com/simple 44 | setenv PIP_DISABLE_PIP_VERSION_CHECK 1 45 | 46 | Bug Fixes 47 | ^^^^^^^^^ 48 | 49 | - Fixed an issue with pre/post processors in AEtest not displaying ``Skipped`` 50 | correctly for testcase sections (even though it was performing the act of 51 | skipping). 52 | - Fixed an issue with taskresults file (that are generated during execution) to 53 | show the full id (eg, tc name + section name) instead of just section name. 54 | 55 | Misc 56 | ^^^^ 57 | 58 | - installation now adds a new environment variable 59 | ``PIP_DISABLE_PIP_VERSION_CHECK=1`` to ``env.sh`` and ``env.csh`` file, 60 | intentionally disabling the automated version checking of ``pip``. 61 | - removed ``PIP_EXTRA_INDEX_URL`` environment variable from ``env.sh`` and 62 | ``env.csh`` file, -------------------------------------------------------------------------------- /docs/changelog/2023/may.rst: -------------------------------------------------------------------------------- 1 | May 2023 2 | ========== 3 | 4 | May 30 - Pyats v23.5 5 | ------------------------ 6 | 7 | 8 | 9 | .. csv-table:: New Module Versions 10 | :header: "Modules", "Version" 11 | 12 | ``pyats``, v23.5 13 | ``pyats.aereport``, v23.5 14 | ``pyats.aetest``, v23.5 15 | ``pyats.async``, v23.5 16 | ``pyats.cisco``, v23.5 17 | ``pyats.connections``, v23.5 18 | ``pyats.datastructures``, v23.5 19 | ``pyats.easypy``, v23.5 20 | ``pyats.kleenex``, v23.5 21 | ``pyats.log``, v23.5 22 | ``pyats.reporter``, v23.5 23 | ``pyats.results``, v23.5 24 | ``pyats.robot``, v23.5 25 | ``pyats.tcl``, v23.5 26 | ``pyats.topology``, v23.5 27 | ``pyats.utils``, v23.5 28 | 29 | Upgrade Instructions 30 | ^^^^^^^^^^^^^^^^^^^^ 31 | 32 | .. code-block:: bash 33 | 34 | # DevNet Community 35 | bash$ pip install --upgrade pyats 36 | 37 | # Cisco Internal Developers 38 | bash$ pip install --upgrade ats 39 | 40 | 41 | 42 | 43 | Changelogs 44 | ^^^^^^^^^^ 45 | -------------------------------------------------------------------------------- 46 | Fix 47 | -------------------------------------------------------------------------------- 48 | 49 | * pyats.pyats 50 | * Add a cli for manifest to use symlink 51 | 52 | * pyats.easypy 53 | * Add checking for using symlink for the manifest 54 | * Update manifest execution logic to allow jobfiles to be symlinked to another folder 55 | 56 | * aetest 57 | * Modified PausePdb 58 | * Dumps the connection information from the testbed to the console 59 | 60 | 61 | -------------------------------------------------------------------------------- 62 | New 63 | -------------------------------------------------------------------------------- 64 | 65 | * easypy 66 | * Added suite_id to all the jobs reports 67 | * Add suite_name to report data from suite-name CLI argument 68 | * Added label and component reporting options 69 | 70 | 71 | -------------------------------------------------------------------------------- /docs/log/introduction.rst: -------------------------------------------------------------------------------- 1 | Introduction 2 | ============ 3 | 4 | A log is a log regardless of what kind of prefixes each log message contains and 5 | what format it ended up as, as long as it is human readable and provides useful 6 | information to the user. 7 | 8 | Python ``logging`` module's native ability to handle and process log messages is 9 | more than sufficient for any logging needs, and has always been suggested as the 10 | de-facto logging module to use. 11 | 12 | Therefore, for all intends and purposes, users of pyATS infrastructure should 13 | always use just the native Python ``logging`` module as-is in their scripts and 14 | testcases. 15 | 16 | .. code-block:: python 17 | 18 | # Example 19 | # ------- 20 | # 21 | # import the logging module at the top of your script 22 | # setup the logger 23 | 24 | import logging 25 | 26 | # always use your module name as the logger name. 27 | # this enables logger hierarchy 28 | logger = logging.getLogger(__name__) 29 | 30 | # use logger: 31 | logger.info('an info message') 32 | logger.error('an error message') 33 | logger.debug('a debug message') 34 | 35 | Users are expected to have a good understanding of how Python logging works. 36 | Documentation for Python ``logging`` module can be found at: 37 | 38 | * https://docs.python.org/3.6/howto/logging.html#logging-advanced-tutorial 39 | 40 | .. important:: 41 | 42 | do not attempt to read and understand the rest of the logging documentation 43 | without first reading and learning how python logging works. 44 | 45 | 46 | Delving Deeper 47 | -------------- 48 | 49 | Why should everyone use the Python ``logging`` module as is? Simple: it is 50 | highly configurable. Behind the scenes, pyATS infrastructure configures the 51 | logging behavior for the end-user, so that all scripts & libraries output 52 | logs in the exact same format: :ref:`cisco-log-format`. 53 | 54 | The remainder of this logging documention digs deeper into the details of how 55 | and where pyATS uses and configures python ``logging``, what the actual 56 | :ref:`log-module` offers, and how advanced power users can leverage them. 57 | 58 | -------------------------------------------------------------------------------- /docs/changelog/2023/april.rst: -------------------------------------------------------------------------------- 1 | April 2023 2 | ========== 3 | 4 | April 25 - Pyats v23.4 5 | ------------------------ 6 | 7 | 8 | 9 | .. csv-table:: New Module Versions 10 | :header: "Modules", "Version" 11 | 12 | ``pyats``, v23.4 13 | ``pyats.aereport``, v23.4 14 | ``pyats.aetest``, v23.4 15 | ``pyats.async``, v23.4 16 | ``pyats.cisco``, v23.4 17 | ``pyats.connections``, v23.4 18 | ``pyats.datastructures``, v23.4 19 | ``pyats.easypy``, v23.4 20 | ``pyats.kleenex``, v23.4 21 | ``pyats.log``, v23.4 22 | ``pyats.reporter``, v23.4 23 | ``pyats.results``, v23.4 24 | ``pyats.robot``, v23.4 25 | ``pyats.tcl``, v23.4 26 | ``pyats.topology``, v23.4 27 | ``pyats.utils``, v23.4 28 | 29 | Upgrade Instructions 30 | ^^^^^^^^^^^^^^^^^^^^ 31 | 32 | .. code-block:: bash 33 | 34 | # DevNet Community 35 | bash$ pip install --upgrade pyats 36 | 37 | # Cisco Internal Developers 38 | bash$ pip install --upgrade ats 39 | 40 | 41 | 42 | 43 | Changelogs 44 | ^^^^^^^^^^ 45 | -------------------------------------------------------------------------------- 46 | Fix 47 | -------------------------------------------------------------------------------- 48 | 49 | * pyats.manifest 50 | * Add support for CLI arguments with * as value 51 | 52 | * pyats.utils 53 | * Fixed default value with CLI markup usage 54 | 55 | * pyats.easypy 56 | * Update the plugin loading in the plugins and update the black_box test. 57 | 58 | * install 59 | * Fix for installer to source venv for pip format json command. 60 | 61 | * update 62 | * Fix to pick up ats packages instead of pyats 63 | 64 | 65 | -------------------------------------------------------------------------------- 66 | New 67 | -------------------------------------------------------------------------------- 68 | 69 | * easypy 70 | * moved AEPluginReporter and AEPluginContext and report_func Wrapper from Plugin Bundle 71 | * move the reporter from plugin bundle to easypy reporter 72 | 73 | 74 | -------------------------------------------------------------------------------- /docs/terminology.rst: -------------------------------------------------------------------------------- 1 | ============= 2 | Terminologies 3 | ============= 4 | 5 | py 6 | Short-hand for Python. The current Python version used in pyATS is Python 7 | 3.6/3.7/3.8 8 | 9 | CONFIG file 10 | Tcl-ATS legacy file, used to describe testbed hardware information such as 11 | IPs, FTP/TFTP, clean etc information. This concept is now rolled into a 12 | single pyATS Testbed file 13 | 14 | MAP file 15 | Tcl-ATS legacy file, used to describe testbed topology information in a 16 | keyed-list format. This concept is now rolled into a single pyATS testbed 17 | file 18 | 19 | pyATS Instance/Install 20 | A particular instance (a.k.a. installation) of pyATS infrastructure. The 21 | equivalent concept in Tcl ATS is an "ATS Tree" 22 | 23 | PyPI 24 | Python Package Index, a Python package/module software repository. The 25 | official PyPI for Python is at http://pypi.python.org, and the internal 26 | pyATS PyPI repository (for hosting ATS released, internal modules) is 27 | located at http://pyats-pypi.cisco.com/ 28 | 29 | Tcl-ATS 30 | Legacy Tcl-based test infrastructure written using Tcl, available only for 31 | internal Cisco Engineering. Deprecated since 2016. 32 | 33 | Testbed 34 | defines the sum of all physical hardware (routers, switches, TGNs) 35 | interconnected together. 36 | 37 | Testbed Topology 38 | the description of how testbed devices are physically interconnected. 39 | 40 | Testbed File 41 | pyATS standard testbed interconnect & meta-data definition in YAML format 42 | 43 | TIMS 44 | Test Information Management System, a Cisco online content mgmt system that 45 | supports the documentation and tracking of tests on a project-by-project 46 | basis. 47 | 48 | XRUT 49 | XR-Unit Testing infrastructure. XRUT is a powerful automation framework 50 | that was initially development for XR-unit testing, and evolved overtime 51 | to include NXOS, IOS, Titanium, IOL. As well, it supports black-box and 52 | white-box testing capabilities. 53 | 54 | YAML 55 | "Yet-Another-Markup-Language" or "YAML Ain't Markup Language", 56 | is a human-readable data serialization format. See: http://www.yaml.org/ 57 | -------------------------------------------------------------------------------- /docs/changelog/2025/july.rst: -------------------------------------------------------------------------------- 1 | July 2025 2 | ========== 3 | 4 | July 29 - Pyats v25.7 5 | ------------------------ 6 | 7 | 8 | 9 | .. csv-table:: New Module Versions 10 | :header: "Modules", "Version" 11 | 12 | ``pyats``, v25.7 13 | ``pyats.aereport``, v25.7 14 | ``pyats.aetest``, v25.7 15 | ``pyats.async``, v25.7 16 | ``pyats.cisco``, v25.7 17 | ``pyats.connections``, v25.7 18 | ``pyats.datastructures``, v25.7 19 | ``pyats.easypy``, v25.7 20 | ``pyats.kleenex``, v25.7 21 | ``pyats.log``, v25.7 22 | ``pyats.reporter``, v25.7 23 | ``pyats.results``, v25.7 24 | ``pyats.robot``, v25.7 25 | ``pyats.tcl``, v25.7 26 | ``pyats.topology``, v25.7 27 | ``pyats.utils``, v25.7 28 | 29 | 30 | 31 | 32 | Changelogs 33 | ^^^^^^^^^^ 34 | -------------------------------------------------------------------------------- 35 | Fix 36 | -------------------------------------------------------------------------------- 37 | 38 | * cisco-pkg 39 | * Loading clean_config during _get_bringup_config 40 | 41 | * pyats.cisco 42 | * Updated default email server to be `outbound.cisco.com` due to deprecation of `mail.cisco.com`. 43 | 44 | * pyats.clean 45 | * Modified clean loader to load JIT config when using templates 46 | 47 | * pyats.topology 48 | * Added timeout key to testbed.servers section 49 | 50 | * easypy-pkg 51 | * Added a check to find clean.extra.yaml and treat it as a jit clean for standalone bringup 52 | 53 | * pyats 54 | * Refactor plugin loading from pkg_resources.iter_entry_points to importlib.metadata.entry_points 55 | 56 | * pyats.devat 57 | * device compliance 58 | * add check for power cycle 59 | * exempt linux device from some checks 60 | 61 | 62 | -------------------------------------------------------------------------------- 63 | New 64 | -------------------------------------------------------------------------------- 65 | 66 | * pyats 67 | * Added new CLI argument '--clean-model-image' which we can pass the list images with model name 68 | 69 | 70 | -------------------------------------------------------------------------------- /docs/async/introduction.rst: -------------------------------------------------------------------------------- 1 | Introduction 2 | ============ 3 | 4 | .. sidebar:: Helpful Reading 5 | 6 | - `Threading`_ 7 | 8 | - `Multiprocessing`_ 9 | 10 | .. _Threading: https://docs.python.org/3/library/threading.html 11 | .. _Multiprocessing: https://docs.python.org/3/library/multiprocessing.html 12 | 13 | Asynchronous (async) execution defines the ability to run programs and functions 14 | in parallel and (possibly) independent of the main program flow. The proper use 15 | of async execution can greatly improve of performance of a program, and is only 16 | bounded by the physical number of CPUs and I/O limits. 17 | 18 | This module & documentation provides the insights, concepts and tools within 19 | pyATS that supports asynchronous execution, allowing users to reap the full 20 | benefit of async without having to deal with its logistics & overhead. 21 | 22 | *those who don't. There are 0b10 types of people in the world: those who 23 | understand asynchronous jokes and* 24 | 25 | Intentions 26 | ---------- 27 | 28 | The intent of this module is not to reinvent asynchronous execution: Python's 29 | built in library `Threading`_ and `Multiprocessing`_ already provides a great 30 | basis to do so, are quite powerful and user-friendly. 31 | 32 | However, these libraries only provides a foundation to further build on. It is 33 | still up to the end user to write boilerplate code to handle and configure 34 | things like: 35 | 36 | - managing of log files 37 | - re-establishing lost connections, sessions 38 | - resource sharing & locking (such as telnet/ssh connections) 39 | - two-way inter-process communication and state synchronization 40 | 41 | Therefore, the intent of this module is: 42 | 43 | *to strengthen pyATS's support of asynchronous execution, automate some of 44 | the above items, and further streamlining the user experience.* 45 | 46 | However, keep in mind that not everything can be done within this module alone: 47 | in order to properly support asynchronous execution, each module/package has 48 | to be individually overhauled with parallelism in mind. Thus, this module 49 | documentation also serves as a central location where these concepts and changes 50 | are consolidated and shared in a overviewing fashion. 51 | -------------------------------------------------------------------------------- /docs/changelog/2024/may.rst: -------------------------------------------------------------------------------- 1 | May 2024 2 | ========== 3 | 4 | May 28 - Pyats v24.5 5 | ------------------------ 6 | 7 | 8 | 9 | .. csv-table:: New Module Versions 10 | :header: "Modules", "Version" 11 | 12 | ``pyats``, v24.5 13 | ``pyats.aereport``, v24.5 14 | ``pyats.aetest``, v24.5 15 | ``pyats.async``, v24.5 16 | ``pyats.cisco``, v24.5 17 | ``pyats.connections``, v24.5 18 | ``pyats.datastructures``, v24.5 19 | ``pyats.easypy``, v24.5 20 | ``pyats.kleenex``, v24.5 21 | ``pyats.log``, v24.5 22 | ``pyats.reporter``, v24.5 23 | ``pyats.results``, v24.5 24 | ``pyats.robot``, v24.5 25 | ``pyats.tcl``, v24.5 26 | ``pyats.topology``, v24.5 27 | ``pyats.utils``, v24.5 28 | 29 | Upgrade Instructions 30 | ^^^^^^^^^^^^^^^^^^^^ 31 | 32 | .. code-block:: bash 33 | 34 | # DevNet Community 35 | bash$ pip install --upgrade pyats 36 | 37 | # Cisco Internal Developers 38 | bash$ pip install --upgrade ats 39 | 40 | 41 | 42 | 43 | Changelogs 44 | ^^^^^^^^^^ 45 | -------------------------------------------------------------------------------- 46 | Fix 47 | -------------------------------------------------------------------------------- 48 | 49 | * pyats.cisco 50 | * Update package discovery error handling 51 | * Update ABS URL, add environment variable lookup 52 | 53 | 54 | -------------------------------------------------------------------------------- 55 | New 56 | -------------------------------------------------------------------------------- 57 | 58 | * kleenex/worker 59 | * Updated logic to make device alias name as default in reporter. 60 | 61 | * pyats/topology 62 | * schema 63 | * Update topology schema for rommon information. 64 | 65 | * clean 66 | * schema 67 | * Updated clean schema with resources section with memory and cpu. 68 | 69 | * cisco/commands/testbed 70 | * bringup 71 | * Updated logic to pull the dyntopo worker arguments dynamically. 72 | 73 | * cisco/commands 74 | * testbed/export 75 | * Added export subcommand to export the testbed data using laasv2 76 | 77 | 78 | -------------------------------------------------------------------------------- /docs/changelog/2022/january.rst: -------------------------------------------------------------------------------- 1 | January 2022 2 | ========== 3 | 4 | January 25 - Pyats v22.1 5 | ------------------------ 6 | 7 | 8 | 9 | .. csv-table:: New Module Versions 10 | :header: "Modules", "Version" 11 | 12 | ``pyats``, v22.1 13 | ``pyats.aereport``, v22.1 14 | ``pyats.aetest``, v22.1 15 | ``pyats.async``, v22.1 16 | ``pyats.cisco``, v22.1 17 | ``pyats.connections``, v22.1 18 | ``pyats.datastructures``, v22.1 19 | ``pyats.easypy``, v22.1 20 | ``pyats.kleenex``, v22.1 21 | ``pyats.log``, v22.1 22 | ``pyats.reporter``, v22.1 23 | ``pyats.results``, v22.1 24 | ``pyats.robot``, v22.1 25 | ``pyats.tcl``, v22.1 26 | ``pyats.topology``, v22.1 27 | ``pyats.utils``, v22.1 28 | 29 | Upgrade Instructions 30 | ^^^^^^^^^^^^^^^^^^^^ 31 | 32 | .. code-block:: bash 33 | 34 | # DevNet Community 35 | bash$ pip install --upgrade pyats 36 | 37 | # Cisco Internal Developers 38 | bash$ pip install --upgrade ats 39 | 40 | 41 | 42 | 43 | Changelogs 44 | ^^^^^^^^^^ 45 | -------------------------------------------------------------------------------- 46 | Fix 47 | -------------------------------------------------------------------------------- 48 | 49 | * kleenex 50 | * Modified Arguments 51 | * Restored creation of timestamped subdirectory for runinfo and archives 52 | * Added Argument 53 | * `--no-archive-subdir` argument to disable creating the `yy-mm` 54 | 55 | * pyats.utils 56 | * Support local address discovery for dynamic file servers using device.spawn object 57 | * Fix credentials for http file copy 58 | * Increase dict value limit check from 255 to 512 59 | 60 | * pyats 61 | * Added packaging dependency 62 | 63 | * reporter/utils 64 | * Updated regex in 'normalize_git_url()' 65 | * To have proper site url for git repository 66 | 67 | 68 | -------------------------------------------------------------------------------- 69 | New 70 | -------------------------------------------------------------------------------- 71 | 72 | * kleenex 73 | * Kleenex_main 74 | * Added email report support for clean 75 | 76 | 77 | -------------------------------------------------------------------------------- /docs/topology/introduction.rst: -------------------------------------------------------------------------------- 1 | Introduction 2 | ============ 3 | 4 | The ``topology`` module is designed to provide an intuitive and standardized 5 | method for users to define, handle and query testbed/device/interface/link 6 | description, metadata, and their interconnections. 7 | 8 | There are two major functionalities to ``topology`` module: 9 | 10 | #. defining and describing testbed metadata using YAML, standardizing the 11 | format of the YAML file, and loading it into corresponding testbed objects. 12 | 13 | #. query testbed topology, metadata and interconnect information via testbed 14 | object attributes and properties. 15 | 16 | 17 | Installation 18 | ------------ 19 | 20 | ``topology`` module is delivered as part of base pyATS installation in the form 21 | of a Python Package, released via PyPI server. 22 | 23 | .. code-block:: bash 24 | 25 | # Example 26 | # ------- 27 | # 28 | # installing topology module from pypi server 29 | 30 | pip install pyats.topology 31 | 32 | 33 | YAML 34 | ---- 35 | 36 | YAML (short for "YAML Ain't Markup Language" or "Yet Another Markup Language"), 37 | is a human-readable data serialization format that is designed to be both 38 | human readable and machine readable. 39 | 40 | YAML is indentation & white space sensitive. Its syntax maps directly to most 41 | common datastructures in Python, such ``dict``, ``list``, ``str`` etc. 42 | 43 | .. code-block:: yaml 44 | 45 | # Example 46 | # ------- 47 | # 48 | # YAML testbed format example 49 | 50 | devices: 51 | jarvis: 52 | type: "Artificial Intelligence Computer" 53 | alias: "J.A.R.V.I.S" 54 | connections: 55 | voice: 56 | protocol: english 57 | role: "Tony Stark's housekeeper" 58 | custom: 59 | appeared_in: 60 | - Iron Man 61 | - Iron Man 2 62 | - The Avengers 63 | - Iron Man 3 64 | - Avengers - Age of Ultron 65 | 66 | The Python module called ``yaml`` (PyPI: PyYAML) is capable of reading & writing 67 | YAML files, as well as converting YAML data into Python datastructures. 68 | 69 | For more information on YAML syntax, refer to: 70 | 71 | http://yaml.org/ 72 | -------------------------------------------------------------------------------- /docs/changelog/2025/january.rst: -------------------------------------------------------------------------------- 1 | January 2025 2 | ========== 3 | 4 | - Pyats v25.1 5 | ------------------------ 6 | 7 | 8 | 9 | .. csv-table:: New Module Versions 10 | :header: "Modules", "Version" 11 | 12 | ``pyats``, v25.1 13 | ``pyats.aereport``, v25.1 14 | ``pyats.aetest``, v25.1 15 | ``pyats.async``, v25.1 16 | ``pyats.cisco``, v25.1 17 | ``pyats.connections``, v25.1 18 | ``pyats.datastructures``, v25.1 19 | ``pyats.easypy``, v25.1 20 | ``pyats.kleenex``, v25.1 21 | ``pyats.log``, v25.1 22 | ``pyats.reporter``, v25.1 23 | ``pyats.results``, v25.1 24 | ``pyats.robot``, v25.1 25 | ``pyats.tcl``, v25.1 26 | ``pyats.topology``, v25.1 27 | ``pyats.utils``, v25.1 28 | 29 | 30 | 31 | 32 | Changelogs 33 | ^^^^^^^^^^ 34 | -------------------------------------------------------------------------------- 35 | Fix 36 | -------------------------------------------------------------------------------- 37 | 38 | * cisco 39 | * Modified Testbed Exporter 40 | * Updated call to convert_to_pyats as it is now an async function 41 | 42 | * pyats/aetest 43 | * pyATS Health check logging is too noisy, added logic to handle it. 44 | 45 | * kleenex 46 | * bringup 47 | * remove alias from LOGICAL_INTERFACE_KEYS_TO_IGNORE 48 | 49 | * pyats 50 | * Service Wrapper 51 | * Updated service wrapper to search for service attributes 52 | * Fix syntax warning 53 | 54 | * connections.utils 55 | * Modified set_parameters 56 | * Updated function to copy args and kwargs instead of deepcopy to work with Device objects 57 | 58 | * cisco-pkg 59 | * testbed teardown 60 | * Made orchestrator argument optional 61 | * Added feature to extract orchestrator from custom key on testbed yaml 62 | 63 | * pyats.cisco 64 | * Fix TIMS upload for Logical ID 65 | 66 | 67 | -------------------------------------------------------------------------------- 68 | New 69 | -------------------------------------------------------------------------------- 70 | 71 | * pyats.easypy 72 | * Add job and task level result rollup in easypy report. 73 | * remove the uids from unknown args if there is rerun file 74 | 75 | 76 | -------------------------------------------------------------------------------- /docs/changelog/2018/may.rst: -------------------------------------------------------------------------------- 1 | May 2018 2 | ======== 3 | 4 | May 24, 2018 5 | ------------ 6 | 7 | .. csv-table:: New Module Versions 8 | :header: "Modules", "Versions" 9 | 10 | ``ats.utils``, v4.1.4 11 | 12 | 13 | Upgrade Instructions 14 | ^^^^^^^^^^^^^^^^^^^^ 15 | 16 | .. code-block:: bash 17 | 18 | # DevNet Community 19 | bash$ pip install --upgrade pyats.utils 20 | 21 | # Cisco Internal Developers 22 | bash$ pip install --upgrade ats.utils 23 | 24 | Changes 25 | ^^^^^^^ 26 | 27 | - Fixed a bug in multiprotocol file transfer utilities, now URLs may be specified 28 | via the server alias, fully qualified server name or IP address. 29 | 30 | May 17, 2018 31 | ------------ 32 | 33 | .. csv-table:: New Module Versions 34 | :header: "Modules", "Versions" 35 | 36 | ``ats.easypy``, v4.1.5 37 | 38 | 39 | Upgrade Instructions 40 | ^^^^^^^^^^^^^^^^^^^^ 41 | 42 | .. code-block:: bash 43 | 44 | # DevNet Community 45 | bash$ pip install --upgrade pyats.easypy 46 | 47 | # Cisco Internal Developers 48 | bash$ pip install --upgrade ats.easypy 49 | 50 | Changes 51 | ^^^^^^^ 52 | 53 | - added additional debug information to easypy generated ``env.txt`` 54 | 55 | 56 | May 15, 2018 57 | ------------ 58 | 59 | .. csv-table:: New Module Versions 60 | :header: "Modules", "Versions" 61 | 62 | ``ats.aetest``, v4.1.3 63 | 64 | 65 | Upgrade Instructions 66 | ^^^^^^^^^^^^^^^^^^^^ 67 | 68 | .. code-block:: bash 69 | 70 | # DevNet Community 71 | bash$ pip install --upgrade pyats.aetest 72 | 73 | # Cisco Internal Developers 74 | bash$ pip install --upgrade ats.aetest 75 | 76 | Changes 77 | ^^^^^^^ 78 | 79 | - fixed an issue where logs were creeping from one section to another in 80 | the final report 81 | 82 | 83 | May 3rd, 2018 84 | ------------- 85 | 86 | .. csv-table:: New Module Versions 87 | :header: "Modules", "Versions" 88 | 89 | ``ats.robot``, v4.1.1 90 | 91 | 92 | Upgrade Instructions 93 | ^^^^^^^^^^^^^^^^^^^^ 94 | 95 | .. code-block:: bash 96 | 97 | # DevNet Community 98 | bash$ pip install --upgrade pyats.robot 99 | 100 | # Cisco Internal Developers 101 | bash$ pip install --upgrade ats.robot 102 | 103 | Changes 104 | ^^^^^^^ 105 | 106 | - fixed robot pkg install dependencies 107 | -------------------------------------------------------------------------------- /docs/changelog/2022/march.rst: -------------------------------------------------------------------------------- 1 | March 2022 2 | ========== 3 | 4 | March 29 - Pyats v22.3 5 | ------------------------ 6 | 7 | 8 | 9 | .. csv-table:: New Module Versions 10 | :header: "Modules", "Version" 11 | 12 | ``pyats``, v22.3 13 | ``pyats.aereport``, v22.3 14 | ``pyats.aetest``, v22.3 15 | ``pyats.async``, v22.3 16 | ``pyats.cisco``, v22.3 17 | ``pyats.connections``, v22.3 18 | ``pyats.datastructures``, v22.3 19 | ``pyats.easypy``, v22.3 20 | ``pyats.kleenex``, v22.3 21 | ``pyats.log``, v22.3 22 | ``pyats.reporter``, v22.3 23 | ``pyats.results``, v22.3 24 | ``pyats.robot``, v22.3 25 | ``pyats.tcl``, v22.3 26 | ``pyats.topology``, v22.3 27 | ``pyats.utils``, v22.3 28 | 29 | Upgrade Instructions 30 | ^^^^^^^^^^^^^^^^^^^^ 31 | 32 | .. code-block:: bash 33 | 34 | # DevNet Community 35 | bash$ pip install --upgrade pyats 36 | 37 | # Cisco Internal Developers 38 | bash$ pip install --upgrade ats 39 | 40 | 41 | 42 | 43 | Changelogs 44 | ^^^^^^^^^^ 45 | -------------------------------------------------------------------------------- 46 | Fix 47 | -------------------------------------------------------------------------------- 48 | 49 | * alpine builder 50 | * Update alpine builder container to alpine3.15 51 | 52 | * pyats.aetest 53 | * Fix datafile loading 54 | 55 | * kleenex 56 | * Kleenex_main.py 57 | * Fixed the bug for email report when the Taas log is not uploaded. 58 | 59 | * reporter 60 | * Modified ReporterServer 61 | * reporter.log only generated when running in verbose mode with -v 62 | 63 | 64 | -------------------------------------------------------------------------------- 65 | Updated 66 | -------------------------------------------------------------------------------- 67 | 68 | * aetest 69 | * Fixed step result handling inside a processor 70 | 71 | 72 | -------------------------------------------------------------------------------- 73 | New 74 | -------------------------------------------------------------------------------- 75 | 76 | * aetest 77 | * Fixed -v handling 78 | * debug logging appears in Aetest by -v option 79 | 80 | 81 | -------------------------------------------------------------------------------- /docs/changelog/2022/june.rst: -------------------------------------------------------------------------------- 1 | June 2022 2 | ========== 3 | 4 | June 27 - Pyats v22.6 5 | ------------------------ 6 | 7 | 8 | 9 | .. csv-table:: New Module Versions 10 | :header: "Modules", "Version" 11 | 12 | ``pyats``, v22.6 13 | ``pyats.aereport``, v22.6 14 | ``pyats.aetest``, v22.6 15 | ``pyats.async``, v22.6 16 | ``pyats.cisco``, v22.6 17 | ``pyats.connections``, v22.6 18 | ``pyats.datastructures``, v22.6 19 | ``pyats.easypy``, v22.6 20 | ``pyats.kleenex``, v22.6 21 | ``pyats.log``, v22.6 22 | ``pyats.reporter``, v22.6 23 | ``pyats.results``, v22.6 24 | ``pyats.robot``, v22.6 25 | ``pyats.tcl``, v22.6 26 | ``pyats.topology``, v22.6 27 | ``pyats.utils``, v22.6 28 | 29 | Upgrade Instructions 30 | ^^^^^^^^^^^^^^^^^^^^ 31 | 32 | .. code-block:: bash 33 | 34 | # DevNet Community 35 | bash$ pip install --upgrade pyats 36 | 37 | # Cisco Internal Developers 38 | bash$ pip install --upgrade ats 39 | 40 | 41 | 42 | 43 | Changelogs 44 | ^^^^^^^^^^ 45 | -------------------------------------------------------------------------------- 46 | Fix 47 | -------------------------------------------------------------------------------- 48 | 49 | * pyats.easypy 50 | * Task 51 | * Display a warning when a task is run with a testbed argument 52 | * Update manifest logic to support IXIA_VERSION environment variable 53 | 54 | * pyats.aetest 55 | * TestScript 56 | * Added testbed as an internal parameter for TestScripts so that it cannot be overwritten 57 | 58 | * pyats.topology 59 | * Avoid processing markup for secret string and credential objects 60 | * Fix the testbed.raw_config for markup resolution when using `extends` in yaml file 61 | 62 | 63 | -------------------------------------------------------------------------------- 64 | New 65 | -------------------------------------------------------------------------------- 66 | 67 | * pyats/cisco/commands 68 | * Added --meta arguments 69 | * Added --meta arguments for pyats replay 70 | * use case of the --meta If user wanted re-run a request, they want to append extra --meta 71 | 72 | * pyats/manifest 73 | * fix cli argument overriding bug 74 | * Added unit test to cover the argument overriding use case 75 | 76 | 77 | -------------------------------------------------------------------------------- /docs/datastructures/orderabledict.rst: -------------------------------------------------------------------------------- 1 | .. _orderabledict: 2 | 3 | Orderable Dictionary 4 | ==================== 5 | 6 | Python's built-in ``collections.OrderedDict`` only remembers the order of which 7 | keys were inserted into it, and does not allow users to re-order the keys and/or 8 | insert new keys into arbitrary position in the current key order. 9 | 10 | ``OrderableDict``, Orderable Dictionary, is almost exactly the same as python 11 | ``collections.OrderedDict`` with the added ability to order & re-order the keys 12 | that are inserted into it. 13 | 14 | .. code-block:: python 15 | 16 | # Example 17 | # ------- 18 | # 19 | # using OrderableDict 20 | 21 | from pyats.datastructures import OrderableDict 22 | 23 | # create a blank OrderableDict 24 | obj = OrderableDict() 25 | 26 | # all added keys are remembered in the order as they are added 27 | obj['A'] = 1 28 | obj['B'] = 2 29 | obj['C'] = 3 30 | # OrderableDict([('A', 1), ('B', 2), ('C', 3)]) 31 | 32 | # use move() api to move an existing key to a new positions 33 | # eg, moving 'C' key and value to first position 34 | obj.move('C', 0) 35 | # OrderableDict([('C', 3), ('A', 1), ('B', 2)]) 36 | 37 | # use insert() to insert new keys into arbitrary positions 38 | # eg, insert 'D' key into 2nd position 39 | obj.insert('D', 4, position = 1) 40 | # OrderableDict([('C', 3), ('D', 4), ('A', 1), ('B', 2)]) 41 | 42 | 43 | ``OrderableDict`` behavior is normally exactly identical to those of python 44 | ``collections.OrderedDict``, except that it comes with two new APIs: 45 | 46 | ``move(key, position)`` 47 | moves an existing key in the datastructure to just before ``position``. 48 | 49 | ``insert(key, value, position)`` 50 | insert a new key/value pair into the datastructure just before ``position``. 51 | 52 | When using ``OrderableDict``, the ``position`` argument refers to the 53 | corresponding index value of the list of all currently ordered keys. That is, 54 | if you create a list from the ordered keys of the current datastrucuture, each 55 | key's ``position`` is exactly its list index value. 56 | 57 | Known Limitations 58 | ----------------- 59 | 60 | The implementation of ``OrderableDict`` is not as efficient as ``dict`` and 61 | ``OrderedDict``. A separate list is used internally to store the current 62 | order of keys, and thus can lead to a larger memory footprint. This problem may 63 | be further exacerbated if the keys are very large. -------------------------------------------------------------------------------- /docs/changelog/2022/august.rst: -------------------------------------------------------------------------------- 1 | August 2022 2 | ========== 3 | 4 | August 26 - Pyats v22.8 5 | ------------------------ 6 | 7 | 8 | 9 | .. csv-table:: New Module Versions 10 | :header: "Modules", "Version" 11 | 12 | ``pyats``, v22.8 13 | ``pyats.aereport``, v22.8 14 | ``pyats.aetest``, v22.8 15 | ``pyats.async``, v22.8 16 | ``pyats.cisco``, v22.8 17 | ``pyats.connections``, v22.8 18 | ``pyats.datastructures``, v22.8 19 | ``pyats.easypy``, v22.8 20 | ``pyats.kleenex``, v22.8 21 | ``pyats.log``, v22.8 22 | ``pyats.reporter``, v22.8 23 | ``pyats.results``, v22.8 24 | ``pyats.robot``, v22.8 25 | ``pyats.tcl``, v22.8 26 | ``pyats.topology``, v22.8 27 | ``pyats.utils``, v22.8 28 | 29 | Upgrade Instructions 30 | ^^^^^^^^^^^^^^^^^^^^ 31 | 32 | .. code-block:: bash 33 | 34 | # DevNet Community 35 | bash$ pip install --upgrade pyats 36 | 37 | # Cisco Internal Developers 38 | bash$ pip install --upgrade ats 39 | 40 | 41 | 42 | 43 | Changelogs 44 | ^^^^^^^^^^ 45 | -------------------------------------------------------------------------------- 46 | Fix 47 | -------------------------------------------------------------------------------- 48 | 49 | * pyats.easypy 50 | * Fixed task-uids filter when using default Task IDs (e.g. Task-2) 51 | 52 | * pyats.manifest 53 | * Add support for boolean overrides with `pyats manifest` CLI command 54 | 55 | * manifest 56 | * combine_cli_args_and_script_arguments 57 | * Handling for any number of uses of the ``--meta`` argument 58 | 59 | * pyats.topology 60 | * Updated testbed.raw_config to contain post-extend, post-markup content. This fixes issues introduced by previous changes when using Genie jinja configure and YAML reference markup. 61 | 62 | * pyats.utils 63 | * Updated schemaengine to support optional advanced datatypes 64 | * Updated yaml loader to support advanced datatypes argument 65 | * Updated yaml loader to store raw/pre/mark/validated/post content 66 | 67 | 68 | -------------------------------------------------------------------------------- 69 | New 70 | -------------------------------------------------------------------------------- 71 | 72 | * ats.cisco 73 | * bussinesstelemetry 74 | * Updated get_paches for collecting package from requirements.txt 75 | 76 | 77 | -------------------------------------------------------------------------------- /docs/changelog/2019/sept.rst: -------------------------------------------------------------------------------- 1 | September 2019 2 | ============== 3 | 4 | September 30, 2019 5 | ------------------ 6 | 7 | .. csv-table:: New Module Versions 8 | :header: "Modules", "Version" 9 | 10 | ``pyats.easypy``, v19.9.2 11 | ``pyats.reporter``, v19.9.1 12 | 13 | Changes 14 | ^^^^^^^ 15 | 16 | - Fixed issue with step descriptions not being included in final email report 17 | - Improved Reporter logging and decreased verbosity 18 | - jobfile now included in Results.yaml file 19 | - Re-added option to create HTML logs 20 | 21 | .. csv-table:: New Module Versions 22 | :header: "Modules", "Version" 23 | 24 | ``pyats.easypy``, v19.9.1 25 | 26 | Changes 27 | ^^^^^^^ 28 | 29 | - ``RuninfoSymlinkPlugin`` will now silently log error if it could not create 30 | runinfo symlink (during race conditions) 31 | 32 | September 24, 2019 - pyATS v19.9 33 | -------------------------------- 34 | 35 | .. csv-table:: New Module Versions 36 | :header: "Modules", "Version" 37 | 38 | ``pyats``, v19.9.2 39 | ``pyats.log``, v19.9.1 40 | 41 | Changes 42 | ^^^^^^^ 43 | 44 | - Fixed a packaging issue. 45 | 46 | - The ``pyats logs view`` command now displays a better error message if no 47 | logs can be found. 48 | 49 | 50 | .. csv-table:: New Module Versions 51 | :header: "Modules", "Version" 52 | 53 | ``pyats``, v19.9 54 | ``pyats.aereport``, v19.9 55 | ``pyats.aetest``, v19.9 56 | ``pyats.async``, v19.9 57 | ``pyats.cisco``, v19.9 58 | ``pyats.connections``, v19.9 59 | ``pyats.datastructures``, v19.9 60 | ``pyats.easypy``, v19.9 61 | ``pyats.kleenex``, v19.9 62 | ``pyats.log``, v19.9 63 | ``pyats.reporter``, v19.9 64 | ``pyats.results``, v19.9 65 | ``pyats.robot``, v19.9 66 | ``pyats.tcl``, v19.9 67 | ``pyats.topology``, v19.9 68 | ``pyats.utils``, v19.9 69 | 70 | Upgrade Instructions 71 | ^^^^^^^^^^^^^^^^^^^^ 72 | 73 | .. code-block:: bash 74 | 75 | # DevNet Community 76 | bash$ pip install --upgrade pyats 77 | 78 | # Cisco Internal Developers 79 | bash$ pip install --upgrade ats 80 | 81 | Changes 82 | ^^^^^^^ 83 | 84 | - Introducing the new ``pyats.reporter`` package. 85 | This new reporting mechanism adds YAML report generation for more flexible 86 | reporting and human readability. 87 | 88 | - Kleenex : Fixed bringup failure when user-defined device class was specified 89 | in the logical testbed content. 90 | 91 | - Introducing the new ``pyats logs`` CLI command, which allows log archive 92 | listing and viewing in a local browser. 93 | 94 | -------------------------------------------------------------------------------- /docs/reporter/subscribe.rst: -------------------------------------------------------------------------------- 1 | .. _subscribe: 2 | 3 | Subscribe 4 | ========= 5 | 6 | The Reporter Client supports subscribing to the Reporter Server for live 7 | updates about each section starting and stopping. `pyats.reporter.ReportClient` 8 | has an async function `subscribe(callback)` for this purpose. Users must be 9 | familiar with :ref:`pyats_asyncio` in order to leverage this API. 10 | 11 | API 12 | --- 13 | 14 | `subscribe(callback)` takes only one argument which is an async function to call 15 | with event data each time it is received. 16 | 17 | Example: 18 | 19 | .. code-block:: python 20 | 21 | import asyncio 22 | 23 | from pyats.reporter import ReportClient 24 | 25 | async def my_callback(event): 26 | # handle event data 27 | pass 28 | 29 | client = ReportClient(path_to_socket) 30 | loop = asyncio.get_event_loop() 31 | loop.run_until_complete(client.subscribe(my_callback)) 32 | 33 | Event Data 34 | ---------- 35 | 36 | Event data is a `dict` of information about an event that just occurred. All of 37 | the possible entries are listed in the following table: 38 | 39 | .. csv-table:: Event Data Values 40 | :header: "Key", "Description" 41 | 42 | ``event``, "A string to specify what kind of event occurred such as 'start_task' or 'stop_section'" 43 | ``type``, "The type of section that triggered this event" 44 | ``seq_num``, "A unique number specific to the section triggering this event" 45 | ``parent_seq_num``, "The seq_num of the parent section if there is one" 46 | ``id``, "The id of the related section" 47 | ``name``, "The name of the related section" 48 | ``starttime``, "A timestamp for when the section started" 49 | ``stoptime``, "A timestamp for when the section ended" 50 | ``runtime``, "How many seconds the section ran for" 51 | ``result``, "The result of the section" 52 | ``logfile``, "The name of the log file" 53 | ``logs``, "A mapping of log file name, and offset of relevant section of logs" 54 | ``xref``, "The location of this section in the script" 55 | 56 | Only values that exist for that section are included in the event data. 57 | 58 | Two notable divergences from typical `start_` and `stop_` events are 59 | `init_testsuite` and `init_task`. A pre-task plugin is associated with a 60 | specific Task, but runs before that Task starts. With `init_task` the Task is 61 | defined before either the Task or the plugin runs. This allows the plugin to be 62 | associated with that Task despite preceding it. This also applies to pre-job 63 | tasks and the Testsuite. 64 | 65 | .. sectionauthor:: Ben Astell -------------------------------------------------------------------------------- /docs/changelog/2015/february.rst: -------------------------------------------------------------------------------- 1 | February 2015 2 | ============= 3 | 4 | February 20 5 | ----------- 6 | 7 | +-------------------------------+-------------------------------+ 8 | | Module | Versions | 9 | +===============================+===============================+ 10 | | ``ats.connections`` | 1.0.7 | 11 | +-------------------------------+-------------------------------+ 12 | 13 | 14 | Features: 15 | ^^^^^^^^^ 16 | 17 | * transmit/receive for ha and non-ha devices 18 | * econ API's: 19 | - econ_state_get 20 | - econ_state_set 21 | - econ_set_process 22 | - econ_prepare_state 23 | - get_econ_state_array 24 | * expect internal logs 25 | - exp_internal 26 | * APIs for changing state patterns. 27 | - add_state_pattern 28 | - restore_default_state_pattern 29 | * APIs for manupilating HA platform variables. 30 | - ha_set_platform 31 | - ha_get_platform 32 | 33 | .. note:: 34 | 35 | You must be running Csccon 5.5.7 in Tcl ATS for above features 36 | and Universal Console to work. 37 | 38 | February 12 39 | ----------- 40 | 41 | +-------------------------------+-------------------------------+ 42 | | Module | Versions | 43 | +===============================+===============================+ 44 | | ``ats.topology`` | 1.0.8 | 45 | +-------------------------------+-------------------------------+ 46 | 47 | Features: 48 | ^^^^^^^^^ 49 | 50 | * Topology/loader returns exception if file is not valid 51 | 52 | February 11 53 | ----------- 54 | 55 | +-------------------------------+-------------------------------+ 56 | | Module | Versions | 57 | +===============================+===============================+ 58 | | ``ats.topology`` | 1.0.7 | 59 | +-------------------------------+-------------------------------+ 60 | 61 | Features: 62 | ^^^^^^^^^ 63 | 64 | * Typo in exception files has been fixed. 65 | 66 | February 2 67 | ---------- 68 | 69 | +-------------------------------+-------------------------------+ 70 | | Module | Versions | 71 | +===============================+===============================+ 72 | | ``ats.pda`` | 1.0.2 | 73 | +-------------------------------+-------------------------------+ 74 | 75 | Features: 76 | ^^^^^^^^^ 77 | 78 | * Redistributing ``ats.pda`` package with a new version. Previous distribution 79 | on Jan 29 did not bump up version #. 80 | -------------------------------------------------------------------------------- /docs/changelog/2024/march.rst: -------------------------------------------------------------------------------- 1 | March 2024 2 | ========== 3 | 4 | - Pyats v24.3 5 | ------------------------ 6 | 7 | 8 | 9 | .. csv-table:: New Module Versions 10 | :header: "Modules", "Version" 11 | 12 | ``pyats``, v24.3 13 | ``pyats.aereport``, v24.3 14 | ``pyats.aetest``, v24.3 15 | ``pyats.async``, v24.3 16 | ``pyats.cisco``, v24.3 17 | ``pyats.connections``, v24.3 18 | ``pyats.datastructures``, v24.3 19 | ``pyats.easypy``, v24.3 20 | ``pyats.kleenex``, v24.3 21 | ``pyats.log``, v24.3 22 | ``pyats.reporter``, v24.3 23 | ``pyats.results``, v24.3 24 | ``pyats.robot``, v24.3 25 | ``pyats.tcl``, v24.3 26 | ``pyats.topology``, v24.3 27 | ``pyats.utils``, v24.3 28 | 29 | Upgrade Instructions 30 | ^^^^^^^^^^^^^^^^^^^^ 31 | 32 | .. code-block:: bash 33 | 34 | # DevNet Community 35 | bash$ pip install --upgrade pyats 36 | 37 | # Cisco Internal Developers 38 | bash$ pip install --upgrade ats 39 | 40 | 41 | 42 | 43 | Changelogs 44 | ^^^^^^^^^^ 45 | -------------------------------------------------------------------------------- 46 | New 47 | -------------------------------------------------------------------------------- 48 | 49 | * easypy.plugins 50 | * rerun 51 | * Added ability to download archive/rerun file from a URL 52 | 53 | * pyats.aetest 54 | * Modified PauseOnPhrase, added collect and custom options 55 | 56 | * pyats.cli 57 | * Migrate abstract 58 | * Added functionality to the `pyats migrate abstract` command to modify the files in-place with the suggested changes 59 | 60 | * easypy 61 | * plugins(kleenex) 62 | * add --clean-template-action cli argument to kleenex plugin. 63 | 64 | * kleenex 65 | * loader 66 | * add logic for loading a template for cleaning the device 67 | 68 | 69 | -------------------------------------------------------------------------------- 70 | Fix 71 | -------------------------------------------------------------------------------- 72 | 73 | * pyats.connection 74 | * Service Wrapper 75 | * Fixed an issue that caused a circular import when using the service wrapper with external connection packages 76 | * Changed `BaseServiceWrapper` to `ServiceWrapper` 77 | * Changed `ServiceWrapper` import from `from pyats.connections.bases import BaseServiceWrapper` to `from pyats.connections import ServiceWrapper` 78 | * This feature replaces the previous concept of Service Hooks 79 | 80 | 81 | -------------------------------------------------------------------------------- /docs/datastructures/configuration.rst: -------------------------------------------------------------------------------- 1 | Configuration Container 2 | ======================= 3 | 4 | The ``Configuration`` container is a special type of ``NestedAttrDict`` intended 5 | to store Python module and feature configurations. 6 | 7 | Avoid confusing Python configuration with router configuration. Python 8 | configurations tends to be key value pairs that drives a particular piece 9 | of infrastructure, telling it how its behavior should be. 10 | 11 | .. code-block:: Python 12 | 13 | # Example 14 | # ------- 15 | # 16 | # using Configuration() class 17 | 18 | from pyats.datastructures import Configuration 19 | 20 | # instantiating it 21 | cfg = Configuration() 22 | 23 | # loading some INI style config files 24 | cfg.load_cfgs('/path/to/file.ini') 25 | cfg.load_cfgs('/path/to/file.conf') 26 | 27 | # load yaml style config files 28 | cfg.load_yamls('/path/to/config.yaml') 29 | 30 | # loading python entrypoints 31 | cfg.load_entrypoint(group = 'entrypoint.group.name') 32 | 33 | cfg 34 | # Configuration({ 35 | # 'email': Configuration({ 36 | # 'smtp': Configuration({ 37 | # 'host': 'mail.cisco.com', 38 | # 'port': 25}), 39 | # 'default_domain': 'cisco.com'})}) 40 | 41 | Behavior 42 | -------- 43 | 44 | - Configuration class inherits all the behaviors of ``NestedAttrDict`` 45 | 46 | - ``Configuration.copy()`` will walk the entire configuration tree, and all 47 | children ``Configuration`` nodes will be copied. (Eg - it's a pseudo deep 48 | copy, but will only deep copy its own object type) 49 | 50 | - ``Configuration.load_cfgs(*files)`` accepts ``N`` INI style files. Internally 51 | it uses ``configparser.ConfigParser.read(*files)`` api, and inherits all of 52 | its behavior. Returns the list of files that was loaded successfully. 53 | 54 | - does not raise exception if file doesn't exist 55 | 56 | - the ``DEFAULT`` block in configparser is removed 57 | 58 | - basic data types will be typecasted into Python objects 59 | (bool/int/float/None) 60 | 61 | - ``Configuration.load_yamls(*files)`` accepts ``N`` yaml files. Internally 62 | performs a YAML load on each file, and saves the configuration data. 63 | The files are read from left to right, hence if any data block is repeated in 64 | the files, the right most file's data takes precedence. Returns the list of 65 | files that was loaded successfully. 66 | 67 | - ``Configuration.load_entrypoint(group)`` loads a Python entrypoint group. 68 | Any loaded group data needs to return a dictionary-like data, which will 69 | get updated into this configuration object 70 | 71 | -------------------------------------------------------------------------------- /docs/changelog/2021/april.rst: -------------------------------------------------------------------------------- 1 | 2 | April 2021 3 | ========== 4 | 5 | April 27, 2021 6 | -------------- 7 | 8 | .. csv-table:: New Module Versions 9 | :header: "Modules", "Version" 10 | 11 | ``pyats``, v21.4 12 | ``pyats.aereport``, v21.4 13 | ``pyats.aetest``, v21.4 14 | ``pyats.async``, v21.4 15 | ``pyats.cisco``, v21.4 16 | ``pyats.connections``, v21.4 17 | ``pyats.datastructures``, v21.4 18 | ``pyats.easypy``, v21.4 19 | ``pyats.kleenex``, v21.4 20 | ``pyats.log``, v21.4 21 | ``pyats.reporter``, v21.4 22 | ``pyats.results``, v21.4 23 | ``pyats.robot``, v21.4 24 | ``pyats.tcl``, v21.4 25 | ``pyats.topology``, v21.4 26 | ``pyats.utils``, v21.4 27 | 28 | Upgrade Instructions 29 | ^^^^^^^^^^^^^^^^^^^^ 30 | 31 | .. code-block:: bash 32 | 33 | # DevNet Community 34 | bash$ pip install --upgrade pyats 35 | 36 | # Cisco Internal Developers 37 | bash$ pip install --upgrade ats 38 | 39 | 40 | Feature List 41 | ^^^^^^^^^^^^ 42 | 43 | .. list-table:: 44 | :header-rows: 1 45 | 46 | * - Feature 47 | - Docs 48 | - Whats New 49 | 50 | * - pyATS Manifest 51 | - :ref:`Docs ` 52 | - | The pyATS Manifest uses a file with YAML syntax (the "manifest" file) 53 | | to capture the runtime requirements, script arguments and 54 | | execution profile for test scripts. 55 | .. code-block:: text 56 | 57 | $ cat jobfile.tem 58 | version: 1 59 | 60 | type: easypy 61 | 62 | arguments: 63 | configuration: easypy_config.yaml 64 | mail-html: True 65 | 66 | $ pyats run manifest jobfile.tem 67 | %EASYPY-INFO: Executing: pyats run job jobfile.py --configuration "easypy_config.yaml" --mail-html 68 | ... 69 | %EASYPY-INFO: Sending report email... 70 | %EASYPY-INFO: Done! 71 | 72 | 73 | Other Changes 74 | ^^^^^^^^^^^^^ 75 | 76 | * log 77 | * Modified LiveView 78 | * Fix for liveview to handle improved memory model from reporter 79 | 80 | * reporter 81 | * added get_section_ctx() to get section context 82 | 83 | * log 84 | * fixed log liveview ui bug 85 | * added fullid in liveview 86 | * fixed log viewing key bindings for page up / down getting stuck 87 | * fixed files list scroll issue when the list goes beyond the page 88 | * removed "No log to display” when it should not display that 89 | * enhanced files list search 90 | 91 | * pyats 92 | * Modified configuration: 93 | * Added new --pyats-configuration argument to specify an additional 94 | configuration file to be loaded 95 | 96 | --------------------------------------------------------------------------------