Override the 'get' method in DriverBlockDevice class
The following methods are overridden in DriverBlockDevice class. * __getattr__ * __getitem__ The 'get' method is not overridden. The value cannot be got by the 'get' method though the value can be got by '__getattr__' (e.g. bdm.volumd_id) or '__getitem__' (e.g. bdm['volume_id']) method. So override the 'get' method to fix the issue. Change-Id: Ic665fc1956831110937d98553e526cb909e49997 Closes-Bug: #1816938
This commit is contained in:
		@@ -191,7 +191,6 @@ class TestDriverBlockDevice(test.NoDBTestCase):
 | 
			
		||||
         'destination_type': 'volume',
 | 
			
		||||
         'connection_info': '{"fake": "connection_info"}',
 | 
			
		||||
         'snapshot_id': 'fake-snapshot-id-1',
 | 
			
		||||
         'volume_id': 'fake-volume-id-2',
 | 
			
		||||
         'boot_index': -1,
 | 
			
		||||
         'volume_type': None})
 | 
			
		||||
 | 
			
		||||
@@ -379,6 +378,7 @@ class TestDriverBlockDevice(test.NoDBTestCase):
 | 
			
		||||
        self.assertEqual(test_bdm._bdm_obj.id, 3)
 | 
			
		||||
        self.assertEqual(test_bdm.volume_id, 'fake-volume-id-1')
 | 
			
		||||
        self.assertEqual(test_bdm.volume_size, 8)
 | 
			
		||||
        self.assertEqual('fake-volume-id-1', test_bdm.get('volume_id'))
 | 
			
		||||
 | 
			
		||||
    def test_driver_snapshot_block_device(self):
 | 
			
		||||
        self._test_driver_device("volsnapshot")
 | 
			
		||||
@@ -389,6 +389,7 @@ class TestDriverBlockDevice(test.NoDBTestCase):
 | 
			
		||||
        self.assertEqual(test_bdm.snapshot_id, 'fake-snapshot-id-1')
 | 
			
		||||
        self.assertEqual(test_bdm.volume_id, 'fake-volume-id-2')
 | 
			
		||||
        self.assertEqual(test_bdm.volume_size, 3)
 | 
			
		||||
        self.assertEqual('fake-snapshot-id-1', test_bdm.get('snapshot_id'))
 | 
			
		||||
 | 
			
		||||
    def test_driver_image_block_device(self):
 | 
			
		||||
        self._test_driver_device('volimage')
 | 
			
		||||
@@ -398,6 +399,7 @@ class TestDriverBlockDevice(test.NoDBTestCase):
 | 
			
		||||
        self.assertEqual(test_bdm._bdm_obj.id, 5)
 | 
			
		||||
        self.assertEqual(test_bdm.image_id, 'fake-image-id-1')
 | 
			
		||||
        self.assertEqual(test_bdm.volume_size, 1)
 | 
			
		||||
        self.assertEqual('fake-image-id-1', test_bdm.get('image_id'))
 | 
			
		||||
 | 
			
		||||
    def test_driver_image_block_device_destination_local(self):
 | 
			
		||||
        self._test_driver_device('volimage')
 | 
			
		||||
@@ -413,8 +415,9 @@ class TestDriverBlockDevice(test.NoDBTestCase):
 | 
			
		||||
        test_bdm = self.driver_classes['volblank'](
 | 
			
		||||
            self.volblank_bdm)
 | 
			
		||||
        self.assertEqual(6, test_bdm._bdm_obj.id)
 | 
			
		||||
        self.assertEqual('fake-volume-id-2', test_bdm.volume_id)
 | 
			
		||||
        self.assertIsNone(test_bdm.volume_id)
 | 
			
		||||
        self.assertEqual(3, test_bdm.volume_size)
 | 
			
		||||
        self.assertIsNone(test_bdm.get('volume_id'))
 | 
			
		||||
 | 
			
		||||
    def _test_call_wait_func(self, delete_on_termination, delete_fail=False):
 | 
			
		||||
        test_bdm = self.driver_classes['volume'](self.volume_bdm)
 | 
			
		||||
 
 | 
			
		||||
@@ -171,6 +171,14 @@ class DriverBlockDevice(dict):
 | 
			
		||||
        """Transform bdm to the format that is passed to drivers."""
 | 
			
		||||
        raise NotImplementedError()
 | 
			
		||||
 | 
			
		||||
    def get(self, name, default=None):
 | 
			
		||||
        if name in self._proxy_as_attr:
 | 
			
		||||
            return getattr(self._bdm_obj, name)
 | 
			
		||||
        elif name in self._fields:
 | 
			
		||||
            return self[name]
 | 
			
		||||
        else:
 | 
			
		||||
            return super(DriverBlockDevice, self).get(name, default)
 | 
			
		||||
 | 
			
		||||
    def legacy(self):
 | 
			
		||||
        """Basic legacy transformation.
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user