in clusterloader2/pkg/measurement/util/runtimeobjects/runtimeobjects.go [151:188]
func GetReplicasFromRuntimeObject(c clientset.Interface, obj runtime.Object) (ReplicasWatcher, error) {
if obj == nil {
return &ConstReplicas{0}, nil
}
switch typed := obj.(type) {
case *unstructured.Unstructured:
return getReplicasFromUnstrutured(c, typed)
case *corev1.ReplicationController:
if typed.Spec.Replicas != nil {
return &ConstReplicas{int(*typed.Spec.Replicas)}, nil
}
return &ConstReplicas{0}, nil
case *appsv1.ReplicaSet:
if typed.Spec.Replicas != nil {
return &ConstReplicas{int(*typed.Spec.Replicas)}, nil
}
return &ConstReplicas{0}, nil
case *appsv1.Deployment:
if typed.Spec.Replicas != nil {
return &ConstReplicas{int(*typed.Spec.Replicas)}, nil
}
return &ConstReplicas{0}, nil
case *appsv1.StatefulSet:
if typed.Spec.Replicas != nil {
return &ConstReplicas{int(*typed.Spec.Replicas)}, nil
}
return &ConstReplicas{0}, nil
case *appsv1.DaemonSet:
return getNumSchedulableNodesMatchingNodeSelectorAndNodeAffinity(c, typed.Spec.Template.Spec.NodeSelector, typed.Spec.Template.Spec.Affinity)
case *batch.Job:
if typed.Spec.Parallelism != nil {
return &ConstReplicas{int(*typed.Spec.Parallelism)}, nil
}
return &ConstReplicas{0}, nil
default:
return nil, fmt.Errorf("unsupported kind when getting number of replicas: %v", obj)
}
}