- 
                Notifications
    
You must be signed in to change notification settings  - Fork 1
 
Open
Description
Issue
When I try to use a resourceTemplate defined as such
apiVersion: io.javaoperatorsdk.operator.glue/v1beta1
kind: GlueOperator
metadata:
  name: ingress-platform
spec:
  parent:
    apiVersion: halkyon.io/v1alpha1
    kind: Platform
  childResources:
    - name: jobs
      bulk: true
      resourceTemplate: |
        items:
        {#for p in parent.spec.packages}
        - apiVersion: v1
          kind: ConfigMap
          metadata:
            name: {p.name}
            namespace: default
          data:
            key: "value-{p.name}"
        {/for}
with the following CRD
apiVersion: "apiextensions.k8s.io/v1"
kind: "CustomResourceDefinition"
metadata:
  name: platforms.halkyon.io # "platforms.io.javaoperatorsdk.operator.glue"
spec:
  group: halkyon.io # "io.javaoperatorsdk.operator.glue"
  names:
    kind: "Platform"
    plural: "platforms"
    singular: "platform"
  scope: "Cluster"
  versions:
  - name: v1alpha1 # v1beta1
    schema:
      openAPIV3Schema:
        properties:
          spec:
            properties:
              description:
                type: "string"
              name:
                type: "string"
              packages:
                items:
                  properties:
                    description:
                      type: "string"
                    name:
                      type: "string"
                    pipeline:
                      properties:
                        description:
                          type: "string"
                        name:
                          type: "string"
                        steps:
                          items:
                            properties:
                              description:
                                type: "string"
                              repoUrl:
                                type: "string"
                              version:
                                type: "string"
                              id:
                                type: "string"
                              image:
                                type: "string"
                              name:
                                type: "string"
                              script:
                                type: "string"
                              valuesObject:
                                description: "ValuesObject specifies Helm values to\
                                  \ be passed to helm template, defined as a map."
                                type: "object"
                                x-kubernetes-preserve-unknown-fields: true
                            type: "object"
                          type: "array"
                      type: "object"
                  type: "object"
                type: "array"
              version:
                type: "string"
            type: "object"
          status:
            properties:
              message:
                type: "string"
              phase:
                type: "string"
            type: "object"
        type: "object"
    served: true
    storage: true
    subresources:
      status: {}
then we got the following error when we deplouy the YAML
apiVersion: halkyon.io/v1alpha1
kind: Platform
metadata:
  name: simple-platform
spec:
  version: 0.1.0
  description: "A simple platform"
  packages:
    - name: nginx-ingress
      description: "nginx-ingress package"
      pipeline:
        steps:
        - name: pre-install
          image: registry.access.redhat.com/ubi9
          script: |
            echo "This is a pre-installation running a job"
        - name: "Install nginx-ingress"
          repoUrl: https://kubernetes.github.io/ingress-nginx
          version: 4.12.2
          valuesObject:
            ingress:
              enabled: true
        - name: post-install
          image: registry.access.redhat.com/ubi9
          script: |
            echo "This is a post-installation running a job"
Error
2025-05-27 09:23:02,528 ERROR [io.jav.ope.pro.eve.EventProcessor] (ReconcilerExecutor-glue-111) Error during event processing ExecutionScope{ resource id: ResourceID{name='simple-platform-platform', namespace='default'}, version: 69002}: io.javaoperatorsdk.operator.OperatorException: java.lang.NullPointerException
	at io.javaoperatorsdk.operator.processing.Controller.cleanup(Controller.java:222)
	at io.javaoperatorsdk.operator.processing.event.ReconciliationDispatcher.handleCleanup(ReconciliationDispatcher.java:258)
	at io.javaoperatorsdk.operator.processing.event.ReconciliationDispatcher.handleDispatch(ReconciliationDispatcher.java:95)
	at io.javaoperatorsdk.operator.processing.event.ReconciliationDispatcher.handleExecution(ReconciliationDispatcher.java:68)
	at io.javaoperatorsdk.operator.processing.event.EventProcessor$ReconcilerExecutor.run(EventProcessor.java:467)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: java.lang.NullPointerException
	at java.base/java.util.Objects.requireNonNull(Objects.java:233)
	at java.base/java.util.Optional.of(Optional.java:113)
	at io.javaoperatorsdk.operator.glue.reconciler.glue.GlueReconciler.lambda$getParentRelatedResource$18(GlueReconciler.java:357)
	at java.base/java.util.Optional.flatMap(Optional.java:289)
	at io.javaoperatorsdk.operator.glue.reconciler.glue.GlueReconciler.getParentRelatedResource(GlueReconciler.java:346)
	at io.javaoperatorsdk.operator.glue.reconciler.glue.GlueReconciler.removeFinalizerForParent(GlueReconciler.java:316)
	at io.javaoperatorsdk.operator.glue.reconciler.glue.GlueReconciler.cleanup(GlueReconciler.java:117)
	at io.javaoperatorsdk.operator.glue.reconciler.glue.GlueReconciler.cleanup(GlueReconciler.java:39)
	at io.javaoperatorsdk.operator.glue.reconciler.glue.GlueReconciler_ClientProxy.cleanup(Unknown Source)
	at io.javaoperatorsdk.operator.processing.Controller$2.execute(Controller.java:209)
	at io.javaoperatorsdk.operator.processing.Controller$2.execute(Controller.java:170)
	at io.javaoperatorsdk.operator.api.monitoring.Metrics.timeControllerExecution(Metrics.java:159)
	at io.javaoperatorsdk.operator.processing.Controller.cleanup(Controller.java:169)
	... 7 more
See the screenshot where the error occurs when we debug
The problem is related to the fact that the HashMap created includes a resource but the value is null
Metadata
Metadata
Assignees
Labels
No labels

