<commit_before>Writing cross-service Tempest plugins - Hands-on
================================================

This repo contains the code and documentation for the Hands-on Workshop
"Writing cross-service Tempest Plugins".

Introduction
------------

To run through the workshop preparation steps:
- building the workshop image
- snapshot it to build a ready-image for students

To run through the workshop itself:
- spawn a VM using the built image
- follow the steps from the README

Building the Workshop Image
---------------------------

The image setup is done via the setup\_image.yaml playbook.
It uses existing ansible roles from openstack-infra/devstack-gate.

To run the playbook, define the IP of your cloud VM and the
passwordless user to connect to it in the `inventory` file.
The run the following steps::

  git clone https://git.openstack.org/openstack-infra/devstack-gate
  export ANSIBLE\_ROLES\_PATH=$PWD/devstack-gate/playbooks/roles
  ansible-playbook setup\_image.yaml
<commit_msg>No need to escapoe underscores in rst :)<commit_after>Writing cross-service Tempest plugins - Hands-on
================================================

This repo contains the code and documentation for the Hands-on Workshop
"Writing cross-service Tempest Plugins".

Introduction
------------

To run through the workshop preparation steps:
- building the workshop image
- snapshot it to build a ready-image for students

To run through the workshop itself:
- spawn a VM using the built image
- follow the steps from the README

Building the Workshop Image
---------------------------

The image setup is done via the setup_image.yaml playbook.
It uses existing ansible roles from openstack-infra/devstack-gate.

To run the playbook, define the IP of your cloud VM and the
passwordless user to connect to it in the `inventory` file.
The run the following steps::

  git clone https://git.openstack.org/openstack-infra/devstack-gate
  export ANSIBLE_ROLES_PATH=$PWD/devstack-gate/playbooks/roles
  ansible-playbook setup_image.yaml

{'fraction_non_alphanumeric': 0.13437959784207945, 'fraction_numerical': 0.0, 'mean_word_length': 3.788732394366197, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1810605', 'n_tokens_mistral': 539, 'n_tokens_neox': 512, 'n_words': 235}