diff --git a/charts/events/Chart.yaml b/charts/events/Chart.yaml index 078308b2a..4faea62d4 100644 --- a/charts/events/Chart.yaml +++ b/charts/events/Chart.yaml @@ -3,7 +3,7 @@ name: events description: Data Analysis event triggering type: application -version: 0.2.7 +version: 0.2.8 dependencies: - name: argo-events diff --git a/charts/events/crds/trigger-crds.yaml b/charts/events/crds/trigger-crds.yaml index 648dc6106..d863fbb7d 100644 --- a/charts/events/crds/trigger-crds.yaml +++ b/charts/events/crds/trigger-crds.yaml @@ -39,8 +39,13 @@ spec: properties: name: type: string - messagePath: + path: type: string + default: + type: string + anyOf: + - required: [name, jsonPath] + - required: [name, default] required: - workflow - eventName diff --git a/charts/events/hooks/sync.py b/charts/events/hooks/sync.py index 4990bd975..e89a5cc4d 100644 --- a/charts/events/hooks/sync.py +++ b/charts/events/hooks/sync.py @@ -74,15 +74,27 @@ def sync(self, parent: dict, related: dict) -> SyncResponse: templateArgs = [] for userParam in userParameters: + param_name: str = userParam.get("name", "") + path: str = userParam.get("path", "") + default: str = userParam.get("default", "") + + if not param_name: + continue + + src = {"dependencyName": name} + + if path: + src.update({"dataKey": "body." + path}) + + if default: + src.update({"value": default}) + sensorParams.append({ - "src": { - "dependencyName": name, - "dataKey": userParam.get("messagePath", "") - }, - "dest": f"spec.arguments.parameters.{userParameters.index(userParam)}.value" + "src": src, + "dest": f"spec.arguments.parameters.#(name==\"{param_name}\").value" }) - templateArgs.append({"name": userParam.get("name")}) + templateArgs.append({"name": param_name, "value": ""}) triggers.append({ "template": { diff --git a/charts/events/templates/example-trigger.yaml b/charts/events/templates/example-trigger.yaml index 6ed2d7ba7..241f949e3 100644 --- a/charts/events/templates/example-trigger.yaml +++ b/charts/events/templates/example-trigger.yaml @@ -12,16 +12,13 @@ spec: workflow: template: example-template parameters: - - name: jpg - messagePath: body.parameters.jpg - - name: jpeg - messagePath: body.parameters.jpeg - name: tif - messagePath: body.parameters.tif + path: parameters.tif - name: tiff - messagePath: body.parameters.tiff + path: parameters.tiff - name: png - messagePath: body.parameters.png + path: parameters.png + default: "true" --- apiVersion: workflows.diamond.ac.uk/v1alpha1 kind: Trigger @@ -37,7 +34,7 @@ spec: template: access-visit-dir parameters: - name: visitdir - messagePath: body.doc.data_session_directory + path: doc.data_session_directory --- apiVersion: workflows.diamond.ac.uk/v1alpha1 @@ -54,5 +51,5 @@ spec: template: echo-workflow-template parameters: - name: message - messagePath: body.name + path: name {{- end }}