diff options
author | Jenkins <jenkins@review.openstack.org> | 2015-09-16 09:20:24 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2015-09-16 09:20:24 +0000 |
commit | b501a030754c45f8d8651e9d216fc52df716bdd1 (patch) | |
tree | 821d6b7fb5624a904f8ca3938341dd810eecd396 | |
parent | faa6b9a902fb1aa2963e77b653a1a6fa1281f3e4 (diff) | |
parent | 93528c1318d2a9b68586da7c6f61d06765628ac2 (diff) | |
download | tempest-lib-b501a030754c45f8d8651e9d216fc52df716bdd1.tar.gz |
Merge "Migrated agents_client.py, test_agents_client.py, agents.py from tempest"0.9.0
-rw-r--r-- | tempest_lib/api_schema/__init__.py | 0 | ||||
-rw-r--r-- | tempest_lib/api_schema/response/__init__.py | 0 | ||||
-rw-r--r-- | tempest_lib/api_schema/response/compute/__init__.py | 0 | ||||
-rw-r--r-- | tempest_lib/api_schema/response/compute/v2_1/__init__.py | 0 | ||||
-rw-r--r-- | tempest_lib/api_schema/response/compute/v2_1/agents.py | 60 | ||||
-rw-r--r-- | tempest_lib/services/compute/__init__.py | 0 | ||||
-rw-r--r-- | tempest_lib/services/compute/agents_client.py | 54 | ||||
-rw-r--r-- | tempest_lib/tests/services/compute/__init__.py | 0 | ||||
-rw-r--r-- | tempest_lib/tests/services/compute/base.py | 43 | ||||
-rw-r--r-- | tempest_lib/tests/services/compute/test_agents_client.py | 106 |
10 files changed, 263 insertions, 0 deletions
diff --git a/tempest_lib/api_schema/__init__.py b/tempest_lib/api_schema/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/tempest_lib/api_schema/__init__.py diff --git a/tempest_lib/api_schema/response/__init__.py b/tempest_lib/api_schema/response/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/tempest_lib/api_schema/response/__init__.py diff --git a/tempest_lib/api_schema/response/compute/__init__.py b/tempest_lib/api_schema/response/compute/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/tempest_lib/api_schema/response/compute/__init__.py diff --git a/tempest_lib/api_schema/response/compute/v2_1/__init__.py b/tempest_lib/api_schema/response/compute/v2_1/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/tempest_lib/api_schema/response/compute/v2_1/__init__.py diff --git a/tempest_lib/api_schema/response/compute/v2_1/agents.py b/tempest_lib/api_schema/response/compute/v2_1/agents.py new file mode 100644 index 0000000..da38198 --- /dev/null +++ b/tempest_lib/api_schema/response/compute/v2_1/agents.py @@ -0,0 +1,60 @@ +# 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. + +common_agent_info = { + 'type': 'object', + 'properties': { + 'agent_id': {'type': ['integer', 'string']}, + 'hypervisor': {'type': 'string'}, + 'os': {'type': 'string'}, + 'architecture': {'type': 'string'}, + 'version': {'type': 'string'}, + 'url': {'type': 'string', 'format': 'uri'}, + 'md5hash': {'type': 'string'} + }, + 'additionalProperties': False, + 'required': ['agent_id', 'hypervisor', 'os', 'architecture', + 'version', 'url', 'md5hash'] +} + +list_agents = { + 'status_code': [200], + 'response_body': { + 'type': 'object', + 'properties': { + 'agents': { + 'type': 'array', + 'items': common_agent_info + } + }, + 'additionalProperties': False, + 'required': ['agents'] + } +} + +create_agent = { + 'status_code': [200], + 'response_body': { + 'type': 'object', + 'properties': { + 'agent': common_agent_info + }, + 'additionalProperties': False, + 'required': ['agent'] + } +} + +delete_agent = { + 'status_code': [200] +} diff --git a/tempest_lib/services/compute/__init__.py b/tempest_lib/services/compute/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/tempest_lib/services/compute/__init__.py diff --git a/tempest_lib/services/compute/agents_client.py b/tempest_lib/services/compute/agents_client.py new file mode 100644 index 0000000..fbf8cd1 --- /dev/null +++ b/tempest_lib/services/compute/agents_client.py @@ -0,0 +1,54 @@ +# 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. + +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 agents as schema +from tempest_lib.common import rest_client + + +class AgentsClient(rest_client.RestClient): + """Tests Agents API""" + + def list_agents(self, **params): + """List all agent builds.""" + url = 'os-agents' + if params: + url += '?%s' % urllib.urlencode(params) + resp, body = self.get(url) + body = json.loads(body) + self.validate_response(schema.list_agents, resp, body) + return rest_client.ResponseBody(resp, body) + + def create_agent(self, **kwargs): + """Create an agent build.""" + post_body = json.dumps({'agent': kwargs}) + resp, body = self.post('os-agents', post_body) + body = json.loads(body) + self.validate_response(schema.create_agent, resp, body) + return rest_client.ResponseBody(resp, body) + + def delete_agent(self, agent_id): + """Delete an existing agent build.""" + resp, body = self.delete("os-agents/%s" % agent_id) + self.validate_response(schema.delete_agent, resp, body) + return rest_client.ResponseBody(resp, body) + + def update_agent(self, agent_id, **kwargs): + """Update an agent build.""" + put_body = json.dumps({'para': kwargs}) + resp, body = self.put('os-agents/%s' % agent_id, put_body) + body = json.loads(body) + return rest_client.ResponseBody(resp, body) diff --git a/tempest_lib/tests/services/compute/__init__.py b/tempest_lib/tests/services/compute/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/tempest_lib/tests/services/compute/__init__.py diff --git a/tempest_lib/tests/services/compute/base.py b/tempest_lib/tests/services/compute/base.py new file mode 100644 index 0000000..09a3d82 --- /dev/null +++ b/tempest_lib/tests/services/compute/base.py @@ -0,0 +1,43 @@ +# 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_lib.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_lib/tests/services/compute/test_agents_client.py b/tempest_lib/tests/services/compute/test_agents_client.py new file mode 100644 index 0000000..cb8b7cb --- /dev/null +++ b/tempest_lib/tests/services/compute/test_agents_client.py @@ -0,0 +1,106 @@ +# 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. + +from tempest_lib.services.compute import agents_client +from tempest_lib.tests import fake_auth_provider +from tempest_lib.tests.services.compute import base + + +class TestAgentsClient(base.BaseComputeServiceTest): + FAKE_CREATE_AGENT = { + "agent": { + "url": "http://foo.com", + "hypervisor": "kvm", + "md5hash": "md5", + "version": "2", + "architecture": "x86_64", + "os": "linux", + "agent_id": 1 + } + } + + FAKE_UPDATE_AGENT = { + "agent": { + "url": "http://foo.com", + "hypervisor": "kvm", + "md5hash": "md5", + "version": "2", + "architecture": "x86_64", + "os": "linux", + "agent_id": 1 + } + } + + def setUp(self): + super(TestAgentsClient, self).setUp() + fake_auth = fake_auth_provider.FakeAuthProvider() + self.client = agents_client.AgentsClient(fake_auth, + 'compute', 'regionOne') + + def _test_list_agents(self, bytes_body=False): + self.check_service_client_function( + self.client.list_agents, + 'tempest_lib.common.rest_client.RestClient.get', + {"agents": []}, + bytes_body) + self.check_service_client_function( + self.client.list_agents, + 'tempest_lib.common.rest_client.RestClient.get', + {"agents": []}, + bytes_body, + hypervisor="kvm") + + def _test_create_agent(self, bytes_body=False): + self.check_service_client_function( + self.client.create_agent, + 'tempest_lib.common.rest_client.RestClient.post', + self.FAKE_CREATE_AGENT, + bytes_body, + url="http://foo.com", hypervisor="kvm", md5hash="md5", + version="2", architecture="x86_64", os="linux") + + def _test_delete_agent(self): + self.check_service_client_function( + self.client.delete_agent, + 'tempest_lib.common.rest_client.RestClient.delete', + {}, agent_id="1") + + def _test_update_agent(self, bytes_body=False): + self.check_service_client_function( + self.client.update_agent, + 'tempest_lib.common.rest_client.RestClient.put', + self.FAKE_UPDATE_AGENT, + bytes_body, + agent_id="1", url="http://foo.com", md5hash="md5", version="2") + + def test_list_agents_with_str_body(self): + self._test_list_agents() + + def test_list_agents_with_bytes_body(self): + self._test_list_agents(bytes_body=True) + + def test_create_agent_with_str_body(self): + self._test_create_agent() + + def test_create_agent_with_bytes_body(self): + self._test_create_agent(bytes_body=True) + + def test_delete_agent(self): + self._test_delete_agent() + + def test_update_agent_with_str_body(self): + self._test_update_agent() + + def test_update_agent_with_bytes_body(self): + self._test_update_agent(bytes_body=True) |