コード例 #1
0
 def test_get_by_id(self, volume_attachment_get):
     db_attachment = fake_volume.fake_db_volume_attachment()
     attachment_obj = fake_volume.fake_volume_attachment_obj(self.context)
     volume_attachment_get.return_value = db_attachment
     attachment = objects.VolumeAttachment.get_by_id(self.context,
                                                     fake.ATTACHMENT_ID)
     self._compare(self, attachment_obj, attachment)
コード例 #2
0
    def test_refresh(self, attachment_get):
        db_attachment1 = fake_volume.fake_db_volume_attachment()
        attachment_obj1 = fake_volume.fake_volume_attachment_obj(self.context)
        db_attachment2 = db_attachment1.copy()
        db_attachment2['mountpoint'] = '/dev/sdc'
        attachment_obj2 = fake_volume.fake_volume_attachment_obj(
            self.context, mountpoint='/dev/sdc')

        # On the second volume_attachment_get, return the volume attachment
        # with an updated mountpoint
        attachment_get.side_effect = [db_attachment1, db_attachment2]
        attachment = objects.VolumeAttachment.get_by_id(self.context,
                                                        fake.ATTACHMENT_ID)
        self._compare(self, attachment_obj1, attachment)

        # mountpoint was updated, so a volume attachment refresh should have a
        # new value for that field
        attachment.refresh()
        self._compare(self, attachment_obj2, attachment)
        if six.PY3:
            call_bool = mock.call.__bool__()
        else:
            call_bool = mock.call.__nonzero__()
        attachment_get.assert_has_calls([mock.call(self.context,
                                                   fake.ATTACHMENT_ID),
                                         call_bool,
                                         mock.call(self.context,
                                                   fake.ATTACHMENT_ID)])
コード例 #3
0
ファイル: test_volume.py プロジェクト: mahak/cinder
    def test_from_db_object_with_all_expected_attributes(self):
        expected_attrs = ['metadata', 'admin_metadata', 'glance_metadata',
                          'volume_type', 'volume_attachment',
                          'consistencygroup']

        db_metadata = [{'key': 'foo', 'value': 'bar'}]
        db_admin_metadata = [{'key': 'admin_foo', 'value': 'admin_bar'}]
        db_glance_metadata = [{'key': 'glance_foo', 'value': 'glance_bar'}]
        db_volume_type = fake_volume.fake_db_volume_type()
        db_volume_attachments = fake_volume.fake_db_volume_attachment()
        db_consistencygroup = fake_consistencygroup.fake_db_consistencygroup()
        db_snapshots = fake_snapshot.fake_db_snapshot()

        db_volume = fake_volume.fake_db_volume(
            volume_metadata=db_metadata,
            volume_admin_metadata=db_admin_metadata,
            volume_glance_metadata=db_glance_metadata,
            volume_type=db_volume_type,
            volume_attachment=[db_volume_attachments],
            consistencygroup=db_consistencygroup,
            snapshots=[db_snapshots],
        )
        volume = objects.Volume._from_db_object(self.context, objects.Volume(),
                                                db_volume, expected_attrs)

        self.assertEqual({'foo': 'bar'}, volume.metadata)
        self.assertEqual({'admin_foo': 'admin_bar'}, volume.admin_metadata)
        self.assertEqual({'glance_foo': 'glance_bar'}, volume.glance_metadata)
        self._compare(self, db_volume_type, volume.volume_type)
        self._compare(self, db_volume_attachments, volume.volume_attachment)
        self._compare(self, db_consistencygroup, volume.consistencygroup)
        self._compare(self, db_snapshots, volume.snapshots)
コード例 #4
0
    def test_refresh(self, attachment_get):
        db_attachment1 = fake_volume.fake_db_volume_attachment()
        attachment_obj1 = fake_volume.fake_volume_attachment_obj(self.context)
        db_attachment2 = db_attachment1.copy()
        db_attachment2['mountpoint'] = '/dev/sdc'
        attachment_obj2 = fake_volume.fake_volume_attachment_obj(
            self.context, mountpoint='/dev/sdc')

        # On the second volume_attachment_get, return the volume attachment
        # with an updated mountpoint
        attachment_get.side_effect = [db_attachment1, db_attachment2]
        attachment = objects.VolumeAttachment.get_by_id(
            self.context, fake.ATTACHMENT_ID)
        self._compare(self, attachment_obj1, attachment)

        # mountpoint was updated, so a volume attachment refresh should have a
        # new value for that field
        attachment.refresh()
        self._compare(self, attachment_obj2, attachment)
        if six.PY3:
            call_bool = mock.call.__bool__()
        else:
            call_bool = mock.call.__nonzero__()
        attachment_get.assert_has_calls([
            mock.call(self.context, fake.ATTACHMENT_ID), call_bool,
            mock.call(self.context, fake.ATTACHMENT_ID)
        ])
