in controllers/dsapi_controller.go [191:226]
func (r *DSApiReconciler) ensureApiDeployment(ctx context.Context, cluster *dsv1alpha1.DSApi) (bool, error) {
deployment := &v1.Deployment{}
deploymentNamespaceName := types.NamespacedName{Namespace: cluster.Namespace, Name: dsv1alpha1.DsApiDeploymentValue}
if err := r.Client.Get(ctx, deploymentNamespaceName, deployment); err != nil {
if apierrors.IsNotFound(err) {
deployment = createApiDeployment(cluster)
applyDeploymentPolicy(deployment, cluster.Spec.Deployment)
}
if err := controllerutil.SetControllerReference(cluster, deployment, r.Scheme); err != nil {
return false, err
}
if err := r.Client.Create(ctx, deployment); err == nil {
apiLogger.Info("the api deployment had been created")
return false, nil
} else {
return false, err
}
} else {
if r.predicateUpdate(deployment, cluster) {
apiLogger.Info("api need to update")
err := r.updateApiDeployment(ctx, deployment, cluster)
if err != nil {
return false, err
}
return true, nil
} else {
apiLogger.Info("begin to check deployment ")
if IsDeploymentAvailable(deployment) {
apiLogger.Info("api deployment is available ")
return false, nil
} else {
return true, nil
}
}
}
}