Skip to content

Commit 24641a8

Browse files
committed
Add ODG controller
Reconciles ODG resources in mODG-root cluster and creates ODG-Extension resources (via gardener-resource-manager).
1 parent 4f17c8b commit 24641a8

File tree

9 files changed

+1055
-2
lines changed

9 files changed

+1055
-2
lines changed

ocm_util.py

Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import collections.abc
22
import logging
3+
import urllib.parse
34

5+
import ci.util
46
import cnudie.iter
57
import cnudie.retrieve_async
68
import dso.model
@@ -64,7 +66,7 @@ def iter_local_blob_content(
6466
)
6567

6668

67-
async def find_artefact_node(
69+
async def find_artefact_node_async(
6870
component_descriptor_lookup: cnudie.retrieve_async.ComponentDescriptorLookupById,
6971
artefact: dso.model.ComponentArtefactId,
7072
absent_ok: bool=False,
@@ -119,3 +121,57 @@ async def find_artefact_node(
119121

120122
if not absent_ok:
121123
raise ValueError(f'could not find OCM node for {artefact=}')
124+
125+
126+
def to_absolute_access(
127+
access: ocm.OciAccess | ocm.RelativeOciAccess,
128+
ocm_repo: ocm.OciOcmRepository=None,
129+
) -> ocm.OciAccess:
130+
if access.type is ocm.AccessType.OCI_REGISTRY:
131+
return access
132+
133+
if access.type is ocm.AccessType.RELATIVE_OCI_REFERENCE:
134+
if not '://' in ocm_repo.baseUrl:
135+
base_url = urllib.parse.urlparse(f'x://{ocm_repo.baseUrl}').netloc
136+
else:
137+
base_url = urllib.parse.urlparse(ocm_repo.baseUrl).netloc
138+
139+
return ocm.OciAccess(
140+
imageReference=ci.util.urljoin(base_url, access.reference),
141+
)
142+
143+
raise NotImplementedError(access.type)
144+
145+
146+
def find_artefact_node(
147+
component: ocm.Component,
148+
component_descriptor_lookup,
149+
artefact_name: str,
150+
artefact_version: str,
151+
artefact_type: str,
152+
node_filter: collections.abc.Callable | None,
153+
absent_ok: bool=False,
154+
recursion_depth: int=-1,
155+
) -> cnudie.iter.ArtefactNode | None:
156+
for rnode in cnudie.iter.iter(
157+
component=component,
158+
lookup=component_descriptor_lookup,
159+
node_filter=node_filter,
160+
recursion_depth=recursion_depth,
161+
):
162+
rnode: cnudie.iter.ResourceNode
163+
if not (
164+
rnode.resource.name == artefact_name
165+
and rnode.resource.version == artefact_version
166+
and rnode.resource.type == artefact_type
167+
):
168+
continue
169+
170+
return rnode
171+
172+
else:
173+
if absent_ok:
174+
return None
175+
176+
raise ValueError(f'no ocm node found for {artefact_name=} {artefact_version=} \
177+
{artefact_type=}')

odg_operator/__init__.py

Whitespace-only changes.

0 commit comments

Comments
 (0)