I have an ruby array that looks like this.
arr = [
{ "dag"=>{
"tasks"=>[
{ "arguments"=>{
"parameters"=>[
{ "name"=>"inputJson",
"value"=>"{{workflow.parameters.inputJson}}"
}
]
},
"name"=>"build-handler-workflow",
"template"=>"build-handler-workflow"
}
]
},
"name"=>"dag-build-handler-workflow"
},
{ "container"=>{
"args"=>[
"{{inputs.parameters.inputJson}}"
],
"command"=>["cowsay"],
"image"=>"docker/whalesay:latest",
"resources"=>{
"requests"=>{
"cpu"=>"100m",
"memory"=>"100Mi"
}
}
},
"inputs"=>{
"parameters"=>[
{"name"=>"inputJson"}
]
},
"metadata"=>{
"annotations"=>{
"workflows.argoproj.io/progress"=>"0/10000"
}
},
"name"=>"build-handler-workflow",
"synchronization"=>{
"semaphore"=>{
"configMapKeyRef"=>{
"key"=>"template",
"name"=>"build-handler-config"
}
}
}
}
]
How would I go about iterating through this array hash so I can get only image field. may be something like this
p arr['spec']['templates']['container']['image']
"image"=>"docker/whalesay:latest"
I have Tried map method to access hash values. not able to get valid results.
p arr.map{|e|"#{e["container"]}"}
["", "{\"args\"=>[\"{{inputs.parameters.inputJson}}\"], \"command\"=>[\"cowsay\"], \"image\"=>\"docker/whalesay:latest\", \"resources\"=>{\"requests\"=>{\"cpu\"=>\"100m\", \"memory\"=>\"100Mi\"}}}"]
Code
Or you could use dig method
Output