99 lines
3.8 KiB
Python
99 lines
3.8 KiB
Python
# Copyright (c) 2013 Mirantis Inc.
|
|
#
|
|
# 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.
|
|
|
|
from tempest import config
|
|
from tempest import exceptions
|
|
import tempest.test
|
|
|
|
|
|
CONF = config.CONF
|
|
|
|
|
|
class BaseDataProcessingTest(tempest.test.BaseTestCase):
|
|
_interface = 'json'
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super(BaseDataProcessingTest, cls).setUpClass()
|
|
if not CONF.service_available.sahara:
|
|
raise cls.skipException('Sahara support is required')
|
|
|
|
os = cls.get_client_manager()
|
|
cls.client = os.data_processing_client
|
|
|
|
cls.flavor_ref = CONF.compute.flavor_ref
|
|
|
|
# add lists for watched resources
|
|
cls._node_group_templates = []
|
|
cls._cluster_templates = []
|
|
|
|
@classmethod
|
|
def tearDownClass(cls):
|
|
cls.cleanup_resources(getattr(cls, '_cluster_templates', []),
|
|
cls.client.delete_cluster_template)
|
|
cls.cleanup_resources(getattr(cls, '_node_group_templates', []),
|
|
cls.client.delete_node_group_template)
|
|
cls.clear_isolated_creds()
|
|
super(BaseDataProcessingTest, cls).tearDownClass()
|
|
|
|
@staticmethod
|
|
def cleanup_resources(resource_id_list, method):
|
|
for resource_id in resource_id_list:
|
|
try:
|
|
method(resource_id)
|
|
except exceptions.NotFound:
|
|
# ignore errors while auto removing created resource
|
|
pass
|
|
|
|
@classmethod
|
|
def create_node_group_template(cls, name, plugin_name, hadoop_version,
|
|
node_processes, flavor_id,
|
|
node_configs=None, **kwargs):
|
|
"""Creates watched node group template with specified params.
|
|
|
|
It supports passing additional params using kwargs and returns created
|
|
object. All resources created in this method will be automatically
|
|
removed in tearDownClass method.
|
|
"""
|
|
resp, body = cls.client.create_node_group_template(name, plugin_name,
|
|
hadoop_version,
|
|
node_processes,
|
|
flavor_id,
|
|
node_configs,
|
|
**kwargs)
|
|
# store id of created node group template
|
|
cls._node_group_templates.append(body['id'])
|
|
|
|
return resp, body
|
|
|
|
@classmethod
|
|
def create_cluster_template(cls, name, plugin_name, hadoop_version,
|
|
node_groups, cluster_configs=None, **kwargs):
|
|
"""Creates watched cluster template with specified params.
|
|
|
|
It supports passing additional params using kwargs and returns created
|
|
object. All resources created in this method will be automatically
|
|
removed in tearDownClass method.
|
|
"""
|
|
resp, body = cls.client.create_cluster_template(name, plugin_name,
|
|
hadoop_version,
|
|
node_groups,
|
|
cluster_configs,
|
|
**kwargs)
|
|
# store id of created cluster template
|
|
cls._cluster_templates.append(body['id'])
|
|
|
|
return resp, body
|