Merge "tests: Merge v2, v3 fakes"
This commit is contained in:
@@ -1,311 +0,0 @@
|
||||
# Copyright 2010 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.
|
||||
|
||||
import datetime
|
||||
|
||||
import iso8601
|
||||
|
||||
from cinder import exception as exc
|
||||
from cinder import objects
|
||||
from cinder.objects import fields
|
||||
from cinder.tests.unit import fake_constants as fake
|
||||
from cinder.tests.unit import fake_volume
|
||||
from cinder import utils
|
||||
|
||||
DEFAULT_VOL_NAME = "displayname"
|
||||
DEFAULT_VOL_DESCRIPTION = "displaydesc"
|
||||
DEFAULT_VOL_SIZE = 1
|
||||
DEFAULT_VOL_TYPE = "vol_type_name"
|
||||
DEFAULT_VOL_STATUS = "fakestatus"
|
||||
DEFAULT_VOL_ID = fake.VOLUME_ID
|
||||
|
||||
# TODO(vbala): api.v1 tests use hard-coded "fakeaz" for verifying
|
||||
# post-conditions. Update value to "zone1:host1" once we remove
|
||||
# api.v1 tests and use it in api.v2 tests.
|
||||
DEFAULT_AZ = "fakeaz"
|
||||
|
||||
|
||||
def create_fake_volume(id, **kwargs):
|
||||
volume = {
|
||||
'id': id,
|
||||
'user_id': fake.USER_ID,
|
||||
'project_id': fake.PROJECT_ID,
|
||||
'host': 'fakehost',
|
||||
'size': DEFAULT_VOL_SIZE,
|
||||
'availability_zone': DEFAULT_AZ,
|
||||
'status': DEFAULT_VOL_STATUS,
|
||||
'migration_status': None,
|
||||
'attach_status': fields.VolumeAttachStatus.ATTACHED,
|
||||
'name': 'vol name',
|
||||
'display_name': DEFAULT_VOL_NAME,
|
||||
'display_description': DEFAULT_VOL_DESCRIPTION,
|
||||
'updated_at': datetime.datetime(1900, 1, 1, 1, 1, 1,
|
||||
tzinfo=iso8601.UTC),
|
||||
'created_at': datetime.datetime(1900, 1, 1, 1, 1, 1,
|
||||
tzinfo=iso8601.UTC),
|
||||
'snapshot_id': None,
|
||||
'source_volid': None,
|
||||
'volume_type_id': '3e196c20-3c06-11e2-81c1-0800200c9a66',
|
||||
'encryption_key_id': None,
|
||||
'volume_admin_metadata': [{'key': 'attached_mode', 'value': 'rw'},
|
||||
{'key': 'readonly', 'value': 'False'}],
|
||||
'bootable': False,
|
||||
'launched_at': datetime.datetime(1900, 1, 1, 1, 1, 1,
|
||||
tzinfo=iso8601.UTC),
|
||||
'volume_type': fake_volume.fake_db_volume_type(name=DEFAULT_VOL_TYPE),
|
||||
'replication_status': 'disabled',
|
||||
'replication_extended_status': None,
|
||||
'replication_driver_data': None,
|
||||
'volume_attachment': [],
|
||||
'multiattach': False,
|
||||
}
|
||||
|
||||
volume.update(kwargs)
|
||||
if kwargs.get('volume_glance_metadata', None):
|
||||
volume['bootable'] = True
|
||||
if kwargs.get('attach_status') == fields.VolumeAttachStatus.DETACHED:
|
||||
del volume['volume_admin_metadata'][0]
|
||||
return volume
|
||||
|
||||
|
||||
def fake_volume_create(self, context, size, name, description, snapshot=None,
|
||||
**param):
|
||||
vol = create_fake_volume(DEFAULT_VOL_ID)
|
||||
vol['size'] = size
|
||||
vol['display_name'] = name
|
||||
vol['display_description'] = description
|
||||
source_volume = param.get('source_volume') or {}
|
||||
vol['source_volid'] = source_volume.get('id')
|
||||
vol['bootable'] = False
|
||||
vol['volume_attachment'] = []
|
||||
vol['multiattach'] = utils.get_bool_param('multiattach', param)
|
||||
try:
|
||||
vol['snapshot_id'] = snapshot['id']
|
||||
except (KeyError, TypeError):
|
||||
vol['snapshot_id'] = None
|
||||
vol['availability_zone'] = param.get('availability_zone', 'fakeaz')
|
||||
return vol
|
||||
|
||||
|
||||
def fake_volume_api_create(self, context, *args, **kwargs):
|
||||
vol = fake_volume_create(self, context, *args, **kwargs)
|
||||
return fake_volume.fake_volume_obj(context, **vol)
|
||||
|
||||
|
||||
def fake_image_service_detail(self, context, **kwargs):
|
||||
filters = kwargs.get('filters', {'name': ''})
|
||||
if filters['name'] == "Fedora-x86_64-20-20140618-sda":
|
||||
return [{'id': "c905cedb-7281-47e4-8a62-f26bc5fc4c77"}]
|
||||
elif filters['name'] == "multi":
|
||||
return [{'id': "c905cedb-7281-47e4-8a62-f26bc5fc4c77"},
|
||||
{'id': "c905cedb-abcd-47e4-8a62-f26bc5fc4c77"}]
|
||||
return []
|
||||
|
||||
|
||||
def fake_volume_create_from_image(self, context, size, name, description,
|
||||
snapshot, volume_type, metadata,
|
||||
availability_zone):
|
||||
vol = create_fake_volume(fake.VOLUME_ID)
|
||||
vol['status'] = 'creating'
|
||||
vol['size'] = size
|
||||
vol['display_name'] = name
|
||||
vol['display_description'] = description
|
||||
vol['availability_zone'] = 'cinder'
|
||||
vol['bootable'] = False
|
||||
return vol
|
||||
|
||||
|
||||
def fake_volume_update(self, context, *args, **param):
|
||||
pass
|
||||
|
||||
|
||||
def fake_volume_delete(self, context, *args, **param):
|
||||
pass
|
||||
|
||||
|
||||
def fake_volume_get(self, context, volume_id, viewable_admin_meta=False):
|
||||
if viewable_admin_meta:
|
||||
return create_fake_volume(volume_id)
|
||||
else:
|
||||
volume = create_fake_volume(volume_id)
|
||||
del volume['volume_admin_metadata']
|
||||
return volume
|
||||
|
||||
|
||||
def fake_volume_get_notfound(self, context,
|
||||
volume_id, viewable_admin_meta=False):
|
||||
raise exc.VolumeNotFound(volume_id)
|
||||
|
||||
|
||||
def fake_volume_get_db(context, volume_id):
|
||||
if context.is_admin:
|
||||
return create_fake_volume(volume_id)
|
||||
else:
|
||||
volume = create_fake_volume(volume_id)
|
||||
del volume['volume_admin_metadata']
|
||||
return volume
|
||||
|
||||
|
||||
def fake_volume_api_get(self, context, volume_id, viewable_admin_meta=False):
|
||||
vol = create_fake_volume(volume_id)
|
||||
return fake_volume.fake_volume_obj(context, **vol)
|
||||
|
||||
|
||||
def fake_volume_get_all(context, search_opts=None, marker=None, limit=None,
|
||||
sort_keys=None, sort_dirs=None, filters=None,
|
||||
viewable_admin_meta=False, offset=None):
|
||||
return [create_fake_volume(fake.VOLUME_ID, project_id=fake.PROJECT_ID),
|
||||
create_fake_volume(fake.VOLUME2_ID, project_id=fake.PROJECT2_ID),
|
||||
create_fake_volume(fake.VOLUME3_ID, project_id=fake.PROJECT3_ID)]
|
||||
|
||||
|
||||
def fake_volume_get_all_by_project(self, context, marker, limit,
|
||||
sort_keys=None, sort_dirs=None,
|
||||
filters=None,
|
||||
viewable_admin_meta=False, offset=None):
|
||||
return [fake_volume_get(self, context, fake.VOLUME_ID,
|
||||
viewable_admin_meta=True)]
|
||||
|
||||
|
||||
def fake_volume_api_get_all_by_project(self, context, marker, limit,
|
||||
sort_keys=None, sort_dirs=None,
|
||||
filters=None,
|
||||
viewable_admin_meta=False,
|
||||
offset=None):
|
||||
vol = fake_volume_get(self, context, fake.VOLUME_ID,
|
||||
viewable_admin_meta=viewable_admin_meta)
|
||||
vol_obj = fake_volume.fake_volume_obj(context, **vol)
|
||||
return objects.VolumeList(objects=[vol_obj])
|
||||
|
||||
|
||||
def fake_snapshot(id, **kwargs):
|
||||
snapshot = {'id': id,
|
||||
'volume_id': fake.VOLUME_ID,
|
||||
'status': fields.SnapshotStatus.AVAILABLE,
|
||||
'volume_size': 100,
|
||||
'created_at': None,
|
||||
'display_name': 'Default name',
|
||||
'display_description': 'Default description',
|
||||
'project_id': fake.PROJECT_ID,
|
||||
'snapshot_metadata': []}
|
||||
|
||||
snapshot.update(kwargs)
|
||||
return snapshot
|
||||
|
||||
|
||||
def fake_backup(id, **kwargs):
|
||||
backup = {'id': fake.BACKUP_ID,
|
||||
'volume_id': fake.VOLUME_ID,
|
||||
'status': fields.BackupStatus.CREATING,
|
||||
'size': 1,
|
||||
'display_name': 'fake_name',
|
||||
'display_description': 'fake_description',
|
||||
'user_id': fake.USER_ID,
|
||||
'project_id': fake.PROJECT_ID,
|
||||
'temp_volume_id': None,
|
||||
'temp_snapshot_id': None,
|
||||
'snapshot_id': None,
|
||||
'service': 'cinder.fake.backup.service',
|
||||
'data_timestamp': None,
|
||||
'restore_volume_id': None,
|
||||
'backup_metadata': {}}
|
||||
|
||||
backup.update(kwargs)
|
||||
return backup
|
||||
|
||||
|
||||
def fake_snapshot_get_all(context, filters=None, marker=None, limit=None,
|
||||
sort_keys=None, sort_dirs=None, offset=None):
|
||||
return [fake_snapshot(fake.VOLUME_ID, project_id=fake.PROJECT_ID),
|
||||
fake_snapshot(fake.VOLUME2_ID, project_id=fake.PROJECT2_ID),
|
||||
fake_snapshot(fake.VOLUME3_ID, project_id=fake.PROJECT3_ID)]
|
||||
|
||||
|
||||
def fake_snapshot_get_all_by_project(context, project_id, filters=None,
|
||||
marker=None, limit=None, sort_keys=None,
|
||||
sort_dirs=None, offset=None):
|
||||
return [fake_snapshot(fake.SNAPSHOT_ID)]
|
||||
|
||||
|
||||
def fake_snapshot_update(self, context, *args, **param):
|
||||
pass
|
||||
|
||||
|
||||
def fake_service_get_all(*args, **kwargs):
|
||||
return [{'availability_zone': "zone1:host1", "disabled": 0,
|
||||
'uuid': 'a3a593da-7f8d-4bb7-8b4c-f2bc1e0b4824'}]
|
||||
|
||||
|
||||
def fake_service_get_all_by_topic(context, topic, disabled=None):
|
||||
return [{'availability_zone': "zone1:host1", "disabled": 0,
|
||||
'uuid': '4200b32b-0bf9-436c-86b2-0675f6ac218e'}]
|
||||
|
||||
|
||||
def fake_snapshot_get(self, context, snapshot_id):
|
||||
if snapshot_id == fake.WILL_NOT_BE_FOUND_ID:
|
||||
raise exc.SnapshotNotFound(snapshot_id=snapshot_id)
|
||||
|
||||
return fake_snapshot(snapshot_id)
|
||||
|
||||
|
||||
def fake_backup_get(self, context, backup_id):
|
||||
if backup_id == fake.WILL_NOT_BE_FOUND_ID:
|
||||
raise exc.BackupNotFound(backup_id=backup_id)
|
||||
|
||||
return fake_backup(backup_id)
|
||||
|
||||
|
||||
def fake_consistencygroup_get_notfound(self, context, cg_id):
|
||||
raise exc.GroupNotFound(group_id=cg_id)
|
||||
|
||||
|
||||
def fake_volume_type_get(context, id, *args, **kwargs):
|
||||
return {'id': id,
|
||||
'name': 'vol_type_name',
|
||||
'description': 'A fake volume type',
|
||||
'is_public': True,
|
||||
'projects': [],
|
||||
'extra_specs': {},
|
||||
'created_at': None,
|
||||
'deleted_at': None,
|
||||
'updated_at': None,
|
||||
'qos_specs_id': fake.QOS_SPEC_ID,
|
||||
'deleted': False}
|
||||
|
||||
|
||||
def fake_default_type_get(id=fake.VOLUME_TYPE_ID):
|
||||
return {'id': id,
|
||||
'name': 'vol_type_name',
|
||||
'description': 'A fake volume type',
|
||||
'is_public': True,
|
||||
'projects': [],
|
||||
'extra_specs': {},
|
||||
'created_at': None,
|
||||
'deleted_at': None,
|
||||
'updated_at': None,
|
||||
'qos_specs_id': fake.QOS_SPEC_ID,
|
||||
'deleted': False}
|
||||
|
||||
|
||||
def fake_volume_type_name_get(context, id, *args, **kwargs):
|
||||
return fake_volume_type_get(context, id)['name'] or id
|
||||
|
||||
|
||||
def fake_volume_admin_metadata_get(context, volume_id, **kwargs):
|
||||
admin_meta = {'attached_mode': 'rw', 'readonly': 'False'}
|
||||
if kwargs.get('attach_status') == fields.VolumeAttachStatus.DETACHED:
|
||||
del admin_meta['attached_mode']
|
||||
|
||||
return admin_meta
|
||||
@@ -14,6 +14,8 @@ import datetime
|
||||
|
||||
import iso8601
|
||||
|
||||
from cinder import exception as exc
|
||||
from cinder import objects
|
||||
from cinder.objects import fields
|
||||
from cinder.tests.unit import fake_constants as fake
|
||||
from cinder.tests.unit import fake_volume
|
||||
@@ -29,6 +31,8 @@ DEFAULT_VOL_ID = fake.VOLUME_ID
|
||||
DEFAULT_AZ = "fakeaz"
|
||||
|
||||
|
||||
# messages
|
||||
|
||||
def fake_message(id, **kwargs):
|
||||
message = {
|
||||
'id': id,
|
||||
@@ -53,6 +57,8 @@ def fake_message_get(self, context, message_id):
|
||||
return fake_message(message_id)
|
||||
|
||||
|
||||
# volumes
|
||||
|
||||
def create_volume(id, **kwargs):
|
||||
volume = {
|
||||
'id': id,
|
||||
@@ -63,7 +69,7 @@ def create_volume(id, **kwargs):
|
||||
'availability_zone': DEFAULT_AZ,
|
||||
'status': DEFAULT_VOL_STATUS,
|
||||
'migration_status': None,
|
||||
'attach_status': 'attached',
|
||||
'attach_status': fields.VolumeAttachStatus.ATTACHED,
|
||||
'name': 'vol name',
|
||||
'display_name': DEFAULT_VOL_NAME,
|
||||
'display_description': DEFAULT_VOL_DESCRIPTION,
|
||||
@@ -86,13 +92,12 @@ def create_volume(id, **kwargs):
|
||||
'replication_driver_data': None,
|
||||
'volume_attachment': [],
|
||||
'multiattach': False,
|
||||
'group_id': fake.GROUP_ID,
|
||||
}
|
||||
|
||||
volume.update(kwargs)
|
||||
if kwargs.get('volume_glance_metadata', None):
|
||||
volume['bootable'] = True
|
||||
if kwargs.get('attach_status') == 'detached':
|
||||
if kwargs.get('attach_status') == fields.VolumeAttachStatus.DETACHED:
|
||||
del volume['volume_admin_metadata'][0]
|
||||
return volume
|
||||
|
||||
@@ -118,6 +123,120 @@ def fake_volume_create(self, context, size, name, description, snapshot=None,
|
||||
return vol
|
||||
|
||||
|
||||
def fake_volume_api_create(self, context, *args, **kwargs):
|
||||
vol = fake_volume_create(self, context, *args, **kwargs)
|
||||
return fake_volume.fake_volume_obj(context, **vol)
|
||||
|
||||
|
||||
def fake_volume_create_from_image(self, context, size, name, description,
|
||||
snapshot, volume_type, metadata,
|
||||
availability_zone):
|
||||
vol = create_volume(fake.VOLUME_ID)
|
||||
vol['status'] = 'creating'
|
||||
vol['size'] = size
|
||||
vol['display_name'] = name
|
||||
vol['display_description'] = description
|
||||
vol['availability_zone'] = 'cinder'
|
||||
vol['bootable'] = False
|
||||
return vol
|
||||
|
||||
|
||||
def fake_volume_update(self, context, *args, **param):
|
||||
pass
|
||||
|
||||
|
||||
def fake_volume_delete(self, context, *args, **param):
|
||||
pass
|
||||
|
||||
|
||||
def fake_volume_get(self, context, volume_id, viewable_admin_meta=False):
|
||||
if viewable_admin_meta:
|
||||
return create_volume(volume_id)
|
||||
else:
|
||||
volume = create_volume(volume_id)
|
||||
del volume['volume_admin_metadata']
|
||||
return volume
|
||||
|
||||
|
||||
def fake_volume_get_notfound(self, context,
|
||||
volume_id, viewable_admin_meta=False):
|
||||
raise exc.VolumeNotFound(volume_id)
|
||||
|
||||
|
||||
def fake_volume_get_db(context, volume_id):
|
||||
if context.is_admin:
|
||||
return create_volume(volume_id)
|
||||
else:
|
||||
volume = create_volume(volume_id)
|
||||
del volume['volume_admin_metadata']
|
||||
return volume
|
||||
|
||||
|
||||
def fake_volume_api_get(self, context, volume_id, viewable_admin_meta=False):
|
||||
vol = create_volume(volume_id)
|
||||
return fake_volume.fake_volume_obj(context, **vol)
|
||||
|
||||
|
||||
def fake_volume_get_all(context, search_opts=None, marker=None, limit=None,
|
||||
sort_keys=None, sort_dirs=None, filters=None,
|
||||
viewable_admin_meta=False, offset=None):
|
||||
return [create_volume(fake.VOLUME_ID, project_id=fake.PROJECT_ID),
|
||||
create_volume(fake.VOLUME2_ID, project_id=fake.PROJECT2_ID),
|
||||
create_volume(fake.VOLUME3_ID, project_id=fake.PROJECT3_ID)]
|
||||
|
||||
|
||||
def fake_volume_get_all_by_project(self, context, marker, limit,
|
||||
sort_keys=None, sort_dirs=None,
|
||||
filters=None,
|
||||
viewable_admin_meta=False, offset=None):
|
||||
return [fake_volume_get(self, context, fake.VOLUME_ID,
|
||||
viewable_admin_meta=True)]
|
||||
|
||||
|
||||
def fake_volume_api_get_all_by_project(self, context, marker, limit,
|
||||
sort_keys=None, sort_dirs=None,
|
||||
filters=None,
|
||||
viewable_admin_meta=False,
|
||||
offset=None):
|
||||
vol = fake_volume_get(self, context, fake.VOLUME_ID,
|
||||
viewable_admin_meta=viewable_admin_meta)
|
||||
vol_obj = fake_volume.fake_volume_obj(context, **vol)
|
||||
return objects.VolumeList(objects=[vol_obj])
|
||||
|
||||
|
||||
# backups
|
||||
|
||||
def fake_backup(id, **kwargs):
|
||||
backup = {'id': fake.BACKUP_ID,
|
||||
'volume_id': fake.VOLUME_ID,
|
||||
'status': fields.BackupStatus.CREATING,
|
||||
'size': 1,
|
||||
'display_name': 'fake_name',
|
||||
'display_description': 'fake_description',
|
||||
'user_id': fake.USER_ID,
|
||||
'project_id': fake.PROJECT_ID,
|
||||
'temp_volume_id': None,
|
||||
'temp_snapshot_id': None,
|
||||
'snapshot_id': None,
|
||||
'service': 'cinder.fake.backup.service',
|
||||
'data_timestamp': None,
|
||||
'restore_volume_id': None,
|
||||
'backup_metadata': {}}
|
||||
|
||||
backup.update(kwargs)
|
||||
return backup
|
||||
|
||||
|
||||
def fake_backup_get(self, context, backup_id):
|
||||
if backup_id == fake.WILL_NOT_BE_FOUND_ID:
|
||||
raise exc.BackupNotFound(backup_id=backup_id)
|
||||
|
||||
return fake_backup(backup_id)
|
||||
|
||||
|
||||
# volume types
|
||||
|
||||
|
||||
def fake_volume_type_get(context, id, *args, **kwargs):
|
||||
return {'id': id,
|
||||
'name': 'vol_type_name',
|
||||
@@ -146,6 +265,12 @@ def fake_default_type_get(id=fake.VOLUME_TYPE_ID):
|
||||
'deleted': False}
|
||||
|
||||
|
||||
def fake_volume_type_name_get(context, id, *args, **kwargs):
|
||||
return fake_volume_type_get(context, id)['name'] or id
|
||||
|
||||
|
||||
# snapshots
|
||||
|
||||
def fake_snapshot(id, **kwargs):
|
||||
snapshot = {'id': id,
|
||||
'volume_id': fake.VOLUME_ID,
|
||||
@@ -159,3 +284,63 @@ def fake_snapshot(id, **kwargs):
|
||||
|
||||
snapshot.update(kwargs)
|
||||
return snapshot
|
||||
|
||||
|
||||
def fake_snapshot_get_all(context, filters=None, marker=None, limit=None,
|
||||
sort_keys=None, sort_dirs=None, offset=None):
|
||||
return [fake_snapshot(fake.VOLUME_ID, project_id=fake.PROJECT_ID),
|
||||
fake_snapshot(fake.VOLUME2_ID, project_id=fake.PROJECT2_ID),
|
||||
fake_snapshot(fake.VOLUME3_ID, project_id=fake.PROJECT3_ID)]
|
||||
|
||||
|
||||
def fake_snapshot_get_all_by_project(context, project_id, filters=None,
|
||||
marker=None, limit=None, sort_keys=None,
|
||||
sort_dirs=None, offset=None):
|
||||
return [fake_snapshot(fake.SNAPSHOT_ID)]
|
||||
|
||||
|
||||
def fake_snapshot_update(self, context, *args, **param):
|
||||
pass
|
||||
|
||||
|
||||
def fake_snapshot_get(self, context, snapshot_id):
|
||||
if snapshot_id == fake.WILL_NOT_BE_FOUND_ID:
|
||||
raise exc.SnapshotNotFound(snapshot_id=snapshot_id)
|
||||
|
||||
return fake_snapshot(snapshot_id)
|
||||
|
||||
|
||||
# services
|
||||
|
||||
def fake_service_get_all(*args, **kwargs):
|
||||
return [{'availability_zone': "zone1:host1", "disabled": 0,
|
||||
'uuid': 'a3a593da-7f8d-4bb7-8b4c-f2bc1e0b4824'}]
|
||||
|
||||
|
||||
def fake_service_get_all_by_topic(context, topic, disabled=None):
|
||||
return [{'availability_zone': "zone1:host1", "disabled": 0,
|
||||
'uuid': '4200b32b-0bf9-436c-86b2-0675f6ac218e'}]
|
||||
|
||||
|
||||
# misc
|
||||
|
||||
def fake_image_service_detail(self, context, **kwargs):
|
||||
filters = kwargs.get('filters', {'name': ''})
|
||||
if filters['name'] == "Fedora-x86_64-20-20140618-sda":
|
||||
return [{'id': "c905cedb-7281-47e4-8a62-f26bc5fc4c77"}]
|
||||
elif filters['name'] == "multi":
|
||||
return [{'id': "c905cedb-7281-47e4-8a62-f26bc5fc4c77"},
|
||||
{'id': "c905cedb-abcd-47e4-8a62-f26bc5fc4c77"}]
|
||||
return []
|
||||
|
||||
|
||||
def fake_consistencygroup_get_notfound(self, context, cg_id):
|
||||
raise exc.GroupNotFound(group_id=cg_id)
|
||||
|
||||
|
||||
def fake_volume_admin_metadata_get(context, volume_id, **kwargs):
|
||||
admin_meta = {'attached_mode': 'rw', 'readonly': 'False'}
|
||||
if kwargs.get('attach_status') == fields.VolumeAttachStatus.DETACHED:
|
||||
del admin_meta['attached_mode']
|
||||
|
||||
return admin_meta
|
||||
|
||||
@@ -35,7 +35,7 @@ from cinder import objects
|
||||
from cinder.objects import fields
|
||||
from cinder.scheduler import rpcapi as scheduler_rpcapi
|
||||
from cinder.tests.unit.api import fakes
|
||||
from cinder.tests.unit.api.v2 import fakes as v2_fakes
|
||||
from cinder.tests.unit.api.v3 import fakes as v3_fakes
|
||||
from cinder.tests.unit import fake_constants as fake
|
||||
from cinder.tests.unit import fake_snapshot
|
||||
from cinder.tests.unit import fake_volume
|
||||
@@ -116,7 +116,7 @@ class SnapshotApiTest(test.TestCase):
|
||||
super().setUp()
|
||||
self.mock_object(volume.api.API, 'get', fake_volume_get)
|
||||
self.mock_object(db.sqlalchemy.api, 'volume_type_get',
|
||||
v2_fakes.fake_volume_type_get)
|
||||
v3_fakes.fake_volume_type_get)
|
||||
self.patch('cinder.quota.QUOTAS.reserve')
|
||||
self.mock_object(scheduler_rpcapi.SchedulerAPI, 'create_snapshot')
|
||||
self.controller = snapshots.SnapshotsController()
|
||||
@@ -652,7 +652,7 @@ class SnapshotApiTestNoMicroversion(test.TestCase):
|
||||
db.volume_destroy(self.ctx, volume.id)
|
||||
|
||||
@mock.patch.object(volume.api.API, "update_snapshot",
|
||||
side_effect=v2_fakes.fake_snapshot_update)
|
||||
side_effect=v3_fakes.fake_snapshot_update)
|
||||
@mock.patch('cinder.db.snapshot_metadata_get', return_value=dict())
|
||||
@mock.patch('cinder.db.volume_get')
|
||||
@mock.patch('cinder.objects.Snapshot.get_by_id')
|
||||
@@ -700,7 +700,7 @@ class SnapshotApiTestNoMicroversion(test.TestCase):
|
||||
self.assertEqual(2, len(self.notifier.notifications))
|
||||
|
||||
@mock.patch.object(volume.api.API, "update_snapshot",
|
||||
side_effect=v2_fakes.fake_snapshot_update)
|
||||
side_effect=v3_fakes.fake_snapshot_update)
|
||||
@mock.patch('cinder.db.snapshot_metadata_get', return_value=dict())
|
||||
@mock.patch('cinder.db.volume_get')
|
||||
@mock.patch('cinder.objects.Snapshot.get_by_id')
|
||||
@@ -759,7 +759,7 @@ class SnapshotApiTestNoMicroversion(test.TestCase):
|
||||
req, 'not-the-uuid', body=body)
|
||||
|
||||
@mock.patch.object(volume.api.API, "update_snapshot",
|
||||
side_effect=v2_fakes.fake_snapshot_update)
|
||||
side_effect=v3_fakes.fake_snapshot_update)
|
||||
@mock.patch('cinder.db.snapshot_metadata_get', return_value=dict())
|
||||
@mock.patch('cinder.db.volume_get')
|
||||
@mock.patch('cinder.objects.Snapshot.get_by_id')
|
||||
@@ -807,7 +807,7 @@ class SnapshotApiTestNoMicroversion(test.TestCase):
|
||||
self.assertEqual(2, len(self.notifier.notifications))
|
||||
|
||||
@mock.patch.object(volume.api.API, "delete_snapshot",
|
||||
side_effect=v2_fakes.fake_snapshot_update)
|
||||
side_effect=v3_fakes.fake_snapshot_update)
|
||||
@mock.patch('cinder.db.snapshot_metadata_get', return_value=dict())
|
||||
@mock.patch('cinder.objects.Volume.get_by_id')
|
||||
@mock.patch('cinder.objects.Snapshot.get_by_id')
|
||||
@@ -908,9 +908,9 @@ class SnapshotApiTestNoMicroversion(test.TestCase):
|
||||
self.assertEqual(UUID, resp_snapshot['id'])
|
||||
|
||||
@mock.patch.object(db, 'snapshot_get_all_by_project',
|
||||
v2_fakes.fake_snapshot_get_all_by_project)
|
||||
v3_fakes.fake_snapshot_get_all_by_project)
|
||||
@mock.patch.object(db, 'snapshot_get_all',
|
||||
v2_fakes.fake_snapshot_get_all)
|
||||
v3_fakes.fake_snapshot_get_all)
|
||||
@mock.patch('cinder.db.snapshot_metadata_get', return_value=dict())
|
||||
def test_admin_list_snapshots_limited_to_project(self,
|
||||
snapshot_metadata_get):
|
||||
@@ -1095,9 +1095,9 @@ class SnapshotApiTestNoMicroversion(test.TestCase):
|
||||
self._assert_list_next(limit=1, marker=snaps[1].id)
|
||||
|
||||
@mock.patch.object(db, 'snapshot_get_all_by_project',
|
||||
v2_fakes.fake_snapshot_get_all_by_project)
|
||||
v3_fakes.fake_snapshot_get_all_by_project)
|
||||
@mock.patch.object(db, 'snapshot_get_all',
|
||||
v2_fakes.fake_snapshot_get_all)
|
||||
v3_fakes.fake_snapshot_get_all)
|
||||
@mock.patch('cinder.db.snapshot_metadata_get', return_value=dict())
|
||||
def test_admin_list_snapshots_all_tenants(self, snapshot_metadata_get):
|
||||
req = fakes.HTTPRequest.blank('/v3/%s/snapshots?all_tenants=1' %
|
||||
@@ -1114,7 +1114,7 @@ class SnapshotApiTestNoMicroversion(test.TestCase):
|
||||
def get_all(context, filters=None, marker=None, limit=None,
|
||||
sort_keys=None, sort_dirs=None, offset=None):
|
||||
if 'project_id' in filters and 'tenant1' in filters['project_id']:
|
||||
return [v2_fakes.fake_snapshot(fake.VOLUME_ID,
|
||||
return [v3_fakes.fake_snapshot(fake.VOLUME_ID,
|
||||
tenant_id='tenant1')]
|
||||
else:
|
||||
return []
|
||||
@@ -1129,7 +1129,7 @@ class SnapshotApiTestNoMicroversion(test.TestCase):
|
||||
self.assertEqual(1, len(res['snapshots']))
|
||||
|
||||
@mock.patch.object(db, 'snapshot_get_all_by_project',
|
||||
v2_fakes.fake_snapshot_get_all_by_project)
|
||||
v3_fakes.fake_snapshot_get_all_by_project)
|
||||
@mock.patch('cinder.db.snapshot_metadata_get', return_value=dict())
|
||||
def test_all_tenants_non_admin_gets_all_tenants(self,
|
||||
snapshot_metadata_get):
|
||||
@@ -1140,9 +1140,9 @@ class SnapshotApiTestNoMicroversion(test.TestCase):
|
||||
self.assertEqual(1, len(res['snapshots']))
|
||||
|
||||
@mock.patch.object(db, 'snapshot_get_all_by_project',
|
||||
v2_fakes.fake_snapshot_get_all_by_project)
|
||||
v3_fakes.fake_snapshot_get_all_by_project)
|
||||
@mock.patch.object(db, 'snapshot_get_all',
|
||||
v2_fakes.fake_snapshot_get_all)
|
||||
v3_fakes.fake_snapshot_get_all)
|
||||
@mock.patch('cinder.db.snapshot_metadata_get', return_value=dict())
|
||||
def test_non_admin_get_by_project(self, snapshot_metadata_get):
|
||||
req = fakes.HTTPRequest.blank('/v3/%s/snapshots' % fake.PROJECT_ID)
|
||||
|
||||
@@ -29,7 +29,7 @@ from cinder import objects
|
||||
from cinder.objects import base as obj_base
|
||||
from cinder.scheduler import rpcapi as scheduler_rpcapi
|
||||
from cinder.tests.unit.api import fakes
|
||||
from cinder.tests.unit.api.v2 import fakes as v2_fakes
|
||||
from cinder.tests.unit.api.v3 import fakes as v3_fakes
|
||||
from cinder.tests.unit import fake_constants as fake
|
||||
from cinder.tests.unit import fake_volume
|
||||
from cinder.tests.unit import test
|
||||
@@ -123,7 +123,7 @@ class BaseVolumeMetadataTest(test.TestCase):
|
||||
return_volume_metadata)
|
||||
self.patch(
|
||||
'cinder.db.service_get_all', autospec=True,
|
||||
return_value=v2_fakes.fake_service_get_all_by_topic(None, None))
|
||||
return_value=v3_fakes.fake_service_get_all_by_topic(None, None))
|
||||
|
||||
self.mock_object(self.volume_api, 'update_volume_metadata',
|
||||
fake_update_volume_metadata)
|
||||
|
||||
@@ -31,7 +31,7 @@ from cinder import exception
|
||||
from cinder.objects import fields
|
||||
from cinder import quota
|
||||
from cinder.tests.unit.api import fakes
|
||||
from cinder.tests.unit.api.v2 import fakes as v2_fakes
|
||||
from cinder.tests.unit.api.v3 import fakes as v3_fakes
|
||||
from cinder.tests.unit import fake_constants as fake
|
||||
from cinder.tests.unit import test
|
||||
from cinder.tests.unit import utils as test_utils
|
||||
@@ -330,7 +330,7 @@ class VolumeTransferAPITestCase(test.TestCase):
|
||||
volume_id)['status'], 'available')
|
||||
|
||||
@mock.patch.object(quota.QUOTAS, 'reserve')
|
||||
@mock.patch.object(db, 'volume_type_get', v2_fakes.fake_volume_type_get)
|
||||
@mock.patch.object(db, 'volume_type_get', v3_fakes.fake_volume_type_get)
|
||||
def test_accept_transfer_volume_id_specified(self, type_get):
|
||||
volume_id = self._create_volume()
|
||||
transfer = self.volume_transfer_api.create(context.get_admin_context(),
|
||||
|
||||
@@ -42,7 +42,7 @@ from cinder import objects
|
||||
from cinder.objects import fields
|
||||
from cinder.policies import volumes as policy
|
||||
from cinder.tests.unit.api import fakes
|
||||
from cinder.tests.unit.api.v2 import fakes as v2_fakes
|
||||
from cinder.tests.unit.api.v3 import fakes as v3_fakes
|
||||
from cinder.tests.unit import fake_constants as fake
|
||||
from cinder.tests.unit import fake_volume
|
||||
from cinder.tests.unit.image import fake as fake_image
|
||||
@@ -95,9 +95,9 @@ class BaseVolumeTest(test.TestCase):
|
||||
@classmethod
|
||||
def _vol_in_request_body(
|
||||
cls,
|
||||
size=v2_fakes.DEFAULT_VOL_SIZE,
|
||||
name=v2_fakes.DEFAULT_VOL_NAME,
|
||||
description=v2_fakes.DEFAULT_VOL_DESCRIPTION,
|
||||
size=v3_fakes.DEFAULT_VOL_SIZE,
|
||||
name=v3_fakes.DEFAULT_VOL_NAME,
|
||||
description=v3_fakes.DEFAULT_VOL_DESCRIPTION,
|
||||
availability_zone=DEFAULT_AZ,
|
||||
snapshot_id=None,
|
||||
source_volid=None,
|
||||
@@ -315,7 +315,7 @@ class VolumeApiTest(BaseVolumeTest):
|
||||
self._create_multiple_volumes_with_different_project()
|
||||
|
||||
self.mock_object(view.ViewBuilder, '_get_volume_type',
|
||||
v2_fakes.fake_volume_type_name_get)
|
||||
v3_fakes.fake_volume_type_name_get)
|
||||
is_detail = True if 'detail' in method else False
|
||||
show_count = strutils.bool_from_string(display_param, strict=True)
|
||||
# Request with 'with_count' and 'limit'
|
||||
@@ -366,7 +366,7 @@ class VolumeApiTest(BaseVolumeTest):
|
||||
test_utils.create_volume(self.ctxt, metadata=metadata)
|
||||
|
||||
self.mock_object(view.ViewBuilder, '_get_volume_type',
|
||||
v2_fakes.fake_volume_type_name_get)
|
||||
v3_fakes.fake_volume_type_name_get)
|
||||
# Request with 'all_tenants' and 'metadata'
|
||||
req = fakes.HTTPRequest.blank(
|
||||
"/v3/volumes/detail?all_tenants=1"
|
||||
@@ -382,7 +382,7 @@ class VolumeApiTest(BaseVolumeTest):
|
||||
test_utils.create_volume(self.ctxt)
|
||||
|
||||
self.mock_object(view.ViewBuilder, '_get_volume_type',
|
||||
v2_fakes.fake_volume_type_name_get)
|
||||
v3_fakes.fake_volume_type_name_get)
|
||||
|
||||
req = fakes.HTTPRequest.blank(
|
||||
"/v3/volumes/detail?all_tenants=1"
|
||||
@@ -463,9 +463,9 @@ class VolumeApiTest(BaseVolumeTest):
|
||||
'cinder.api.openstack.wsgi.Controller.validate_name_and_description')
|
||||
def test_volume_create_with_snapshot_image(self, mock_validate, create,
|
||||
get_snapshot, volume_type_get):
|
||||
create.side_effect = v2_fakes.fake_volume_api_create
|
||||
get_snapshot.side_effect = v2_fakes.fake_snapshot_get
|
||||
volume_type_get.side_effect = v2_fakes.fake_volume_type_get
|
||||
create.side_effect = v3_fakes.fake_volume_api_create
|
||||
get_snapshot.side_effect = v3_fakes.fake_snapshot_get
|
||||
volume_type_get.side_effect = v3_fakes.fake_volume_type_get
|
||||
|
||||
vol = self._vol_in_request_body(
|
||||
image_id="b0a599e0-41d7-3582-b260-769f443c862a")
|
||||
@@ -482,11 +482,11 @@ class VolumeApiTest(BaseVolumeTest):
|
||||
get_snapshot.assert_called_once_with(self.controller.volume_api,
|
||||
context, snapshot_id)
|
||||
kwargs = self._expected_volume_api_create_kwargs(
|
||||
v2_fakes.fake_snapshot(snapshot_id))
|
||||
v3_fakes.fake_snapshot(snapshot_id))
|
||||
create.assert_called_once_with(
|
||||
self.controller.volume_api, context,
|
||||
vol['size'], v2_fakes.DEFAULT_VOL_NAME,
|
||||
v2_fakes.DEFAULT_VOL_DESCRIPTION,
|
||||
vol['size'], v3_fakes.DEFAULT_VOL_NAME,
|
||||
v3_fakes.DEFAULT_VOL_DESCRIPTION,
|
||||
**kwargs)
|
||||
|
||||
def test_volumes_summary_in_unsupport_version(self):
|
||||
@@ -577,17 +577,17 @@ class VolumeApiTest(BaseVolumeTest):
|
||||
|
||||
def _expected_vol_from_controller(
|
||||
self,
|
||||
size=v2_fakes.DEFAULT_VOL_SIZE,
|
||||
size=v3_fakes.DEFAULT_VOL_SIZE,
|
||||
availability_zone=DEFAULT_AZ,
|
||||
description=v2_fakes.DEFAULT_VOL_DESCRIPTION,
|
||||
name=v2_fakes.DEFAULT_VOL_NAME,
|
||||
description=v3_fakes.DEFAULT_VOL_DESCRIPTION,
|
||||
name=v3_fakes.DEFAULT_VOL_NAME,
|
||||
consistencygroup_id=None,
|
||||
source_volid=None,
|
||||
snapshot_id=None,
|
||||
metadata=None,
|
||||
attachments=None,
|
||||
volume_type=v2_fakes.DEFAULT_VOL_TYPE,
|
||||
status=v2_fakes.DEFAULT_VOL_STATUS,
|
||||
volume_type=v3_fakes.DEFAULT_VOL_TYPE,
|
||||
status=v3_fakes.DEFAULT_VOL_STATUS,
|
||||
with_migration_status=False,
|
||||
group_id=None,
|
||||
req_version=None):
|
||||
@@ -604,7 +604,7 @@ class VolumeApiTest(BaseVolumeTest):
|
||||
'updated_at': datetime.datetime(
|
||||
1900, 1, 1, 1, 1, 1, tzinfo=iso8601.UTC),
|
||||
'description': description,
|
||||
'id': v2_fakes.DEFAULT_VOL_ID,
|
||||
'id': v3_fakes.DEFAULT_VOL_ID,
|
||||
'links':
|
||||
[{'href': 'http://localhost/v3/%s/volumes/%s' % (
|
||||
fake.PROJECT_ID, fake.VOLUME_ID),
|
||||
@@ -673,11 +673,11 @@ class VolumeApiTest(BaseVolumeTest):
|
||||
'status': 'confused'}))
|
||||
@ddt.unpack
|
||||
def test_volume_create(self, max_ver, volume_body):
|
||||
self.mock_object(volume_api.API, 'get', v2_fakes.fake_volume_get)
|
||||
self.mock_object(volume_api.API, 'get', v3_fakes.fake_volume_get)
|
||||
self.mock_object(volume_api.API, "create",
|
||||
v2_fakes.fake_volume_api_create)
|
||||
v3_fakes.fake_volume_api_create)
|
||||
self.mock_object(db.sqlalchemy.api, '_volume_type_get_full',
|
||||
v2_fakes.fake_volume_type_get)
|
||||
v3_fakes.fake_volume_type_get)
|
||||
|
||||
req = fakes.HTTPRequest.blank('/v3/volumes')
|
||||
req.api_version_request = mv.get_api_version(max_ver)
|
||||
@@ -693,11 +693,11 @@ class VolumeApiTest(BaseVolumeTest):
|
||||
res_dict['volume']['description'])
|
||||
|
||||
def test_volume_create_extra_params(self):
|
||||
self.mock_object(volume_api.API, 'get', v2_fakes.fake_volume_get)
|
||||
self.mock_object(volume_api.API, 'get', v3_fakes.fake_volume_get)
|
||||
self.mock_object(volume_api.API, "create",
|
||||
v2_fakes.fake_volume_api_create)
|
||||
v3_fakes.fake_volume_api_create)
|
||||
self.mock_object(db.sqlalchemy.api, '_volume_type_get_full',
|
||||
v2_fakes.fake_volume_type_get)
|
||||
v3_fakes.fake_volume_type_get)
|
||||
|
||||
req = fakes.HTTPRequest.blank('/v3/volumes')
|
||||
req.api_version_request = mv.get_api_version(
|
||||
@@ -747,9 +747,9 @@ class VolumeApiTest(BaseVolumeTest):
|
||||
@mock.patch.object(volume_api.API, 'create', autospec=True)
|
||||
def test_volume_creation_from_snapshot(self, max_ver, create, get_snapshot,
|
||||
volume_type_get, group_get):
|
||||
create.side_effect = v2_fakes.fake_volume_api_create
|
||||
get_snapshot.side_effect = v2_fakes.fake_snapshot_get
|
||||
volume_type_get.side_effect = v2_fakes.fake_volume_type_get
|
||||
create.side_effect = v3_fakes.fake_volume_api_create
|
||||
get_snapshot.side_effect = v3_fakes.fake_snapshot_get
|
||||
volume_type_get.side_effect = v3_fakes.fake_volume_type_get
|
||||
|
||||
fake_group = {
|
||||
'id': fake.GROUP_ID,
|
||||
@@ -775,13 +775,13 @@ class VolumeApiTest(BaseVolumeTest):
|
||||
context, snapshot_id)
|
||||
|
||||
kwargs = self._expected_volume_api_create_kwargs(
|
||||
v2_fakes.fake_snapshot(snapshot_id),
|
||||
v3_fakes.fake_snapshot(snapshot_id),
|
||||
test_group=fake_group,
|
||||
req_version=req.api_version_request)
|
||||
create.assert_called_once_with(
|
||||
self.controller.volume_api, context,
|
||||
vol['size'], v2_fakes.DEFAULT_VOL_NAME,
|
||||
v2_fakes.DEFAULT_VOL_DESCRIPTION,
|
||||
vol['size'], v3_fakes.DEFAULT_VOL_NAME,
|
||||
v3_fakes.DEFAULT_VOL_DESCRIPTION,
|
||||
**kwargs)
|
||||
|
||||
@ddt.data(mv.VOLUME_CREATE_FROM_BACKUP,
|
||||
@@ -792,9 +792,9 @@ class VolumeApiTest(BaseVolumeTest):
|
||||
@mock.patch.object(volume_api.API, 'create', autospec=True)
|
||||
def test_volume_creation_from_backup(self, max_ver, create, get_backup,
|
||||
volume_type_get):
|
||||
create.side_effect = v2_fakes.fake_volume_api_create
|
||||
get_backup.side_effect = v2_fakes.fake_backup_get
|
||||
volume_type_get.side_effect = v2_fakes.fake_volume_type_get
|
||||
create.side_effect = v3_fakes.fake_volume_api_create
|
||||
get_backup.side_effect = v3_fakes.fake_backup_get
|
||||
volume_type_get.side_effect = v3_fakes.fake_volume_type_get
|
||||
|
||||
backup_id = fake.BACKUP_ID
|
||||
req = fakes.HTTPRequest.blank('/v3/%s/volumes' % fake.PROJECT_ID)
|
||||
@@ -815,13 +815,13 @@ class VolumeApiTest(BaseVolumeTest):
|
||||
if max_ver >= mv.VOLUME_CREATE_FROM_BACKUP:
|
||||
get_backup.assert_called_once_with(self.controller.backup_api,
|
||||
context, backup_id)
|
||||
kwargs.update({'backup': v2_fakes.fake_backup_get(None, context,
|
||||
kwargs.update({'backup': v3_fakes.fake_backup_get(None, context,
|
||||
backup_id)})
|
||||
create.assert_called_once_with(
|
||||
self.controller.volume_api, context,
|
||||
vol['size'],
|
||||
v2_fakes.DEFAULT_VOL_NAME,
|
||||
v2_fakes.DEFAULT_VOL_DESCRIPTION,
|
||||
v3_fakes.DEFAULT_VOL_NAME,
|
||||
v3_fakes.DEFAULT_VOL_DESCRIPTION,
|
||||
**kwargs)
|
||||
|
||||
def test_volume_creation_with_scheduler_hints(self):
|
||||
@@ -926,9 +926,9 @@ class VolumeApiTest(BaseVolumeTest):
|
||||
'version': mv.get_prior_version(mv.VOLUME_DETAIL_PROVIDER_ID)})
|
||||
@ddt.unpack
|
||||
def test_volume_show_provider_id(self, admin, version):
|
||||
self.mock_object(volume_api.API, 'get', v2_fakes.fake_volume_api_get)
|
||||
self.mock_object(volume_api.API, 'get', v3_fakes.fake_volume_api_get)
|
||||
self.mock_object(db.sqlalchemy.api, '_volume_type_get_full',
|
||||
v2_fakes.fake_volume_type_get)
|
||||
v3_fakes.fake_volume_type_get)
|
||||
|
||||
req = fakes.HTTPRequest.blank('/v3/volumes/%s' % fake.VOLUME_ID,
|
||||
version=version)
|
||||
@@ -1258,7 +1258,7 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
self.mock_object(objects.VolumeType, 'get_by_id',
|
||||
self.fake_volume_type_get)
|
||||
self.mock_object(view.ViewBuilder, '_get_volume_type',
|
||||
v2_fakes.fake_volume_type_name_get)
|
||||
v3_fakes.fake_volume_type_name_get)
|
||||
|
||||
def fake_volume_type_get(self, context, id, *args, **kwargs):
|
||||
return {'id': id,
|
||||
@@ -1276,11 +1276,11 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
@mock.patch(
|
||||
'cinder.api.openstack.wsgi.Controller.validate_name_and_description')
|
||||
def test_volume_create(self, mock_validate):
|
||||
self.mock_object(volume_api.API, 'get', v2_fakes.fake_volume_get)
|
||||
self.mock_object(volume_api.API, 'get', v3_fakes.fake_volume_get)
|
||||
self.mock_object(volume_api.API, "create",
|
||||
v2_fakes.fake_volume_api_create)
|
||||
v3_fakes.fake_volume_api_create)
|
||||
self.mock_object(db.sqlalchemy.api, '_volume_type_get_full',
|
||||
v2_fakes.fake_volume_type_get)
|
||||
v3_fakes.fake_volume_type_get)
|
||||
|
||||
vol = self._vol_in_request_body()
|
||||
body = {"volume": vol}
|
||||
@@ -1290,9 +1290,9 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
self.assertEqual(ex, res_dict)
|
||||
self.assertTrue(mock_validate.called)
|
||||
|
||||
@mock.patch.object(db, 'volume_get_all', v2_fakes.fake_volume_get_all)
|
||||
@mock.patch.object(db, 'volume_get_all', v3_fakes.fake_volume_get_all)
|
||||
@mock.patch.object(db, 'service_get_all',
|
||||
return_value=v2_fakes.fake_service_get_all_by_topic(
|
||||
return_value=v3_fakes.fake_service_get_all_by_topic(
|
||||
None, None),
|
||||
autospec=True)
|
||||
@mock.patch(
|
||||
@@ -1322,7 +1322,7 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
volume_id = res_dict['volume']['id']
|
||||
self.assertEqual(1, len(res_dict))
|
||||
|
||||
vol_db = v2_fakes.create_fake_volume(
|
||||
vol_db = v3_fakes.create_volume(
|
||||
volume_id,
|
||||
volume_type={'name': db_vol_type['name']})
|
||||
vol_obj = fake_volume.fake_volume_obj(context.get_admin_context(),
|
||||
@@ -1333,16 +1333,16 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
# cinder.db.sqlalchemy.api caches the real get method.
|
||||
db.sqlalchemy.api._GET_METHODS = {}
|
||||
self.mock_object(db.sqlalchemy.api, '_volume_type_get_full',
|
||||
v2_fakes.fake_volume_type_get)
|
||||
v3_fakes.fake_volume_type_get)
|
||||
req = fakes.HTTPRequest.blank('/v3/volumes/detail')
|
||||
res_dict = self.controller.detail(req)
|
||||
self.assertTrue(mock_validate.called)
|
||||
|
||||
@classmethod
|
||||
def _vol_in_request_body(cls,
|
||||
size=v2_fakes.DEFAULT_VOL_SIZE,
|
||||
name=v2_fakes.DEFAULT_VOL_NAME,
|
||||
description=v2_fakes.DEFAULT_VOL_DESCRIPTION,
|
||||
size=v3_fakes.DEFAULT_VOL_SIZE,
|
||||
name=v3_fakes.DEFAULT_VOL_NAME,
|
||||
description=v3_fakes.DEFAULT_VOL_DESCRIPTION,
|
||||
availability_zone=DEFAULT_AZ,
|
||||
snapshot_id=None,
|
||||
source_volid=None,
|
||||
@@ -1369,17 +1369,17 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
|
||||
def _expected_vol_from_controller(
|
||||
self,
|
||||
size=v2_fakes.DEFAULT_VOL_SIZE,
|
||||
size=v3_fakes.DEFAULT_VOL_SIZE,
|
||||
availability_zone=DEFAULT_AZ,
|
||||
description=v2_fakes.DEFAULT_VOL_DESCRIPTION,
|
||||
name=v2_fakes.DEFAULT_VOL_NAME,
|
||||
description=v3_fakes.DEFAULT_VOL_DESCRIPTION,
|
||||
name=v3_fakes.DEFAULT_VOL_NAME,
|
||||
consistencygroup_id=None,
|
||||
source_volid=None,
|
||||
snapshot_id=None,
|
||||
metadata=None,
|
||||
attachments=None,
|
||||
volume_type=v2_fakes.DEFAULT_VOL_TYPE,
|
||||
status=v2_fakes.DEFAULT_VOL_STATUS,
|
||||
volume_type=v3_fakes.DEFAULT_VOL_TYPE,
|
||||
status=v3_fakes.DEFAULT_VOL_STATUS,
|
||||
with_migration_status=False,
|
||||
multiattach=False):
|
||||
metadata = metadata or {}
|
||||
@@ -1394,7 +1394,7 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
'updated_at': datetime.datetime(
|
||||
1900, 1, 1, 1, 1, 1, tzinfo=iso8601.UTC),
|
||||
'description': description,
|
||||
'id': v2_fakes.DEFAULT_VOL_ID,
|
||||
'id': v3_fakes.DEFAULT_VOL_ID,
|
||||
'links':
|
||||
[{'href': 'http://localhost/v3/volumes/%s' % (
|
||||
fake.VOLUME_ID),
|
||||
@@ -1437,9 +1437,9 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
@mock.patch.object(volume_api.API, 'create', autospec=True)
|
||||
def test_volume_creation_from_snapshot(self, create, get_snapshot,
|
||||
volume_type_get):
|
||||
create.side_effect = v2_fakes.fake_volume_api_create
|
||||
get_snapshot.side_effect = v2_fakes.fake_snapshot_get
|
||||
volume_type_get.side_effect = v2_fakes.fake_volume_type_get
|
||||
create.side_effect = v3_fakes.fake_volume_api_create
|
||||
get_snapshot.side_effect = v3_fakes.fake_snapshot_get
|
||||
volume_type_get.side_effect = v3_fakes.fake_volume_type_get
|
||||
|
||||
snapshot_id = fake.SNAPSHOT_ID
|
||||
vol = self._vol_in_request_body(snapshot_id=snapshot_id)
|
||||
@@ -1455,17 +1455,17 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
context, snapshot_id)
|
||||
|
||||
kwargs = self._expected_volume_api_create_kwargs(
|
||||
v2_fakes.fake_snapshot(snapshot_id))
|
||||
v3_fakes.fake_snapshot(snapshot_id))
|
||||
create.assert_called_once_with(
|
||||
self.controller.volume_api, context,
|
||||
vol['size'], v2_fakes.DEFAULT_VOL_NAME,
|
||||
v2_fakes.DEFAULT_VOL_DESCRIPTION,
|
||||
vol['size'], v3_fakes.DEFAULT_VOL_NAME,
|
||||
v3_fakes.DEFAULT_VOL_DESCRIPTION,
|
||||
**kwargs)
|
||||
|
||||
@mock.patch.object(volume_api.API, 'get_snapshot', autospec=True)
|
||||
def test_volume_creation_fails_with_invalid_snapshot(self, get_snapshot):
|
||||
|
||||
get_snapshot.side_effect = v2_fakes.fake_snapshot_get
|
||||
get_snapshot.side_effect = v3_fakes.fake_snapshot_get
|
||||
|
||||
snapshot_id = fake.WILL_NOT_BE_FOUND_ID
|
||||
vol = self._vol_in_request_body(snapshot_id=snapshot_id)
|
||||
@@ -1496,9 +1496,9 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
@mock.patch.object(volume_api.API, 'create', autospec=True)
|
||||
def test_volume_creation_from_source_volume(self, create, get_volume,
|
||||
volume_type_get):
|
||||
get_volume.side_effect = v2_fakes.fake_volume_api_get
|
||||
create.side_effect = v2_fakes.fake_volume_api_create
|
||||
volume_type_get.side_effect = v2_fakes.fake_volume_type_get
|
||||
get_volume.side_effect = v3_fakes.fake_volume_api_get
|
||||
create.side_effect = v3_fakes.fake_volume_api_create
|
||||
volume_type_get.side_effect = v3_fakes.fake_volume_type_get
|
||||
|
||||
source_volid = '2f49aa3a-6aae-488d-8b99-a43271605af6'
|
||||
vol = self._vol_in_request_body(source_volid=source_volid)
|
||||
@@ -1513,21 +1513,21 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
get_volume.assert_called_once_with(self.controller.volume_api,
|
||||
context, source_volid)
|
||||
|
||||
db_vol = v2_fakes.create_fake_volume(source_volid)
|
||||
db_vol = v3_fakes.create_volume(source_volid)
|
||||
vol_obj = fake_volume.fake_volume_obj(context, **db_vol)
|
||||
kwargs = self._expected_volume_api_create_kwargs(
|
||||
source_volume=vol_obj)
|
||||
create.assert_called_once_with(
|
||||
self.controller.volume_api, context,
|
||||
vol['size'], v2_fakes.DEFAULT_VOL_NAME,
|
||||
v2_fakes.DEFAULT_VOL_DESCRIPTION,
|
||||
vol['size'], v3_fakes.DEFAULT_VOL_NAME,
|
||||
v3_fakes.DEFAULT_VOL_DESCRIPTION,
|
||||
**kwargs)
|
||||
|
||||
@mock.patch.object(volume_api.API, 'get_volume', autospec=True)
|
||||
def test_volume_creation_fails_with_invalid_source_volume(self,
|
||||
get_volume):
|
||||
|
||||
get_volume.side_effect = v2_fakes.fake_volume_get_notfound
|
||||
get_volume.side_effect = v3_fakes.fake_volume_get_notfound
|
||||
|
||||
source_volid = fake.VOLUME_ID
|
||||
vol = self._vol_in_request_body(source_volid=source_volid)
|
||||
@@ -1558,7 +1558,7 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
def test_volume_creation_fails_with_invalid_consistency_group(self,
|
||||
get_cg):
|
||||
|
||||
get_cg.side_effect = v2_fakes.fake_consistencygroup_get_notfound
|
||||
get_cg.side_effect = v3_fakes.fake_consistencygroup_get_notfound
|
||||
|
||||
consistencygroup_id = '4f49aa3a-6aae-488d-8b99-a43271605af6'
|
||||
vol = self._vol_in_request_body(
|
||||
@@ -1594,9 +1594,9 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
'cinder.api.openstack.wsgi.Controller.validate_name_and_description')
|
||||
def test_volume_create_with_image_ref(self, mock_validate):
|
||||
self.mock_object(volume_api.API, "create",
|
||||
v2_fakes.fake_volume_api_create)
|
||||
v3_fakes.fake_volume_api_create)
|
||||
self.mock_object(db.sqlalchemy.api, '_volume_type_get_full',
|
||||
v2_fakes.fake_volume_type_get)
|
||||
v3_fakes.fake_volume_type_get)
|
||||
|
||||
vol = self._vol_in_request_body(
|
||||
availability_zone="nova",
|
||||
@@ -1609,7 +1609,7 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
self.assertTrue(mock_validate.called)
|
||||
|
||||
def test_volume_create_with_image_ref_is_integer(self):
|
||||
self.mock_object(volume_api.API, "create", v2_fakes.fake_volume_create)
|
||||
self.mock_object(volume_api.API, "create", v3_fakes.fake_volume_create)
|
||||
vol = self._vol_in_request_body(availability_zone="cinder",
|
||||
image_ref=1234)
|
||||
body = {"volume": vol}
|
||||
@@ -1620,10 +1620,10 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
body=body)
|
||||
|
||||
def test_volume_create_with_image_ref_not_uuid_format(self):
|
||||
self.mock_object(volume_api.API, "create", v2_fakes.fake_volume_create)
|
||||
self.mock_object(volume_api.API, "create", v3_fakes.fake_volume_create)
|
||||
self.mock_object(fake_image._FakeImageService,
|
||||
"detail",
|
||||
v2_fakes.fake_image_service_detail)
|
||||
v3_fakes.fake_image_service_detail)
|
||||
vol = self._vol_in_request_body(availability_zone="cinder",
|
||||
image_ref="12345")
|
||||
body = {"volume": vol}
|
||||
@@ -1634,10 +1634,10 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
body=body)
|
||||
|
||||
def test_volume_create_with_image_ref_with_empty_string(self):
|
||||
self.mock_object(volume_api.API, "create", v2_fakes.fake_volume_create)
|
||||
self.mock_object(volume_api.API, "create", v3_fakes.fake_volume_create)
|
||||
self.mock_object(fake_image._FakeImageService,
|
||||
"detail",
|
||||
v2_fakes.fake_image_service_detail)
|
||||
v3_fakes.fake_image_service_detail)
|
||||
vol = self._vol_in_request_body(availability_zone="cinder",
|
||||
image_ref="")
|
||||
body = {"volume": vol}
|
||||
@@ -1651,9 +1651,9 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
'cinder.api.openstack.wsgi.Controller.validate_name_and_description')
|
||||
def test_volume_create_with_image_id(self, mock_validate):
|
||||
self.mock_object(volume_api.API, "create",
|
||||
v2_fakes.fake_volume_api_create)
|
||||
v3_fakes.fake_volume_api_create)
|
||||
self.mock_object(db.sqlalchemy.api, '_volume_type_get_full',
|
||||
v2_fakes.fake_volume_type_get)
|
||||
v3_fakes.fake_volume_type_get)
|
||||
|
||||
vol = self._vol_in_request_body(
|
||||
availability_zone="nova",
|
||||
@@ -1666,7 +1666,7 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
self.assertTrue(mock_validate.called)
|
||||
|
||||
def test_volume_create_with_image_id_is_integer(self):
|
||||
self.mock_object(volume_api.API, "create", v2_fakes.fake_volume_create)
|
||||
self.mock_object(volume_api.API, "create", v3_fakes.fake_volume_create)
|
||||
vol = self._vol_in_request_body(availability_zone="cinder",
|
||||
image_id=1234)
|
||||
body = {"volume": vol}
|
||||
@@ -1677,10 +1677,10 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
body=body)
|
||||
|
||||
def test_volume_create_with_image_id_not_uuid_format(self):
|
||||
self.mock_object(volume_api.API, "create", v2_fakes.fake_volume_create)
|
||||
self.mock_object(volume_api.API, "create", v3_fakes.fake_volume_create)
|
||||
self.mock_object(fake_image._FakeImageService,
|
||||
"detail",
|
||||
v2_fakes.fake_image_service_detail)
|
||||
v3_fakes.fake_image_service_detail)
|
||||
vol = self._vol_in_request_body(availability_zone="cinder",
|
||||
image_id="12345")
|
||||
body = {"volume": vol}
|
||||
@@ -1691,10 +1691,10 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
body=body)
|
||||
|
||||
def test_volume_create_with_image_id_with_empty_string(self):
|
||||
self.mock_object(volume_api.API, "create", v2_fakes.fake_volume_create)
|
||||
self.mock_object(volume_api.API, "create", v3_fakes.fake_volume_create)
|
||||
self.mock_object(fake_image._FakeImageService,
|
||||
"detail",
|
||||
v2_fakes.fake_image_service_detail)
|
||||
v3_fakes.fake_image_service_detail)
|
||||
vol = self._vol_in_request_body(availability_zone="cinder",
|
||||
image_id="")
|
||||
body = {"volume": vol}
|
||||
@@ -1708,12 +1708,12 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
'cinder.api.openstack.wsgi.Controller.validate_name_and_description')
|
||||
def test_volume_create_with_image_name(self, mock_validate):
|
||||
self.mock_object(volume_api.API, "create",
|
||||
v2_fakes.fake_volume_api_create)
|
||||
v3_fakes.fake_volume_api_create)
|
||||
self.mock_object(db.sqlalchemy.api, '_volume_type_get_full',
|
||||
v2_fakes.fake_volume_type_get)
|
||||
v3_fakes.fake_volume_type_get)
|
||||
self.mock_object(fake_image._FakeImageService,
|
||||
"detail",
|
||||
v2_fakes.fake_image_service_detail)
|
||||
v3_fakes.fake_image_service_detail)
|
||||
|
||||
test_id = "Fedora-x86_64-20-20140618-sda"
|
||||
vol = self._vol_in_request_body(availability_zone="nova",
|
||||
@@ -1725,11 +1725,11 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
self.assertEqual(ex, res_dict)
|
||||
|
||||
def test_volume_create_with_image_name_has_multiple(self):
|
||||
self.mock_object(db, 'volume_get', v2_fakes.fake_volume_get_db)
|
||||
self.mock_object(volume_api.API, "create", v2_fakes.fake_volume_create)
|
||||
self.mock_object(db, 'volume_get', v3_fakes.fake_volume_get_db)
|
||||
self.mock_object(volume_api.API, "create", v3_fakes.fake_volume_create)
|
||||
self.mock_object(fake_image._FakeImageService,
|
||||
"detail",
|
||||
v2_fakes.fake_image_service_detail)
|
||||
v3_fakes.fake_image_service_detail)
|
||||
|
||||
test_id = "multi"
|
||||
vol = self._vol_in_request_body(availability_zone="nova",
|
||||
@@ -1742,11 +1742,11 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
body=body)
|
||||
|
||||
def test_volume_create_with_image_name_no_match(self):
|
||||
self.mock_object(db, 'volume_get', v2_fakes.fake_volume_get_db)
|
||||
self.mock_object(volume_api.API, "create", v2_fakes.fake_volume_create)
|
||||
self.mock_object(db, 'volume_get', v3_fakes.fake_volume_get_db)
|
||||
self.mock_object(volume_api.API, "create", v3_fakes.fake_volume_create)
|
||||
self.mock_object(fake_image._FakeImageService,
|
||||
"detail",
|
||||
v2_fakes.fake_image_service_detail)
|
||||
v3_fakes.fake_image_service_detail)
|
||||
|
||||
test_id = "MissingName"
|
||||
vol = self._vol_in_request_body(availability_zone="nova",
|
||||
@@ -1778,10 +1778,10 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
{"name": " test name ",
|
||||
"description": " test description "})
|
||||
def test_volume_update(self, body):
|
||||
self.mock_object(volume_api.API, 'get', v2_fakes.fake_volume_api_get)
|
||||
self.mock_object(volume_api.API, "update", v2_fakes.fake_volume_update)
|
||||
self.mock_object(volume_api.API, 'get', v3_fakes.fake_volume_api_get)
|
||||
self.mock_object(volume_api.API, "update", v3_fakes.fake_volume_update)
|
||||
self.mock_object(db.sqlalchemy.api, '_volume_type_get_full',
|
||||
v2_fakes.fake_volume_type_get)
|
||||
v3_fakes.fake_volume_type_get)
|
||||
updates = {
|
||||
"name": body['name'],
|
||||
"description": body['description']
|
||||
@@ -1792,7 +1792,7 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
name = updates["name"].strip()
|
||||
description = updates["description"].strip()
|
||||
expected = self._expected_vol_from_controller(
|
||||
availability_zone=v2_fakes.DEFAULT_AZ, name=name,
|
||||
availability_zone=v3_fakes.DEFAULT_AZ, name=name,
|
||||
description=description,
|
||||
metadata={'attached_mode': 'rw', 'readonly': 'False'})
|
||||
res_dict = self.controller.update(req, fake.VOLUME_ID, body=body)
|
||||
@@ -1802,10 +1802,10 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
@mock.patch(
|
||||
'cinder.api.openstack.wsgi.Controller.validate_name_and_description')
|
||||
def test_volume_update_deprecation(self, mock_validate):
|
||||
self.mock_object(volume_api.API, 'get', v2_fakes.fake_volume_api_get)
|
||||
self.mock_object(volume_api.API, "update", v2_fakes.fake_volume_update)
|
||||
self.mock_object(volume_api.API, 'get', v3_fakes.fake_volume_api_get)
|
||||
self.mock_object(volume_api.API, "update", v3_fakes.fake_volume_update)
|
||||
self.mock_object(db.sqlalchemy.api, '_volume_type_get_full',
|
||||
v2_fakes.fake_volume_type_get)
|
||||
v3_fakes.fake_volume_type_get)
|
||||
|
||||
updates = {
|
||||
"display_name": "Updated Test Name",
|
||||
@@ -1816,7 +1816,7 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
self.assertEqual(0, len(self.notifier.notifications))
|
||||
res_dict = self.controller.update(req, fake.VOLUME_ID, body=body)
|
||||
expected = self._expected_vol_from_controller(
|
||||
availability_zone=v2_fakes.DEFAULT_AZ, name="Updated Test Name",
|
||||
availability_zone=v3_fakes.DEFAULT_AZ, name="Updated Test Name",
|
||||
description="Updated Test Description",
|
||||
metadata={'attached_mode': 'rw', 'readonly': 'False'})
|
||||
self.assertEqual(expected, res_dict)
|
||||
@@ -1827,10 +1827,10 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
'cinder.api.openstack.wsgi.Controller.validate_name_and_description')
|
||||
def test_volume_update_deprecation_key_priority(self, mock_validate):
|
||||
"""Test current update keys have priority over deprecated keys."""
|
||||
self.mock_object(volume_api.API, 'get', v2_fakes.fake_volume_api_get)
|
||||
self.mock_object(volume_api.API, "update", v2_fakes.fake_volume_update)
|
||||
self.mock_object(volume_api.API, 'get', v3_fakes.fake_volume_api_get)
|
||||
self.mock_object(volume_api.API, "update", v3_fakes.fake_volume_update)
|
||||
self.mock_object(db.sqlalchemy.api, '_volume_type_get_full',
|
||||
v2_fakes.fake_volume_type_get)
|
||||
v3_fakes.fake_volume_type_get)
|
||||
|
||||
updates = {
|
||||
"name": "New Name",
|
||||
@@ -1843,7 +1843,7 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
self.assertEqual(0, len(self.notifier.notifications))
|
||||
res_dict = self.controller.update(req, fake.VOLUME_ID, body=body)
|
||||
expected = self._expected_vol_from_controller(
|
||||
availability_zone=v2_fakes.DEFAULT_AZ,
|
||||
availability_zone=v3_fakes.DEFAULT_AZ,
|
||||
name="New Name", description="New Description",
|
||||
metadata={'attached_mode': 'rw', 'readonly': 'False'})
|
||||
self.assertEqual(expected, res_dict)
|
||||
@@ -1853,10 +1853,10 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
@mock.patch(
|
||||
'cinder.api.openstack.wsgi.Controller.validate_name_and_description')
|
||||
def test_volume_update_metadata(self, mock_validate):
|
||||
self.mock_object(volume_api.API, 'get', v2_fakes.fake_volume_api_get)
|
||||
self.mock_object(volume_api.API, "update", v2_fakes.fake_volume_update)
|
||||
self.mock_object(volume_api.API, 'get', v3_fakes.fake_volume_api_get)
|
||||
self.mock_object(volume_api.API, "update", v3_fakes.fake_volume_update)
|
||||
self.mock_object(db.sqlalchemy.api, '_volume_type_get_full',
|
||||
v2_fakes.fake_volume_type_get)
|
||||
v3_fakes.fake_volume_type_get)
|
||||
|
||||
updates = {
|
||||
"metadata": {"qos_max_iops": '2000'}
|
||||
@@ -1866,7 +1866,7 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
self.assertEqual(0, len(self.notifier.notifications))
|
||||
res_dict = self.controller.update(req, fake.VOLUME_ID, body=body)
|
||||
expected = self._expected_vol_from_controller(
|
||||
availability_zone=v2_fakes.DEFAULT_AZ,
|
||||
availability_zone=v3_fakes.DEFAULT_AZ,
|
||||
metadata={'attached_mode': 'rw', 'readonly': 'False',
|
||||
'qos_max_iops': '2000'})
|
||||
self.assertEqual(expected, res_dict)
|
||||
@@ -1876,9 +1876,9 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
@mock.patch(
|
||||
'cinder.api.openstack.wsgi.Controller.validate_name_and_description')
|
||||
def test_volume_update_with_admin_metadata(self, mock_validate):
|
||||
self.mock_object(volume_api.API, "update", v2_fakes.fake_volume_update)
|
||||
self.mock_object(volume_api.API, "update", v3_fakes.fake_volume_update)
|
||||
|
||||
volume = v2_fakes.create_fake_volume(fake.VOLUME_ID)
|
||||
volume = v3_fakes.create_volume(fake.VOLUME_ID)
|
||||
del volume['name']
|
||||
del volume['volume_type']
|
||||
volume['metadata'] = {'key': 'value'}
|
||||
@@ -1906,11 +1906,11 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
req.environ['cinder.context'] = admin_ctx
|
||||
res_dict = self.controller.update(req, fake.VOLUME_ID, body=body)
|
||||
expected = self._expected_vol_from_controller(
|
||||
availability_zone=v2_fakes.DEFAULT_AZ,
|
||||
availability_zone=v3_fakes.DEFAULT_AZ,
|
||||
status='in-use', name='Updated Test Name',
|
||||
attachments=[{'id': fake.VOLUME_ID,
|
||||
'attachment_id': attachment['id'],
|
||||
'volume_id': v2_fakes.DEFAULT_VOL_ID,
|
||||
'volume_id': v3_fakes.DEFAULT_VOL_ID,
|
||||
'server_id': fake.INSTANCE_ID,
|
||||
'host_name': None,
|
||||
'device': '/',
|
||||
@@ -1931,7 +1931,7 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
{'': 'a'},
|
||||
{'a': None})
|
||||
@mock.patch.object(volume_api.API, 'get',
|
||||
side_effect=v2_fakes.fake_volume_api_get, autospec=True)
|
||||
side_effect=v3_fakes.fake_volume_api_get, autospec=True)
|
||||
def test_volume_update_with_invalid_metadata(self, value, get):
|
||||
updates = {
|
||||
"metadata": value
|
||||
@@ -1972,7 +1972,7 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
|
||||
def test_update_not_found(self):
|
||||
self.mock_object(volume_api.API, "get",
|
||||
v2_fakes.fake_volume_get_notfound)
|
||||
v3_fakes.fake_volume_get_notfound)
|
||||
updates = {
|
||||
"name": "Updated Test Name",
|
||||
}
|
||||
@@ -1984,16 +1984,16 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
|
||||
def test_volume_list_summary(self):
|
||||
self.mock_object(volume_api.API, 'get_all',
|
||||
v2_fakes.fake_volume_api_get_all_by_project)
|
||||
v3_fakes.fake_volume_api_get_all_by_project)
|
||||
self.mock_object(db.sqlalchemy.api, '_volume_type_get_full',
|
||||
v2_fakes.fake_volume_type_get)
|
||||
v3_fakes.fake_volume_type_get)
|
||||
|
||||
req = fakes.HTTPRequest.blank('/v3/%s/volumes' % fake.PROJECT_ID)
|
||||
res_dict = self.controller.index(req)
|
||||
expected = {
|
||||
'volumes': [
|
||||
{
|
||||
'name': v2_fakes.DEFAULT_VOL_NAME,
|
||||
'name': v3_fakes.DEFAULT_VOL_NAME,
|
||||
'id': fake.VOLUME_ID,
|
||||
'links': [
|
||||
{
|
||||
@@ -2016,14 +2016,14 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
|
||||
def test_volume_list_detail(self):
|
||||
self.mock_object(volume_api.API, 'get_all',
|
||||
v2_fakes.fake_volume_api_get_all_by_project)
|
||||
v3_fakes.fake_volume_api_get_all_by_project)
|
||||
self.mock_object(db.sqlalchemy.api, '_volume_type_get_full',
|
||||
v2_fakes.fake_volume_type_get)
|
||||
v3_fakes.fake_volume_type_get)
|
||||
|
||||
req = fakes.HTTPRequest.blank('/v3/volumes/detail')
|
||||
res_dict = self.controller.detail(req)
|
||||
exp_vol = self._expected_vol_from_controller(
|
||||
availability_zone=v2_fakes.DEFAULT_AZ,
|
||||
availability_zone=v3_fakes.DEFAULT_AZ,
|
||||
metadata={'attached_mode': 'rw', 'readonly': 'False'})
|
||||
expected = {'volumes': [exp_vol['volume']]}
|
||||
self.assertEqual(expected, res_dict)
|
||||
@@ -2031,7 +2031,7 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
self.assertEqual(1, len(req.cached_resource()))
|
||||
|
||||
def test_volume_list_detail_with_admin_metadata(self):
|
||||
volume = v2_fakes.create_fake_volume(fake.VOLUME_ID)
|
||||
volume = v3_fakes.create_volume(fake.VOLUME_ID)
|
||||
del volume['name']
|
||||
del volume['volume_type']
|
||||
volume['metadata'] = {'key': 'value'}
|
||||
@@ -2054,14 +2054,14 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
req.environ['cinder.context'] = admin_ctx
|
||||
res_dict = self.controller.detail(req)
|
||||
exp_vol = self._expected_vol_from_controller(
|
||||
availability_zone=v2_fakes.DEFAULT_AZ,
|
||||
availability_zone=v3_fakes.DEFAULT_AZ,
|
||||
status="in-use", volume_type=fake.VOLUME_TYPE_NAME,
|
||||
attachments=[{'attachment_id': attachment['id'],
|
||||
'device': '/',
|
||||
'server_id': fake.INSTANCE_ID,
|
||||
'host_name': None,
|
||||
'id': fake.VOLUME_ID,
|
||||
'volume_id': v2_fakes.DEFAULT_VOL_ID,
|
||||
'volume_id': v3_fakes.DEFAULT_VOL_ID,
|
||||
'attached_at': attach_tmp['attach_time'].replace(
|
||||
tzinfo=iso8601.UTC),
|
||||
}],
|
||||
@@ -2074,7 +2074,7 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
|
||||
def test_volume_list_detail_host_name_admin_non_admin(self):
|
||||
fake_host = 'fake_host'
|
||||
volume = v2_fakes.create_fake_volume(fake.VOLUME_ID)
|
||||
volume = v3_fakes.create_volume(fake.VOLUME_ID)
|
||||
del volume['name']
|
||||
del volume['volume_type']
|
||||
db.volume_create(context.get_admin_context(), volume)
|
||||
@@ -2106,14 +2106,12 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
viewable_admin_meta=False,
|
||||
offset=0):
|
||||
return [
|
||||
v2_fakes.create_fake_volume(fake.VOLUME_ID,
|
||||
display_name='vol1'),
|
||||
v2_fakes.create_fake_volume(fake.VOLUME2_ID,
|
||||
display_name='vol2'),
|
||||
v3_fakes.create_volume(fake.VOLUME_ID, display_name='vol1'),
|
||||
v3_fakes.create_volume(fake.VOLUME2_ID, display_name='vol2'),
|
||||
]
|
||||
self.mock_object(db, 'volume_get_all_by_project',
|
||||
fake_volume_get_all_by_project)
|
||||
self.mock_object(volume_api.API, 'get', v2_fakes.fake_volume_get)
|
||||
self.mock_object(volume_api.API, 'get', v3_fakes.fake_volume_get)
|
||||
|
||||
req = fakes.HTTPRequest.blank('/v3/volumes?marker=1')
|
||||
res_dict = self.controller.index(req)
|
||||
@@ -2124,8 +2122,8 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
|
||||
def test_volume_index_limit(self):
|
||||
self.mock_object(db, 'volume_get_all_by_project',
|
||||
v2_fakes.fake_volume_get_all_by_project)
|
||||
self.mock_object(volume_api.API, 'get', v2_fakes.fake_volume_get)
|
||||
v3_fakes.fake_volume_get_all_by_project)
|
||||
self.mock_object(volume_api.API, 'get', v3_fakes.fake_volume_get)
|
||||
|
||||
req = fakes.HTTPRequest.blank('/v3/%s/volumes'
|
||||
'?limit=1&name=foo'
|
||||
@@ -2163,8 +2161,8 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
|
||||
def test_volume_index_limit_marker(self):
|
||||
self.mock_object(db, 'volume_get_all_by_project',
|
||||
v2_fakes.fake_volume_get_all_by_project)
|
||||
self.mock_object(volume_api.API, 'get', v2_fakes.fake_volume_get)
|
||||
v3_fakes.fake_volume_get_all_by_project)
|
||||
self.mock_object(volume_api.API, 'get', v3_fakes.fake_volume_get)
|
||||
|
||||
req = fakes.HTTPRequest.blank('/v3/volumes?marker=1&limit=1')
|
||||
res_dict = self.controller.index(req)
|
||||
@@ -2215,15 +2213,13 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
viewable_admin_meta=False,
|
||||
offset=0):
|
||||
return [
|
||||
v2_fakes.create_fake_volume(fake.VOLUME_ID,
|
||||
display_name='vol1'),
|
||||
v2_fakes.create_fake_volume(fake.VOLUME2_ID,
|
||||
display_name='vol2'),
|
||||
v3_fakes.create_volume(fake.VOLUME_ID, display_name='vol1'),
|
||||
v3_fakes.create_volume(fake.VOLUME2_ID, display_name='vol2'),
|
||||
]
|
||||
self.mock_object(db, 'volume_get_all_by_project',
|
||||
fake_volume_get_all_by_project)
|
||||
self.mock_object(db.sqlalchemy.api, '_volume_type_get_full',
|
||||
v2_fakes.fake_volume_type_get)
|
||||
v3_fakes.fake_volume_type_get)
|
||||
|
||||
req = fakes.HTTPRequest.blank('/v3/volumes/detail?marker=1')
|
||||
res_dict = self.controller.detail(req)
|
||||
@@ -2234,9 +2230,9 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
|
||||
def test_volume_detail_limit(self):
|
||||
self.mock_object(db, 'volume_get_all_by_project',
|
||||
v2_fakes.fake_volume_get_all_by_project)
|
||||
v3_fakes.fake_volume_get_all_by_project)
|
||||
self.mock_object(db.sqlalchemy.api, '_volume_type_get_full',
|
||||
v2_fakes.fake_volume_type_get)
|
||||
v3_fakes.fake_volume_type_get)
|
||||
req = fakes.HTTPRequest.blank('/v3/%s/volumes/detail?limit=1'
|
||||
% fake.PROJECT_ID)
|
||||
res_dict = self.controller.detail(req)
|
||||
@@ -2267,9 +2263,9 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
|
||||
def test_volume_detail_limit_marker(self):
|
||||
self.mock_object(db, 'volume_get_all_by_project',
|
||||
v2_fakes.fake_volume_get_all_by_project)
|
||||
v3_fakes.fake_volume_get_all_by_project)
|
||||
self.mock_object(db.sqlalchemy.api, '_volume_type_get_full',
|
||||
v2_fakes.fake_volume_type_get)
|
||||
v3_fakes.fake_volume_type_get)
|
||||
|
||||
req = fakes.HTTPRequest.blank('/v3/volumes/detail?marker=1&limit=1')
|
||||
res_dict = self.controller.detail(req)
|
||||
@@ -2401,8 +2397,8 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
offset=0):
|
||||
self.assertTrue(filters['no_migration_targets'])
|
||||
self.assertNotIn('all_tenants', filters)
|
||||
return [v2_fakes.create_fake_volume(fake.VOLUME_ID,
|
||||
display_name='vol1')]
|
||||
return [v3_fakes.create_volume(fake.VOLUME_ID,
|
||||
display_name='vol1')]
|
||||
|
||||
def fake_volume_get_all(context, marker, limit,
|
||||
sort_keys=None, sort_dirs=None,
|
||||
@@ -2428,8 +2424,8 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
viewable_admin_meta=False,
|
||||
offset=0):
|
||||
self.assertNotIn('no_migration_targets', filters)
|
||||
return [v2_fakes.create_fake_volume(fake.VOLUME_ID,
|
||||
display_name='vol2')]
|
||||
return [v3_fakes.create_volume(fake.VOLUME_ID,
|
||||
display_name='vol2')]
|
||||
|
||||
def fake_volume_get_all2(context, marker, limit,
|
||||
sort_keys=None, sort_dirs=None,
|
||||
@@ -2460,8 +2456,8 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
viewable_admin_meta=False, offset=0):
|
||||
self.assertNotIn('no_migration_targets', filters)
|
||||
self.assertNotIn('all_tenants', filters)
|
||||
return [v2_fakes.create_fake_volume(fake.VOLUME3_ID,
|
||||
display_name='vol3')]
|
||||
return [v3_fakes.create_volume(fake.VOLUME3_ID,
|
||||
display_name='vol3')]
|
||||
self.mock_object(db, 'volume_get_all_by_project',
|
||||
fake_volume_get_all_by_project3)
|
||||
self.mock_object(db, 'volume_get_all', fake_volume_get_all3)
|
||||
@@ -2473,14 +2469,14 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
self.assertEqual('vol3', resp['volumes'][0]['name'])
|
||||
|
||||
def test_volume_show(self):
|
||||
self.mock_object(volume_api.API, 'get', v2_fakes.fake_volume_api_get)
|
||||
self.mock_object(volume_api.API, 'get', v3_fakes.fake_volume_api_get)
|
||||
self.mock_object(db.sqlalchemy.api, '_volume_type_get_full',
|
||||
v2_fakes.fake_volume_type_get)
|
||||
v3_fakes.fake_volume_type_get)
|
||||
|
||||
req = fakes.HTTPRequest.blank('/v3/volumes/%s' % fake.VOLUME_ID)
|
||||
res_dict = self.controller.show(req, fake.VOLUME_ID)
|
||||
expected = self._expected_vol_from_controller(
|
||||
availability_zone=v2_fakes.DEFAULT_AZ,
|
||||
availability_zone=v3_fakes.DEFAULT_AZ,
|
||||
metadata={'attached_mode': 'rw', 'readonly': 'False'})
|
||||
self.assertEqual(expected, res_dict)
|
||||
# Finally test that we cached the returned volume
|
||||
@@ -2488,12 +2484,12 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
|
||||
def test_volume_show_no_attachments(self):
|
||||
def fake_volume_get(self, context, volume_id, **kwargs):
|
||||
vol = v2_fakes.create_fake_volume(
|
||||
vol = v3_fakes.create_volume(
|
||||
volume_id, attach_status=fields.VolumeAttachStatus.DETACHED)
|
||||
return fake_volume.fake_volume_obj(context, **vol)
|
||||
|
||||
def fake_volume_admin_metadata_get(context, volume_id, **kwargs):
|
||||
return v2_fakes.fake_volume_admin_metadata_get(
|
||||
return v3_fakes.fake_volume_admin_metadata_get(
|
||||
context, volume_id,
|
||||
attach_status=fields.VolumeAttachStatus.DETACHED)
|
||||
|
||||
@@ -2501,19 +2497,19 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
self.mock_object(db, 'volume_admin_metadata_get',
|
||||
fake_volume_admin_metadata_get)
|
||||
self.mock_object(db.sqlalchemy.api, '_volume_type_get_full',
|
||||
v2_fakes.fake_volume_type_get)
|
||||
v3_fakes.fake_volume_type_get)
|
||||
|
||||
req = fakes.HTTPRequest.blank('/v3/volumes/%s' % fake.VOLUME_ID)
|
||||
res_dict = self.controller.show(req, fake.VOLUME_ID)
|
||||
expected = self._expected_vol_from_controller(
|
||||
availability_zone=v2_fakes.DEFAULT_AZ,
|
||||
availability_zone=v3_fakes.DEFAULT_AZ,
|
||||
metadata={'readonly': 'False'})
|
||||
|
||||
self.assertEqual(expected, res_dict)
|
||||
|
||||
def test_volume_show_no_volume(self):
|
||||
self.mock_object(volume_api.API, "get",
|
||||
v2_fakes.fake_volume_get_notfound)
|
||||
v3_fakes.fake_volume_get_notfound)
|
||||
|
||||
req = fakes.HTTPRequest.blank('/v3/volumes/%s' % fake.VOLUME_ID)
|
||||
self.assertRaises(exception.VolumeNotFound, self.controller.show,
|
||||
@@ -2522,7 +2518,7 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
self.assertIsNone(req.cached_resource_by_id(fake.VOLUME_ID))
|
||||
|
||||
def test_volume_show_with_admin_metadata(self):
|
||||
volume = v2_fakes.create_fake_volume(fake.VOLUME_ID)
|
||||
volume = v3_fakes.create_volume(fake.VOLUME_ID)
|
||||
del volume['name']
|
||||
del volume['volume_type']
|
||||
volume['metadata'] = {'key': 'value'}
|
||||
@@ -2544,11 +2540,11 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
req.environ['cinder.context'] = admin_ctx
|
||||
res_dict = self.controller.show(req, fake.VOLUME_ID)
|
||||
expected = self._expected_vol_from_controller(
|
||||
availability_zone=v2_fakes.DEFAULT_AZ,
|
||||
availability_zone=v3_fakes.DEFAULT_AZ,
|
||||
volume_type=fake.VOLUME_TYPE_NAME, status='in-use',
|
||||
attachments=[{'id': fake.VOLUME_ID,
|
||||
'attachment_id': attachment['id'],
|
||||
'volume_id': v2_fakes.DEFAULT_VOL_ID,
|
||||
'volume_id': v3_fakes.DEFAULT_VOL_ID,
|
||||
'server_id': fake.INSTANCE_ID,
|
||||
'host_name': None,
|
||||
'device': '/',
|
||||
@@ -2563,22 +2559,22 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
|
||||
def test_volume_show_with_encrypted_volume(self):
|
||||
def fake_volume_get(self, context, volume_id, **kwargs):
|
||||
vol = v2_fakes.create_fake_volume(volume_id,
|
||||
encryption_key_id=fake.KEY_ID)
|
||||
vol = v3_fakes.create_volume(volume_id,
|
||||
encryption_key_id=fake.KEY_ID)
|
||||
return fake_volume.fake_volume_obj(context, **vol)
|
||||
|
||||
self.mock_object(volume_api.API, 'get', fake_volume_get)
|
||||
self.mock_object(db.sqlalchemy.api, '_volume_type_get_full',
|
||||
v2_fakes.fake_volume_type_get)
|
||||
v3_fakes.fake_volume_type_get)
|
||||
|
||||
req = fakes.HTTPRequest.blank('/v3/volumes/%s' % fake.VOLUME_ID)
|
||||
res_dict = self.controller.show(req, fake.VOLUME_ID)
|
||||
self.assertTrue(res_dict['volume']['encrypted'])
|
||||
|
||||
def test_volume_show_with_unencrypted_volume(self):
|
||||
self.mock_object(volume_api.API, 'get', v2_fakes.fake_volume_api_get)
|
||||
self.mock_object(volume_api.API, 'get', v3_fakes.fake_volume_api_get)
|
||||
self.mock_object(db.sqlalchemy.api, '_volume_type_get_full',
|
||||
v2_fakes.fake_volume_type_get)
|
||||
v3_fakes.fake_volume_type_get)
|
||||
|
||||
req = fakes.HTTPRequest.blank('/v3/volumes/%s' % fake.VOLUME_ID)
|
||||
res_dict = self.controller.show(req, fake.VOLUME_ID)
|
||||
@@ -2586,20 +2582,20 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
|
||||
def test_volume_show_with_error_managing_deleting(self):
|
||||
def fake_volume_get(self, context, volume_id, **kwargs):
|
||||
vol = v2_fakes.create_fake_volume(volume_id,
|
||||
status='error_managing_deleting')
|
||||
vol = v3_fakes.create_volume(volume_id,
|
||||
status='error_managing_deleting')
|
||||
return fake_volume.fake_volume_obj(context, **vol)
|
||||
|
||||
self.mock_object(volume_api.API, 'get', fake_volume_get)
|
||||
self.mock_object(db.sqlalchemy.api, '_volume_type_get_full',
|
||||
v2_fakes.fake_volume_type_get)
|
||||
v3_fakes.fake_volume_type_get)
|
||||
|
||||
req = fakes.HTTPRequest.blank('/v3/volumes/%s' % fake.VOLUME_ID)
|
||||
res_dict = self.controller.show(req, fake.VOLUME_ID)
|
||||
self.assertEqual('deleting', res_dict['volume']['status'])
|
||||
|
||||
@mock.patch.object(volume_api.API, 'delete', v2_fakes.fake_volume_delete)
|
||||
@mock.patch.object(volume_api.API, 'get', v2_fakes.fake_volume_get)
|
||||
@mock.patch.object(volume_api.API, 'delete', v3_fakes.fake_volume_delete)
|
||||
@mock.patch.object(volume_api.API, 'get', v3_fakes.fake_volume_get)
|
||||
def test_volume_delete(self):
|
||||
req = fakes.HTTPRequest.blank('/v3/volumes/%s' % fake.VOLUME_ID)
|
||||
resp = self.controller.delete(req, fake.VOLUME_ID)
|
||||
@@ -2610,7 +2606,7 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
force=False, cascade=False):
|
||||
raise exception.VolumeAttached(volume_id=volume['id'])
|
||||
self.mock_object(volume_api.API, "delete", fake_volume_attached)
|
||||
self.mock_object(volume_api.API, 'get', v2_fakes.fake_volume_get)
|
||||
self.mock_object(volume_api.API, 'get', v3_fakes.fake_volume_get)
|
||||
|
||||
req = fakes.HTTPRequest.blank('/v3/volumes/%s' % fake.VOLUME_ID)
|
||||
exp = self.assertRaises(exception.VolumeAttached,
|
||||
@@ -2621,7 +2617,7 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
|
||||
def test_volume_delete_no_volume(self):
|
||||
self.mock_object(volume_api.API, "get",
|
||||
v2_fakes.fake_volume_get_notfound)
|
||||
v3_fakes.fake_volume_get_notfound)
|
||||
|
||||
req = fakes.HTTPRequest.blank('/v3/volumes/%s' % fake.VOLUME_ID)
|
||||
self.assertRaises(exception.VolumeNotFound, self.controller.delete,
|
||||
@@ -2629,7 +2625,7 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
|
||||
def test_admin_list_volumes_limited_to_project(self):
|
||||
self.mock_object(db, 'volume_get_all_by_project',
|
||||
v2_fakes.fake_volume_get_all_by_project)
|
||||
v3_fakes.fake_volume_get_all_by_project)
|
||||
|
||||
req = fakes.HTTPRequest.blank('/v3/%s/volumes' % fake.PROJECT_ID,
|
||||
use_admin_context=True)
|
||||
@@ -2638,9 +2634,9 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
self.assertIn('volumes', res)
|
||||
self.assertEqual(1, len(res['volumes']))
|
||||
|
||||
@mock.patch.object(db, 'volume_get_all', v2_fakes.fake_volume_get_all)
|
||||
@mock.patch.object(db, 'volume_get_all', v3_fakes.fake_volume_get_all)
|
||||
@mock.patch.object(db, 'volume_get_all_by_project',
|
||||
v2_fakes.fake_volume_get_all_by_project)
|
||||
v3_fakes.fake_volume_get_all_by_project)
|
||||
def test_admin_list_volumes_all_tenants(self):
|
||||
req = fakes.HTTPRequest.blank(
|
||||
'/v3/%s/volumes?all_tenants=1' % fake.PROJECT_ID,
|
||||
@@ -2649,10 +2645,10 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
self.assertIn('volumes', res)
|
||||
self.assertEqual(3, len(res['volumes']))
|
||||
|
||||
@mock.patch.object(db, 'volume_get_all', v2_fakes.fake_volume_get_all)
|
||||
@mock.patch.object(db, 'volume_get_all', v3_fakes.fake_volume_get_all)
|
||||
@mock.patch.object(db, 'volume_get_all_by_project',
|
||||
v2_fakes.fake_volume_get_all_by_project)
|
||||
@mock.patch.object(volume_api.API, 'get', v2_fakes.fake_volume_get)
|
||||
v3_fakes.fake_volume_get_all_by_project)
|
||||
@mock.patch.object(volume_api.API, 'get', v3_fakes.fake_volume_get)
|
||||
def test_all_tenants_non_admin_gets_all_tenants(self):
|
||||
req = fakes.HTTPRequest.blank(
|
||||
'/v3/%s/volumes?all_tenants=1' % fake.PROJECT_ID)
|
||||
@@ -2661,8 +2657,8 @@ class VolumeApiTestNoMicroversion(BaseVolumeTest):
|
||||
self.assertEqual(1, len(res['volumes']))
|
||||
|
||||
@mock.patch.object(db, 'volume_get_all_by_project',
|
||||
v2_fakes.fake_volume_get_all_by_project)
|
||||
@mock.patch.object(volume_api.API, 'get', v2_fakes.fake_volume_get)
|
||||
v3_fakes.fake_volume_get_all_by_project)
|
||||
@mock.patch.object(volume_api.API, 'get', v3_fakes.fake_volume_get)
|
||||
def test_non_admin_get_by_project(self):
|
||||
req = fakes.HTTPRequest.blank('/v3/%s/volumes' % fake.PROJECT_ID)
|
||||
res = self.controller.index(req)
|
||||
|
||||
@@ -17,7 +17,7 @@ from cinder import context
|
||||
from cinder import db
|
||||
from cinder import exception
|
||||
from cinder import objects
|
||||
from cinder.tests.unit.api.v2 import fakes as v2_fakes
|
||||
from cinder.tests.unit.api.v3 import fakes as v3_fakes
|
||||
from cinder.tests.unit import fake_constants as fake
|
||||
from cinder.tests.unit import fake_volume
|
||||
from cinder.tests.unit import test
|
||||
@@ -313,7 +313,7 @@ class AttachmentManagerTestCase(test.TestCase):
|
||||
@mock.patch('cinder.volume.rpcapi.VolumeAPI.attachment_update',
|
||||
return_value={})
|
||||
@mock.patch.object(db.sqlalchemy.api, '_volume_type_get',
|
||||
v2_fakes.fake_volume_type_get)
|
||||
v3_fakes.fake_volume_type_get)
|
||||
def test_attachment_update_duplicate(self, mock_va_update, mock_db_upd):
|
||||
volume_params = {'status': 'available'}
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ from cinder import context
|
||||
from cinder import db
|
||||
from cinder.objects import fields
|
||||
from cinder.objects import volume_attachment
|
||||
from cinder.tests.unit.api.v2 import fakes as v2_fakes
|
||||
from cinder.tests.unit.api.v3 import fakes as v3_fakes
|
||||
from cinder.tests.unit import fake_constants as fake
|
||||
from cinder.tests.unit import test
|
||||
from cinder.tests.unit import utils as tests_utils
|
||||
@@ -50,7 +50,7 @@ class AttachmentManagerTestCase(test.TestCase):
|
||||
|
||||
@ddt.data(False, True)
|
||||
@mock.patch.object(db.sqlalchemy.api, '_volume_type_get',
|
||||
v2_fakes.fake_volume_type_get)
|
||||
v3_fakes.fake_volume_type_get)
|
||||
@mock.patch('cinder.db.sqlalchemy.api.volume_type_qos_specs_get')
|
||||
@mock.patch('cinder.volume.volume_types.get_volume_type_extra_specs')
|
||||
def test_attachment_update(self, enforce_mpath, get_extra_specs,
|
||||
|
||||
@@ -39,7 +39,7 @@ from cinder import objects
|
||||
from cinder.objects import fields
|
||||
from cinder import quota
|
||||
from cinder.tests import fake_driver
|
||||
from cinder.tests.unit.api.v2 import fakes as v2_fakes
|
||||
from cinder.tests.unit.api.v3 import fakes as v3_fakes
|
||||
from cinder.tests.unit import fake_constants as fake
|
||||
from cinder.tests.unit import known_issues as issues
|
||||
from cinder.tests.unit import test
|
||||
@@ -229,7 +229,7 @@ class BackupTestCase(BaseBackupTest):
|
||||
@mock.patch.object(cinder.tests.fake_driver.FakeLoggingVolumeDriver,
|
||||
'check_for_setup_error')
|
||||
@mock.patch.object(cinder.db.sqlalchemy.api, '_volume_type_get_by_name',
|
||||
v2_fakes.fake_volume_type_get)
|
||||
v3_fakes.fake_volume_type_get)
|
||||
@mock.patch('cinder.context.get_admin_context')
|
||||
def test_init_host(self, mock_get_admin_context, mock_check, mock_setup,
|
||||
mock_set_initialized):
|
||||
@@ -2366,7 +2366,7 @@ class BackupAPITestCase(BaseBackupTest):
|
||||
filters={'project_id': 'fake_project'})
|
||||
|
||||
@mock.patch('cinder.db.backup_get_all_by_volume',
|
||||
return_value=[v2_fakes.fake_backup('fake-1')])
|
||||
return_value=[v3_fakes.fake_backup('fake-1')])
|
||||
@mock.patch('cinder.backup.rpcapi.BackupAPI.create_backup')
|
||||
@mock.patch.object(api.API, '_get_available_backup_service_host',
|
||||
return_value='fake_host')
|
||||
|
||||
@@ -21,7 +21,7 @@ from oslo_utils import timeutils
|
||||
from cinder import db
|
||||
from cinder.db.sqlalchemy import models
|
||||
from cinder import objects
|
||||
from cinder.tests.unit.api.v2 import fakes as v2_fakes
|
||||
from cinder.tests.unit.api.v3 import fakes as v3_fakes
|
||||
from cinder.tests.unit import fake_constants as fake
|
||||
from cinder.tests.unit import fake_volume
|
||||
from cinder.tests.unit import objects as test_objects
|
||||
@@ -109,7 +109,7 @@ class TestVolumeType(test_objects.BaseObjectsTestCase):
|
||||
@mock.patch('oslo_utils.timeutils.utcnow', return_value=timeutils.utcnow())
|
||||
@mock.patch('cinder.db.sqlalchemy.api.volume_type_destroy')
|
||||
@mock.patch.object(db.sqlalchemy.api, 'volume_type_get',
|
||||
v2_fakes.fake_volume_type_get)
|
||||
v3_fakes.fake_volume_type_get)
|
||||
def test_destroy(self, volume_type_destroy, utcnow_mock):
|
||||
volume_type_destroy.return_value = {
|
||||
'deleted': True,
|
||||
|
||||
@@ -24,7 +24,7 @@ from cinder.db.sqlalchemy import models
|
||||
from cinder import exception
|
||||
from cinder import objects
|
||||
from cinder import quota
|
||||
from cinder.tests.unit.api.v2 import fakes as v2_fakes
|
||||
from cinder.tests.unit.api.v3 import fakes as v3_fakes
|
||||
from cinder.tests.unit import fake_constants as fake
|
||||
from cinder.tests.unit import test
|
||||
from cinder.tests.unit import utils
|
||||
@@ -426,7 +426,7 @@ class VolumeTransferTestCase(test.TestCase):
|
||||
tx_api.create, self.ctxt, volume.id, 'Description')
|
||||
|
||||
@mock.patch('cinder.volume.volume_utils.notify_about_volume_usage')
|
||||
@mock.patch.object(db, 'volume_type_get', v2_fakes.fake_volume_type_get)
|
||||
@mock.patch.object(db, 'volume_type_get', v3_fakes.fake_volume_type_get)
|
||||
@mock.patch.object(quota.QUOTAS, 'reserve')
|
||||
def test_transfer_accept_with_detail_records(self, mock_notify,
|
||||
mock_type_get):
|
||||
|
||||
@@ -26,7 +26,7 @@ from cinder.message import message_field
|
||||
from cinder import objects
|
||||
from cinder.objects import fields
|
||||
from cinder.tests import fake_driver
|
||||
from cinder.tests.unit.api.v2 import fakes as v2_fakes
|
||||
from cinder.tests.unit.api.v3 import fakes as v3_fakes
|
||||
from cinder.tests.unit import fake_constants as fake
|
||||
from cinder.tests.unit import fake_volume
|
||||
from cinder.tests.unit import utils as tests_utils
|
||||
@@ -43,7 +43,7 @@ class DiscardFlagTestCase(base.BaseVolumeTestCase):
|
||||
super(DiscardFlagTestCase, self).setUp()
|
||||
self.volume.driver = mock.MagicMock()
|
||||
db.volume_type_create(self.context,
|
||||
v2_fakes.fake_default_type_get(
|
||||
v3_fakes.fake_default_type_get(
|
||||
fake.VOLUME_TYPE2_ID))
|
||||
self.vol_type = db.volume_type_get_by_name(self.context,
|
||||
'vol_type_name')
|
||||
@@ -113,7 +113,7 @@ class VolumeConnectionTestCase(base.BaseVolumeTestCase):
|
||||
def setUp(self, *args, **kwargs):
|
||||
super(VolumeConnectionTestCase, self).setUp()
|
||||
db.volume_type_create(self.context,
|
||||
v2_fakes.fake_default_type_get(
|
||||
v3_fakes.fake_default_type_get(
|
||||
fake.VOLUME_TYPE2_ID))
|
||||
self.vol_type = db.volume_type_get_by_name(self.context,
|
||||
'vol_type_name')
|
||||
@@ -432,7 +432,7 @@ class VolumeAttachDetachTestCase(base.BaseVolumeTestCase):
|
||||
self.user_context = context.RequestContext(user_id=fake.USER_ID,
|
||||
project_id=fake.PROJECT_ID)
|
||||
db.volume_type_create(self.context,
|
||||
v2_fakes.fake_default_type_get(
|
||||
v3_fakes.fake_default_type_get(
|
||||
fake.VOLUME_TYPE2_ID))
|
||||
self.vol_type = db.volume_type_get_by_name(self.context,
|
||||
'vol_type_name')
|
||||
|
||||
@@ -30,7 +30,7 @@ from cinder import objects
|
||||
from cinder.objects import fields
|
||||
from cinder import quota
|
||||
from cinder.tests import fake_driver
|
||||
from cinder.tests.unit.api.v2 import fakes as v2_fakes
|
||||
from cinder.tests.unit.api.v3 import fakes as v3_fakes
|
||||
from cinder.tests.unit import fake_constants as fake
|
||||
from cinder.tests.unit.image import fake as fake_image
|
||||
from cinder.tests.unit import utils as tests_utils
|
||||
@@ -84,7 +84,7 @@ class CopyVolumeToImageTestCase(base.BaseVolumeTestCase):
|
||||
'volume_type_id': fake.VOLUME_TYPE_ID
|
||||
}
|
||||
self.mock_object(db.sqlalchemy.api, 'volume_type_get',
|
||||
v2_fakes.fake_volume_type_get)
|
||||
v3_fakes.fake_volume_type_get)
|
||||
|
||||
def test_copy_volume_to_image_status_available(self):
|
||||
# creating volume testdata
|
||||
@@ -491,7 +491,7 @@ class ImageVolumeTestCases(base.BaseVolumeTestCase):
|
||||
def setUp(self):
|
||||
super(ImageVolumeTestCases, self).setUp()
|
||||
db.volume_type_create(self.context,
|
||||
v2_fakes.fake_default_type_get(
|
||||
v3_fakes.fake_default_type_get(
|
||||
fake.VOLUME_TYPE2_ID))
|
||||
self.vol_type = db.volume_type_get_by_name(self.context,
|
||||
'vol_type_name')
|
||||
|
||||
@@ -29,7 +29,7 @@ from cinder import exception
|
||||
from cinder import objects
|
||||
from cinder.objects import fields
|
||||
from cinder import quota
|
||||
from cinder.tests.unit.api.v2 import fakes as v2_fakes
|
||||
from cinder.tests.unit.api.v3 import fakes as v3_fakes
|
||||
from cinder.tests.unit.brick import fake_lvm
|
||||
from cinder.tests.unit import fake_constants as fake
|
||||
from cinder.tests.unit import test
|
||||
@@ -71,7 +71,7 @@ class SnapshotTestCase(base.BaseVolumeTestCase):
|
||||
def setUp(self, *args, **kwargs):
|
||||
super(SnapshotTestCase, self).setUp()
|
||||
db.volume_type_create(self.context,
|
||||
v2_fakes.fake_default_type_get(
|
||||
v3_fakes.fake_default_type_get(
|
||||
fake.VOLUME_TYPE2_ID))
|
||||
self.vol_type = db.volume_type_get_by_name(self.context,
|
||||
'vol_type_name')
|
||||
|
||||
@@ -44,7 +44,7 @@ from cinder.objects import fields
|
||||
from cinder.policies import volumes as vol_policy
|
||||
from cinder import quota
|
||||
from cinder.tests import fake_driver
|
||||
from cinder.tests.unit.api.v2 import fakes as v2_fakes
|
||||
from cinder.tests.unit.api.v3 import fakes as v3_fakes
|
||||
from cinder.tests.unit import conf_fixture
|
||||
from cinder.tests.unit import fake_constants as fake
|
||||
from cinder.tests.unit import fake_snapshot
|
||||
@@ -112,7 +112,7 @@ class VolumeTestCase(base.BaseVolumeTestCase):
|
||||
project_id=fake.PROJECT_ID)
|
||||
elevated = context.get_admin_context()
|
||||
db.volume_type_create(elevated,
|
||||
v2_fakes.fake_default_type_get(
|
||||
v3_fakes.fake_default_type_get(
|
||||
id=fake.VOLUME_TYPE2_ID))
|
||||
self.vol_type = db.volume_type_get_by_name(elevated, '__DEFAULT__')
|
||||
self._setup_volume_types()
|
||||
|
||||
Reference in New Issue
Block a user