in cost-optimization/gke-shift-left-cost/api/manifests.go [158:228]
func (m *Manifests) loadObject(data []byte, conf CostimatorConfig) error {
if ak, bol := isObjectSupported(data); !bol {
log.Debugf("Skipping unsupported k8s object: %+v", ak)
return nil
}
obj, groupVersionKind, err := decode(data)
if err != nil {
return fmt.Errorf("Error Decoding. Check if your GroupVersionKind is defined in api/k8s_decoder.go. Root cause %+v", err)
}
switch groupVersionKind.Kind {
case HPAKind:
hpa, err := buildHPA(obj, groupVersionKind)
if err != nil {
return err
}
m.hpas = append(m.hpas, hpa)
case DeploymentKind:
deploy, err := buildDeployment(obj, groupVersionKind, conf)
if err != nil {
return err
}
m.Deployments = append(m.Deployments, &deploy)
if m.deploymentsRef == nil {
m.deploymentsRef = make(map[string]*Deployment)
}
m.deploymentsRef[deploy.APIVersionKindName] = &deploy
m.deploymentsRef[deploy.getKindName()] = &deploy
case ReplicaSetKind:
replicaset, err := buildReplicaSet(obj, groupVersionKind, conf)
if err != nil {
return err
}
m.ReplicaSets = append(m.ReplicaSets, &replicaset)
if m.replicaSetsRef == nil {
m.replicaSetsRef = make(map[string]*ReplicaSet)
}
m.replicaSetsRef[replicaset.APIVersionKindName] = &replicaset
m.replicaSetsRef[replicaset.getKindName()] = &replicaset
case StatefulSetKind:
statefulset, err := buildStatefulSet(obj, groupVersionKind, conf)
if err != nil {
return err
}
m.StatefulSets = append(m.StatefulSets, &statefulset)
if m.statefulsetsRef == nil {
m.statefulsetsRef = make(map[string]*StatefulSet)
}
m.statefulsetsRef[statefulset.APIVersionKindName] = &statefulset
m.statefulsetsRef[statefulset.getKindName()] = &statefulset
if len(statefulset.VolumeClaims) > 0 {
m.VolumeClaims = append(m.VolumeClaims, statefulset.VolumeClaims...)
}
case DaemonSetKind:
daemonset, err := buildDaemonSet(obj, groupVersionKind, conf)
if err != nil {
return err
}
m.DaemonSets = append(m.DaemonSets, &daemonset)
case VolumeClaimKind:
volume, err := buildVolumeClaim(obj, groupVersionKind, conf)
if err != nil {
return err
}
m.VolumeClaims = append(m.VolumeClaims, &volume)
}
return nil
}