sahara-tests/sahara_tempest_plugin/tests/cli/test_scenario.py

223 lines
11 KiB
Python

# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import testtools
from tempest import config
from tempest.lib import decorators
from sahara_tempest_plugin.tests.cli import clusters
from sahara_tempest_plugin.tests.cli import cluster_templates
from sahara_tempest_plugin.tests.cli import images
from sahara_tempest_plugin.tests.cli import node_group_templates
from sahara_tempest_plugin.tests.cli import plugins
from sahara_tempest_plugin.tests.cli import job_binaries
from sahara_tempest_plugin.tests.cli import jobs
from sahara_tempest_plugin.tests.cli import job_templates
from sahara_tempest_plugin.tests.cli import data_sources
from sahara_tempest_plugin.tests.cli import job_types
TEMPEST_CONF = config.CONF
NODE_GROUP_TEMPLATE = 'node group template'
class Scenario(images.SaharaImageCLITest,
node_group_templates.SaharaNodeGroupCLITest,
cluster_templates.SaharaClusterTemplateCLITest,
clusters.SaharaClusterCLITest,
plugins.SaharaPluginCLITest,
job_binaries.SaharaJobBinaryCLITest,
jobs.SaharaJobCLITest,
job_templates.SaharaJobTemplateCLITest,
data_sources.SaharaDataSourceCLITest,
job_types.SaharaJobTypeCLITest):
def test_plugin_cli(self):
self.openstack_plugin_list()
self.openstack_plugin_show()
self.openstack_plugin_configs_get()
if TEMPEST_CONF.data_processing.plugin_update_support:
self.openstack_plugin_update()
def test_node_group_cli(self):
master_ngt = self.openstack_node_group_template_create('master', '4')
worker_ngt = self.openstack_node_group_template_create('worker', '3')
self.addCleanup(self.delete_resource, NODE_GROUP_TEMPLATE, master_ngt)
self.addCleanup(self.delete_resource, NODE_GROUP_TEMPLATE, worker_ngt)
self.filter_node_group_list_with_plugin()
self.openstack_node_group_template_list()
new_master_ngt = self.openstack_node_group_template_update(
master_ngt, update_field='name')
self.addCleanup(self.delete_resource, NODE_GROUP_TEMPLATE,
new_master_ngt)
self.openstack_node_group_template_show(new_master_ngt)
self.openstack_node_group_template_delete(new_master_ngt)
self.negative_try_to_delete_protected_node_group(worker_ngt)
self.openstack_node_group_template_delete(worker_ngt)
self.wait_for_resource_deletion(new_master_ngt, NODE_GROUP_TEMPLATE)
self.wait_for_resource_deletion(worker_ngt, NODE_GROUP_TEMPLATE)
self.negative_delete_removed_node_group(worker_ngt)
def test_cluster_template_cli(self):
cluster_template_cmd = 'cluster template'
ng_master = (
self.openstack_node_group_template_create('tmp-master', '4'))
ng_worker = (
self.openstack_node_group_template_create('tmp-worker', '3'))
self.addCleanup(self.delete_resource, NODE_GROUP_TEMPLATE,
ng_master)
self.addCleanup(self.delete_resource, NODE_GROUP_TEMPLATE,
ng_worker)
cluster_template_name = (
self.openstack_cluster_template_create(ng_master, ng_worker))
self.addCleanup(self.delete_resource, cluster_template_cmd,
cluster_template_name)
self.openstack_cluster_template_list()
self.openstack_cluster_template_show(cluster_template_name)
new_cluster_template_name = self.openstack_cluster_template_update(
cluster_template_name)
self.addCleanup(self.delete_resource, cluster_template_cmd,
new_cluster_template_name)
self.openstack_cluster_template_delete(new_cluster_template_name)
self.wait_for_resource_deletion(new_cluster_template_name,
cluster_template_cmd)
self.openstack_node_group_template_delete(ng_master)
self.openstack_node_group_template_delete(ng_worker)
self.wait_for_resource_deletion(ng_master, NODE_GROUP_TEMPLATE)
self.wait_for_resource_deletion(ng_worker, NODE_GROUP_TEMPLATE)
@decorators.skip_because(bug="1629295")
def test_cluster_cli(self):
image_name = self.openstack_image_register(
TEMPEST_CONF.data_processing.test_image_name,
TEMPEST_CONF.data_processing.test_ssh_user)
self.openstack_image_tags_set(image_name)
self.openstack_image_tags_remove(image_name)
self.openstack_image_tags_add(image_name)
self.openstack_image_show(image_name)
self.openstack_image_list()
flavors_client = self.client_manager_admin.flavors_client
flavor_ref = flavors_client.create_flavor(name='sahara-flavor',
ram=512, vcpus=1, disk=4,
id=20)['flavor']
self.addCleanup(flavors_client.delete_flavor, flavor_ref['id'])
self.addCleanup(self.openstack_image_unregister, image_name)
ng_master = self.openstack_node_group_template_create('cli-cluster'
'-master',
'sahara-flavor')
ng_worker = self.openstack_node_group_template_create('cli-cluster'
'-worker',
'sahara-flavor')
self.addCleanup(self.delete_resource, 'node group template',
ng_master)
self.addCleanup(self.delete_resource, 'node group template',
ng_worker)
cluster_template_name = (
self.openstack_cluster_template_create(ng_master, ng_worker))
self.addCleanup(self.delete_resource, 'cluster template',
cluster_template_name)
cluster_name = (
self.openstack_cluster_create(cluster_template_name, image_name))
self.addCleanup(self.delete_resource, 'cluster',
cluster_name)
self._run_job_on_cluster(cluster_name)
self.openstack_cluster_list()
self.openstack_cluster_show(cluster_name)
self.openstack_cluster_update(cluster_name)
self.openstack_cluster_verification_show(cluster_name)
self.openstack_cluster_verification_start(cluster_name)
self.openstack_cluster_scale(cluster_name, ng_worker)
self.openstack_cluster_delete(cluster_name)
self.wait_for_resource_deletion(cluster_name, 'cluster')
self.openstack_cluster_template_delete(cluster_template_name)
self.wait_for_resource_deletion(cluster_template_name, 'cluster '
'template')
self.openstack_node_group_template_delete(ng_master)
self.openstack_node_group_template_delete(ng_worker)
self.wait_for_resource_deletion(ng_master, 'node group template')
self.wait_for_resource_deletion(ng_worker, 'node group template')
self.openstack_image_unregister(image_name)
self.negative_unregister_not_existing_image(image_name)
@testtools.skipIf(TEMPEST_CONF.data_processing.api_version_saharaclient !=
'1.1', "Full job binaries testing requires API v1.1")
def test_job_binary_cli(self):
job_binary_name = self.openstack_job_binary_create()
self.addCleanup(self.delete_resource, 'job binary', job_binary_name)
self.openstack_job_binary_list()
self.openstack_job_binary_show(job_binary_name)
self.openstack_job_binary_update(job_binary_name, flag='description')
self.openstack_job_binary_download(job_binary_name)
self.filter_job_binaries_in_list()
self.negative_try_to_update_protected_jb(job_binary_name)
self.openstack_job_binary_update(job_binary_name, flag='unprotected')
self.openstack_job_binary_delete(job_binary_name)
self.negative_delete_removed_job_binary(job_binary_name)
def test_job_template_cli(self):
job_binary_name = self.openstack_job_binary_create(job_internal=False)
self.addCleanup(self.delete_resource, 'job binary', job_binary_name)
job_template_name = self.openstack_job_template_create(job_binary_name)
self.addCleanup(self.delete_resource, 'job template',
job_template_name)
self.openstack_job_template_list()
self.openstack_job_template_show(job_template_name)
self.openstack_job_template_update(job_template_name)
self.openstack_job_template_delete(job_template_name)
self.openstack_job_binary_delete(job_binary_name)
def test_data_source_cli(self):
data_source_name = self.openstack_data_source_create()
self.addCleanup(self.delete_resource, 'data source', data_source_name)
self.openstack_data_source_list()
self.openstack_data_source_show(data_source_name)
self.openstack_data_source_update(data_source_name)
self.openstack_data_source_delete(data_source_name)
def test_job_type_cli(self):
self.openstack_job_type_list()
self.openstack_job_type_configs_get(flag='file')
self.filter_job_type_in_list()
def _run_job_on_cluster(self, cluster_name):
job_template_name = self.openstack_job_template_name()
self.addCleanup(self.delete_resource, 'job template',
job_template_name)
input_file = self.openstack_data_source_create()
output_file = self.openstack_data_source_create()
self.addCleanup(self.delete_resource, 'data source', input_file)
self.addCleanup(self.delete_resource, 'data source', output_file)
job_id = self.openstack_job_execute(cluster_name, job_template_name,
input_file, output_file)
self.addCleanup(self.delete_resource, 'job', job_id)
self.openstack_job_list()
self.openstack_job_show(job_id)
self.openstack_job_update(job_id)
self.openstack_job_delete(job_id)
self.openstack_data_source_delete(input_file)
self.openstack_data_source_delete(output_file)
self.openstack_job_template_delete(job_template_name)