Compare commits
2 Commits
89bc2b1c35
...
07a2eaff0f
Author | SHA1 | Date | |
---|---|---|---|
07a2eaff0f | |||
|
7659cc8ac6 |
@ -4152,6 +4152,139 @@ index f5cb2613..10e27220 100644
|
|||||||
if rpm_tasks:
|
if rpm_tasks:
|
||||||
+ rpm_tasks.to_reinstall = sorted(pkgs_to_reinstall)
|
+ rpm_tasks.to_reinstall = sorted(pkgs_to_reinstall)
|
||||||
api.produce(rpm_tasks)
|
api.produce(rpm_tasks)
|
||||||
|
diff --git a/repos/system_upgrade/common/actors/repositoriesmapping/libraries/repositoriesmapping.py b/repos/system_upgrade/common/actors/repositoriesmapping/libraries/repositoriesmapping.py
|
||||||
|
index 58089195..4ec1d6e0 100644
|
||||||
|
--- a/repos/system_upgrade/common/actors/repositoriesmapping/libraries/repositoriesmapping.py
|
||||||
|
+++ b/repos/system_upgrade/common/actors/repositoriesmapping/libraries/repositoriesmapping.py
|
||||||
|
@@ -3,6 +3,7 @@ from collections import defaultdict
|
||||||
|
|
||||||
|
from leapp.exceptions import StopActorExecutionError
|
||||||
|
from leapp.libraries.common.config.version import get_source_major_version, get_target_major_version
|
||||||
|
+from leapp.libraries.common.repomaputils import RepoMapData
|
||||||
|
from leapp.libraries.common.fetch import load_data_asset
|
||||||
|
from leapp.libraries.common.rpms import get_leapp_packages, LeappComponents
|
||||||
|
from leapp.libraries.stdlib import api
|
||||||
|
@@ -16,120 +17,6 @@ REPOMAP_FILE = 'repomap.json'
|
||||||
|
"""The name of the new repository mapping file."""
|
||||||
|
|
||||||
|
|
||||||
|
-class RepoMapData(object):
|
||||||
|
- VERSION_FORMAT = '1.2.1'
|
||||||
|
-
|
||||||
|
- def __init__(self):
|
||||||
|
- self.repositories = []
|
||||||
|
- self.mapping = {}
|
||||||
|
-
|
||||||
|
- def add_repository(self, data, pesid):
|
||||||
|
- """
|
||||||
|
- Add new PESIDRepositoryEntry with given pesid from the provided dictionary.
|
||||||
|
-
|
||||||
|
- :param data: A dict containing the data of the added repository. The dictionary structure corresponds
|
||||||
|
- to the repositories entries in the repository mapping JSON schema.
|
||||||
|
- :type data: Dict[str, str]
|
||||||
|
- :param pesid: PES id of the repository family that the newly added repository belongs to.
|
||||||
|
- :type pesid: str
|
||||||
|
- """
|
||||||
|
- self.repositories.append(PESIDRepositoryEntry(
|
||||||
|
- repoid=data['repoid'],
|
||||||
|
- channel=data['channel'],
|
||||||
|
- rhui=data.get('rhui', ''),
|
||||||
|
- repo_type=data['repo_type'],
|
||||||
|
- arch=data['arch'],
|
||||||
|
- major_version=data['major_version'],
|
||||||
|
- pesid=pesid
|
||||||
|
- ))
|
||||||
|
-
|
||||||
|
- def get_repositories(self, valid_major_versions):
|
||||||
|
- """
|
||||||
|
- Return the list of PESIDRepositoryEntry object matching the specified major versions.
|
||||||
|
- """
|
||||||
|
- return [repo for repo in self.repositories if repo.major_version in valid_major_versions]
|
||||||
|
-
|
||||||
|
- def add_mapping(self, source_major_version, target_major_version, source_pesid, target_pesid):
|
||||||
|
- """
|
||||||
|
- Add a new mapping entry that is mapping the source pesid to the destination pesid(s),
|
||||||
|
- relevant in an IPU from the supplied source major version to the supplied target
|
||||||
|
- major version.
|
||||||
|
-
|
||||||
|
- :param str source_major_version: Specifies the major version of the source system
|
||||||
|
- for which the added mapping applies.
|
||||||
|
- :param str target_major_version: Specifies the major version of the target system
|
||||||
|
- for which the added mapping applies.
|
||||||
|
- :param str source_pesid: PESID of the source repository.
|
||||||
|
- :param Union[str|List[str]] target_pesid: A single target PESID or a list of target
|
||||||
|
- PESIDs of the added mapping.
|
||||||
|
- """
|
||||||
|
- # NOTE: it could be more simple, but I prefer to be sure the input data
|
||||||
|
- # contains just one map per source PESID.
|
||||||
|
- key = '{}:{}'.format(source_major_version, target_major_version)
|
||||||
|
- rmap = self.mapping.get(key, defaultdict(set))
|
||||||
|
- self.mapping[key] = rmap
|
||||||
|
- if isinstance(target_pesid, list):
|
||||||
|
- rmap[source_pesid].update(target_pesid)
|
||||||
|
- else:
|
||||||
|
- rmap[source_pesid].add(target_pesid)
|
||||||
|
-
|
||||||
|
- def get_mappings(self, src_major_version, dst_major_version):
|
||||||
|
- """
|
||||||
|
- Return the list of RepoMapEntry objects for the specified upgrade path.
|
||||||
|
-
|
||||||
|
- IOW, the whole mapping for specified IPU.
|
||||||
|
- """
|
||||||
|
- key = '{}:{}'.format(src_major_version, dst_major_version)
|
||||||
|
- rmap = self.mapping.get(key, None)
|
||||||
|
- if not rmap:
|
||||||
|
- return None
|
||||||
|
- map_list = []
|
||||||
|
- for src_pesid in sorted(rmap.keys()):
|
||||||
|
- map_list.append(RepoMapEntry(source=src_pesid, target=sorted(rmap[src_pesid])))
|
||||||
|
- return map_list
|
||||||
|
-
|
||||||
|
- @staticmethod
|
||||||
|
- def load_from_dict(data):
|
||||||
|
- if data['version_format'] != RepoMapData.VERSION_FORMAT:
|
||||||
|
- raise ValueError(
|
||||||
|
- 'The obtained repomap data has unsupported version of format.'
|
||||||
|
- ' Get {} required {}'
|
||||||
|
- .format(data['version_format'], RepoMapData.VERSION_FORMAT)
|
||||||
|
- )
|
||||||
|
-
|
||||||
|
- repomap = RepoMapData()
|
||||||
|
-
|
||||||
|
- # Load reposiories
|
||||||
|
- existing_pesids = set()
|
||||||
|
- for repo_family in data['repositories']:
|
||||||
|
- existing_pesids.add(repo_family['pesid'])
|
||||||
|
- for repo in repo_family['entries']:
|
||||||
|
- repomap.add_repository(repo, repo_family['pesid'])
|
||||||
|
-
|
||||||
|
- # Load mappings
|
||||||
|
- for mapping in data['mapping']:
|
||||||
|
- for entry in mapping['entries']:
|
||||||
|
- if not isinstance(entry['target'], list):
|
||||||
|
- raise ValueError(
|
||||||
|
- 'The target field of a mapping entry is not a list: {}'
|
||||||
|
- .format(entry)
|
||||||
|
- )
|
||||||
|
-
|
||||||
|
- for pesid in [entry['source']] + entry['target']:
|
||||||
|
- if pesid not in existing_pesids:
|
||||||
|
- raise ValueError(
|
||||||
|
- 'The {} pesid is not related to any repository.'
|
||||||
|
- .format(pesid)
|
||||||
|
- )
|
||||||
|
- repomap.add_mapping(
|
||||||
|
- source_major_version=mapping['source_major_version'],
|
||||||
|
- target_major_version=mapping['target_major_version'],
|
||||||
|
- source_pesid=entry['source'],
|
||||||
|
- target_pesid=entry['target'],
|
||||||
|
- )
|
||||||
|
- return repomap
|
||||||
|
-
|
||||||
|
-
|
||||||
|
def _inhibit_upgrade(msg):
|
||||||
|
local_path = os.path.join('/etc/leapp/file', REPOMAP_FILE)
|
||||||
|
hint = (
|
||||||
diff --git a/repos/system_upgrade/common/actors/rpmtransactionconfigtaskscollector/libraries/rpmtransactionconfigtaskscollector.py b/repos/system_upgrade/common/actors/rpmtransactionconfigtaskscollector/libraries/rpmtransactionconfigtaskscollector.py
|
diff --git a/repos/system_upgrade/common/actors/rpmtransactionconfigtaskscollector/libraries/rpmtransactionconfigtaskscollector.py b/repos/system_upgrade/common/actors/rpmtransactionconfigtaskscollector/libraries/rpmtransactionconfigtaskscollector.py
|
||||||
index 43ac1fc4..62aefaf4 100644
|
index 43ac1fc4..62aefaf4 100644
|
||||||
--- a/repos/system_upgrade/common/actors/rpmtransactionconfigtaskscollector/libraries/rpmtransactionconfigtaskscollector.py
|
--- a/repos/system_upgrade/common/actors/rpmtransactionconfigtaskscollector/libraries/rpmtransactionconfigtaskscollector.py
|
||||||
@ -5188,7 +5321,7 @@ index a8071329..1e0bac46 100644
|
|||||||
def is_nogpgcheck_set():
|
def is_nogpgcheck_set():
|
||||||
diff --git a/repos/system_upgrade/common/libraries/repomaputils.py b/repos/system_upgrade/common/libraries/repomaputils.py
|
diff --git a/repos/system_upgrade/common/libraries/repomaputils.py b/repos/system_upgrade/common/libraries/repomaputils.py
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 00000000..86473903
|
index 00000000..db91400e
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/repos/system_upgrade/common/libraries/repomaputils.py
|
+++ b/repos/system_upgrade/common/libraries/repomaputils.py
|
||||||
@@ -0,0 +1,140 @@
|
@@ -0,0 +1,140 @@
|
||||||
@ -5196,7 +5329,7 @@ index 00000000..86473903
|
|||||||
+from leapp.models import PESIDRepositoryEntry, RepoMapEntry, RepositoriesMapping
|
+from leapp.models import PESIDRepositoryEntry, RepoMapEntry, RepositoriesMapping
|
||||||
+
|
+
|
||||||
+class RepoMapData(object):
|
+class RepoMapData(object):
|
||||||
+ VERSION_FORMAT = '1.2.0'
|
+ VERSION_FORMAT = '1.2.1'
|
||||||
+
|
+
|
||||||
+ def __init__(self):
|
+ def __init__(self):
|
||||||
+ self.repositories = []
|
+ self.repositories = []
|
||||||
|
Loading…
Reference in New Issue
Block a user