Add SALT API client
diff --git a/tcp_tests/fixtures/openstack_fixtures.py b/tcp_tests/fixtures/openstack_fixtures.py
index 6ec700a..c4ffa35 100644
--- a/tcp_tests/fixtures/openstack_fixtures.py
+++ b/tcp_tests/fixtures/openstack_fixtures.py
@@ -26,7 +26,7 @@
@pytest.fixture(scope='function')
-def openstack_actions(config, underlay):
+def openstack_actions(config, underlay, salt_actions):
"""Fixture that provides various actions for K8S
:param config: fixture provides oslo.config
@@ -35,7 +35,7 @@
For use in tests or fixtures to deploy a custom K8S
"""
- return openstack_manager.OpenstackManager(config, underlay)
+ return openstack_manager.OpenstackManager(config, underlay, salt_actions)
@pytest.mark.revert_snapshot(ext.SNAPSHOT.openstack_deployed)
@@ -83,3 +83,50 @@
pass
return openstack_actions
+
+
+@pytest.mark.revert_snapshot(ext.SNAPSHOT.openstack_deployed)
+@pytest.fixture(scope='function')
+def deploy_openstack(revert_snapshot, request, config,
+ hardware, underlay, common_services_deployed,
+ openstack_actions):
+ """Fixture to get or install OpenStack services on environment
+
+ :param revert_snapshot: fixture that reverts snapshot that is specified
+ in test with @pytest.mark.revert_snapshot(<name>)
+ :param request: fixture provides pytest data
+ :param config: fixture provides oslo.config
+ :param hardware: fixture provides enviromnet manager
+ :param underlay: fixture provides underlay manager
+ :param tcp_actions: fixture provides OpenstackManager instance
+ :rtype: OpenstackManager
+
+ If config.openstack.openstack_installed is not set, this fixture assumes
+ that the openstack services were not installed, and do the following:
+ - install openstack services
+ - make snapshot with name 'openstack_deployed'
+ - return OpenstackManager instance
+
+ If config.openstack.openstack_installed was set, this fixture assumes that
+ the openstack services were already installed, and do the following:
+ - return OpenstackManager instance
+
+ If you want to revert 'openstack_deployed' snapshot, please use mark:
+ @pytest.mark.revert_snapshot("openstack_deployed")
+ """
+ # Create Salt cluster
+ if not config.openstack.openstack_installed:
+ steps_path = config.openstack_deploy.openstack_steps_path
+ commands = utils.read_template(steps_path)
+ openstack_actions.install(commands)
+ hardware.create_snapshot(ext.SNAPSHOT.openstack_deployed)
+
+ else:
+ # 1. hardware environment created and powered on
+ # 2. config.underlay.ssh contains SSH access to provisioned nodes
+ # (can be passed from external config with TESTS_CONFIGS variable)
+ # 3. config.tcp.* options contain access credentials to the already
+ # installed TCP API endpoint
+ pass
+
+ return openstack_actions