[v4,0/9] dts: ssh connection to a node

Message ID 20220729105550.1382664-1-juraj.linkes@pantheon.tech (mailing list archive)


Juraj LinkeŇ° July 29, 2022, 10:55 a.m. UTC
  All the necessary code needed to connect to a node in a topology with
a bit more, such as basic logging and some extra useful methods.

To run the code, modify the config file, conf.yaml and execute ./main.py
from the root dts folder. Here's an example config:
  - system_under_test: "SUT 1"
  - name: "SUT 1"
    user: root
    password: mypw.change.me

There are configuration files with a README that help with setting up
the execution/development environment.

The code only connects to a node. You'll see logs emitted to console
saying where DTS connected.

There's only a bit of documentation, as there's not much to document.
We'll add some real docs when there's enough functionality to document,
when the HelloWorld testcases is in (point 4 in our roadmap below). What
will be documented later is runtime dependencies and how to set up the DTS
control node environment.

This is our current roadmap:
1. Review this patchset and do the rest of the items in parallel, if
2. We have extracted the code needed to run the most basic testcase,
HelloWorld, which runs the DPDK Hello World application. We'll split
this along logical/functional boundaries and send after 1 is done.
3. Once we have 2 applied, we're planning on adding a basic functional
testcase - pf_smoke. This send a bit of traffic, so the big addition is
the software traffic generator, Scapy. There's some work already done on
Traffic generators we'll be sending as a dependence on this patch
4. After 3, we'll add a basic performance testcase which doesn't use
Scapy, but Trex or Ixia instead.
5. This is far in the future, but at this point we should have all of
the core functionality in place. What then remains is adding the rest of
the testcases.

We're already working on items 2-4 and we may send more patches even
before this patch series is accepted if that's beneficial. The new
patches would then depend on this patch.

This patch, as well as all others in the pipeline, are the result of
extensive DTS workgroup review which happens internally. If you'd like
us to make it more public we'd have no problem with that.

Added project config files and developer tools.
Removed locks for parallel nodes, which are not needed now and will be
implemented much later (in a different patch).

Minor fixes - added missing Exception and utils function.

Juraj LinkeŇ° (8):
  dts: add project tools config
  dts: add developer tools
  dts: add basic logging facility
  dts: add ssh pexpect library
  dts: add ssh connection extension
  dts: add Node base class
  dts: add dts workflow module
  dts: add dts executable script

Owen Hilyard (1):
  dts: add config parser module

 dts/.devcontainer/devcontainer.json        |  30 ++
 dts/.editorconfig                          |   7 +
 dts/.gitignore                             |  14 +
 dts/Dockerfile                             |  38 ++
 dts/README.md                              |  87 ++++
 dts/conf.yaml                              |   7 +
 dts/format.sh                              |  45 ++
 dts/framework/__init__.py                  |   3 +
 dts/framework/config/__init__.py           |  99 +++++
 dts/framework/config/conf_yaml_schema.json |  73 ++++
 dts/framework/dts.py                       |  70 +++
 dts/framework/exception.py                 |  71 +++
 dts/framework/logger.py                    | 124 ++++++
 dts/framework/node.py                      |  99 +++++
 dts/framework/settings.py                  |  87 ++++
 dts/framework/ssh_connection.py            |  70 +++
 dts/framework/ssh_pexpect.py               | 205 +++++++++
 dts/framework/utils.py                     |  31 ++
 dts/main.py                                |  24 ++
 dts/poetry.lock                            | 474 +++++++++++++++++++++
 dts/pylama.ini                             |   8 +
 dts/pyproject.toml                         |  43 ++
 22 files changed, 1709 insertions(+)
 create mode 100644 dts/.devcontainer/devcontainer.json
 create mode 100644 dts/.editorconfig
 create mode 100644 dts/.gitignore
 create mode 100644 dts/Dockerfile
 create mode 100644 dts/README.md
 create mode 100644 dts/conf.yaml
 create mode 100755 dts/format.sh
 create mode 100644 dts/framework/__init__.py
 create mode 100644 dts/framework/config/__init__.py
 create mode 100644 dts/framework/config/conf_yaml_schema.json
 create mode 100644 dts/framework/dts.py
 create mode 100644 dts/framework/exception.py
 create mode 100644 dts/framework/logger.py
 create mode 100644 dts/framework/node.py
 create mode 100644 dts/framework/settings.py
 create mode 100644 dts/framework/ssh_connection.py
 create mode 100644 dts/framework/ssh_pexpect.py
 create mode 100644 dts/framework/utils.py
 create mode 100755 dts/main.py
 create mode 100644 dts/poetry.lock
 create mode 100644 dts/pylama.ini
 create mode 100644 dts/pyproject.toml