Merge "Fix senlin tempest plugin to work properly"

This commit is contained in:
Zuul 2018-01-22 02:50:59 +00:00 committed by Gerrit Code Review
commit 36b3f4f159
139 changed files with 189 additions and 740 deletions

1
.gitignore vendored
View File

@ -2,3 +2,4 @@ __pycache__
.testrepository .testrepository
.tox .tox
*.egg-info *.egg-info
*.pyc

21
.zuul.yaml Normal file
View File

@ -0,0 +1,21 @@
- project:
name: openstack/senlin-tempest-plugin
check:
jobs:
- senlin-dsvm-tempest-py27-api
- senlin-dsvm-tempest-py35-api:
voting: false
branches: ^(?!stable/newton).*$
- senlin-dsvm-tempest-py27-functional
- senlin-dsvm-tempest-py35-functional:
voting: false
branches: ^(?!stable/newton).*$
- senlin-dsvm-tempest-py27-integration:
voting: false
- senlin-dsvm-tempest-py35-integration:
voting: false
branches: ^(?!stable/newton).*$
gate:
jobs:
- senlin-dsvm-tempest-py27-api
- senlin-dsvm-tempest-py27-functional

View File

@ -7,84 +7,40 @@ Team and repository tags
.. Change things from this point on .. Change things from this point on
Senlin ==============================
====== Tempest integration of Senlin
==============================
-------- This project contains the Tempest plugin for the Senlin project for
Overview OpenStack Clustering.
--------
Senlin is a clustering service for OpenStack clouds. It creates and operates For more information about Senlin see:
clusters of homogeneous objects exposed by other OpenStack services. The goal https://docs.openstack.org/senlin/latest/
is to make the orchestration of collections of similar objects easier.
Senlin provides RESTful APIs to users so that they can associate various For more information about Tempest plugins see:
policies to a cluster. Sample policies include placement policy, load https://docs.openstack.org/tempest/latest/plugin.html
balancing policy, health policy, scaling policy, update policy and so on.
Senlin is designed to be capable of managing different types of objects. An * Free software: Apache license
object's lifecycle is managed using profile type implementations, which are * Source: http://git.openstack.org/cgit/openstack/senlin-tempest-plugin
themselves plugins.
--------- Installing
For Users
---------
If you want to install Senlin for a try out, please refer to the documents
under the ``doc/source/user/`` subdirectory.
--------------
For Developers
--------------
There are many ways to help improve the software, for example, filing a bug,
submitting or reviewing a patch, writing or reviewing some documents. There
are documents under the ``doc/source/developer/`` subdirectory.
---------
Resources
---------
Launchpad Projects
------------------
- Server: https://launchpad.net/senlin
- Client: https://launchpad.net/python-senlinclient
- Dashboard: https://launchpad.net/senlin-dashboard
- Tempest Plugin: https://launchpad.net/senlin-tempest-plugin
Code Repository
---------------
- Server: https://git.openstack.org/cgit/openstack/senlin
- Client: https://git.openstack.org/cgit/openstack/python-senlinclient
- Dashboard: https://git.openstack.org/cgit/openstack/senlin-dashboard
- Tempest Plugin: https://git.openstack.org/cgit/openstack/senlin-tempest-plugin
Blueprints
---------- ----------
- Blueprints: https://blueprints.launchpad.net/senlin
Bug Tracking Clone this repository to the destination machine, and call from the repo::
------------
- Server Bugs: https://bugs.launchpad.net/senlin
- Client Bugs: https://bugs.launchpad.net/python-senlinclient
- Dashboard Bugs: https://bugs.launchpad.net/senlin-dashboard
- Tempest Plugin Bugs: https://bugs.launchpad.net/senlin-tempest-plugin
Weekly Meetings $ pip install -e .
---------------
- Schedule: every Tuesday at 1300 UTC, on #openstack-meeting channel
- Agenda: https://wiki.openstack.org/wiki/Meetings/SenlinAgenda
- Archive: http://eavesdrop.openstack.org/meetings/senlin/2017/
IRC Running the tests
--- -----------------
IRC Channel: #senlin on `Freenode`_.
Mailinglist To run all the tests from this plugin, call from the tempest repo::
-----------
Project use http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
as the mailinglist. Please use tag ``[Senlin]`` in the subject for new
threads.
$ tox -e all-plugin -- senlin_tempest_plugin
.. _Freenode: https://freenode.net/ To run a single test case, call with full path, for example::
$ tox -e all-plugin -- senlin_tempest_plugin.tests.api.policies.test_policy_update.TestPolicyUpdate.test_policy_update
To retrieve a list of all tempest tests, run::
$ testr list-tests

View File

@ -78,7 +78,7 @@ def delete_a_profile(base, profile_id, ignore_missing=False):
def create_a_cluster(base, profile_id, desired_capacity=0, min_size=0, def create_a_cluster(base, profile_id, desired_capacity=0, min_size=0,
max_size=-1, timeout=None, metadata=None, name=None, max_size=-1, timeout=None, metadata=None, name=None,
wait_timeout=None): config=None, wait_timeout=None):
"""Utility function that generates a Senlin cluster. """Utility function that generates a Senlin cluster.
Create a cluster and return it after it is ACTIVE. The function is used for Create a cluster and return it after it is ACTIVE. The function is used for
@ -94,7 +94,8 @@ def create_a_cluster(base, profile_id, desired_capacity=0, min_size=0,
'max_size': max_size, 'max_size': max_size,
'timeout': timeout, 'timeout': timeout,
'metadata': metadata, 'metadata': metadata,
'name': name 'name': name,
'config': config
} }
} }
res = base.client.create_obj('clusters', params) res = base.client.create_obj('clusters', params)
@ -402,10 +403,13 @@ def create_a_receiver(base, cluster_id, action, r_type=None, name=None,
'name': name, 'name': name,
'cluster_id': cluster_id, 'cluster_id': cluster_id,
'type': r_type or 'webhook', 'type': r_type or 'webhook',
'action': action,
'params': params or {} 'params': params or {}
} }
} }
if action is not None:
body['receiver']['action'] = action
res = base.client.create_obj('receivers', body) res = base.client.create_obj('receivers', body)
return res['body']['id'] return res['body']['id']

View File

@ -1,11 +0,0 @@
OpenStack Test Driver
=====================
This is a fake driver for Senlin test. All interactions between Senlin
and backend OpenStack services, like Nova, Heat are simulated using this
driver. With it, Senlin API and engine workflow can be easily tested
without setting up backend services.
Configure the following option in senlin.conf to enable this driver:
`cloud_backend = openstack_test`

View File

@ -1,85 +0,0 @@
# 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 senlin_tempest_plugin.drivers import base
from senlin_tempest_plugin.drivers.openstack import sdk
class HeatClient(base.DriverBase):
'''Heat V1 driver.'''
def __init__(self, params):
super(HeatClient, self).__init__(params)
self.fake_stack_create = {
"id": "3095aefc-09fb-4bc7-b1f0-f21a304e864c",
"links": [
{
"href": " ",
"rel": "self"
}
]
}
self.fake_stack_get = {
"capabilities": [],
"creation_time": "2014-06-03T20:59:46Z",
"description": "sample stack",
"disable_rollback": True,
"id": "3095aefc-09fb-4bc7-b1f0-f21a304e864c",
"links": [
{
"href": " ",
"rel": "self"
}
],
"notification_topics": [],
"outputs": [],
"parameters": {
"OS::project_id": "3ab5b02f-a01f-4f95-afa1-e254afc4a435",
"OS::stack_id": "3095aefc-09fb-4bc7-b1f0-f21a304e864c",
"OS::stack_name": "simple_stack"
},
"stack_name": "simple_stack",
"stack_owner": "simple_username",
"stack_status": "CREATE_COMPLETE",
"stack_status_reason": "Stack CREATE completed successfully",
"template_description": "sample stack",
"stack_user_project_id": "65728b74-cfe7-4f17-9c15-11d4f686e591",
"timeout_mins": "",
"updated_time": "",
"parent": "",
"tags": "",
"status": "CREATE_COMPLETE"
}
def stack_create(self, **params):
return sdk.FakeResourceObject(self.fake_stack_create)
def stack_get(self, stack_id):
return sdk.FakeResourceObject(self.fake_stack_get)
def stack_find(self, name_or_id):
return sdk.FakeResourceObject(self.fake_stack_get)
def stack_update(self, stack_id, **params):
self.fake_stack_get["status"] = "UPDATE_COMPLETE"
return sdk.FakeResourceObject(self.fake_stack_get)
def stack_delete(self, stack_id, ignore_missing=True):
return
def wait_for_stack(self, stack_id, status, failures=None, interval=2,
timeout=None):
return
def wait_for_stack_delete(self, stack_id, timeout=None):
return

View File

@ -1,38 +0,0 @@
# 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 senlin_tempest_plugin.drivers import base
class LoadBalancerDriver(base.DriverBase):
def __init__(self, params):
self.lb_result = {
"loadbalancer": "a36c20d0-18e9-42ce-88fd-82a35977ee8c",
"vip_address": "192.168.1.100",
"listener": "35cb8516-1173-4035-8dae-0dae3453f37f",
"pool": "4c0a0a5f-cf8f-44b7-b912-957daa8ce5e5",
"healthmonitor": "0a9ac99d-0a09-4b18-8499-a0796850279a"
}
self.member_id = "9a7aff27-fd41-4ec1-ba4c-3eb92c629313"
def lb_create(self, vip, pool, hm=None):
return True, self.lb_result
def lb_delete(self, **kwargs):
return True, 'LB deletion succeeded'
def member_add(self, node, lb_id, pool_id, port, subnet):
return self.member_id
def member_remove(self, lb_id, pool_id, member_id):
return True

View File

