Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove extra quotes around output parameter value #1

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
103 changes: 103 additions & 0 deletions test/e2e/functional/output-jqfilter-parameters.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: output-jqfilter-parameters-
spec:
entrypoint: main
templates:

# main template that:
# * create a configmap with json payload
# * extract data using jqFilter from it
# * compare the output parameters are what we expect
- name: main
steps:
- - name: create-param
template: create-param

- - name: get-param
template: get-param

- - name: check-param-one-value
template: check-param
arguments:
parameters:
- name: key
value: "{{steps.get-param.outputs.parameters.one_value}}"
- name: value
value: "foo"
- name: check-param-one-dict
template: check-param
arguments:
parameters:
- name: key
value: "{{steps.get-param.outputs.parameters.one_dict}}"
- name: value
value: |
{"foo":"bar"}
- name: check-param-one-list
template: check-param
arguments:
parameters:
- name: key
value: "{{steps.get-param.outputs.parameters.one_list}}"
- name: value
value: |
[{"foo":"bar"}]

# check that key and value parameters are aligned
- name: check-param
inputs:
parameters:
- name: key
- name: value
container:
image: argoproj/argoexec:latest
command: [sh, -c]
args: ["
echo '<{{inputs.parameters.key}}>' > /tmp/input;
echo '<{{inputs.parameters.value}}>' > /tmp/expected;
diff /tmp/input /tmp/expected;
"]

# extract parameters from a configmap json payload using jqFilter
- name: get-param
resource:
action: get
manifest: |
apiVersion: v1
kind: ConfigMap
metadata:
name: cm-output-jqfilter-parameters
outputs:
parameters:
- name: one_value
valueFrom:
jqFilter: '.data.some | fromjson | .one_value'
- name: one_dict
valueFrom:
jqfilter: '.data.some | fromjson | .one_dict'
- name: one_list
valueFrom:
jqfilter: '.data.some | fromjson | .one_list'

# create a configmap with json payload
- name: create-param
resource:
action: create
manifest: |
apiVersion: v1
kind: ConfigMap
metadata:
name: cm-output-jqfilter-parameters
data:
some: |
{
"one_value": "foo",
"one_dict": {"foo":"bar"},
"one_list": [
{
"foo":"bar"
}
]
}
2 changes: 1 addition & 1 deletion workflow/executor/resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -330,7 +330,7 @@ func (we *WorkflowExecutor) SaveResourceParameters(resourceNamespace string, res
if resourceNamespace != "" {
resArgs = append(resArgs, "-n", resourceNamespace)
}
cmdStr := fmt.Sprintf("kubectl get %s -o json | jq -c '%s'", strings.Join(resArgs, " "), param.ValueFrom.JQFilter)
cmdStr := fmt.Sprintf("kubectl get %s -o json | jq -rc '%s'", strings.Join(resArgs, " "), param.ValueFrom.JQFilter)
cmd = exec.Command("sh", "-c", cmdStr)
} else {
continue
Expand Down