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
}
}