Migrated migrations_client.py from tempest

This migrates the above files from tempest. This includes tempest commits:

 * migrations_client.py     : Ice3665e91ff34409f6f105303213303d1fca1816
 * migrations.py            : I5e81dadd5dee4ecd85f309c34dae0d3ba0733a0d
 * test_migrations_client.py: I3ad6761651cec5e66012d08e6b63322f53286a5c

to see the commit history for these files refer to the above Change-Ids in
the tempest repository.

Partially implements blueprint migrate-service-clients-to-tempest-lib
Change-Id: I0dbae04c479b9d742a3e51d1d60c372093c2c027
This commit is contained in:
Ken'ichi Ohmichi 2015-09-28 06:30:25 +00:00
parent 6757c130b9
commit 0eb6747e3c
3 changed files with 137 additions and 0 deletions

View File

@ -0,0 +1,51 @@
# 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.
list_migrations = {
'status_code': [200],
'response_body': {
'type': 'object',
'properties': {
'migrations': {
'type': 'array',
'items': {
'type': 'object',
'properties': {
'id': {'type': 'integer'},
'status': {'type': ['string', 'null']},
'instance_uuid': {'type': ['string', 'null']},
'source_node': {'type': ['string', 'null']},
'source_compute': {'type': ['string', 'null']},
'dest_node': {'type': ['string', 'null']},
'dest_compute': {'type': ['string', 'null']},
'dest_host': {'type': ['string', 'null']},
'old_instance_type_id': {'type': ['integer', 'null']},
'new_instance_type_id': {'type': ['integer', 'null']},
'created_at': {'type': 'string'},
'updated_at': {'type': ['string', 'null']}
},
'additionalProperties': False,
'required': [
'id', 'status', 'instance_uuid', 'source_node',
'source_compute', 'dest_node', 'dest_compute',
'dest_host', 'old_instance_type_id',
'new_instance_type_id', 'created_at', 'updated_at'
]
}
}
},
'additionalProperties': False,
'required': ['migrations']
}
}

View File

@ -0,0 +1,34 @@
# Copyright 2014 NEC Corporation.
#
# 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 migrations as schema
from tempest_lib.common import rest_client
class MigrationsClient(rest_client.RestClient):
def list_migrations(self, **params):
"""Lists all migrations."""
url = 'os-migrations'
if params:
url += '?%s' % urllib.urlencode(params)
resp, body = self.get(url)
body = json.loads(body)
self.validate_response(schema.list_migrations, resp, body)
return rest_client.ResponseBody(resp, body)

View File

@ -0,0 +1,52 @@
# 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 migrations_client
from tempest_lib.tests import fake_auth_provider
from tempest_lib.tests.services.compute import base
class TestMigrationsClient(base.BaseComputeServiceTest):
FAKE_MIGRATION_INFO = {"migrations": [{
"created_at": "2012-10-29T13:42:02",
"dest_compute": "compute2",
"dest_host": "1.2.3.4",
"dest_node": "node2",
"id": 1234,
"instance_uuid": "e9e4fdd7-f956-44ff-bfeb-d654a96ab3a2",
"new_instance_type_id": 2,
"old_instance_type_id": 1,
"source_compute": "compute1",
"source_node": "node1",
"status": "finished",
"updated_at": "2012-10-29T13:42:02"}]}
def setUp(self):
super(TestMigrationsClient, self).setUp()
fake_auth = fake_auth_provider.FakeAuthProvider()
self.mg_client_obj = migrations_client.MigrationsClient(
fake_auth, 'compute', 'regionOne')
def _test_list_migrations(self, bytes_body=False):
self.check_service_client_function(
self.mg_client_obj.list_migrations,
'tempest_lib.common.rest_client.RestClient.get',
self.FAKE_MIGRATION_INFO,
bytes_body)
def test_list_migration_with_str_body(self):
self._test_list_migrations()
def test_list_migration_with_bytes_body(self):
self._test_list_migrations(True)