def test_cinder_error_volume_unmapped(self, m_cinder_helper): """test creating error volume unmapped""" m_get_storage_pool_by_name = mock.Mock( side_effect=exception.PoolNotFound(name="TEST")) m_cinder_helper.return_value = mock.Mock( get_storage_pool_by_name=m_get_storage_pool_by_name) storage_model = self.fake_cdmc.generate_scenario_1() self.fake_cdmc.cluster_data_model = storage_model handler = cnotification.VolumeCreateEnd(self.fake_cdmc) message = self.load_message('scenario_1_error-volume-create.json') handler.info( ctxt=self.context, publisher_id=message['publisher_id'], event_type=message['event_type'], payload=message['payload'], metadata=self.FAKE_METADATA, ) # we do not call get_storage_pool_by_name m_get_storage_pool_by_name.assert_not_called() # check that volume00 was added to the model volume_00_name = 'VOLUME_00' volume_00 = storage_model.get_volume_by_uuid(volume_00_name) self.assertEqual(volume_00_name, volume_00.uuid)
def notification_endpoints(self): return [ cnotification.CapacityNotificationEndpoint(self.fake_cdmc), cnotification.VolumeCreateEnd(self.fake_cdmc), cnotification.VolumeUpdateEnd(self.fake_cdmc), cnotification.VolumeDeleteEnd(self.fake_cdmc), cnotification.VolumeAttachEnd(self.fake_cdmc), cnotification.VolumeDetachEnd(self.fake_cdmc), cnotification.VolumeResizeEnd(self.fake_cdmc), ]
def notification_endpoints(self): """Associated notification endpoints :return: Associated notification endpoints :rtype: List of :py:class:`~.EventsNotificationEndpoint` instances """ return [ cinder.CapacityNotificationEndpoint(self), cinder.VolumeCreateEnd(self), cinder.VolumeDeleteEnd(self), cinder.VolumeUpdateEnd(self), cinder.VolumeAttachEnd(self), cinder.VolumeDetachEnd(self), cinder.VolumeResizeEnd(self) ]
def test_cinder_bootable_volume_create(self, m_cinder_helper): """test creating bootable volume in existing pool and node""" # create storage_pool_by_name mock return_pool_mock = mock.Mock() return_pool_mock.configure_mock(name='host_0@backend_0#pool_0', total_volumes='3', total_capacity_gb='500', free_capacity_gb='380', provisioned_capacity_gb='120', allocated_capacity_gb='120') m_get_storage_pool_by_name = mock.Mock( side_effect=lambda name: return_pool_mock) m_cinder_helper.return_value = mock.Mock( get_storage_pool_by_name=m_get_storage_pool_by_name) storage_model = self.fake_cdmc.generate_scenario_1() self.fake_cdmc.cluster_data_model = storage_model handler = cnotification.VolumeCreateEnd(self.fake_cdmc) message = self.load_message('scenario_1_bootable-volume-create.json') handler.info( ctxt=self.context, publisher_id=message['publisher_id'], event_type=message['event_type'], payload=message['payload'], metadata=self.FAKE_METADATA, ) # check that volume00 was added to the model volume_00_name = 'VOLUME_00' volume_00 = storage_model.get_volume_by_uuid(volume_00_name) self.assertEqual(volume_00_name, volume_00.uuid) self.assertTrue(volume_00.bootable) # check that capacity was updated pool_0_name = 'host_0@backend_0#pool_0' m_get_storage_pool_by_name.assert_called_once_with(pool_0_name) pool_0 = storage_model.get_pool_by_pool_name(pool_0_name) self.assertEqual(pool_0.name, pool_0_name) self.assertEqual(3, pool_0.total_volumes) self.assertEqual(380, pool_0.free_capacity_gb) self.assertEqual(120, pool_0.allocated_capacity_gb) self.assertEqual(120, pool_0.provisioned_capacity_gb)
def test_cinder_volume_create_pool_notfound(self, m_cinder_helper): """check creating volume in not existing pool and node""" # get_storage_pool_by_name mock return_pool_mock = mock.Mock() return_pool_mock.configure_mock(name='host_2@backend_2#pool_0', total_volumes='1', total_capacity_gb='500', free_capacity_gb='460', provisioned_capacity_gb='40', allocated_capacity_gb='40') m_get_storage_pool_by_name = mock.Mock( side_effect=lambda name: return_pool_mock) # create storage_node_by_name mock return_node_mock = mock.Mock() return_node_mock.configure_mock(host='host_2@backend_2', zone='nova', state='up', status='enabled') m_get_storage_node_by_name = mock.Mock( side_effect=lambda name: return_node_mock) m_get_volume_type_by_backendname = mock.Mock( side_effect=lambda name: mock.Mock('backend_2')) m_cinder_helper.return_value = mock.Mock( get_storage_pool_by_name=m_get_storage_pool_by_name, get_storage_node_by_name=m_get_storage_node_by_name, get_volume_type_by_backendname=m_get_volume_type_by_backendname) storage_model = self.fake_cdmc.generate_scenario_1() self.fake_cdmc.cluster_data_model = storage_model handler = cnotification.VolumeCreateEnd(self.fake_cdmc) message = self.load_message( 'scenario_1_volume-create_pool_notfound.json') handler.info( ctxt=self.context, publisher_id=message['publisher_id'], event_type=message['event_type'], payload=message['payload'], metadata=self.FAKE_METADATA, ) # check that volume00 was added to the model volume_00_name = 'VOLUME_00' volume_00 = storage_model.get_volume_by_uuid(volume_00_name) self.assertEqual(volume_00_name, volume_00.uuid) # check that capacity was updated node_2_name = 'host_2@backend_2' pool_0_name = node_2_name + '#pool_0' pool_0 = storage_model.get_pool_by_pool_name(pool_0_name) self.assertEqual(pool_0.name, pool_0_name) self.assertEqual(1, pool_0.total_volumes) self.assertEqual(460, pool_0.free_capacity_gb) self.assertEqual(40, pool_0.allocated_capacity_gb) self.assertEqual(40, pool_0.provisioned_capacity_gb) # check that node was added m_get_storage_node_by_name.assert_called_once_with(node_2_name)