223 lines
11 KiB
Python
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)
|