Using nodejs trying to parse attribute value(number of replicas) by running child_process kubectl deployment json output Can you please suggest what I am doing wrong??
** Error: var deploymentInfo = item.spec.map((c) => { return { replicas: c.replicas} }); ^ TypeError: item.spec.map is not a function **
` {
"apiVersion": "v1",
"items": [
{
"apiVersion": "extensions/v1beta1",
"kind": "Deployment",
"metadata": {
"labels": {
"env": "stage"
},
"name": "sl-deployment"
},
"spec": {
"progressDeadlineSeconds": 2147483647,
"replicas": 3,
"revisionHistoryLimit": 3,
"selector": {
"matchLabels": {
"env": "nonprod",
"microservice": "svc-microservice",
"name": "sl-deployment"
}
},
"strategy": {
"rollingUpdate": {
"maxSurge": 1,
"maxUnavailable": 1
},
"type": "RollingUpdate"
},
"template": {
"metadata": {
"labels": {
"env": "stage",
"microservice": "svc-microservice",
"name": "sl-deployment"
}
},
"spec": {
"containers": [
{
"image": "myregistry/svc-microservice/sl-deployment:stage.4.30",
"name": "sl-deployment",
"resources": {
"limits": {
"cpu": "6",
"memory": "16Gi"
},
"requests": {
"cpu": "2",
"memory": "6Gi"
}
}
}
]
}
}
}
} ]`
Tried the code pasted below
exec(`kubectl get deployment -n svc-microservice -o json`, (error, stdout, stderr) => {
if (error) {
console.log(`error: ${error.message}`);
return;
}
if (stderr) {
console.log(`stderr: ${stderr}`);
return;
}
var deployjson = JSON.parse(stdout);
for (let item of deployjson.items) {
var deploymentInfo = item.spec.map((c) => { return { replicas: c.replicas} });
for (let info of deploymentInfo) {
metadata[name][info.name] = { deployment:info.replicas}
}
}
})
** Error: var deploymentInfo = item.spec.map((c) => { return { replicas: c.replicas} }); ^ TypeError: item.spec.map is not a function **
It looks like the spec
property is an object, so you can't use the map function on it. The map function is only for arrays.
If you just want to grab the replicas
property, you don't need to do anything special, just access the property on the spec object:
item.spec.replicas