forked from rpms/leapp-repository
Fix CyclingDependenciesError for target_content_resolver by routing vendor mappings through a dedicated VendorReposMapping model
The package version 0.24.0-2.elevate.4
This commit is contained in:
parent
7c938c7398
commit
faca763e8b
@ -10081,10 +10081,10 @@ index d36900bd..85a3ff3d 100644
|
||||
+ assert fact.enforcing_via_any_cmdline is expected
|
||||
diff --git a/repos/system_upgrade/common/actors/targetcontentresolver/actor.py b/repos/system_upgrade/common/actors/targetcontentresolver/actor.py
|
||||
new file mode 100644
|
||||
index 00000000..48557817
|
||||
index 00000000..ade95104
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/common/actors/targetcontentresolver/actor.py
|
||||
@@ -0,0 +1,70 @@
|
||||
@@ -0,0 +1,71 @@
|
||||
+from leapp.actors import Actor
|
||||
+from leapp.libraries.actor.targetcontentresolver import process
|
||||
+from leapp.models import (
|
||||
@ -10105,7 +10105,8 @@ index 00000000..48557817
|
||||
+ SkippedRepositories,
|
||||
+ TargetRepositories,
|
||||
+ UsedRepositories,
|
||||
+ VendorCustomTargetRepositoryList
|
||||
+ VendorCustomTargetRepositoryList,
|
||||
+ VendorReposMapping
|
||||
+)
|
||||
+from leapp.reporting import Report
|
||||
+from leapp.tags import FactsPhaseTag, IPUWorkflowTag
|
||||
@ -10136,11 +10137,11 @@ index 00000000..48557817
|
||||
+ RHUIInfo,
|
||||
+ RepositoriesBlacklisted,
|
||||
+ RepositoriesFacts,
|
||||
+ RepositoriesMapping,
|
||||
+ RepositoriesSetupTasks,
|
||||
+ RpmTransactionTasks,
|
||||
+ UsedRepositories,
|
||||
+ VendorCustomTargetRepositoryList,
|
||||
+ VendorReposMapping,
|
||||
+ )
|
||||
+ produces = (
|
||||
+ ConsumedDataAsset,
|
||||
@ -11008,10 +11009,10 @@ index 00000000..c77a1f13
|
||||
+
|
||||
+ return full_blocklist
|
||||
diff --git a/repos/system_upgrade/common/actors/setuptargetrepos/libraries/setuptargetrepos.py b/repos/system_upgrade/common/actors/targetcontentresolver/libraries/setuptargetrepos.py
|
||||
similarity index 58%
|
||||
similarity index 57%
|
||||
rename from repos/system_upgrade/common/actors/setuptargetrepos/libraries/setuptargetrepos.py
|
||||
rename to repos/system_upgrade/common/actors/targetcontentresolver/libraries/setuptargetrepos.py
|
||||
index df17a217..9db07c3b 100644
|
||||
index df17a217..acd7b0bc 100644
|
||||
--- a/repos/system_upgrade/common/actors/setuptargetrepos/libraries/setuptargetrepos.py
|
||||
+++ b/repos/system_upgrade/common/actors/targetcontentresolver/libraries/setuptargetrepos.py
|
||||
@@ -1,4 +1,4 @@
|
||||
@ -11030,12 +11031,12 @@ index df17a217..9db07c3b 100644
|
||||
- RepositoriesSetupTasks,
|
||||
RHELTargetRepository,
|
||||
- RHUIInfo,
|
||||
+ RepositoriesMapping,
|
||||
SkippedRepositories,
|
||||
TargetRepositories,
|
||||
- UsedRepositories
|
||||
+ UsedRepositories,
|
||||
+ VendorCustomTargetRepositoryList
|
||||
+ VendorCustomTargetRepositoryList,
|
||||
+ VendorReposMapping
|
||||
)
|
||||
from leapp.utils.deprecation import suppress_deprecation
|
||||
|
||||
@ -11142,7 +11143,7 @@ index df17a217..9db07c3b 100644
|
||||
- # Setup repomap handler
|
||||
- repo_mappig_msg = next(api.consume(RepositoriesMapping), RepositoriesMapping())
|
||||
+ # Remember that we can't just grab one message, each vendor can have its own mapping.
|
||||
+ repo_mapping_list = list(api.consume(RepositoriesMapping))
|
||||
+ repo_mapping_list = list(api.consume(VendorReposMapping))
|
||||
|
||||
- rhui_info = next(api.consume(RHUIInfo), None)
|
||||
- cloud_provider = rhui_info.provider if rhui_info else ''
|
||||
@ -11238,10 +11239,10 @@ index df17a217..9db07c3b 100644
|
||||
pkgs = set()
|
||||
diff --git a/repos/system_upgrade/common/actors/targetcontentresolver/libraries/targetcontentresolver.py b/repos/system_upgrade/common/actors/targetcontentresolver/libraries/targetcontentresolver.py
|
||||
new file mode 100644
|
||||
index 00000000..77d500a9
|
||||
index 00000000..b5346350
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/common/actors/targetcontentresolver/libraries/targetcontentresolver.py
|
||||
@@ -0,0 +1,195 @@
|
||||
@@ -0,0 +1,197 @@
|
||||
+from collections import namedtuple
|
||||
+
|
||||
+from leapp.exceptions import StopActorExecutionError
|
||||
@ -11257,9 +11258,9 @@ index 00000000..77d500a9
|
||||
+ Module,
|
||||
+ RepositoriesBlacklisted,
|
||||
+ RepositoriesFacts,
|
||||
+ RepositoriesMapping,
|
||||
+ RepositoriesSetupTasks,
|
||||
+ RHUIInfo
|
||||
+ RHUIInfo,
|
||||
+ VendorReposMapping
|
||||
+)
|
||||
+from leapp.utils.deprecation import suppress_deprecation
|
||||
+
|
||||
@ -11364,9 +11365,11 @@ index 00000000..77d500a9
|
||||
+ repomap_msg = load_repositories_mapping()
|
||||
+
|
||||
+ # ELevate: vendors can provide their own repository mappings (produced by
|
||||
+ # the vendorrepositoriesmapping actor). Combine them with the main mapping
|
||||
+ # so that the handler operates on vendor-aware mapping data.
|
||||
+ vendor_map_msgs = list(api.consume(RepositoriesMapping))
|
||||
+ # the vendorrepositoriesmapping actor as VendorReposMapping — a separate
|
||||
+ # type, so this actor can consume them without a produce/consume cycle on
|
||||
+ # RepositoriesMapping). Combine them with the main mapping so that the
|
||||
+ # handler operates on vendor-aware mapping data.
|
||||
+ vendor_map_msgs = list(api.consume(VendorReposMapping))
|
||||
+ if vendor_map_msgs:
|
||||
+ repomap_msg = combine_repomap_messages([repomap_msg] + vendor_map_msgs)
|
||||
+
|
||||
@ -13015,14 +13018,14 @@ index 00000000..dbf86974
|
||||
+ )
|
||||
diff --git a/repos/system_upgrade/common/actors/vendorrepositoriesmapping/actor.py b/repos/system_upgrade/common/actors/vendorrepositoriesmapping/actor.py
|
||||
new file mode 100644
|
||||
index 00000000..13256476
|
||||
index 00000000..a86fa12e
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/common/actors/vendorrepositoriesmapping/actor.py
|
||||
@@ -0,0 +1,19 @@
|
||||
+from leapp.actors import Actor
|
||||
+# from leapp.libraries.common.repomaputils import scan_vendor_repomaps, VENDOR_REPOMAP_DIR
|
||||
+from leapp.libraries.actor.vendorrepositoriesmapping import scan_vendor_repomaps
|
||||
+from leapp.models import VendorSourceRepos, RepositoriesMapping
|
||||
+from leapp.models import VendorSourceRepos, VendorReposMapping
|
||||
+from leapp.tags import FactsPhaseTag, IPUWorkflowTag
|
||||
+
|
||||
+
|
||||
@ -13033,14 +13036,14 @@ index 00000000..13256476
|
||||
+
|
||||
+ name = "vendor_repositories_mapping"
|
||||
+ consumes = ()
|
||||
+ produces = (RepositoriesMapping, VendorSourceRepos,)
|
||||
+ produces = (VendorReposMapping, VendorSourceRepos,)
|
||||
+ tags = (IPUWorkflowTag, FactsPhaseTag.Before)
|
||||
+
|
||||
+ def process(self):
|
||||
+ scan_vendor_repomaps()
|
||||
diff --git a/repos/system_upgrade/common/actors/vendorrepositoriesmapping/libraries/vendorrepositoriesmapping.py b/repos/system_upgrade/common/actors/vendorrepositoriesmapping/libraries/vendorrepositoriesmapping.py
|
||||
new file mode 100644
|
||||
index 00000000..6a41d4e5
|
||||
index 00000000..a368e1a7
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/common/actors/vendorrepositoriesmapping/libraries/vendorrepositoriesmapping.py
|
||||
@@ -0,0 +1,92 @@
|
||||
@ -13051,7 +13054,7 @@ index 00000000..6a41d4e5
|
||||
+from leapp.libraries.common.config.version import get_target_major_version, get_source_major_version
|
||||
+from leapp.libraries.common.repomaputils import RepoMapData
|
||||
+from leapp.libraries.stdlib import api
|
||||
+from leapp.models import VendorSourceRepos, RepositoriesMapping
|
||||
+from leapp.models import VendorSourceRepos, VendorReposMapping
|
||||
+from leapp.models.fields import ModelViolationError
|
||||
+from leapp.exceptions import StopActorExecutionError
|
||||
+
|
||||
@ -13093,7 +13096,7 @@ index 00000000..6a41d4e5
|
||||
+ mapping = repomap_data.get_mappings(source_major, target_major)
|
||||
+ valid_major_versions = [source_major, target_major]
|
||||
+
|
||||
+ api.produce(RepositoriesMapping(
|
||||
+ api.produce(VendorReposMapping(
|
||||
+ mapping=mapping,
|
||||
+ repositories=repomap_data.get_repositories(valid_major_versions),
|
||||
+ vendor=vendor_name
|
||||
@ -13116,7 +13119,7 @@ index 00000000..6a41d4e5
|
||||
+
|
||||
+def scan_vendor_repomaps(read_repofile_func=read_repofile):
|
||||
+ """
|
||||
+ Scan the repository mapping file and produce RepositoriesMapping msg.
|
||||
+ Scan the repository mapping file and produce VendorReposMapping msg.
|
||||
+
|
||||
+ See the description of the actor for more details.
|
||||
+ """
|
||||
@ -17797,14 +17800,35 @@ index 00000000..95fbd2dc
|
||||
+ """
|
||||
+ topic = SystemFactsTopic
|
||||
diff --git a/repos/system_upgrade/common/models/repositoriesmap.py b/repos/system_upgrade/common/models/repositoriesmap.py
|
||||
index 842cd807..fc740606 100644
|
||||
index 842cd807..17bd6bc9 100644
|
||||
--- a/repos/system_upgrade/common/models/repositoriesmap.py
|
||||
+++ b/repos/system_upgrade/common/models/repositoriesmap.py
|
||||
@@ -96,3 +96,4 @@ class RepositoriesMapping(Model):
|
||||
@@ -96,3 +96,25 @@ class RepositoriesMapping(Model):
|
||||
|
||||
mapping = fields.List(fields.Model(RepoMapEntry), default=[])
|
||||
repositories = fields.List(fields.Model(PESIDRepositoryEntry), default=[])
|
||||
+ vendor = fields.Nullable(fields.String())
|
||||
+
|
||||
+
|
||||
+class VendorReposMapping(Model):
|
||||
+ """
|
||||
+ Repository mapping contributed by a vendor (ELevate).
|
||||
+
|
||||
+ Same shape as RepositoriesMapping, but a distinct message type. The
|
||||
+ target_content_resolver actor *produces* the main RepositoriesMapping and
|
||||
+ therefore must not also *consume* it (that is a dependency cycle); vendor
|
||||
+ mappings are produced by the vendorrepositoriesmapping actor under this
|
||||
+ separate type and consumed by target_content_resolver, then combined with
|
||||
+ the main mapping via combine_repomap_messages.
|
||||
+
|
||||
+ Warning: This model is not covered by the deprecation process and can be
|
||||
+ changed or removed any time.
|
||||
+ """
|
||||
+ topic = TransactionTopic
|
||||
+
|
||||
+ mapping = fields.List(fields.Model(RepoMapEntry), default=[])
|
||||
+ repositories = fields.List(fields.Model(PESIDRepositoryEntry), default=[])
|
||||
+ vendor = fields.Nullable(fields.String())
|
||||
diff --git a/repos/system_upgrade/common/models/repositoriessetuptasks.py b/repos/system_upgrade/common/models/repositoriessetuptasks.py
|
||||
index fb267ad0..88056d97 100644
|
||||
--- a/repos/system_upgrade/common/models/repositoriessetuptasks.py
|
||||
|
||||
@ -53,7 +53,7 @@ py2_byte_compile "%1" "%2"}
|
||||
Epoch: 1
|
||||
Name: leapp-repository
|
||||
Version: 0.24.0
|
||||
Release: 2%{?dist}.elevate.3
|
||||
Release: 2%{?dist}.elevate.4
|
||||
Summary: Repositories for leapp
|
||||
|
||||
License: ASL 2.0
|
||||
@ -438,6 +438,9 @@ fi
|
||||
|
||||
|
||||
%changelog
|
||||
* Tue Jun 30 2026 Yuriy Kohut <ykohut@almalinux.org> - 0.24.0-2.elevate.4
|
||||
- Fix CyclingDependenciesError for target_content_resolver by routing vendor mappings through a dedicated VendorReposMapping model
|
||||
|
||||
* Tue Jun 30 2026 Yuriy Kohut <ykohut@almalinux.org> - 0.24.0-2.elevate.3
|
||||
- ELevate vendors support for upstream 0.24.0-2 version (f7ccf5aefdd87856c4dda80c2c410d5cb34d0c1d)
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user