Beispiel #1
0
 def get_storage_pool_by_name(self, name):
     """Get pool by name(host@backend#poolname)"""
     try:
         pools = list(
             filter(lambda pool: pool.name == name,
                    self.get_storage_pool_list()))
         if len(pools) != 1:
             raise exception.PoolNotFound(name=name)
         return pools[0]
     except Exception as exc:
         LOG.exception(exc)
         raise exception.PoolNotFound(name=name)
Beispiel #2
0
 def get_storage_pool_by_name(self, name):
     """Get pool by name(host@backend#poolname)"""
     try:
         pools = [
             pool for pool in self.get_storage_pool_list()
             if pool.name == name
         ]
         if len(pools) != 1:
             raise exception.PoolNotFound(name=name)
         return pools[0]
     except Exception as exc:
         LOG.exception(exc)
         raise exception.PoolNotFound(name=name)
    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)
Beispiel #4
0
 def remove_pool(self, pool):
     self.assert_pool(pool)
     try:
         super(StorageModelRoot, self).remove_node(pool.name)
     except nx.NetworkXError as exc:
         LOG.exception(exc)
         raise exception.PoolNotFound(name=pool.name)
Beispiel #5
0
 def get_pool_by_volume(self, volume):
     self.assert_volume(volume)
     volume = self._get_by_uuid(volume.uuid)
     for p in self.neighbors(volume.uuid):
         pool = self._get_by_name(p)
         if isinstance(pool, element.Pool):
             return pool
     raise exception.PoolNotFound(name=volume.uuid)
Beispiel #6
0
 def create_pool(self, pool_name):
     """Create the storage pool by querying the Cinder API."""
     try:
         _pool = self.cinder.get_storage_pool_by_name(pool_name)
         pool = element.Pool(
             name=_pool.name,
             total_volumes=_pool.total_volumes,
             total_capacity_gb=_pool.total_capacity_gb,
             free_capacity_gb=_pool.free_capacity_gb,
             provisioned_capacity_gb=_pool.provisioned_capacity_gb,
             allocated_capacity_gb=_pool.allocated_capacity_gb)
         return pool
     except Exception as exc:
         LOG.exception(exc)
         LOG.debug("Could not refresh the pool %s.", pool_name)
         raise exception.PoolNotFound(name=pool_name)
Beispiel #7
0
 def get_pool_by_pool_name(self, name):
     try:
         return self._get_by_name(name)
     except exception.StorageResourceNotFound:
         raise exception.PoolNotFound(name=name)