Common fixtures for inmanta LSM related modules
Project description
pytest-inmanta-lsm
A pytest plugin to test inmanta modules that use lsm, it is built on top of pytest-inmanta
and pytest-inmanta-extensions
Installation
pip install pytest-inmanta-lsm
Context
This plugin is used to push code to a remote orchestrator and interact with it, via the LSM north-bound-api It requires an LSM enabled orchestrator, with no ssl or authentication enabled, in a default setup and ssh access to the orchestrator machine, with a user that has sudo permissions.
Usage
This plugin is built around the remote_orchestrator fixture. It offers features to
A typical testcase using this plugin looks as follows:
def test_full_cycle(project, remote_orchestrator):
# get connection to remote_orchestrator
client = remote_orchestrator.client
# setup project
project.compile(
"""
import quickstart
"""
)
# sync project and export service entities
remote_orchestrator.export_service_entities()
# verify the service is in the catalog
result = client.lsm_service_catalog_get_entity(remote_orchestrator.environment, SERVICE_NAME)
assert result.code == 200
# get a ManagedInstance object, to simplifies interacting with a specific service instance
service_instance = remote_orchestrator.get_managed_instance(SERVICE_NAME)
# create an instance and wait for it to be up
service_instance.create(
attributes={"router_ip": "10.1.9.17", "interface_name": "eth1", "address": "10.0.0.254/24", "vlan_id": 14},
wait_for_state="up",
)
# make validation fail by creating a duplicate
remote_orchestrator.get_managed_instance(SERVICE_NAME).create(
attributes={"router_ip": "10.1.9.17", "interface_name": "eth1", "address": "10.0.0.254/24", "vlan_id": 14},
wait_for_state="rejected",
)
service_instance.update(
attribute_updates={"vlan_id": 42},
wait_for_state="up",
)
# break it down
service_instance.delete()
Options
The following options are available.
--lsm_host
remote orchestrator to use for the remote_orchestrator fixture, overrides INMANTA_LSM_HOST--lsm_user
username to use to ssh to the remote orchestrator, overrides INMANTA_LSM_USER--lsm_port
port to use to ssh to the remote orchestrator, overrides INMANTA_LSM_PORT--lsm_environment
the environment to use on the remote server (it is created if it doesn't exist), overrides INMANTA_LSM_ENVIRONMENT--lsm_noclean
Don't cleanup the orchestrator after last test (for debugging purposes)--lsm_ssl
Connect to the remote orchestrator using SSL/TLS, overrides INMANTA_LSM_SSL--lsm_token
The token used to authenticate to the remote orchestrator when authentication is enabled, overrides INMANTA_LSM_TOKEN--lsm_ca_cert
The path to the CA certificate file used to authenticate the remote orchestrator, overrides INMANTA_LSM_CA_CERT
Environment variables
The following environment variables are available:
INMANTA_LSM_MODULE_CONSTRAINTS
: semi-colon separated list of constraints e.g :"lsm~=2.12.0"
Running tests
Pre-requisites
Testing (and using) pytest-inmanta-lsm requires:
- an available orchestrator to test against
- ssh access to this orchestrator
Steps
- install dependencies:
pip install -r requirements.dev.txt -r requirements.txt
- pass the config for pytest-inmanta-lsm via environment variables. e.g.
export INMANTA_LSM_HOST=<the orchestrator>
export INMANTA_LSM_USER=<user>
- set the repo for inmanta to pull LSM from
export INMANTA_MODULE_REPO=https://USER:LICENSE_TOKEN@modules.inmanta.com/git/inmanta-service-orchestrator/5/{}.git
- run the tests
pytest tests
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file pytest-inmanta-lsm-1.5.0.tar.gz
.
File metadata
- Download URL: pytest-inmanta-lsm-1.5.0.tar.gz
- Upload date:
- Size: 17.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.9.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4fd8e19725d7084e7d6b7bf830a84e4176bbd6b138a7a5703ce8b67be977942d |
|
MD5 | e6bdd96dd8cb7181d4a8b2d9cb3f613d |
|
BLAKE2b-256 | 21f397c6f166dd54939d2cbf2d857fc393951e7884f14fdd91f235bd51a06946 |