Source code for pyds8k.resources.ds8k.v1.pools

##############################################################################
# Copyright 2019 IBM Corp.
#
# 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.
##############################################################################

"""
Extent pool interface.
"""

from pyds8k.base import ManagerMeta, ResourceMeta
from pyds8k.exceptions import IDMissingError

from .common.base import Base, ReadOnlyManager
from .common.mixins import VolumeMixin
from .common.types import DS8K_ESEREP, DS8K_POOL, DS8K_TSEREP, DS8K_VOLUME


# Note: VolumeMixin will override the methods with
# same name in RootResourceMixin.
[docs]class Pool(VolumeMixin, Base, metaclass=ResourceMeta): resource_type = DS8K_POOL # id_field = 'id' _template = { 'id': '', 'name': '', 'node': '', 'stgtype': '', 'cap': '', 'capalloc': '', 'capavail': '', 'overprovisioned': '', 'easytier': '', 'tieralloc': [], 'threshold': '', 'real_capacity_allocated_on_ese': None, 'virtual_capacity_allocated_on_ese': None, DS8K_VOLUME: '', DS8K_TSEREP: '', DS8K_ESEREP: '', } related_resources_collection = (DS8K_VOLUME, DS8K_TSEREP, DS8K_ESEREP) def __repr__(self): return f"<Extent Pool: {self._get_id()}>" def get_tserep(self): if not self.id: raise IDMissingError tserep = self.all(DS8K_TSEREP).list() self._start_updating() setattr(self, DS8K_TSEREP, tserep) self._stop_updating() return tserep def get_TSE_rep(self): # noqa: N802 return self.get_tserep()[0] def get_eserep(self): if not self.id: raise IDMissingError eserep = self.all(DS8K_ESEREP).list() self._start_updating() setattr(self, DS8K_ESEREP, eserep) self._stop_updating() return eserep def get_ESE_rep(self): # noqa: N802 return self.get_eserep()[0] def delete_tserep(self): if not self.id: raise IDMissingError return self.all(DS8K_TSEREP).delete() def delete_eserep(self): if not self.id: raise IDMissingError return self.all(DS8K_ESEREP).delete() def update_tserep_cap(self, cap, captype=''): if not self.id: raise IDMissingError return self.all(DS8K_TSEREP).update({'cap': cap, 'captype': captype}) def update_eserep_cap(self, cap, captype=''): if not self.id: raise IDMissingError return self.all(DS8K_ESEREP).update({'cap': cap, 'captype': captype}) def update_tserep_threshold(self, threshold): if not self.id: raise IDMissingError return self.all(DS8K_TSEREP).update({'threshold': threshold}) def update_eserep_threshold(self, threshold): if not self.id: raise IDMissingError return self.all(DS8K_ESEREP).update({'threshold': threshold})
[docs]class PoolManager(ReadOnlyManager, metaclass=ManagerMeta): """ Manage Extent Pool resources. """ resource_class = Pool resource_type = DS8K_POOL