in pkg/common/utils/k8s/client.go [90:111]
func ApplyStatefulSet(ctx context.Context, k8sclient client.Client, st *appv1.StatefulSet, equal StatefulSetEqual) error {
var est appv1.StatefulSet
err := k8sclient.Get(ctx, types.NamespacedName{Namespace: st.Namespace, Name: st.Name}, &est)
if err != nil && apierrors.IsNotFound(err) {
return CreateClientObject(ctx, k8sclient, st)
} else if err != nil && !apierrors.IsNotFound(err) {
return err
}
//if have restart annotation we should exclude it impacts on hash.
if equal(st, &est) {
klog.Infof("ApplyStatefulSet Sync exist statefulset name=%s, namespace=%s, equals to new statefulset.", est.Name, est.Namespace)
return nil
}
st.ResourceVersion = est.ResourceVersion
err = PatchClientObject(ctx, k8sclient, st)
if err == nil || apierrors.IsConflict(err) {
return nil
}
return err
}