Merge "Fix Review Checklist URL"
diff --git a/tempest/api_schema/response/__init__.py b/tempest/api_schema/response/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/tempest/api_schema/response/__init__.py
+++ /dev/null
diff --git a/tempest/api_schema/response/compute/__init__.py b/tempest/api_schema/response/compute/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/tempest/api_schema/response/compute/__init__.py
+++ /dev/null
diff --git a/tempest/api_schema/response/compute/v2_1/__init__.py b/tempest/api_schema/response/compute/v2_1/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/tempest/api_schema/response/compute/v2_1/__init__.py
+++ /dev/null
diff --git a/tempest/api_schema/response/compute/v2_1/keypairs.py b/tempest/api_schema/response/compute/v2_1/keypairs.py
deleted file mode 100644
index 9c04c79..0000000
--- a/tempest/api_schema/response/compute/v2_1/keypairs.py
+++ /dev/null
@@ -1,107 +0,0 @@
-# Copyright 2014 NEC Corporation. All rights reserved.
-#
-# 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.
-
-get_keypair = {
- 'status_code': [200],
- 'response_body': {
- 'type': 'object',
- 'properties': {
- 'keypair': {
- 'type': 'object',
- 'properties': {
- 'public_key': {'type': 'string'},
- 'name': {'type': 'string'},
- 'fingerprint': {'type': 'string'},
- 'user_id': {'type': 'string'},
- 'deleted': {'type': 'boolean'},
- 'created_at': {'type': 'string'},
- 'updated_at': {'type': ['string', 'null']},
- 'deleted_at': {'type': ['string', 'null']},
- 'id': {'type': 'integer'}
-
- },
- 'additionalProperties': False,
- # When we run the get keypair API, response body includes
- # all the above mentioned attributes.
- # But in Nova API sample file, response body includes only
- # 'public_key', 'name' & 'fingerprint'. So only 'public_key',
- # 'name' & 'fingerprint' are defined as 'required'.
- 'required': ['public_key', 'name', 'fingerprint']
- }
- },
- 'additionalProperties': False,
- 'required': ['keypair']
- }
-}
-
-create_keypair = {
- 'status_code': [200],
- 'response_body': {
- 'type': 'object',
- 'properties': {
- 'keypair': {
- 'type': 'object',
- 'properties': {
- 'fingerprint': {'type': 'string'},
- 'name': {'type': 'string'},
- 'public_key': {'type': 'string'},
- 'user_id': {'type': 'string'},
- 'private_key': {'type': 'string'}
- },
- 'additionalProperties': False,
- # When create keypair API is being called with 'Public key'
- # (Importing keypair) then, response body does not contain
- # 'private_key' So it is not defined as 'required'
- 'required': ['fingerprint', 'name', 'public_key', 'user_id']
- }
- },
- 'additionalProperties': False,
- 'required': ['keypair']
- }
-}
-
-delete_keypair = {
- 'status_code': [202],
-}
-
-list_keypairs = {
- 'status_code': [200],
- 'response_body': {
- 'type': 'object',
- 'properties': {
- 'keypairs': {
- 'type': 'array',
- 'items': {
- 'type': 'object',
- 'properties': {
- 'keypair': {
- 'type': 'object',
- 'properties': {
- 'public_key': {'type': 'string'},
- 'name': {'type': 'string'},
- 'fingerprint': {'type': 'string'}
- },
- 'additionalProperties': False,
- 'required': ['public_key', 'name', 'fingerprint']
- }
- },
- 'additionalProperties': False,
- 'required': ['keypair']
- }
- }
- },
- 'additionalProperties': False,
- 'required': ['keypairs']
- }
-}
diff --git a/tempest/clients.py b/tempest/clients.py
index 141d1c6..0eded8b 100644
--- a/tempest/clients.py
+++ b/tempest/clients.py
@@ -46,6 +46,7 @@
from tempest.lib.services.compute.instance_usage_audit_log_client import \
InstanceUsagesAuditLogClient
from tempest.lib.services.compute.interfaces_client import InterfacesClient
+from tempest.lib.services.compute.keypairs_client import KeyPairsClient
from tempest.lib.services.compute.limits_client import LimitsClient
from tempest.lib.services.compute.migrations_client import MigrationsClient
from tempest.lib.services.compute.networks_client import NetworksClient \
@@ -96,7 +97,6 @@
from tempest import manager
from tempest.services.baremetal.v1.json.baremetal_client import \
BaremetalClient
-from tempest.services.compute.json.keypairs_client import KeyPairsClient
from tempest.services.data_processing.v1_1.data_processing_client import \
DataProcessingClient
from tempest.services.database.json.flavors_client import \
diff --git a/tempest/cmd/cleanup.py b/tempest/cmd/cleanup.py
index 3706b54..caba4b5 100644
--- a/tempest/cmd/cleanup.py
+++ b/tempest/cmd/cleanup.py
@@ -190,7 +190,7 @@
rl_cl = self.admin_mgr.roles_client
tenant = identity.get_tenant_by_name(tn_cl,
- CONF.auth.admin_tenant_name)
+ CONF.auth.admin_project_name)
self.admin_tenant_id = tenant['id']
user = identity.get_user_by_username(tn_cl, self.admin_tenant_id,
diff --git a/tempest/cmd/cleanup_service.py b/tempest/cmd/cleanup_service.py
index 3c09600..f51fc53 100644
--- a/tempest/cmd/cleanup_service.py
+++ b/tempest/cmd/cleanup_service.py
@@ -33,7 +33,7 @@
CONF_TENANTS = None
CONF_USERS = None
-IS_CEILOMETER = None
+IS_AODH = None
IS_CINDER = None
IS_GLANCE = None
IS_HEAT = None
@@ -51,14 +51,14 @@
global CONF_PUB_ROUTER
global CONF_TENANTS
global CONF_USERS
- global IS_CEILOMETER
+ global IS_AODH
global IS_CINDER
global IS_GLANCE
global IS_HEAT
global IS_NEUTRON
global IS_NOVA
- IS_CEILOMETER = CONF.service_available.ceilometer
+ IS_AODH = CONF.service_available.aodh
IS_CINDER = CONF.service_available.cinder
IS_GLANCE = CONF.service_available.glance
IS_HEAT = CONF.service_available.heat
@@ -70,25 +70,25 @@
CONF_PRIV_NETWORK_NAME = CONF.compute.fixed_network_name
CONF_PUB_NETWORK = CONF.network.public_network_id
CONF_PUB_ROUTER = CONF.network.public_router_id
- CONF_TENANTS = [CONF.auth.admin_tenant_name,
- CONF.identity.tenant_name,
- CONF.identity.alt_tenant_name]
+ CONF_TENANTS = [CONF.auth.admin_project_name,
+ CONF.identity.project_name,
+ CONF.identity.alt_project_name]
CONF_USERS = [CONF.auth.admin_username, CONF.identity.username,
CONF.identity.alt_username]
if IS_NEUTRON:
CONF_PRIV_NETWORK = _get_network_id(CONF.compute.fixed_network_name,
- CONF.auth.admin_tenant_name)
+ CONF.auth.admin_project_name)
CONF_NETWORKS = [CONF_PUB_NETWORK, CONF_PRIV_NETWORK]
-def _get_network_id(net_name, tenant_name):
+def _get_network_id(net_name, project_name):
am = credentials.AdminManager()
net_cl = am.networks_client
tn_cl = am.tenants_client
networks = net_cl.list_networks()
- tenant = identity.get_tenant_by_name(tn_cl, tenant_name)
+ tenant = identity.get_tenant_by_name(tn_cl, project_name)
t_id = tenant['id']
n_id = None
for net in networks['networks']:
@@ -710,7 +710,7 @@
class TelemetryAlarmService(BaseService):
def __init__(self, manager, **kwargs):
super(TelemetryAlarmService, self).__init__(kwargs)
- self.client = manager.telemetry_client
+ self.client = manager.alarming_client
def list(self):
client = self.client
@@ -909,7 +909,7 @@
if not self.is_save_state:
tenants = [tenant for tenant in tenants if (tenant['id']
not in self.saved_state_json['tenants'].keys()
- and tenant['name'] != CONF.auth.admin_tenant_name)]
+ and tenant['name'] != CONF.auth.admin_project_name)]
if self.is_preserve:
tenants = [tenant for tenant in tenants if tenant['name']
@@ -976,7 +976,7 @@
def get_tenant_cleanup_services():
tenant_services = []
- if IS_CEILOMETER:
+ if IS_AODH:
tenant_services.append(TelemetryAlarmService)
if IS_NOVA:
tenant_services.append(ServerService)
diff --git a/tempest/api_schema/response/compute/v2_2/__init__.py b/tempest/lib/api_schema/response/compute/v2_2/__init__.py
similarity index 100%
rename from tempest/api_schema/response/compute/v2_2/__init__.py
rename to tempest/lib/api_schema/response/compute/v2_2/__init__.py
diff --git a/tempest/api_schema/response/compute/v2_2/keypairs.py b/tempest/lib/api_schema/response/compute/v2_2/keypairs.py
similarity index 95%
rename from tempest/api_schema/response/compute/v2_2/keypairs.py
rename to tempest/lib/api_schema/response/compute/v2_2/keypairs.py
index 5d8d24d..0bb7771 100644
--- a/tempest/api_schema/response/compute/v2_2/keypairs.py
+++ b/tempest/lib/api_schema/response/compute/v2_2/keypairs.py
@@ -14,7 +14,7 @@
import copy
-from tempest.api_schema.response.compute.v2_1 import keypairs
+from tempest.lib.api_schema.response.compute.v2_1 import keypairs
get_keypair = copy.deepcopy(keypairs.get_keypair)
get_keypair['response_body']['properties']['keypair'][
diff --git a/tempest/lib/services/compute/keypairs_client.py b/tempest/lib/services/compute/keypairs_client.py
index 0361b9d..7b8e6b2 100644
--- a/tempest/lib/services/compute/keypairs_client.py
+++ b/tempest/lib/services/compute/keypairs_client.py
@@ -14,23 +14,36 @@
# under the License.
from oslo_serialization import jsonutils as json
+from six.moves.urllib import parse as urllib
-from tempest.lib.api_schema.response.compute.v2_1 import keypairs as schema
+from tempest.lib.api_schema.response.compute.v2_1 import keypairs as schemav21
+from tempest.lib.api_schema.response.compute.v2_2 import keypairs as schemav22
from tempest.lib.common import rest_client
from tempest.lib.services.compute import base_compute_client
class KeyPairsClient(base_compute_client.BaseComputeClient):
- def list_keypairs(self):
- resp, body = self.get("os-keypairs")
+ schema_versions_info = [{'min': None, 'max': '2.1', 'schema': schemav21},
+ {'min': '2.2', 'max': None, 'schema': schemav22}]
+
+ def list_keypairs(self, **params):
+ url = 'os-keypairs'
+ if params:
+ url += '?%s' % urllib.urlencode(params)
+ resp, body = self.get(url)
body = json.loads(body)
+ schema = self.get_schema(self.schema_versions_info)
self.validate_response(schema.list_keypairs, resp, body)
return rest_client.ResponseBody(resp, body)
- def show_keypair(self, keypair_name):
- resp, body = self.get("os-keypairs/%s" % keypair_name)
+ def show_keypair(self, keypair_name, **params):
+ url = "os-keypairs/%s" % keypair_name
+ if params:
+ url += '?%s' % urllib.urlencode(params)
+ resp, body = self.get(url)
body = json.loads(body)
+ schema = self.get_schema(self.schema_versions_info)
self.validate_response(schema.get_keypair, resp, body)
return rest_client.ResponseBody(resp, body)
@@ -43,10 +56,15 @@
post_body = json.dumps({'keypair': kwargs})
resp, body = self.post("os-keypairs", body=post_body)
body = json.loads(body)
+ schema = self.get_schema(self.schema_versions_info)
self.validate_response(schema.create_keypair, resp, body)
return rest_client.ResponseBody(resp, body)
- def delete_keypair(self, keypair_name):
- resp, body = self.delete("os-keypairs/%s" % keypair_name)
+ def delete_keypair(self, keypair_name, **params):
+ url = "os-keypairs/%s" % keypair_name
+ if params:
+ url += '?%s' % urllib.urlencode(params)
+ resp, body = self.delete(url)
+ schema = self.get_schema(self.schema_versions_info)
self.validate_response(schema.delete_keypair, resp, body)
return rest_client.ResponseBody(resp, body)
diff --git a/tempest/services/compute/__init__.py b/tempest/services/compute/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/tempest/services/compute/__init__.py
+++ /dev/null
diff --git a/tempest/services/compute/json/__init__.py b/tempest/services/compute/json/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/tempest/services/compute/json/__init__.py
+++ /dev/null
diff --git a/tempest/services/compute/json/keypairs_client.py b/tempest/services/compute/json/keypairs_client.py
deleted file mode 100644
index fcb4f2a..0000000
--- a/tempest/services/compute/json/keypairs_client.py
+++ /dev/null
@@ -1,65 +0,0 @@
-# Copyright 2012 OpenStack Foundation
-# All Rights Reserved.
-#
-# 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_serialization import jsonutils as json
-from six.moves.urllib import parse as urllib
-
-from tempest.api_schema.response.compute.v2_1 import keypairs as schemav21
-from tempest.api_schema.response.compute.v2_2 import keypairs as schemav22
-from tempest.lib.common import rest_client
-from tempest.lib.services.compute import base_compute_client
-
-
-class KeyPairsClient(base_compute_client.BaseComputeClient):
-
- schema_versions_info = [{'min': None, 'max': '2.1', 'schema': schemav21},
- {'min': '2.2', 'max': None, 'schema': schemav22}]
-
- def list_keypairs(self, **params):
- url = 'os-keypairs'
- if params:
- url += '?%s' % urllib.urlencode(params)
- resp, body = self.get(url)
- body = json.loads(body)
- schema = self.get_schema(self.schema_versions_info)
- self.validate_response(schema.list_keypairs, resp, body)
- return rest_client.ResponseBody(resp, body)
-
- def show_keypair(self, keypair_name, **params):
- url = "os-keypairs/%s" % keypair_name
- if params:
- url += '?%s' % urllib.urlencode(params)
- resp, body = self.get(url)
- body = json.loads(body)
- schema = self.get_schema(self.schema_versions_info)
- self.validate_response(schema.get_keypair, resp, body)
- return rest_client.ResponseBody(resp, body)
-
- def create_keypair(self, **kwargs):
- post_body = json.dumps({'keypair': kwargs})
- resp, body = self.post("os-keypairs", body=post_body)
- body = json.loads(body)
- schema = self.get_schema(self.schema_versions_info)
- self.validate_response(schema.create_keypair, resp, body)
- return rest_client.ResponseBody(resp, body)
-
- def delete_keypair(self, keypair_name, **params):
- url = "os-keypairs/%s" % keypair_name
- if params:
- url += '?%s' % urllib.urlencode(params)
- resp, body = self.delete(url)
- schema = self.get_schema(self.schema_versions_info)
- self.validate_response(schema.delete_keypair, resp, body)
- return rest_client.ResponseBody(resp, body)
diff --git a/tempest/tests/services/compute/base.py b/tempest/tests/services/compute/base.py
deleted file mode 100644
index a35a87c..0000000
--- a/tempest/tests/services/compute/base.py
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright 2015 Deutsche Telekom AG. All rights reserved.
-#
-# 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 httplib2
-
-from oslo_serialization import jsonutils as json
-from oslotest import mockpatch
-
-from tempest.tests import base
-
-
-class BaseComputeServiceTest(base.TestCase):
- def create_response(self, body, to_utf=False, status=200):
- json_body = {}
- if body:
- json_body = json.dumps(body)
- if to_utf:
- json_body = json_body.encode('utf-8')
- response = (httplib2.Response({'status': status}), json_body)
- return response
-
- def check_service_client_function(self, function, function2mock,
- body, to_utf=False, status=200,
- **kwargs):
- mocked_response = self.create_response(body, to_utf, status)
- self.useFixture(mockpatch.Patch(
- function2mock, return_value=mocked_response))
- if kwargs:
- resp = function(**kwargs)
- else:
- resp = function()
- self.assertEqual(body, resp)
diff --git a/tempest/tests/services/compute/test_keypairs_client.py b/tempest/tests/services/compute/test_keypairs_client.py
deleted file mode 100644
index e8f8280..0000000
--- a/tempest/tests/services/compute/test_keypairs_client.py
+++ /dev/null
@@ -1,94 +0,0 @@
-# Copyright 2015 NEC Corporation. All rights reserved.
-#
-# 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 tempest.services.compute.json import keypairs_client
-from tempest.tests.lib import fake_auth_provider
-from tempest.tests.services.compute import base
-
-
-class TestKeyPairsClient(base.BaseComputeServiceTest):
-
- FAKE_KEYPAIR = {"keypair": {
- "public_key": "ssh-rsa foo Generated-by-Nova",
- "name": u'\u2740(*\xb4\u25e1`*)\u2740',
- "user_id": "525d55f98980415ba98e634972fa4a10",
- "fingerprint": "76:24:66:49:d7:ca:6e:5c:77:ea:8e:bb:9c:15:5f:98"
- }}
-
- def setUp(self):
- super(TestKeyPairsClient, self).setUp()
- fake_auth = fake_auth_provider.FakeAuthProvider()
- self.client = keypairs_client.KeyPairsClient(
- fake_auth, 'compute', 'regionOne')
-
- def _test_list_keypairs(self, bytes_body=False):
- self.check_service_client_function(
- self.client.list_keypairs,
- 'tempest.lib.common.rest_client.RestClient.get',
- {"keypairs": []},
- bytes_body)
-
- def test_list_keypairs_with_str_body(self):
- self._test_list_keypairs()
-
- def test_list_keypairs_with_bytes_body(self):
- self._test_list_keypairs(bytes_body=True)
-
- def _test_show_keypair(self, bytes_body=False):
- fake_keypair = copy.deepcopy(self.FAKE_KEYPAIR)
- fake_keypair["keypair"].update({
- "deleted": False,
- "created_at": "2015-07-22T04:53:52.000000",
- "updated_at": None,
- "deleted_at": None,
- "id": 1
- })
-
- self.check_service_client_function(
- self.client.show_keypair,
- 'tempest.lib.common.rest_client.RestClient.get',
- fake_keypair,
- bytes_body,
- keypair_name="test")
-
- def test_show_keypair_with_str_body(self):
- self._test_show_keypair()
-
- def test_show_keypair_with_bytes_body(self):
- self._test_show_keypair(bytes_body=True)
-
- def _test_create_keypair(self, bytes_body=False):
- fake_keypair = copy.deepcopy(self.FAKE_KEYPAIR)
- fake_keypair["keypair"].update({"private_key": "foo"})
-
- self.check_service_client_function(
- self.client.create_keypair,
- 'tempest.lib.common.rest_client.RestClient.post',
- fake_keypair,
- bytes_body,
- name="test")
-
- def test_create_keypair_with_str_body(self):
- self._test_create_keypair()
-
- def test_create_keypair_with_bytes_body(self):
- self._test_create_keypair(bytes_body=True)
-
- def test_delete_keypair(self):
- self.check_service_client_function(
- self.client.delete_keypair,
- 'tempest.lib.common.rest_client.RestClient.delete',
- {}, status=202, keypair_name='test')