def pools_internal(self, lock=True): if lock: self.cache_lock.acquire() try: if not self.pool_data: self.pool_data = all_properties(resource_type='zpool') return self.pool_data finally: if lock: self.cache_lock.release()
def datasets(self): with self.cache_lock: ioc_pool = self.iocage_activated_pool_internal(lock=False) if not self.dataset_data or set(self.dataset_data) == set(self.pool_data): ds = '' if ioc_pool: ds = os.path.join(ioc_pool, 'iocage') self.dataset_data.update(all_properties( [ds] if ds and dataset_exists(ds) else [], recursive=True, types=['filesystem'] )) return self.dataset_data
def datasets(self): with self.cache_lock: if not self.dataset_data: ds = '' ioc_pool = iocage_activated_pool() if ioc_pool: ds = os.path.join(ioc_pool, 'iocage') self.dataset_data = all_properties( ds if ds and dataset_exists(ds) else '', recursive=True ) return self.dataset_data
def iocage_activated_pool_internal(self, lock=True): if lock: self.cache_lock.acquire() try: pools = self.pools_internal(lock=False) self.dataset_data = self.dataset_data or {} if not self.ioc_pool: if not all(self.dataset_data.get(p) for p in pools): self.dataset_data.update( all_properties([p for p in pools], types=['filesystem'])) for p in filter( lambda p: self.dataset_data.get(p, {}).get( 'org.freebsd.ioc:active') == 'yes', pools): self.ioc_pool = p return self.ioc_pool finally: if lock: self.cache_lock.release()
def datasets(self): if not self.dataset_data: self.dataset_data = all_properties() return self.dataset_data
def pools(self): if not self.pool_data: self.pool_data = all_properties(resource_type='zpool') return self.pool_data
def pools(self): with self.cache_lock: if not self.pool_data: self.pool_data = all_properties(resource_type='zpool') return self.pool_data
def datasets(self): with self.cache_lock: if not self.dataset_data: self.dataset_data = all_properties() return self.dataset_data