【问题标题】:Unable to pass HTTP response to argument in Argo DAG workflow无法将 HTTP 响应传递给 Argo DAG 工作流中的参数
【发布时间】:2021-11-29 13:00:29
【问题描述】:

我正在尝试捕获 HTTPTemplate 请求的响应并将其传递给 DAG 工作流中的下一个任务,但下一个模板的参数没有被填充/扩展。 问题不一定是 HTTP 响应的捕获(尽管这是我实际尝试测试的),它似乎是我第二步中参数的“注入”。

这是工作流程,包括两个模板:

metadata:
  name: blimin-annoying
  namespace: argo
  labels:
    example: 'true'
spec:
  entrypoint: passing
  templates:
  - name: passing
    dag:
      tasks:
      - name: step1
        template: execute
        arguments:
          parameters:
          - name: schema
            value: kunveno
          - name: method
            value: GET
      - name: step2
        depends: step1
        template: echo
        arguments:
          parameters:
          - name: message
            value: '{{tasks.step1.outputs.parameters.response}}'
#--------------------------
  - name: execute
    inputs:
      parameters:
        - name: schema
        - name: method
    outputs:
      parameters:
        - name: response
          value: '{{outputs.result}}'
    http:
      method: '{{inputs.parameters.method}}'
      url: 'http://host.minikube.internal:3007/query/$event_stores?countOnly=true'
      headers:
        - name: query-schema
          value: '{{inputs.parameters.schema}}'
        - name: content-type
          value: application/json
#--------------------------
  - name: echo
    inputs:
      parameters:
        - name: message
    container:
      image: 'docker/whalesay:latest'
      command:
        - cowsay
      args:
        - '{{inputs.parameters.message}}'

无论我如何引用/指定 step2 的“消息”参数,我得到的输出。

loegnhfdn1-1675440399:  _________________________________________
loegnhfdn1-1675440399: / {{tasks.step1.outputs.parameters.resp \
loegnhfdn1-1675440399: \ onse}}                                  /
loegnhfdn1-1675440399:  -----------------------------------------

就好像变量被视为普通字符串一样。 理想情况下,我想将响应作为文件传递给下一步,但目前仍停留在这个基本阶段。

注意;这是在 v3.2.4 2021-11-18

【问题讨论】:

    标签: argo-workflows


    【解决方案1】:

    在通过 JavaSDK 对模板创建进行编码后,我不小心将 output.parameters.name 更改为“result”,而不是问题中提出的“response”。这个“错字”实际上解决了将响应传递到下一步的问题。 目前尚不清楚“响应”是保留字还是“结果”是保留字,但以下内容现在有效。 希望对其他人有用!

    metadata:
      name: now-working
      namespace: argo
      labels:
        example: 'true'
    spec:
      entrypoint: passing
      templates:
      - name: passing
        dag:
          tasks:
          - name: step1
            template: execute
            arguments:
              parameters:
              - name: schema
                value: public
              - name: method
                value: GET
          - name: step2
            depends: step1
            template: echo
            arguments:
              parameters:
              - name: message
                value: '{{tasks.step1.outputs.parameters.result}}'
    #--------------------------
      - name: execute
        inputs:
          parameters:
            - name: schema
            - name: method
        outputs:
          parameters:
            - name: response
              value: '{{outputs.result}}'
        http:
          method: '{{inputs.parameters.method}}'
          url: 'http://host.minikube.internal:3007/query/$event_stores?countOnly=true'
          headers:
            - name: query-schema
              value: '{{inputs.parameters.schema}}'
            - name: content-type
              value: application/json
    #--------------------------
      - name: echo
        inputs:
          parameters:
            - name: message
        container:
          image: 'docker/whalesay:latest'
          command:
            - cowsay
          args:
            - '{{inputs.parameters.message}}'
    

    【讨论】:

      猜你喜欢
      • 2022-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-16
      • 2021-05-08
      • 1970-01-01
      • 2021-06-13
      • 2020-03-01
      相关资源
      最近更新 更多