@ -1,80 +0,0 @@
# 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 oslo_utils import uuidutils
from senlin_tempest_plugin.drivers import base
from senlin_tempest_plugin.drivers.openstack import sdk
class MistralClient(base.DriverBase):
'''Fake mistral V2 driver for test.'''
def __init__(self, ctx):
self.fake_workflow = {
'created_at': '1970-01-01T00:00:00.000000',
'definition': 'workflow_def',
'id': 'ffaed25e-46f5-4089-8e20-b3b4722fd597',
'input': {
'cluster_id': '8c74607c-5a74-4490-9414-a3475b1926c2',
'node_id': 'fba2cc5d-706f-4631-9577-3956048d13a2',
'flavor_id': '1'
},
'name': "cluster-coldmigration",
'project_id': 'a7eb669e9819420ea4bd1453e672c0a7',
'scope': 'private',
'tags': [
'large',
'expensive'
],
'updated_at': '1970-01-01T00:00:00.000000',
}
self.fake_workflow_create = {
'scope': 'private',
'id': 'ffaed25e-46f5-4089-8e20-b3b4722fd597',
'definition': 'workflow_def',
}
self.fake_execution_create = {
'id': 'ffaed25e-46f5-4089-8e20-b3b4722fd597',
'workflow_name': 'cluster-coldmigration',
'input': {
'cluster_id': '8c74607c-5a74-4490-9414-a3475b1926c2',
'node_id': 'fba2cc5d-706f-4631-9577-3956048d13a2',
'flavor_id': '1'
}
}
def wait_for_execution(self, execution, status='SUCCESS',
failures=['ERROR'], interval=2,
timeout=None):
return
def workflow_find(self, name_or_id, ignore_missing=True):
return sdk.FakeResourceObject(self.fake_workflow)
def workflow_delete(self, workflow, ignore_missing=True):
return
def execution_delete(self, execution, ignore_missing=True):
return
def workflow_create(self, definition, scope):
self.fake_workflow_create['id'] = uuidutils.generate_uuid()
return sdk.FakeResourceObject(self.fake_workflow_create)
def execution_create(self, name, inputs):
self.fake_execution_create['id'] = uuidutils.generate_uuid()
return sdk.FakeResourceObject(self.fake_execution_create)

View File

@ -1,37 +0,0 @@
# 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 senlin_tempest_plugin.drivers import base
from senlin_tempest_plugin.drivers.openstack import sdk
class NeutronClient(base.DriverBase):
'''Fake Neutron V2 driver for test.'''
def __init__(self, ctx):
self.fake_network = {
"status": "ACTIVE",
"subnets": [
"54d6f61d-db07-451c-9ab3-b9609b6b6f0b"
],
"name": "private-network",
"router:external": False,
"admin_state_up": True,
"tenant_id": "4fd44f30292945e481c7b8a0c8908869",
"mtu": 0,
"shared": True,
"port_security_enabled": True,
"id": "d32019d3-bc6e-4319-9c1d-6722fc136a22"
}
def network_get(self, value, ignore_missing=False):
return sdk.FakeResourceObject(self.fake_network)

View File

@ -1,255 +0,0 @@
# 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 copy
from oslo_utils import uuidutils
from senlin_tempest_plugin.drivers import base
from senlin_tempest_plugin.drivers.openstack import sdk
class NovaClient(base.DriverBase):
'''Fake Nova V2 driver for test.'''
def __init__(self, ctx):
self.fake_flavor = {
"is_disabled": False,
"disk": 1,
"OS-FLV-EXT-DATA:ephemeral": 0,
"os-flavor-access:is_public": True,
"id": "1",
"links": [],
"name": "m1.tiny",
"ram": 512,
"swap": "",
"vcpus": 1,
}
self.fake_image = {
"created": "2015-01-01T01:02:03Z",
"id": "70a599e0-31e7-49b7-b260-868f441e862b",
"links": [],
"metadata": {
"architecture": "x86_64",
"auto_disk_config": "True",
"kernel_id": "nokernel",
"ramdisk_id": "nokernel"
},
"minDisk": 0,
"minRam": 0,
"name": "cirros-0.3.5-x86_64-disk",
"progress": 100,
"status": "ACTIVE",
"updated": "2011-01-01T01:02:03Z"
}
self.fake_server_create = {
"id": "893c7791-f1df-4c3d-8383-3caae9656c62",
"availability_zone": "Zone1",
"name": "new-server-test",
"imageRef": "http://localhost/openstack/images/test-image",
"flavorRef": "http://localhost/openstack/flavors/1",
"metadata": {
"My Server Name": "Apache1"
},
"personality": [
{
"path": "/etc/banner.txt",
"contents": "personality-content"
}
],
"block_device_mapping_v2": [
{
"device_name": "/dev/sdb1",
"source_type": "blank",
"destination_type": "local",
"delete_on_termination": "True",
"guest_format": "swap",
"boot_index": "-1"
},
{
"device_name": "/dev/sda1",
"source_type": "volume",
"destination_type": "volume",
"uuid": "fake-volume-id-1",
"boot_index": "0"
}
]
}
self.fake_server_get = {
# Note: The name of some attrs are defined as following to keep
# compatible with the resource definition in openstacksdk. But
# the real name of these attrs returned by Nova API could be
# different, e.g. the name of 'access_ipv4' attribute is actually
# 'accessIPv4' in server_get API response.
"id": "893c7791-f1df-4c3d-8383-3caae9656c62",
"name": "new-server-test",
"availability_zone": "ZONE1",
"access_ipv4": "192.168.0.3",
"access_ipv6": "fe80::ac0e:2aff:fe87:5911",
"addresses": {
"private": [
{
"addr": "192.168.0.3",
"version": 4
}
]
},
"created_at": "2015-08-18T21:11:09Z",
"updated_at": "2012-08-20T21:11:09Z",
"flavor": {
"id": "1",
"links": []
},
"host_id": "65201c14a29663e06d0748e561207d998b343",
"image": {
"id": "FAKE_IMAGE_ID",
"links": []
},
"links": [],
"metadata": {
"My Server Name": "Apache1"
},
"progress": 0,
"status": "ACTIVE",
"project_id": "openstack",
"user_id": "fake"
}
self.fake_service_list = [
{
'id': 'IDENTIFIER1',
'binary': 'nova-api',
'host': 'host1',
'status': 'enabled',
'state': 'up',
'zone': 'nova'
},
{
'id': 'IDENTIFIER2',
'binary': 'nova-compute',
'host': 'host1',
'status': 'enabled',
'state': 'up',
'zone': 'nova'
},
]
self.keypair = {
'public_key': 'blahblah',
'type': 'ssh',
'name': 'oskey',
'fingerprint': 'not-real',
}
self.availability_zone = {
'zoneState': {
'available': True
},
'hosts': None,
'zoneName': 'nova',
}
def flavor_find(self, name_or_id, ignore_missing=False):
return sdk.FakeResourceObject(self.fake_flavor)
def flavor_list(self, details=True, **query):
return [sdk.FakeResourceObject(self.fake_flavor)]
def image_find(self, name_or_id, ignore_missing=False):
return sdk.FakeResourceObject(self.fake_image)
def image_list(self, details=True, **query):
return [sdk.FakeResourceObject(self.fake_image)]
def keypair_list(self, details=True, **query):
return [sdk.FakeResourceObject(self.fake_keypair)]
def keypair_find(self, name_or_id, ignore_missing=False):
return sdk.FakeResourceObject(self.keypair)
def server_create(self, **attrs):
self.fake_server_create['id'] = uuidutils.generate_uuid()
self.fake_server_get['id'] = self.fake_server_create['id']
return sdk.FakeResourceObject(self.fake_server_create)
def server_get(self, server):
return sdk.FakeResourceObject(self.fake_server_get)
def wait_for_server(self, server, timeout=None):
return
def wait_for_server_delete(self, server, timeout=None):
return
def server_update(self, server, **attrs):
self.fake_server_get.update(attrs)
return sdk.FakeResourceObject(self.fake_server_get)
def server_rebuild(self, server, imageref, name=None, admin_password=None,
**attrs):
if imageref:
attrs['image'] = {'id': imageref}
if name:
attrs['name'] = name
if admin_password:
attrs['adminPass'] = admin_password
self.fake_server_get.update(attrs)
return sdk.FakeResourceObject(self.fake_server_get)
def server_resize(self, server, flavor):
self.fake_server_get['flavor'].update({'id': flavor})
def server_resize_confirm(self, server):
return
def server_resize_revert(self, server):
return
def server_reboot(self, server, reboot_type):
return
def server_delete(self, server, ignore_missing=True):
return
def server_force_delete(self, server, ignore_missing=True):
return
def server_metadata_get(self, server):
return {}
def server_metadata_update(self, server, metadata):
new_server = copy.deepcopy(self.fake_server_get)
new_server['metadata'] = metadata
server = sdk.FakeResourceObject(new_server)
return server
def server_metadata_delete(self, server, keys):
return
def service_list(self):
return sdk.FakeResourceObject(self.fake_service_list)
def service_force_down(self, service, host, binary):
return
def service_enable(self, service, host, binary):
return
def service_disable(self, service, host, binary):
return
def availability_zone_list(self, **query):
return [sdk.FakeResourceObject(self.availability_zone)]

