[v1,0/8] dts: ssh connection to a node

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


Juraj LinkeŇ° June 22, 2022, 12:14 p.m. UTC
  All the necessary code needed to connect to a node in a topology with
some extras, such as basic logging, per-node locks and some extra
useful methods.

To run the code, modify the two config files, execution.cfg and
conf/topology.cfg and execute ./main.py from the root dts folder. Here's
an example config:
cat execution.cfg

cat conf/topology.cfg
#Topology Configuration
#  sut_ip: SUT ip address
#  sut_user: SUT username
#  sut_passwd: SUT password

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

There's no documentation, as there's not much to document - the above is
basically all there is to it, as far as user docs go. 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).

The config parser will be reworked in near future, so there's no need to
review it. While we're working on it, let's review the rest of the code.

This is our current roadmap:
1. Review this patchset and do the rest of the items in parallel, if
2. Finish the config parser rework.
3. Rebase this patch on top of 2 and send a new version (along with
addressed review comments).
4. 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. In
fact, 1 is part of 4.
5. Once we have 4 applied, we'll 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.
6. After 5, we'll add a basic performance testcases which doesn't use
Scapy, but Trex or Ixia instead.
7. 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.

Juraj LinkeŇ° (8):
  dts: add ssh pexpect library
  dts: add locks for parallel node connections
  dts: add ssh connection extension
  dts: add basic logging facility
  dts: add Node base class
  dts: add config parser module
  dts: add dts runtime workflow module
  dts: add main script for running dts

 dts/conf/topology.cfg           |   9 ++
 dts/execution.cfg               |   2 +
 dts/framework/config.py         |  81 ++++++++++++++
 dts/framework/dts.py            | 128 +++++++++++++++++++++
 dts/framework/exception.py      |  61 ++++++++++
 dts/framework/logger.py         |  86 ++++++++++++++
 dts/framework/node.py           |  95 ++++++++++++++++
 dts/framework/settings.py       |  42 +++++++
 dts/framework/ssh_connection.py |  52 +++++++++
 dts/framework/ssh_pexpect.py    | 192 ++++++++++++++++++++++++++++++++
 dts/framework/utils.py          | 128 +++++++++++++++++++++
 dts/main.py                     |  36 ++++++
 12 files changed, 912 insertions(+)
 create mode 100644 dts/conf/topology.cfg
 create mode 100644 dts/execution.cfg
 create mode 100644 dts/framework/config.py
 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