Skip to content

Instantly share code, notes, and snippets.

@larrycai
Last active July 9, 2021 12:02
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 larrycai/f0329fdb2b38979bc5fd0f75d45cd432 to your computer and use it in GitHub Desktop.
Save larrycai/f0329fdb2b38979bc5fd0f75d45cd432 to your computer and use it in GitHub Desktop.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import argparse
import requests
import json
import re
# https://stackoverflow.com/questions/27981545/suppress-insecurerequestwarning-unverified-https-request-is-being-made-in-pytho
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
ARGOFLOW_API_VERSION="v1"
def get_parameters(spec):
parameters_data = spec["arguments"]["parameters"]
# print(parameters_data)
parameters = {}
for para in parameters_data:
parameters[para["name"]] = para["value"]
return parameters
# https://stackoverflow.com/questions/7868554/python-re-subs-replace-function-doesnt-accept-extra-arguments-how-to-avoid
def replace_val_repr(parameters):
def replace_var(matchobj):
if matchobj.group(1):
return parameters[matchobj.group(1)]
return replace_var
def replace_para(str, parameters):
# {{workflow.parameters.toolkit-image}}
# => org/toolkit:latest
regex = re.compile(r"{{workflow.parameters.(.*)}}")
result = re.sub(regex, replace_val_repr(parameters), str)
return result
def list_images(args):
url = "%s/api/%s/workflows/%s/%s" % (args.url, ARGOFLOW_API_VERSION, args.namespace, args.name)
print("request: %s" % url)
r = requests.get(url, verify=False)
argoflow = r.json()
spec = argoflow["spec"]
parameters = get_parameters(spec)
storedTemplates = argoflow["status"]["storedTemplates"]
print("storedTemplates:")
for data in storedTemplates:
print ("%s\n name: %s \n image: %s" % (data,storedTemplates[data]["name"], replace_para(storedTemplates[data]["container"]["image"], parameters)))
return
def main():
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('--url', help='argo url')
parser.add_argument('--namespace')
parser.add_argument('name', help='id for the flow, normally it is uuid')
args = parser.parse_args()
print(args)
list_images(args)
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment