Add an API to sahara-scenario for integration to another frameworks

https://blueprints.launchpad.net/sahara-tests/+spec/api-for-scenario-tests

Sahara scenario is the main tool for testing Sahara and we can provide API for using this framework in another tools/frameworks/tests.

Problem description

When you perform testing of Sahara from another framework, you can’t reuse created scenarios and need to create similar code in another framework with new scenarios for Sahara. I think, that we can implement simple Python API for running Sahara scenarios from default templates. It will be useful, for example in frameworks with destructive tests or something else.

Proposed change

Refactor current runner.py module, pull out code in sahara_tests/scenario/utils.py for reusing it in API methods.

I propose to move code with:

  • creation of tmp files,

  • working with .mako,

  • running tests,

  • merging/generation of scenario files.

In runner.py we should leave only calls of this methods, for more convenient usage. The next step is adding the directory api in sahara_tests/scenario with files for implementing API.

I think, we need to add file api.py with methods for external usage:

  • def run_scenario(plugin, version, release=None)

and base.py with preparing of files for running and auxiliary methods in the future.

In future we can separate one scenario into steps:

  • create node group template;

  • create cluster template;

  • create cluster;

  • create data sources;

  • create job binaries;

  • perform EDP;

Alternatives

None

Data model impact

None

REST API impact

None

Other end user impact

None

Deployer impact

None

Developer impact

None

Sahara-image-elements impact

None

Sahara-dashboard / Horizon impact

None

Implementation

Assignee(s)

Primary assignee:

esikachev

Work Items

  • move methods from runner.py

  • add the ability to run tests via API

  • add the job for testing API

Dependencies

None

Testing

We can create separate job on Sahara-ci with custom script for checking API calls and correct performing of actions.

Documentation Impact

The API implementation should be mentioned in Sahara-tests docs.

References

None