From 4074b7d88c13dfd0e795618d8701fc20ec3b246d Mon Sep 17 00:00:00 2001 From: pb Date: Thu, 16 May 2024 14:18:43 +0200 Subject: [PATCH] updated docs on yaml generation --- docs/argo_fomatting_rules.md | 3 +- docs/todo.md | 4 +- docs/uml/generate_argo_struct.puml | 65 +++++++++++++++++++++--------- 3 files changed, 49 insertions(+), 23 deletions(-) diff --git a/docs/argo_fomatting_rules.md b/docs/argo_fomatting_rules.md index c1ae6bd..d6ba463 100644 --- a/docs/argo_fomatting_rules.md +++ b/docs/argo_fomatting_rules.md @@ -1,6 +1,5 @@ This document aims at centralizing all the informations about the yaml file that will be submitted to argo - names can only contain alphanumeric characters or '-' - - +- Lists can either be flow `[value1, value2,...]` or diff --git a/docs/todo.md b/docs/todo.md index b014bae..52f48dc 100644 --- a/docs/todo.md +++ b/docs/todo.md @@ -2,4 +2,6 @@ - currently arguments are stored in the computing object as a list of string - argo_builder.getComputingCommands() takes the command as a parameter to treat `sh -c`'s argument differently, but this is not generic enough - refactor on oc-catalog : we could store it as a string and parse it differently depending on the command - \ No newline at end of file + +[ ] Are dependencies handled well : + - Branch/dependencies seem to be generated inconsistently, producing different branches with the same graph \ No newline at end of file diff --git a/docs/uml/generate_argo_struct.puml b/docs/uml/generate_argo_struct.puml index b8d4060..36da2e7 100644 --- a/docs/uml/generate_argo_struct.puml +++ b/docs/uml/generate_argo_struct.puml @@ -25,34 +25,59 @@ note top : a node is a component in a link object,\n represented by its ID argo -> argo note bottom : We want to prepare the list of branches by removing\n nodes that appears several times\ne.g : two branches :\n1 - 2 2 - 3 3 - 4\n1 - 2 2 - 3 3 - 5\nWe will iterate over each branch to create the component's YAML\n and don't want to create components 1 2 et 3 twice or more -loop branch in branches - group if Source first link is not in list node written - loop while link Source is shared - argo -> argo : create an object representing the component - argo -> argo : add component to list of created nodes + +loop computing in graph.computings + argo -> argo : create new container object + argo -> argoGraph : retrieve image name + argo -> argoGraph : add command from the computing component + argo -> argoGraph : add arguments from the computing component + + argo -> argoGraph : retrieve environment variables' name from the computing component + argo -> argo : create a new list of Parameter + loop env variable in retrieved env variables + argo -> argo : add a Parameter object to the list with only the name attribute + end + + argo -> argo : create a Template object from the name of the component and the Container object + argo -> argo : add attached volume (currently we share the same mounted volume) + argo -> argo : append the new Template + end + +argo -> argo : create new Dag object + +loop computing in graph.computings + argo -> argo : create a new Task + argo -> argoGraph : add a unique name from the component name and ID in the graph + argo -> argoGraph : add the name of the associated Template + argo -> argoGraph : add the list of environment variables from the component + + loop branch in branches + group if component is in the branch + + argo -> argo : add the previous component name to the list of dependencies + end end + + argo -> argo : add the task/step to the list of Tasks + end -loop branch in branches - - loop link in branch - group if link.Destination not in list of nodes already written - argo -> argoGraph : get component - argoGraph --> argo : component - - argo -> argo : generate YAML depending on type (attributes) - argo -> argo : add ID to list of node already written - end - end +argo -> argo : add new Template named DAG to the Templates +loop storage in graph.storages + argo -> argo : create a new VolumeClaimTemplate object + argo -> argoGraph : add name from the storage component + argo -> argoGraph : add access mode from the storage component + argo -> argoGraph : add storage capacity from the storage component + end -loop for each struct created - argo -> argo : Marshal into yaml - argo -> argo : write the marshalled string to a file +loop data in graph.data + argo -> argo : end - +argo -> argo : marshal the Workflow to yaml +argo -> argo : write the marshaled object to a .yml file @enduml \ No newline at end of file