func()

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
}