コード例 #5
0
 def test_get_by_id(self, volume_attachment_get):
     db_attachment = fake_volume.fake_db_volume_attachment()
     attachment_obj = fake_volume.fake_volume_attachment_obj(self.context)
     volume_attachment_get.return_value = db_attachment
     attachment = objects.VolumeAttachment.get_by_id(
         self.context, fake.ATTACHMENT_ID)
     self._compare(self, attachment_obj, attachment)
コード例 #6
0
    def test_from_db_object_with_all_expected_attributes(self):
        expected_attrs = [
            'metadata', 'admin_metadata', 'glance_metadata', 'volume_type',
            'volume_attachment', 'consistencygroup'
        ]

        db_metadata = [{'key': 'foo', 'value': 'bar'}]
        db_admin_metadata = [{'key': 'admin_foo', 'value': 'admin_bar'}]
        db_glance_metadata = [{'key': 'glance_foo', 'value': 'glance_bar'}]
        db_volume_type = fake_volume.fake_db_volume_type()
        db_volume_attachments = fake_volume.fake_db_volume_attachment()
        db_consistencygroup = fake_consistencygroup.fake_db_consistencygroup()
        db_snapshots = fake_snapshot.fake_db_snapshot()

        db_volume = fake_volume.fake_db_volume(
            volume_metadata=db_metadata,
            volume_admin_metadata=db_admin_metadata,
            volume_glance_metadata=db_glance_metadata,
            volume_type=db_volume_type,
            volume_attachment=[db_volume_attachments],
            consistencygroup=db_consistencygroup,
            snapshots=[db_snapshots],
        )
        volume = objects.Volume._from_db_object(self.context, objects.Volume(),
                                                db_volume, expected_attrs)

        self.assertEqual({'foo': 'bar'}, volume.metadata)
        self.assertEqual({'admin_foo': 'admin_bar'}, volume.admin_metadata)
        self.assertEqual({'glance_foo': 'glance_bar'}, volume.glance_metadata)
        self._compare(self, db_volume_type, volume.volume_type)
        self._compare(self, db_volume_attachments, volume.volume_attachment)
        self._compare(self, db_consistencygroup, volume.consistencygroup)
        self._compare(self, db_snapshots, volume.snapshots)
コード例 #7
0
    def test_get_all_by_instance_uuid(self, get_by_instance_uuid):
        db_attachment = fake_volume.fake_db_volume_attachment()
        get_by_instance_uuid.return_value = [db_attachment]

        attachments = objects.VolumeAttachmentList.get_all_by_instance_uuid(
            self.context, mock.sentinel.volume_id, mock.sentinel.uuid)
        self.assertEqual(1, len(attachments))
        TestVolumeAttachment._compare(self, db_attachment, attachments[0])
コード例 #8
0
    def test_get_all_by_instance_uuid(self, get_by_instance_uuid):
        db_attachment = fake_volume.fake_db_volume_attachment()
        get_by_instance_uuid.return_value = [db_attachment]

        attachments = objects.VolumeAttachmentList.get_all_by_instance_uuid(
            self.context, mock.sentinel.volume_id, mock.sentinel.uuid)
        self.assertEqual(1, len(attachments))
        TestVolumeAttachment._compare(self, db_attachment, attachments[0])
コード例 #9
0
    def test_get_all_by_host(self, get_by_host):
        db_attachment = fake_volume.fake_db_volume_attachment()
        attachment_obj = fake_volume.fake_volume_attachment_obj(self.context)
        get_by_host.return_value = [db_attachment]

        attachments = objects.VolumeAttachmentList.get_all_by_host(
            self.context, mock.sentinel.host)
        self.assertEqual(1, len(attachments))
        TestVolumeAttachment._compare(self, attachment_obj, attachments[0])
コード例 #10
0
    def test_get_all_by_host(self, get_by_host):
        db_attachment = fake_volume.fake_db_volume_attachment()
        attachment_obj = fake_volume.fake_volume_attachment_obj(self.context)
        get_by_host.return_value = [db_attachment]

        attachments = objects.VolumeAttachmentList.get_all_by_host(
            self.context, mock.sentinel.host)
        self.assertEqual(1, len(attachments))
        TestVolumeAttachment._compare(self, attachment_obj, attachments[0])
コード例 #11
0
ファイル: test_rpcapi.py プロジェクト: zjjfeng111/cinder
 def test_attach_volume_to_host(self, version):
     self.can_send_version_mock.return_value = (version == '3.3')
     self._test_rpc_api('attach_volume',
                        rpc_method='call',
                        server=self.fake_volume_obj.host,
                        volume=self.fake_volume_obj,
                        instance_uuid=None,
                        host_name='fake_host',
                        mountpoint='fake_mountpoint',
                        mode='rw',
                        expected_kwargs_diff={
                            'volume_id': self.fake_volume_obj.id},
                        retval=fake_volume.fake_db_volume_attachment(),
                        version=version)
