in gke-deploy/core/resource/ready.go [526:576]
func statefulSetIsReady(ctx context.Context, obj *Object) (bool, error) {
generation, ok, err := unstructured.NestedInt64(obj.Object, "metadata", "generation")
if err != nil {
return false, fmt.Errorf("failed to get metadata.generation field: %v", err)
}
if !ok {
return false, nil
}
observedGeneration, ok, err := unstructured.NestedInt64(obj.Object, "status", "observedGeneration")
if err != nil {
return false, fmt.Errorf("failed to get status.observedGeneration field: %v", err)
}
if !ok || observedGeneration != generation {
return false, nil
}
specReplicas, ok, err := unstructured.NestedInt64(obj.Object, "spec", "replicas")
if err != nil {
return false, fmt.Errorf("failed to get spec.replicas field: %v", err)
}
if !ok {
return false, nil
}
statusReplicas, ok, err := unstructured.NestedInt64(obj.Object, "status", "replicas")
if err != nil {
return false, fmt.Errorf("failed to get status.replicas field: %v", err)
}
if !ok || statusReplicas != specReplicas {
return false, nil
}
readyReplicas, ok, err := unstructured.NestedInt64(obj.Object, "status", "readyReplicas")
if err != nil {
return false, fmt.Errorf("failed to get status.readyReplicas field: %v", err)
}
if !ok || readyReplicas != specReplicas {
return false, nil
}
currentReplicas, ok, err := unstructured.NestedInt64(obj.Object, "status", "currentReplicas")
if err != nil {
return false, fmt.Errorf("failed to get status.currentReplicas field: %v", err)
}
if !ok || currentReplicas != specReplicas {
return false, nil
}
return true, nil
}