updated docs on yaml generation

This commit is contained in:
pb 2024-05-16 14:18:43 +02:00
parent 73fd329551
commit 4074b7d88c
3 changed files with 49 additions and 23 deletions

View File

@ -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

View File

@ -3,3 +3,5 @@
- 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
[ ] Are dependencies handled well :
- Branch/dependencies seem to be generated inconsistently, producing different branches with the same graph

View File

@ -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
end
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
loop link in branch
group if link.Destination not in list of nodes already written
argo -> argoGraph : get component
argoGraph --> argo : component
argo -> argo : add the previous component name to the list of dependencies
argo -> argo : generate YAML depending on type (attributes)
argo -> argo : add ID to list of node already written
end
end
argo -> argo : add the task/step to the list of Tasks
end
loop for each struct created
argo -> argo : Marshal into yaml
argo -> argo : write the marshalled string to a file
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 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