in pkg/provider/k8s/k8s.go [1332:1359]
func (c *K8s) statefulSetReady(resource runtime.Object) (bool, error) {
req := resource.(*appsV1.StatefulSet)
kind := resource.GetObjectKind().GroupVersionKind().Kind
if len(req.Namespace) == 0 {
req.Namespace = "default"
}
switch v := resource.GetObjectKind().GroupVersionKind().Version; v {
case "v1":
client := c.clt.AppsV1().StatefulSets(req.Namespace)
res, err := client.Get(c.ctx, req.Name, apiMetaV1.GetOptions{})
if err != nil {
return false, errors.Wrapf(err, "Checking StatefulSet resource:'%v' status failed err:%v", req.Name, err)
}
replicas := int32(1)
if req.Spec.Replicas != nil {
replicas = *req.Spec.Replicas
}
if res.Status.ReadyReplicas == replicas {
return true, nil
}
return false, nil
default:
return false, fmt.Errorf("unknown object version: %v kind:'%v', name:'%v'", v, kind, req.Name)
}
}