コード例 #12
0
    def test_refresh(self, attachment_get):
        db_attachment1 = fake_volume.fake_db_volume_attachment()
        db_attachment2 = db_attachment1.copy()
        db_attachment2['mountpoint'] = '/dev/sdc'

        # On the second volume_attachment_get, return the volume attachment
        # with an updated mountpoint
        attachment_get.side_effect = [db_attachment1, db_attachment2]
        attachment = objects.VolumeAttachment.get_by_id(self.context, '1')
        self._compare(self, db_attachment1, attachment)

        # mountpoint was updated, so a volume attachment refresh should have a
        # new value for that field
        attachment.refresh()
        self._compare(self, db_attachment2, attachment)
        attachment_get.assert_has_calls([mock.call(self.context, '1'),
                                         mock.call.__nonzero__(),
                                         mock.call(self.context, '1')])
コード例 #13
0
    def test_begin_attach(self, volume_attach, metadata_update):
        volume = fake_volume.fake_volume_obj(self.context)
        db_attachment = fake_volume.fake_db_volume_attachment(
            volume_id=volume.id,
            attach_status=fields.VolumeAttachStatus.ATTACHING)
        volume_attach.return_value = db_attachment
        metadata_update.return_value = {'attached_mode': 'rw'}

        with mock.patch.object(self.context, 'elevated') as mock_elevated:
            mock_elevated.return_value = context.get_admin_context()
            attachment = volume.begin_attach("rw")
            self.assertIsInstance(attachment, objects.VolumeAttachment)
            self.assertEqual(volume.id, attachment.volume_id)
            self.assertEqual(fields.VolumeAttachStatus.ATTACHING,
                             attachment.attach_status)
            metadata_update.assert_called_once_with(self.context.elevated(),
                                                    volume.id,
                                                    {'attached_mode': u'rw'},
                                                    True)
            self.assertEqual('rw', volume.admin_metadata['attached_mode'])
コード例 #14
0
    def test_refresh(self, attachment_get):
        db_attachment1 = fake_volume.fake_db_volume_attachment()
        db_attachment2 = db_attachment1.copy()
        db_attachment2['mountpoint'] = '/dev/sdc'

        # On the second volume_attachment_get, return the volume attachment
        # with an updated mountpoint
        attachment_get.side_effect = [db_attachment1, db_attachment2]
        attachment = objects.VolumeAttachment.get_by_id(self.context, '1')
        self._compare(self, db_attachment1, attachment)

        # mountpoint was updated, so a volume attachment refresh should have a
        # new value for that field
        attachment.refresh()
        self._compare(self, db_attachment2, attachment)
        attachment_get.assert_has_calls([
            mock.call(self.context, '1'),
            mock.call.__nonzero__(),
            mock.call(self.context, '1')
        ])
コード例 #15
0
ファイル: test_volume.py プロジェクト: btreiber/cinder
    def test_from_db_object_with_all_expected_attributes(self):
        expected_attrs = [
            "metadata",
            "admin_metadata",
            "glance_metadata",
            "volume_type",
            "volume_attachment",
            "consistencygroup",
        ]

        db_metadata = [{"key": "foo", "value": "bar"}]
        db_admin_metadata = [{"key": "admin_foo", "value": "admin_bar"}]
        db_glance_metadata = [{"key": "glance_foo", "value": "glance_bar"}]
        db_volume_type = fake_volume.fake_db_volume_type()
        db_volume_attachments = fake_volume.fake_db_volume_attachment()
        db_consistencygroup = fake_consistencygroup.fake_db_consistencygroup()
        db_snapshots = fake_snapshot.fake_db_snapshot()

        db_volume = fake_volume.fake_db_volume(
            volume_metadata=db_metadata,
            volume_admin_metadata=db_admin_metadata,
            volume_glance_metadata=db_glance_metadata,
            volume_type=db_volume_type,
            volume_attachment=[db_volume_attachments],
            consistencygroup=db_consistencygroup,
            snapshots=[db_snapshots],
        )
        volume = objects.Volume._from_db_object(self.context, objects.Volume(), db_volume, expected_attrs)

        self.assertEqual({"foo": "bar"}, volume.metadata)
        self.assertEqual({"admin_foo": "admin_bar"}, volume.admin_metadata)
        self.assertEqual({"glance_foo": "glance_bar"}, volume.glance_metadata)
        self._compare(self, db_volume_type, volume.volume_type)
        self._compare(self, db_volume_attachments, volume.volume_attachment)
        self._compare(self, db_consistencygroup, volume.consistencygroup)
        self._compare(self, db_snapshots, volume.snapshots)
コード例 #16
0
 def test_get_by_id(self, volume_attachment_get):
     db_attachment = fake_volume.fake_db_volume_attachment()
     volume_attachment_get.return_value = db_attachment
     attachment = objects.VolumeAttachment.get_by_id(self.context, '1')
     self._compare(self, db_attachment, attachment)
コード例 #17
0
 def test_get_by_id(self, volume_attachment_get):
     db_attachment = fake_volume.fake_db_volume_attachment()
     volume_attachment_get.return_value = db_attachment
     attachment = objects.VolumeAttachment.get_by_id(self.context, '1')
     self._compare(self, db_attachment, attachment)