View File

@ -1,28 +0,0 @@
# 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.
class FakeResourceObject(object):
'''Generate a fake SDK resource object based on given dictionary'''
def __init__(self, params):
for key in params:
setattr(self, key, params[key])
def to_dict(self):
'''Override this function in subclass to handle special attributes'''
data = {}
for attr in dir(self):
if not attr.startswith('__'):
# Exclude built-in attributes of python object
data[attr] = getattr(self, attr)
return data

View File

@ -23,8 +23,7 @@ class SenlinTempestPlugin(plugins.TempestPlugin):
def load_tests(self): def load_tests(self):
base_path = os.path.split(os.path.dirname( base_path = os.path.split(os.path.dirname(
os.path.abspath(__file__)))[0] os.path.abspath(__file__)))[0]
base_path += '/..' test_dir = "senlin_tempest_plugin/tests"
test_dir = "senlin_tempest_plugin"
full_test_dir = os.path.join(base_path, test_dir) full_test_dir = os.path.join(base_path, test_dir)
return full_test_dir, base_path return full_test_dir, base_path

View File

@ -12,8 +12,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestActionList(base.BaseSenlinAPITest): class TestActionList(base.BaseSenlinAPITest):

View File

@ -13,7 +13,7 @@
from tempest.lib import decorators from tempest.lib import decorators
from tempest.lib import exceptions from tempest.lib import exceptions
from senlin_tempest_plugin.api import base from senlin_tempest_plugin.tests.api import base
class TestActionListNegativeBadRequest(base.BaseSenlinAPITest): class TestActionListNegativeBadRequest(base.BaseSenlinAPITest):

View File

@ -12,8 +12,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestActionShow(base.BaseSenlinAPITest): class TestActionShow(base.BaseSenlinAPITest):

View File

@ -13,7 +13,7 @@
from tempest.lib import decorators from tempest.lib import decorators
from tempest.lib import exceptions from tempest.lib import exceptions
from senlin_tempest_plugin.api import base from senlin_tempest_plugin.tests.api import base
class TestActionShowNegativeNotFound(base.BaseSenlinAPITest): class TestActionShowNegativeNotFound(base.BaseSenlinAPITest):

View File

@ -12,7 +12,7 @@
from tempest.lib import decorators from tempest.lib import decorators
from senlin_tempest_plugin.api import base from senlin_tempest_plugin.tests.api import base
class TestAPIVersionShow(base.BaseSenlinAPITest): class TestAPIVersionShow(base.BaseSenlinAPITest):

