in controllers/dsalert_controller.go [193:228]
func (r *DSAlertReconciler) ensureAlertDeployment(ctx context.Context, cluster *dsv1alpha1.DSAlert) (bool, error) {
deployment := &v1.Deployment{}
deploymentNamespaceName := types.NamespacedName{Namespace: cluster.Namespace, Name: dsv1alpha1.DsAlertDeploymentValue}
if err := r.Client.Get(ctx, deploymentNamespaceName, deployment); err != nil {
if apierrors.IsNotFound(err) {
deployment = createAlertDeployment(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 {
alertLogger.Info("the alert deployment had been created")
return false, nil
} else {
return false, err
}
} else {
if r.predicateUpdate(deployment, cluster) {
alertLogger.Info("alert need to update")
err := r.updateAlertDeployment(ctx, deployment, cluster)
if err != nil {
return false, err
}
return true, nil
} else {
alertLogger.Info("begin to check alert deployment ")
if IsDeploymentAvailable(deployment) {
alertLogger.Info("deployment is available ")
return false, nil
} else {
return true, nil
}
}
}
}