Skip to content

Commit d6f8c95

Browse files
committed
progress
Signed-off-by: Attila Mészáros <[email protected]>
1 parent bc3a60a commit d6f8c95

File tree

4 files changed

+29
-22
lines changed

4 files changed

+29
-22
lines changed

src/main/java/io/csviri/operator/glue/Utils.java

+7-9
Original file line numberDiff line numberDiff line change
@@ -31,16 +31,13 @@ public static Map<String, GenericKubernetesResource> getActualResourcesByNameInW
3131
Map<String, GenericKubernetesResource> res = new HashMap<>();
3232
secondaryResources.forEach(sr -> {
3333
var dependentSpec = glue.getSpec().getChildResources().stream()
34-
.filter(r -> Utils.getApiVersion(r).equals(sr.getApiVersion())
35-
&& Utils.getKind(r).equals(sr.getKind())
34+
.filter(r ->
3635
// comparing the name from annotation since the resource name might be templated in spec
3736
// therefore "Utils.getName(relatedResourceSpec).equals(sr.getMetadata().getName())" would not
3837
// work
39-
&& r.getName()
40-
.equals(sr.getMetadata().getAnnotations().get(DEPENDENT_NAME_ANNOTATION_KEY))
41-
// namespace not compared here, it should be done it is just not trivial, now it is limited to
42-
// have one kind of resource in the workflow with the same resource name
43-
).findFirst();
38+
r.getName()
39+
.equals(sr.getMetadata().getAnnotations().get(DEPENDENT_NAME_ANNOTATION_KEY)))
40+
.findFirst();
4441
dependentSpec.ifPresent(spec -> res.put(spec.getName(), sr));
4542
});
4643

@@ -70,8 +67,9 @@ public static Map<String, GenericKubernetesResource> getRelatedResources(Glue gl
7067
(InformerEventSource<GenericKubernetesResource, Glue>) context
7168
.eventSourceRetriever()
7269
.getResourceEventSourceFor(GenericKubernetesResource.class, gvk.toString());
73-
var namespace =
74-
relatedResourceSpec.getNamespace() == null ? glue.getMetadata().getNamespace()
70+
71+
var namespace = relatedResourceSpec.isClusterScoped() ? null
72+
: relatedResourceSpec.getNamespace() == null ? glue.getMetadata().getNamespace()
7573
: relatedResourceSpec.getNamespace();
7674

7775
var res = new HashMap<String, GenericKubernetesResource>();

src/main/java/io/csviri/operator/glue/dependent/GCGenericDependentResource.java

+5-4
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,12 @@
77
public class GCGenericDependentResource extends GenericDependentResource
88
implements GarbageCollected<Glue> {
99

10-
public GCGenericDependentResource(GenericKubernetesResource desired, String name) {
11-
super(desired, name);
10+
public GCGenericDependentResource(GenericKubernetesResource desired, String name,
11+
boolean clusterScoped) {
12+
super(desired, name, clusterScoped);
1213
}
1314

14-
public GCGenericDependentResource(String desiredTemplate, String name) {
15-
super(desiredTemplate, name);
15+
public GCGenericDependentResource(String desiredTemplate, String name, boolean clusterScoped) {
16+
super(desiredTemplate, name, clusterScoped);
1617
}
1718
}

src/main/java/io/csviri/operator/glue/dependent/GenericDependentResource.java

+7-4
Original file line numberDiff line numberDiff line change
@@ -22,23 +22,27 @@ public class GenericDependentResource
2222
private final GenericKubernetesResource desired;
2323
private final String desiredTemplate;
2424
private final String name;
25+
private final boolean clusterScoped;
2526

2627
// optimize share between instances
2728
private final GenericTemplateHandler genericTemplateHandler = new GenericTemplateHandler();
2829

29-
public GenericDependentResource(GenericKubernetesResource desired, String name) {
30+
public GenericDependentResource(GenericKubernetesResource desired, String name,
31+
boolean clusterScoped) {
3032
super(new GroupVersionKind(desired.getApiVersion(), desired.getKind()));
3133
this.desired = desired;
3234
this.desiredTemplate = null;
3335
this.name = name;
36+
this.clusterScoped = clusterScoped;
3437
}
3538

36-
public GenericDependentResource(String desiredTemplate, String name) {
39+
public GenericDependentResource(String desiredTemplate, String name, boolean clusterScoped) {
3740
super(new GroupVersionKind(Utils.getApiVersionFromTemplate(desiredTemplate),
3841
Utils.getKindFromTemplate(desiredTemplate)));
3942
this.name = name;
4043
this.desiredTemplate = desiredTemplate;
4144
this.desired = null;
45+
this.clusterScoped = clusterScoped;
4246
}
4347

4448
@Override
@@ -53,8 +57,7 @@ protected GenericKubernetesResource desired(Glue primary,
5357
resultDesired.getMetadata().getAnnotations()
5458
.put(GlueReconciler.DEPENDENT_NAME_ANNOTATION_KEY, name);
5559

56-
// set only for cluster scoped when detection is ready
57-
if (resultDesired.getMetadata().getNamespace() == null) {
60+
if (resultDesired.getMetadata().getNamespace() == null && !clusterScoped) {
5861
resultDesired.getMetadata().setNamespace(primary.getMetadata().getNamespace());
5962
}
6063
return resultDesired;

src/main/java/io/csviri/operator/glue/reconciler/glue/GlueReconciler.java

+10-5
Original file line numberDiff line numberDiff line change
@@ -202,14 +202,19 @@ private void createAndAddDependentToWorkflow(Glue primary, Context<Glue> context
202202

203203
private static GenericDependentResource createDependentResource(DependentResourceSpec spec,
204204
boolean leafDependent, Boolean resourceInSameNamespaceAsPrimary) {
205-
if (leafDependent && resourceInSameNamespaceAsPrimary) {
205+
206+
if (leafDependent && resourceInSameNamespaceAsPrimary && !spec.isClusterScoped()) {
206207
return spec.getResourceTemplate() != null
207-
? new GCGenericDependentResource(spec.getResourceTemplate(), spec.getName())
208-
: new GCGenericDependentResource(spec.getResource(), spec.getName());
208+
? new GCGenericDependentResource(spec.getResourceTemplate(), spec.getName(),
209+
spec.isClusterScoped())
210+
: new GCGenericDependentResource(spec.getResource(), spec.getName(),
211+
spec.isClusterScoped());
209212
} else {
210213
return spec.getResourceTemplate() != null
211-
? new GenericDependentResource(spec.getResourceTemplate(), spec.getName())
212-
: new GenericDependentResource(spec.getResource(), spec.getName());
214+
? new GenericDependentResource(spec.getResourceTemplate(), spec.getName(),
215+
spec.isClusterScoped())
216+
: new GenericDependentResource(spec.getResource(), spec.getName(),
217+
spec.isClusterScoped());
213218
}
214219
}
215220

0 commit comments

Comments
 (0)