View File

@ -13,7 +13,7 @@
from tempest.lib import decorators from tempest.lib import decorators
from tempest.lib import exceptions from tempest.lib import exceptions
from senlin_tempest_plugin.api import base from senlin_tempest_plugin.tests.api import base
class TestAPIVersionShowNegative(base.BaseSenlinAPITest): class TestAPIVersionShowNegative(base.BaseSenlinAPITest):

View File

@ -12,7 +12,7 @@
from tempest.lib import decorators from tempest.lib import decorators
from senlin_tempest_plugin.api import base from senlin_tempest_plugin.tests.api import base
class TestAPIVersions(base.BaseSenlinAPITest): class TestAPIVersions(base.BaseSenlinAPITest):

View File

@ -34,21 +34,21 @@ class BaseSenlinAPITest(base.BaseSenlinTest):
def setup_clients(cls): def setup_clients(cls):
super(BaseSenlinAPITest, cls).setup_clients() super(BaseSenlinAPITest, cls).setup_clients()
cls.client = clustering_client.ClusteringAPIClient( cls.client = clustering_client.ClusteringAPIClient(
cls.os.auth_provider, cls.os_primary.auth_provider,
CONF.clustering.catalog_type, CONF.clustering.catalog_type,
CONF.identity.region, CONF.identity.region,
**cls.default_params_with_timeout_values **cls.default_params_with_timeout_values
) )
cls.compute_client = compute_client.V21ComputeClient( cls.compute_client = compute_client.V21ComputeClient(
cls.os.auth_provider, cls.os_primary.auth_provider,
CONF.compute.catalog_type, CONF.compute.catalog_type,
CONF.identity.region, CONF.identity.region,
**cls.default_params_with_timeout_values **cls.default_params_with_timeout_values
) )
cls.network_client = network_client.NetworkClient( cls.network_client = network_client.NetworkClient(
cls.os.auth_provider, cls.os_primary.auth_provider,
CONF.network.catalog_type, CONF.network.catalog_type,
CONF.identity.region, CONF.identity.region,
**cls.default_params_with_timeout_values **cls.default_params_with_timeout_values

View File

@ -12,7 +12,7 @@
from tempest.lib import decorators from tempest.lib import decorators
from senlin_tempest_plugin.api import base from senlin_tempest_plugin.tests.api import base
class TestBuildInfo(base.BaseSenlinAPITest): class TestBuildInfo(base.BaseSenlinAPITest):

View File

@ -12,8 +12,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestClusterPolicyList(base.BaseSenlinAPITest): class TestClusterPolicyList(base.BaseSenlinAPITest):

View File

@ -13,7 +13,7 @@
from tempest.lib import decorators from tempest.lib import decorators
from tempest.lib import exceptions from tempest.lib import exceptions
from senlin_tempest_plugin.api import base from senlin_tempest_plugin.tests.api import base
class TestClusterPolicyListNegativeBadRequest(base.BaseSenlinAPITest): class TestClusterPolicyListNegativeBadRequest(base.BaseSenlinAPITest):

View File

@ -12,8 +12,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestClusterPolicyShow(base.BaseSenlinAPITest): class TestClusterPolicyShow(base.BaseSenlinAPITest):

View File

@ -13,8 +13,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from tempest.lib import exceptions from tempest.lib import exceptions
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestClusterPolicyShowNegativeClusterNotFound(base.BaseSenlinAPITest): class TestClusterPolicyShowNegativeClusterNotFound(base.BaseSenlinAPITest):

View File

@ -13,7 +13,7 @@
from tempest.lib import decorators from tempest.lib import decorators
from tempest.lib import exceptions from tempest.lib import exceptions
from senlin_tempest_plugin.api import base from senlin_tempest_plugin.tests.api import base
class TestClusterActionNegativeCommon(base.BaseSenlinAPITest): class TestClusterActionNegativeCommon(base.BaseSenlinAPITest):

View File

@ -13,9 +13,9 @@
from tempest.lib import decorators from tempest.lib import decorators
from tempest.lib import exceptions from tempest.lib import exceptions
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import constants from senlin_tempest_plugin.common import constants
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestClusterActionAddNodes(base.BaseSenlinAPITest): class TestClusterActionAddNodes(base.BaseSenlinAPITest):

View File

@ -13,8 +13,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from tempest.lib import exceptions from tempest.lib import exceptions
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestClusterActionCheck(base.BaseSenlinAPITest): class TestClusterActionCheck(base.BaseSenlinAPITest):

View File

@ -13,8 +13,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from tempest.lib import exceptions from tempest.lib import exceptions
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestClusterCollect(base.BaseSenlinAPITest): class TestClusterCollect(base.BaseSenlinAPITest):
@ -23,7 +23,8 @@ class TestClusterCollect(base.BaseSenlinAPITest):
super(TestClusterCollect, self).setUp() super(TestClusterCollect, self).setUp()
profile_id = utils.create_a_profile(self) profile_id = utils.create_a_profile(self)
self.addCleanup(utils.delete_a_profile, self, profile_id) self.addCleanup(utils.delete_a_profile, self, profile_id)
self.cluster_id = utils.create_a_cluster(self, profile_id) self.cluster_id = utils.create_a_cluster(
self, profile_id, config={'node.name.format': 'N$2I'})
self.addCleanup(utils.delete_a_cluster, self, self.cluster_id) self.addCleanup(utils.delete_a_cluster, self, self.cluster_id)
self.node1 = utils.create_a_node(self, profile_id, name='N01', self.node1 = utils.create_a_node(self, profile_id, name='N01',
cluster_id=self.cluster_id) cluster_id=self.cluster_id)

View File

@ -12,8 +12,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestClusterCreate(base.BaseSenlinAPITest): class TestClusterCreate(base.BaseSenlinAPITest):

View File

@ -13,8 +13,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from tempest.lib import exceptions from tempest.lib import exceptions
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestClusterCreateNegativeBadRequest(base.BaseSenlinAPITest): class TestClusterCreateNegativeBadRequest(base.BaseSenlinAPITest):

View File

@ -13,8 +13,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from tempest.lib import exceptions from tempest.lib import exceptions
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestClusterActionDelNodes(base.BaseSenlinAPITest): class TestClusterActionDelNodes(base.BaseSenlinAPITest):

View File

@ -12,8 +12,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestClusterDelete(base.BaseSenlinAPITest): class TestClusterDelete(base.BaseSenlinAPITest):

View File

@ -13,8 +13,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from tempest.lib import exceptions from tempest.lib import exceptions
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestClusterDeleteNegativePolicyConflict(base.BaseSenlinAPITest): class TestClusterDeleteNegativePolicyConflict(base.BaseSenlinAPITest):

View File

@ -12,8 +12,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestClusterList(base.BaseSenlinAPITest): class TestClusterList(base.BaseSenlinAPITest):

View File

@ -13,7 +13,7 @@
from tempest.lib import decorators from tempest.lib import decorators
from tempest.lib import exceptions from tempest.lib import exceptions
from senlin_tempest_plugin.api import base from senlin_tempest_plugin.tests.api import base
class TestClusterListNegativeBadRequest(base.BaseSenlinAPITest): class TestClusterListNegativeBadRequest(base.BaseSenlinAPITest):

View File

@ -13,8 +13,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from tempest.lib import exceptions from tempest.lib import exceptions
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestClusterActionPolicyAttach(base.BaseSenlinAPITest): class TestClusterActionPolicyAttach(base.BaseSenlinAPITest):

View File

@ -13,8 +13,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from tempest.lib import exceptions from tempest.lib import exceptions
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestClusterActionPolicyDetach(base.BaseSenlinAPITest): class TestClusterActionPolicyDetach(base.BaseSenlinAPITest):

View File

@ -13,8 +13,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from tempest.lib import exceptions from tempest.lib import exceptions
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestClusterActionPolicyUpdate(base.BaseSenlinAPITest): class TestClusterActionPolicyUpdate(base.BaseSenlinAPITest):

View File

@ -13,8 +13,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from tempest.lib import exceptions from tempest.lib import exceptions
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestClusterActionRecover(base.BaseSenlinAPITest): class TestClusterActionRecover(base.BaseSenlinAPITest):

View File

@ -13,9 +13,9 @@
from tempest.lib import decorators from tempest.lib import decorators
from tempest.lib import exceptions from tempest.lib import exceptions
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import constants from senlin_tempest_plugin.common import constants
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestClusterActionReplaceNodes(base.BaseSenlinAPITest): class TestClusterActionReplaceNodes(base.BaseSenlinAPITest):

View File

@ -13,8 +13,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from tempest.lib import exceptions from tempest.lib import exceptions
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestClusterActionResize(base.BaseSenlinAPITest): class TestClusterActionResize(base.BaseSenlinAPITest):

View File

@ -13,8 +13,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from tempest.lib import exceptions from tempest.lib import exceptions
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestClusterActionScaleIn(base.BaseSenlinAPITest): class TestClusterActionScaleIn(base.BaseSenlinAPITest):

View File

@ -13,8 +13,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from tempest.lib import exceptions from tempest.lib import exceptions
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestClusterActionScaleOut(base.BaseSenlinAPITest): class TestClusterActionScaleOut(base.BaseSenlinAPITest):

View File

@ -12,8 +12,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestClusterShow(base.BaseSenlinAPITest): class TestClusterShow(base.BaseSenlinAPITest):

View File

@ -13,8 +13,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from tempest.lib import exceptions from tempest.lib import exceptions
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestClusterShowNegativeBadRequest(base.BaseSenlinAPITest): class TestClusterShowNegativeBadRequest(base.BaseSenlinAPITest):

View File

@ -12,8 +12,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestClusterUpdate(base.BaseSenlinAPITest): class TestClusterUpdate(base.BaseSenlinAPITest):

View File

@ -14,9 +14,9 @@ import copy
from tempest.lib import decorators from tempest.lib import decorators
from tempest.lib import exceptions from tempest.lib import exceptions
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import constants from senlin_tempest_plugin.common import constants
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestClusterUpdateNegativeInvalidParam(base.BaseSenlinAPITest): class TestClusterUpdateNegativeInvalidParam(base.BaseSenlinAPITest):

View File

@ -13,9 +13,9 @@
import copy import copy
from tempest.lib import decorators from tempest.lib import decorators
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import constants from senlin_tempest_plugin.common import constants
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestClusterUpdateProfile(base.BaseSenlinAPITest): class TestClusterUpdateProfile(base.BaseSenlinAPITest):

View File

@ -12,8 +12,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestEventList(base.BaseSenlinAPITest): class TestEventList(base.BaseSenlinAPITest):

View File

@ -13,7 +13,7 @@
from tempest.lib import decorators from tempest.lib import decorators
from tempest.lib import exceptions from tempest.lib import exceptions
from senlin_tempest_plugin.api import base from senlin_tempest_plugin.tests.api import base
class TestEventListNegativeBadRequest(base.BaseSenlinAPITest): class TestEventListNegativeBadRequest(base.BaseSenlinAPITest):

View File

@ -12,8 +12,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestEventShow(base.BaseSenlinAPITest): class TestEventShow(base.BaseSenlinAPITest):

View File

@ -13,7 +13,7 @@
from tempest.lib import decorators from tempest.lib import decorators
from tempest.lib import exceptions from tempest.lib import exceptions
from senlin_tempest_plugin.api import base from senlin_tempest_plugin.tests.api import base
class TestEventShowNegativeNotFound(base.BaseSenlinAPITest): class TestEventShowNegativeNotFound(base.BaseSenlinAPITest):

View File

@ -13,7 +13,7 @@
from tempest.lib import decorators from tempest.lib import decorators
from tempest.lib import exceptions from tempest.lib import exceptions
from senlin_tempest_plugin.api import base from senlin_tempest_plugin.tests.api import base
class TestNodeActionNegativeBadRequest(base.BaseSenlinAPITest): class TestNodeActionNegativeBadRequest(base.BaseSenlinAPITest):

View File

@ -13,8 +13,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from tempest.lib import exceptions from tempest.lib import exceptions
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestNodeCheck(base.BaseSenlinAPITest): class TestNodeCheck(base.BaseSenlinAPITest):

View File

@ -12,8 +12,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestNodeCreate(base.BaseSenlinAPITest): class TestNodeCreate(base.BaseSenlinAPITest):
@ -22,7 +22,9 @@ class TestNodeCreate(base.BaseSenlinAPITest):
super(TestNodeCreate, self).setUp() super(TestNodeCreate, self).setUp()
self.profile_id = utils.create_a_profile(self) self.profile_id = utils.create_a_profile(self)
self.addCleanup(utils.delete_a_profile, self, self.profile_id) self.addCleanup(utils.delete_a_profile, self, self.profile_id)
self.cluster_id = utils.create_a_cluster(self, self.profile_id) self.cluster_id = utils.create_a_cluster(
self, self.profile_id,
config={'node.name.format': 'test-node'})
self.addCleanup(utils.delete_a_cluster, self, self.cluster_id) self.addCleanup(utils.delete_a_cluster, self, self.cluster_id)
@decorators.idempotent_id('14d06753-7f0a-4ad2-84be-37fce7114a8f') @decorators.idempotent_id('14d06753-7f0a-4ad2-84be-37fce7114a8f')

View File

@ -13,9 +13,9 @@
from tempest.lib import decorators from tempest.lib import decorators
from tempest.lib import exceptions from tempest.lib import exceptions
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import constants from senlin_tempest_plugin.common import constants
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestNodeCreateNegativeBadRequest(base.BaseSenlinAPITest): class TestNodeCreateNegativeBadRequest(base.BaseSenlinAPITest):

View File

@ -12,8 +12,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestNodeDelete(base.BaseSenlinAPITest): class TestNodeDelete(base.BaseSenlinAPITest):

View File

@ -13,8 +13,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from tempest.lib import exceptions from tempest.lib import exceptions
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestNodeDeleteNegativeNotFound(base.BaseSenlinAPITest): class TestNodeDeleteNegativeNotFound(base.BaseSenlinAPITest):

View File

@ -12,8 +12,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestNodeList(base.BaseSenlinAPITest): class TestNodeList(base.BaseSenlinAPITest):

View File

@ -13,7 +13,7 @@
from tempest.lib import decorators from tempest.lib import decorators
from tempest.lib import exceptions from tempest.lib import exceptions
from senlin_tempest_plugin.api import base from senlin_tempest_plugin.tests.api import base
class TestNodeListNegativeBadRequest(base.BaseSenlinAPITest): class TestNodeListNegativeBadRequest(base.BaseSenlinAPITest):

View File

@ -13,8 +13,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from tempest.lib import exceptions from tempest.lib import exceptions
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestNodeOperation(base.BaseSenlinAPITest): class TestNodeOperation(base.BaseSenlinAPITest):

View File

@ -13,8 +13,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from tempest.lib import exceptions from tempest.lib import exceptions
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestNodeRecover(base.BaseSenlinAPITest): class TestNodeRecover(base.BaseSenlinAPITest):

View File

@ -12,8 +12,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestNodeShow(base.BaseSenlinAPITest): class TestNodeShow(base.BaseSenlinAPITest):

View File

@ -13,8 +13,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from tempest.lib import exceptions from tempest.lib import exceptions
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestNodeShowNegativeNotFound(base.BaseSenlinAPITest): class TestNodeShowNegativeNotFound(base.BaseSenlinAPITest):

View File

@ -12,8 +12,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestNodeUpdate(base.BaseSenlinAPITest): class TestNodeUpdate(base.BaseSenlinAPITest):

View File

@ -14,9 +14,9 @@ import copy
from tempest.lib import decorators from tempest.lib import decorators
from tempest.lib import exceptions from tempest.lib import exceptions
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import constants from senlin_tempest_plugin.common import constants
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestNodeUpdateNegativeNotFound(base.BaseSenlinAPITest): class TestNodeUpdateNegativeNotFound(base.BaseSenlinAPITest):

View File

@ -13,9 +13,9 @@
import copy import copy
from tempest.lib import decorators from tempest.lib import decorators
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import constants from senlin_tempest_plugin.common import constants
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestNodeUpdateProfile(base.BaseSenlinAPITest): class TestNodeUpdateProfile(base.BaseSenlinAPITest):

View File

@ -12,8 +12,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import constants from senlin_tempest_plugin.common import constants
from senlin_tempest_plugin.tests.api import base
class TestPolicyCreate(base.BaseSenlinAPITest): class TestPolicyCreate(base.BaseSenlinAPITest):

View File

@ -14,8 +14,8 @@ import copy
from tempest.lib import decorators from tempest.lib import decorators
from tempest.lib import exceptions from tempest.lib import exceptions
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import constants from senlin_tempest_plugin.common import constants
from senlin_tempest_plugin.tests.api import base
class TestPolicyCreateNegativeBadRequest(base.BaseSenlinAPITest): class TestPolicyCreateNegativeBadRequest(base.BaseSenlinAPITest):

View File

@ -12,8 +12,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestPolicyDelete(base.BaseSenlinAPITest): class TestPolicyDelete(base.BaseSenlinAPITest):

View File

@ -13,8 +13,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from tempest.lib import exceptions from tempest.lib import exceptions
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestPolicyDeleteNegativeConflict(base.BaseSenlinAPITest): class TestPolicyDeleteNegativeConflict(base.BaseSenlinAPITest):

View File

@ -12,8 +12,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestPolicyList(base.BaseSenlinAPITest): class TestPolicyList(base.BaseSenlinAPITest):

View File

@ -13,7 +13,7 @@
from tempest.lib import decorators from tempest.lib import decorators
from tempest.lib import exceptions from tempest.lib import exceptions
from senlin_tempest_plugin.api import base from senlin_tempest_plugin.tests.api import base
class TestPolicyListNegativeBadRequest(base.BaseSenlinAPITest): class TestPolicyListNegativeBadRequest(base.BaseSenlinAPITest):

View File

@ -12,8 +12,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestPolicyShow(base.BaseSenlinAPITest): class TestPolicyShow(base.BaseSenlinAPITest):

View File

@ -13,8 +13,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from tempest.lib import exceptions from tempest.lib import exceptions
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestPolicyShowNegativeNotFound(base.BaseSenlinAPITest): class TestPolicyShowNegativeNotFound(base.BaseSenlinAPITest):

View File

@ -12,8 +12,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestPolicyUpdate(base.BaseSenlinAPITest): class TestPolicyUpdate(base.BaseSenlinAPITest):

View File

@ -13,8 +13,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from tempest.lib import exceptions from tempest.lib import exceptions
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestPolicyUpdateNegativeNotFound(base.BaseSenlinAPITest): class TestPolicyUpdateNegativeNotFound(base.BaseSenlinAPITest):

View File

@ -12,8 +12,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import constants from senlin_tempest_plugin.common import constants
from senlin_tempest_plugin.tests.api import base
class TestPolicyValidate(base.BaseSenlinAPITest): class TestPolicyValidate(base.BaseSenlinAPITest):

View File

@ -14,8 +14,8 @@ import copy
from tempest.lib import decorators from tempest.lib import decorators
from tempest.lib import exceptions from tempest.lib import exceptions
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import constants from senlin_tempest_plugin.common import constants
from senlin_tempest_plugin.tests.api import base
class TestPolicyValidateNegativeBadRequest(base.BaseSenlinAPITest): class TestPolicyValidateNegativeBadRequest(base.BaseSenlinAPITest):

View File

@ -12,8 +12,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestPolicyTypeList(base.BaseSenlinAPITest): class TestPolicyTypeList(base.BaseSenlinAPITest):

View File

@ -12,8 +12,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestPolicyTypeShow(base.BaseSenlinAPITest): class TestPolicyTypeShow(base.BaseSenlinAPITest):

View File

@ -13,7 +13,7 @@
from tempest.lib import decorators from tempest.lib import decorators
from tempest.lib import exceptions from tempest.lib import exceptions
from senlin_tempest_plugin.api import base from senlin_tempest_plugin.tests.api import base
class TestPolicyTypeShowNegative(base.BaseSenlinAPITest): class TestPolicyTypeShowNegative(base.BaseSenlinAPITest):

View File

@ -12,8 +12,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestProfileTypeList(base.BaseSenlinAPITest): class TestProfileTypeList(base.BaseSenlinAPITest):

View File

@ -12,8 +12,8 @@
from tempest.lib import decorators from tempest.lib import decorators
from senlin_tempest_plugin.api import base
from senlin_tempest_plugin.common import utils from senlin_tempest_plugin.common import utils
from senlin_tempest_plugin.tests.api import base
class TestProfileTypeShow(base.BaseSenlinAPITest): class TestProfileTypeShow(base.BaseSenlinAPITest):

View File

@ -13,7 +13,7 @@
from tempest.lib import decorators from tempest.lib import decorators
from tempest.lib import exceptions from tempest.lib import exceptions
from senlin_tempest_plugin.api import base from senlin_tempest_plugin.tests.api import base
class TestProfileTypeShowNegativeNotFound(base.BaseSenlinAPITest): class TestProfileTypeShowNegativeNotFound(base.BaseSenlinAPITest):

Some files were not shown because too many files have changed in this diff Show More