Skip to content

Instantly share code, notes, and snippets.

@mariocesar
Created December 21, 2022 16:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mariocesar/a13717332b749c6fd43f5a07f06b4834 to your computer and use it in GitHub Desktop.
Save mariocesar/a13717332b749c6fd43f5a07f06b4834 to your computer and use it in GitHub Desktop.
Argo example to set arguments with Python
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
name: generate-parameters-workflow
namespace: workflow-prod
generateName: generate-parameters-
spec:
entrypoint: Main
serviceAccount: workflow
serviceAccountName: workflow
arguments:
parameters:
- name: some-parameter
value: "1000001"
templates:
- name: Main
failFast: true
steps:
- - name: prepare-stage
template: prepare-template
- - name: run-step1
template: run-template
arguments:
parameters:
- name: date-range
value: "{{ steps.prepare-stage.outputs.parameters.date-range }}"
- name: step-name
value: Scrapper
- name: step-slug
value: step1
- - name: run-step2
template: run-template
arguments:
parameters:
- name: date-range
value: "{{ steps.prepare-stage.outputs.parameters.date-range }}"
- name: step-name
value: Cleaning
- name: step-slug
value: step2
- name: prepare-template
dag:
tasks:
- name: date-range
template: prepare-date-range
outputs:
parameters:
- name: date-range
valueFrom:
parameter: "{{ tasks.date-range.outputs.result }}"
- name: prepare-date-range
script:
image: python:alpine
command: [python]
source: |
from datetime import timezone, datetime, timedelta
start_date = datetime.now(tz=timezone.utc) - timedelta(days={{inputs.parameters.days}})
end_date = datetime.now(tz=timezone.utc)
start_date = start_date.strftime('%Y-%m-%d')
end_date = end_date.strftime('%Y-%m-%d')
print(start_date, end_date)
inputs:
parameters:
- name: days
description: Days that the date range will use. ex. Last 14 days.
default: "14"
- name: run-template
inputs:
parameters:
- name: step-name
- name: step-slug
- name: date-range
container:
image: python:alpine
command: ["printenv"]
env:
- name: SOME_PARAMETER
value: "{{ workflow.parameters.some-parameter }}"
- name: STEP_NAME
value: "{{ inputs.parameters.step-name }}"
- name: STEP_SLUG
value: "{{ inputs.parameters.step-slug }}"
- name: DATE_RANGE
value: "{{ inputs.parameters.date-range }}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment