Can not execute argo workflow due to Invalid 'when' expression in workflow file

11/13/2019

Error:-

I'm getting the error of Invalid 'when' expression '{{steps.check-channel-exists.outputs.result}}': Invalid token: '{{'.

I'm trying to execute the workflow here. Can someone point me in the right direction so that I can solve this ?

<pre>
Name:                hlf-peer-orgs-mzl4r
Namespace:           default
ServiceAccount:      default
Status:              Failed
Message:             child 'hlf-peer-orgs-mzl4r-1496023914' failed
Created:             Wed Nov 13 14:38:16 +0530 (3 seconds ago)
Started:             Wed Nov 13 14:38:16 +0530 (3 seconds ago)
Finished:            Wed Nov 13 14:38:19 +0530 (now)
Duration:            3 seconds

STEP                                                                   PODNAME                         DURATION  MESSAGE
 <font color="#CC0000"></font> hlf-peer-orgs-mzl4r (peer-orgs)                                                                               child 'hlf-peer-orgs-mzl4r-1496023914' failed
 └---<font color="#CC0000"></font> channels (channels)                                                                                       child 'hlf-peer-orgs-mzl4r-1274747783' failed
     └---<font color="#CC0000"></font> common (channel--common)                                                                              Invalid 'when' expression '{{steps.check-channel-exists.outputs.result}}': Invalid token: '{{'
         ├---<font color="#4E9A06">✔</font> check-channel-exists(0) (check-channel-exists--common)  hlf-peer-orgs-mzl4r-3099390573  1s        
         └---<font color="#CC0000">⚠</font> channel-orgs (channel-orgs--common)                                                               Invalid 'when' expression '{{steps.check-channel-exists.outputs.result}}': Invalid token: '{{'
</pre>

Argo:

v2.4.0

helm version:

Client: &version.Version{SemVer:"v2.11.0", GitCommit:"2e55dbe1fdb5fdb96b75ff144a339489417b146b", GitTreeState:"clean"} Server: &version.Version{SemVer:"v2.11.0", GitCommit:"2e55dbe1fdb5fdb96b75ff144a339489417b146b", GitTreeState:"clean"}

kubectl version:-

Client Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.3", GitCommit:"2d3c76f9091b6bec110a5e63777c332469e0cba2", GitTreeState:"clean", BuildDate:"2019-08-19T11:13:54Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"linux/amd64"} Server Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.8", GitCommit:"211047e9a1922595eaa3a1127ed365e9299a6c23", GitTreeState:"clean", BuildDate:"2019-10-15T12:02:12Z", GoVersion:"go1.12.10", Compiler:"gc", Platform:"linux/amd64"}

Block of code where I'm getting the error.

# fourth level: consortium-org templates
{{- if $.Values.flow.consortium.enabled }}
{{- range $i, $consortium := $consortiums }}
{{- if or (not $.Values.flow.consortium.include) (has $consortium $.Values.flow.consortium.include) }}
{{- range $i, $org := (index $genesisProfile.Consortiums $consortium).Organizations }}
{{- $orgName := $org.Name | trimSuffix "MSP" }}
  - name: consortium-org--{{ $consortium }}--{{ $orgName }}
    steps:
    - - name: check-org-in-consortium
        template: check-org-in-consortium--{{ $consortium }}--{{ $orgName }}
    - - name: add-org-to-consortium
        template: add-org-to-consortium--{{ $consortium }}--{{ $orgName }}
        when: "!{{ "{{" }}steps.check-org-in-consortium.outputs.result{{ "}}" }}"
{{- end }} {{- /* consortium.orgs */ -}}
{{- end }} {{- /* if consortium included */ -}}
{{- end }} {{- /* consortiums */ -}}
{{- end }} {{- /* if consortium.enabled */ -}}{{""}}

Link to code file

-- Shubham Koli
argo-workflows
argoproj
kubernetes
kubernetes-helm

1 Answer

11/13/2019

solved it :) Looks like Argo can't get POD output. My workaround is to grant roles:

kubectl create rolebinding default-admin --clusterrole=admin --serviceaccount=argo:default
-- Shubham Koli
Source: StackOverflow