[entropy.server] decouple list of repository mirrors from packages mirrors, keeping backward compatibility
This commit is contained in:
@@ -34,6 +34,9 @@ default-repository|sabayonlinux.org
|
||||
#
|
||||
# PLEASE NOTE: the first repository listed is going to be considered the
|
||||
# "base" repository
|
||||
# PLEASE NOTE (2): you can specify server for repository or packages
|
||||
# sync only, by prefixing URIs with <p> (for packages only) or <r>
|
||||
# (for repository only)
|
||||
#
|
||||
# example:
|
||||
# => repository|myserverrepo|My Server Repository|ftp://user:pass@111.111.111.111/ ssh://username@host:~user/path:port|hostname.tld#1026,1027
|
||||
|
||||
@@ -465,14 +465,33 @@ class ServerSystemSettingsPlugin(SystemSettingsPlugin):
|
||||
mydata = {}
|
||||
mydata['repoid'] = repoid
|
||||
mydata['description'] = repodesc
|
||||
mydata['mirrors'] = []
|
||||
mydata['pkg_mirrors'] = []
|
||||
mydata['repo_mirrors'] = []
|
||||
mydata['community'] = False
|
||||
mydata['service_url'] = service_url
|
||||
mydata['service_port'] = eapi3_port
|
||||
mydata['ssl_service_port'] = eapi3_ssl_port
|
||||
uris = repouris.split()
|
||||
for uri in uris:
|
||||
mydata['mirrors'].append(uri)
|
||||
do_pkg = False
|
||||
do_repo = False
|
||||
while True:
|
||||
if uri.startswith("<p>"):
|
||||
do_pkg = True
|
||||
uri = uri[3:]
|
||||
continue
|
||||
if uri.startswith("<r>"):
|
||||
do_repo = True
|
||||
uri = uri[3:]
|
||||
continue
|
||||
break
|
||||
if not (do_repo and do_pkg):
|
||||
do_repo = True
|
||||
do_pkg = True
|
||||
if do_repo:
|
||||
mydata['repo_mirrors'].append(uri)
|
||||
if do_pkg:
|
||||
mydata['pkg_mirrors'].append(uri)
|
||||
|
||||
return repoid, mydata
|
||||
|
||||
@@ -630,8 +649,10 @@ class ServerSystemSettingsPlugin(SystemSettingsPlugin):
|
||||
product = sys_set['repositories']['product'])
|
||||
if repoid in data['repositories']:
|
||||
# just update mirrors
|
||||
data['repositories'][repoid]['mirrors'].extend(
|
||||
repodata['mirrors'])
|
||||
data['repositories'][repoid]['pkg_mirrors'].extend(
|
||||
repodata['pkg_mirrors'])
|
||||
data['repositories'][repoid]['repo_mirrors'].extend(
|
||||
repodata['repo_mirrors'])
|
||||
else:
|
||||
data['repositories'][repoid] = repodata.copy()
|
||||
|
||||
@@ -702,7 +723,8 @@ class ServerSystemSettingsPlugin(SystemSettingsPlugin):
|
||||
data['repositories'][etpConst['clientserverrepoid']] = {}
|
||||
mydata = {}
|
||||
mydata['description'] = "Community Repositories System Database"
|
||||
mydata['mirrors'] = []
|
||||
mydata['pkg_mirrors'] = []
|
||||
mydata['repo_mirrors'] = []
|
||||
mydata['community'] = False
|
||||
data['repositories'][etpConst['clientserverrepoid']].update(mydata)
|
||||
# installed packages repository is now the base repository
|
||||
@@ -1238,11 +1260,17 @@ class ServerSettingsMixin:
|
||||
return os.path.join(srv_set['repositories'][repo]['repo_basedir'],
|
||||
pkg_rel_url)
|
||||
|
||||
def get_remote_mirrors(self, repo = None):
|
||||
def get_remote_repository_mirrors(self, repo = None):
|
||||
srv_set = self._settings[Server.SYSTEM_SETTINGS_PLG_ID]['server']
|
||||
if repo is None:
|
||||
repo = self.default_repository
|
||||
return srv_set['repositories'][repo]['mirrors'][:]
|
||||
return srv_set['repositories'][repo]['repo_mirrors'][:]
|
||||
|
||||
def get_remote_packages_mirrors(self, repo = None):
|
||||
srv_set = self._settings[Server.SYSTEM_SETTINGS_PLG_ID]['server']
|
||||
if repo is None:
|
||||
repo = self.default_repository
|
||||
return srv_set['repositories'][repo]['pkg_mirrors'][:]
|
||||
|
||||
def get_local_repository_revision(self, repo = None):
|
||||
|
||||
@@ -1680,7 +1708,7 @@ class ServerPackagesHandlingMixin:
|
||||
if rc_question == _("No"):
|
||||
continue
|
||||
|
||||
for uri in self.get_remote_mirrors(repo):
|
||||
for uri in self.get_remote_packages_mirrors(repo):
|
||||
|
||||
crippled_uri = EntropyTransceiver.get_uri_name(uri)
|
||||
|
||||
@@ -2437,7 +2465,7 @@ class ServerPackagesHandlingMixin:
|
||||
not_match = set()
|
||||
broken_packages = {}
|
||||
|
||||
for uri in self.get_remote_mirrors(repo):
|
||||
for uri in self.get_remote_packages_mirrors(repo):
|
||||
|
||||
crippled_uri = EntropyTransceiver.get_uri_name(uri)
|
||||
self.output(
|
||||
@@ -3000,7 +3028,7 @@ class ServerPackagesHandlingMixin:
|
||||
level = "info",
|
||||
header = " "
|
||||
)
|
||||
for uri in self.get_remote_mirrors(repo):
|
||||
for uri in self.get_remote_packages_mirrors(repo):
|
||||
|
||||
if not_downloaded:
|
||||
mytxt = blue("%s ...") % (
|
||||
@@ -3713,7 +3741,7 @@ class ServerRepositoryMixin:
|
||||
header = red(" * "),
|
||||
back = True
|
||||
)
|
||||
for uri in self.get_remote_mirrors(repo):
|
||||
for uri in self.get_remote_repository_mirrors(repo):
|
||||
|
||||
crippled_uri = EntropyTransceiver.get_uri_name(uri)
|
||||
|
||||
@@ -3761,11 +3789,14 @@ class ServerRepositoryMixin:
|
||||
|
||||
|
||||
def _init_generic_memory_server_repository(self, repoid, description,
|
||||
mirrors = None, community_repo = False, service_url = None,
|
||||
set_as_default = False):
|
||||
pkg_mirrors = None, repo_mirrors = None, community_repo = False,
|
||||
service_url = None, set_as_default = False):
|
||||
|
||||
if pkg_mirrors is None:
|
||||
pkg_mirrors = []
|
||||
if repo_mirrors is None:
|
||||
repo_mirrors = []
|
||||
|
||||
if mirrors is None:
|
||||
mirrors = []
|
||||
dbc = self._open_temp_repository(repoid, temp_file = ":memory:")
|
||||
self._memory_db_srv_instances[repoid] = dbc
|
||||
|
||||
@@ -3775,7 +3806,8 @@ class ServerRepositoryMixin:
|
||||
repodata = {
|
||||
'repoid': repoid,
|
||||
'description': description,
|
||||
'mirrors': mirrors,
|
||||
'pkg_mirrors': pkg_mirrors,
|
||||
'repo_mirrors': repo_mirrors,
|
||||
'community': community_repo,
|
||||
'service_port': eapi3_port,
|
||||
'ssl_service_port': eapi3_ssl_port,
|
||||
|
||||
@@ -17,7 +17,7 @@ import time
|
||||
from entropy.exceptions import OnlineMirrorError, ConnectionError, \
|
||||
EntropyPackageException, TransceiverError
|
||||
from entropy.output import red, darkgreen, bold, brown, blue, darkred, \
|
||||
darkblue, purple
|
||||
darkblue, purple, teal
|
||||
from entropy.const import etpConst, const_setup_perms, const_setup_file
|
||||
from entropy.cache import EntropyCacher
|
||||
from entropy.i18n import _
|
||||
@@ -38,7 +38,7 @@ class ServerNoticeBoardMixin:
|
||||
|
||||
if repo is None:
|
||||
repo = self._entropy.default_repository
|
||||
mirrors = self._entropy.get_remote_mirrors(repo)
|
||||
mirrors = self._entropy.get_remote_repository_mirrors(repo)
|
||||
rss_path = self._entropy._get_local_database_notice_board_file(repo)
|
||||
mytmpdir = tempfile.mkdtemp()
|
||||
|
||||
@@ -87,7 +87,7 @@ class ServerNoticeBoardMixin:
|
||||
|
||||
if repo is None:
|
||||
repo = self._entropy.default_repository
|
||||
mirrors = self._entropy.get_remote_mirrors(repo)
|
||||
mirrors = self._entropy.get_remote_repository_mirrors(repo)
|
||||
rss_path = self._entropy._get_local_database_notice_board_file(repo)
|
||||
rss_file = os.path.basename(rss_path)
|
||||
|
||||
@@ -142,7 +142,7 @@ class ServerNoticeBoardMixin:
|
||||
|
||||
if repo is None:
|
||||
repo = self._entropy.default_repository
|
||||
mirrors = self._entropy.get_remote_mirrors(repo)
|
||||
mirrors = self._entropy.get_remote_repository_mirrors(repo)
|
||||
rss_path = self._entropy._get_local_database_notice_board_file(repo)
|
||||
|
||||
self._entropy.output(
|
||||
@@ -259,11 +259,20 @@ class Server(ServerNoticeBoardMixin):
|
||||
level = "info",
|
||||
header = red(" @@ ")
|
||||
)
|
||||
mytxt = _("mirror")
|
||||
for mirror in self._entropy.get_remote_mirrors(repo = repo):
|
||||
for mirror in self._entropy.get_remote_repository_mirrors(repo = repo):
|
||||
mytxt = _("repository mirror")
|
||||
mirror = EntropyTransceiver.hide_sensible_data(mirror)
|
||||
self._entropy.output(
|
||||
blue("%s: %s") % (mytxt, darkgreen(mirror),),
|
||||
"%s: %s" % (purple(mytxt), darkgreen(mirror),),
|
||||
importance = 0,
|
||||
level = "info",
|
||||
header = brown(" # ")
|
||||
)
|
||||
for mirror in self._entropy.get_remote_packages_mirrors(repo = repo):
|
||||
mytxt = _("packages mirror")
|
||||
mirror = EntropyTransceiver.hide_sensible_data(mirror)
|
||||
self._entropy.output(
|
||||
blue("%s: %s") % (teal(mytxt), darkgreen(mirror),),
|
||||
importance = 0,
|
||||
level = "info",
|
||||
header = brown(" # ")
|
||||
@@ -272,7 +281,8 @@ class Server(ServerNoticeBoardMixin):
|
||||
def _read_remote_file_in_branches(self, filename, repo = None,
|
||||
excluded_branches = None):
|
||||
"""
|
||||
Reads a file remotely located in all the available branches.
|
||||
Reads a file remotely located in all the available branches, in
|
||||
repository directory.
|
||||
|
||||
@param filename: name of the file that should be located inside
|
||||
repository database directory
|
||||
@@ -291,7 +301,7 @@ class Server(ServerNoticeBoardMixin):
|
||||
excluded_branches = []
|
||||
|
||||
branch_data = {}
|
||||
mirrors = self._entropy.get_remote_mirrors(repo)
|
||||
mirrors = self._entropy.get_remote_repository_mirrors(repo)
|
||||
for uri in mirrors:
|
||||
|
||||
crippled_uri = EntropyTransceiver.get_uri_name(uri)
|
||||
@@ -359,7 +369,7 @@ class Server(ServerNoticeBoardMixin):
|
||||
repo = self._entropy.default_repository
|
||||
|
||||
if not mirrors:
|
||||
mirrors = self._entropy.get_remote_mirrors(repo)
|
||||
mirrors = self._entropy.get_remote_repository_mirrors(repo)
|
||||
|
||||
issues = False
|
||||
for uri in mirrors:
|
||||
@@ -450,7 +460,7 @@ class Server(ServerNoticeBoardMixin):
|
||||
repo = self._entropy.default_repository
|
||||
|
||||
if not mirrors:
|
||||
mirrors = self._entropy.get_remote_mirrors(repo)
|
||||
mirrors = self._entropy.get_remote_repository_mirrors(repo)
|
||||
|
||||
issues = False
|
||||
for uri in mirrors:
|
||||
@@ -883,7 +893,7 @@ class Server(ServerNoticeBoardMixin):
|
||||
if repo is None:
|
||||
repo = self._entropy.default_repository
|
||||
if not mirrors:
|
||||
mirrors = self._entropy.get_remote_mirrors(repo)
|
||||
mirrors = self._entropy.get_remote_repository_mirrors(repo)
|
||||
|
||||
data = []
|
||||
for uri in mirrors:
|
||||
@@ -908,7 +918,7 @@ class Server(ServerNoticeBoardMixin):
|
||||
down_lock_file = os.path.join(remote_dir,
|
||||
etpConst['etpdatabasedownloadlockfile'])
|
||||
|
||||
for uri in self._entropy.get_remote_mirrors(repo):
|
||||
for uri in self._entropy.get_remote_repository_mirrors(repo):
|
||||
data = [uri, False, False]
|
||||
|
||||
# let raise exception if connection is impossible
|
||||
@@ -2967,7 +2977,7 @@ class Server(ServerNoticeBoardMixin):
|
||||
mirror_errors = False
|
||||
mirrors_errors = False
|
||||
|
||||
for uri in self._entropy.get_remote_mirrors(repo):
|
||||
for uri in self._entropy.get_remote_packages_mirrors(repo):
|
||||
|
||||
crippled_uri = EntropyTransceiver.get_uri_name(uri)
|
||||
mirror_errors = False
|
||||
@@ -3391,7 +3401,7 @@ class Server(ServerNoticeBoardMixin):
|
||||
obj.append(base_pkg)
|
||||
obj.append(base_pkg+etpConst['packagesmd5fileext'])
|
||||
|
||||
for uri in self._entropy.get_remote_mirrors(repo):
|
||||
for uri in self._entropy.get_remote_packages_mirrors(repo):
|
||||
|
||||
##
|
||||
# remove remotely
|
||||
|
||||
@@ -801,7 +801,7 @@ class Base:
|
||||
|
||||
repo_data[repoid] = {}
|
||||
|
||||
for uri in Entropy.get_remote_mirrors(repoid):
|
||||
for uri in Entropy.get_remote_packages_mirrors(repoid):
|
||||
|
||||
crippled_uri = EntropyTransceiver.get_uri_name(uri)
|
||||
|
||||
@@ -834,6 +834,20 @@ class Base:
|
||||
'copy': copy,
|
||||
}
|
||||
|
||||
repo_data[repoid][crippled_uri]['database'] = {
|
||||
'current_revision': 0,
|
||||
'remote_revision': 0,
|
||||
'download_latest': (),
|
||||
'upload_queue': []
|
||||
}
|
||||
|
||||
for uri in Entropy.get_remote_repository_mirrors(repoid):
|
||||
|
||||
crippled_uri = EntropyTransceiver.get_uri_name(uri)
|
||||
if crippled_uri not in repo_data[repoid]:
|
||||
repo_data[repoid][crippled_uri] = {}
|
||||
repo_data[repoid][crippled_uri]['packages'] = {}
|
||||
|
||||
# now the db
|
||||
current_revision = Entropy.get_local_repository_revision(
|
||||
repoid)
|
||||
|
||||
Reference in New Issue
Block a user