func tryAcquireReplicasFromUnstructuredSpec()

in clusterloader2/pkg/measurement/util/runtimeobjects/runtimeobjects.go [219:256]


func tryAcquireReplicasFromUnstructuredSpec(c clientset.Interface, spec map[string]interface{}, kind string) (ReplicasWatcher, error) {
	switch kind {
	case "DaemonSet":
		parser, err := newDaemonSetPodSpecParser(spec)
		if err != nil {
			return nil, err
		}
		var podSpec corev1.PodSpec
		if err := parser.getDaemonSetNodeSelectorFromUnstructuredSpec(&podSpec); err != nil {
			return nil, err
		}
		if err := parser.getDaemonSetAffinityFromUnstructuredSpec(&podSpec); err != nil {
			return nil, err
		}
		if err := parser.getDaemonSetTolerationsFromUnstructuredSpec(&podSpec); err != nil {
			return nil, err
		}
		return getDaemonSetNumSchedulableNodes(c, &podSpec)
	case "Job":
		replicas, found, err := unstructured.NestedInt64(spec, "parallelism")
		if err != nil {
			return nil, fmt.Errorf("try to acquire job parallelism failed, %v", err)
		}
		if !found {
			return &ConstReplicas{0}, nil
		}
		return &ConstReplicas{int(replicas)}, nil
	default:
		replicas, found, err := unstructured.NestedInt64(spec, "replicas")
		if err != nil {
			return nil, fmt.Errorf("try to acquire replicas failed, %v", err)
		}
		if !found {
			return &ConstReplicas{0}, nil
		}
		return &ConstReplicas{int(replicas)}, nil
	}
}