we have array imported from libsonnet
{
"volumes": [
{
"emptyDir": {},
"name": "grafana-storage"
},
{
"configMap": {
"name": "grafana-dashboard-apiserver"
},
"name": " grafana-dashboard-apiserver"
}
]
}
I want to replace this element:
{
"emptyDir": {},
"name": "grafana-storage"
},
with this one (same name
):
{
"name": "grafana-storage",
"persistentVolumeClaim": {
"claimName": "product-nfs"
}
outputs expected :
{
"volumes": [
{
"configMap": {
"name": "grafana-dashboard-apiserver"
},
"name": " grafana-dashboard-apiserver"
},
{
"name": "grafana-storage",
"persistentVolumeClaim": {
"claimName": "product-nfs"
}
}
]
}
"appending" is easy, but how to remove the existing one
example:
local x = {volumes: [
{emptyDir: {}, name: 'grafana-storage' },
{configMap: {name: 'grafana-dashboard-apiserver'
}, name: ' grafana-dashboard-apiserver'},]};
x
+ {volumes+: [{name: 'grafana-storage',persistentVolumeClaim: {claimName:'product-nfs'}}]}
thanks in advance~
When it comes to deriving/overloading,
jsonnet
is much easier to work with maps (aka "objects", "dicts", "hashes"), the strategy would be: 1) convert to map, 2) override, 3) convert back to array.Below snippet implements it: