[entropy.client] move _enabled_repos to a property, allow lazy loading
This commit is contained in:
@@ -753,7 +753,6 @@ class Client(Singleton, TextInterface, LoadersMixin, CacheMixin,
|
||||
self._can_run_sys_set_hooks = False
|
||||
const_debug_write(__name__, "debug enabled")
|
||||
|
||||
self._enabled_repos = []
|
||||
self.safe_mode = 0
|
||||
self._indexing = indexing
|
||||
self._repo_validation = repo_validation
|
||||
@@ -771,6 +770,9 @@ class Client(Singleton, TextInterface, LoadersMixin, CacheMixin,
|
||||
self._real_logger = None
|
||||
self._real_logger_lock = threading.Lock()
|
||||
|
||||
self._real_enabled_repos = None
|
||||
self._real_enabled_repos_lock = threading.RLock()
|
||||
|
||||
# class init
|
||||
LoadersMixin.__init__(self)
|
||||
|
||||
@@ -803,11 +805,6 @@ class Client(Singleton, TextInterface, LoadersMixin, CacheMixin,
|
||||
elif (not entropy.tools.is_user_in_entropy_group()) and not user_xcache:
|
||||
self.xcache = False
|
||||
|
||||
if self._repo_validation:
|
||||
self._validate_repositories()
|
||||
else:
|
||||
self._enabled_repos.extend(self._settings['repositories']['order'])
|
||||
|
||||
# Add Entropy Resources Lock post-acquire hook that cleans
|
||||
# repository caches.
|
||||
hook_ref = EntropyResourcesLock.add_post_acquire_hook(
|
||||
@@ -895,6 +892,23 @@ class Client(Singleton, TextInterface, LoadersMixin, CacheMixin,
|
||||
|
||||
return self._real_logger
|
||||
|
||||
@property
|
||||
def _enabled_repos(self):
|
||||
if self._real_enabled_repos is None:
|
||||
with self._real_enabled_repos_lock:
|
||||
|
||||
if self._real_enabled_repos is None:
|
||||
self._real_enabled_repos = []
|
||||
|
||||
if self._repo_validation:
|
||||
self._validate_repositories(
|
||||
enabled_repos = self._real_enabled_repos)
|
||||
else:
|
||||
self._real_enabled_repos.extend(
|
||||
self._settings['repositories']['order'])
|
||||
|
||||
return self._real_enabled_repos
|
||||
|
||||
def _resources_post_hook(self):
|
||||
"""
|
||||
Hook running after Entropy Resources Lock acquisition.
|
||||
|
||||
@@ -58,7 +58,10 @@ class RepositoryMixin:
|
||||
def __get_repository_cache_key(self, repository_id):
|
||||
return (repository_id, etpConst['systemroot'],)
|
||||
|
||||
def _validate_repositories(self, quiet = False):
|
||||
def _validate_repositories(self, quiet = False, enabled_repos = None):
|
||||
|
||||
if enabled_repos is None:
|
||||
enabled_repos = self._enabled_repos
|
||||
|
||||
StatusInterface().clear()
|
||||
self._repo_error_messages_cache.clear()
|
||||
@@ -86,7 +89,7 @@ class RepositoryMixin:
|
||||
|
||||
t2 = _("Please update your repositories now in order to remove this message!")
|
||||
|
||||
del self._enabled_repos[:]
|
||||
del enabled_repos[:]
|
||||
_enabled_repos = []
|
||||
all_repos = self._settings['repositories']['order'][:]
|
||||
for repoid in self._settings['repositories']['order']:
|
||||
@@ -143,7 +146,7 @@ class RepositoryMixin:
|
||||
continue
|
||||
|
||||
# write back correct _enabled_repos
|
||||
self._enabled_repos.extend(_enabled_repos)
|
||||
enabled_repos.extend(_enabled_repos)
|
||||
|
||||
def _init_generic_temp_repository(self, repoid, description,
|
||||
package_mirrors = None, temp_file = None):
|
||||
|
||||
@@ -27,8 +27,6 @@ class EntropyRepositoryTest(unittest.TestCase):
|
||||
xcache = False, repo_validation = False)
|
||||
self.Spm = self.Client.Spm()
|
||||
self.test_db_name = "test_suite"
|
||||
self.client_sysset_plugin_id = \
|
||||
etpConst['system_settings_plugins_ids']['client_plugin']
|
||||
self.test_db = self.__open_test_db(":memory:")
|
||||
# GenericRepository supports package masking if this property is set
|
||||
self.test_db.enable_mask_filter = True
|
||||
@@ -400,9 +398,8 @@ class EntropyRepositoryTest(unittest.TestCase):
|
||||
self.test_db.atomMatch(pkg_atom))
|
||||
|
||||
# test package masking
|
||||
plug_id = self.client_sysset_plugin_id
|
||||
masking_validation = \
|
||||
self._settings[plug_id]['masking_validation']['cache']
|
||||
self.Client.ClientSettings()['masking_validation']['cache']
|
||||
f_match_mask = (1, self.test_db_name,)
|
||||
|
||||
self._settings['live_packagemasking']['mask_matches'].add(
|
||||
@@ -465,9 +462,8 @@ class EntropyRepositoryTest(unittest.TestCase):
|
||||
self.test_db.atomMatch(pkg_atom))
|
||||
|
||||
# test package masking
|
||||
plug_id = self.client_sysset_plugin_id
|
||||
masking_validation = \
|
||||
self._settings[plug_id]['masking_validation']['cache']
|
||||
masking_validation = self.Client.ClientSettings(
|
||||
)['masking_validation']['cache']
|
||||
f_match_mask = (1, self.test_db_name,)
|
||||
|
||||
self._settings['live_packagemasking']['mask_matches'].add(
|
||||
@@ -504,9 +500,8 @@ class EntropyRepositoryTest(unittest.TestCase):
|
||||
self.test_db.atomMatch(pkg_atom))
|
||||
|
||||
# test package masking
|
||||
plug_id = self.client_sysset_plugin_id
|
||||
masking_validation = \
|
||||
self._settings[plug_id]['masking_validation']['cache']
|
||||
masking_validation = self.Client.ClientSettings(
|
||||
)['masking_validation']['cache']
|
||||
f_match_mask = (1, self.test_db_name,)
|
||||
|
||||
self._settings['live_packagemasking']['mask_matches'].add(
|
||||
@@ -552,9 +547,8 @@ class EntropyRepositoryTest(unittest.TestCase):
|
||||
self.test_db.atomMatch(pkg_atom))
|
||||
|
||||
# test package masking
|
||||
plug_id = self.client_sysset_plugin_id
|
||||
masking_validation = \
|
||||
self._settings[plug_id]['masking_validation']['cache']
|
||||
masking_validation = self.Client.ClientSettings(
|
||||
)['masking_validation']['cache']
|
||||
f_match_mask = (1, self.test_db_name,)
|
||||
|
||||
self._settings['live_packagemasking']['mask_matches'].add(
|
||||
|
||||
Reference in New Issue
Block a user