108 lines
4.1 KiB
Python
108 lines
4.1 KiB
Python
# Copyright 2016 Intel 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.
|
|
|
|
import ddt
|
|
|
|
from cinder import objects
|
|
from cinder.tests.unit import objects as test_objects
|
|
|
|
|
|
@ddt.ddt
|
|
class TestManageableResources(test_objects.BaseObjectsTestCase):
|
|
|
|
def resource_test(self, resource, resource_type):
|
|
if resource_type == "manageable_volume_obj":
|
|
resource.manageable_volume_obj.wrong_key
|
|
elif resource_type == "manageable_snapshot_obj":
|
|
resource.manageable_snapshot_obj.wrong_key
|
|
|
|
def setUp(self):
|
|
super(TestManageableResources, self).setUp()
|
|
self.manageable_volume_dict = [
|
|
{'cinder_id':
|
|
'e334aab4-c987-4eb0-9c81-d4a773b4f7a6',
|
|
'extra_info': None,
|
|
'reason_not_safe': 'already managed',
|
|
'reference':
|
|
{'source-name':
|
|
'volume-e334aab4-c987-4eb0-9c81-d4a773b4f7a6'},
|
|
'safe_to_manage': False,
|
|
'size': 1,
|
|
'foo': 'bar'},
|
|
{'cinder_id':
|
|
'da25ac53-3fe0-4f56-9369-4d289d8902fd',
|
|
'extra_info': None,
|
|
'reason_not_safe': 'already managed',
|
|
'reference':
|
|
{'source-name':
|
|
'volume-da25ac53-3fe0-4f56-9369-4d289d8902fd'},
|
|
'safe_to_manage': False,
|
|
'size': 2}
|
|
]
|
|
|
|
self.manageable_snapshot_dict = [
|
|
{'cinder_id':
|
|
'e334aab4-c987-4eb0-9c81-d4a773b4f7a6',
|
|
'reference':
|
|
{'source-name':
|
|
'volume-e334aab4-c987-4eb0-9c81-d4a773b4f7a6'},
|
|
'extra_info': None,
|
|
'reason_not_safe': 'already managed',
|
|
'source_reference':
|
|
{'source-name':
|
|
'volume-e334aab4-c987-4eb0-9c81-d4a773b4f7a6'},
|
|
'safe_to_manage': False,
|
|
'size': 1,
|
|
'foo': 'bar'},
|
|
{'cinder_id':
|
|
'da25ac53-3fe0-4f56-9369-4d289d8902fd',
|
|
'reference':
|
|
{'source-name':
|
|
'volume-da25ac53-3fe0-4f56-9369-4d289d8902fd'},
|
|
'extra_info': None,
|
|
'reason_not_safe': 'already managed',
|
|
'source_reference':
|
|
{'source-name':
|
|
'da25ac53-3fe0-4f56-9369-4d289d8902fd'},
|
|
'safe_to_manage': False,
|
|
'size': 2}
|
|
]
|
|
|
|
vol_mang_list = (objects.ManageableVolumeList.from_primitives
|
|
(self.context, self.manageable_volume_dict))
|
|
self.manageable_volume_obj_list = vol_mang_list
|
|
|
|
snap_mang_list = (objects.ManageableSnapshotList.from_primitives
|
|
(self.context, self.manageable_snapshot_dict))
|
|
self.manageable_snapshot_obj_list = snap_mang_list
|
|
|
|
self.manageable_volume_obj = self.manageable_volume_obj_list[0]
|
|
self.manageable_snapshot_obj = self.manageable_snapshot_obj_list[0]
|
|
|
|
@ddt.data('manageable_volume_obj', 'manageable_snapshot_obj')
|
|
def test_extra_info(self, obj):
|
|
# Making sure that any new key assignment gets stored in extra_info
|
|
# field of manageable_volume_object & manageable_snapshot_object
|
|
self.assertEqual(
|
|
'bar',
|
|
getattr(self, obj).extra_info['foo'])
|
|
|
|
@ddt.data('manageable_volume_obj', 'manageable_snapshot_obj')
|
|
def test_extra_info_wrong_key(self, obj):
|
|
# Making sure referring an attribute before setting it raises an
|
|
# Attribute Error for manageable_volume_object &
|
|
# manageable_snapshot_object
|
|
getattr(self, obj).foo = "test"
|
|
self.assertRaises(AttributeError, self.resource_test, self, obj)
|