in operator/controllers/operator/oapserverconfig_controller.go [78:129]
func (r *OAPServerConfigReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
log := runtimelog.FromContext(ctx)
log.Info("=====================oapserverconfig reconcile started================================")
oapServerConfig := operatorv1alpha1.OAPServerConfig{}
if err := r.Client.Get(ctx, req.NamespacedName, &oapServerConfig); err != nil {
return ctrl.Result{}, client.IgnoreNotFound(err)
}
oapList := operatorv1alpha1.OAPServerList{}
opts := []client.ListOption{
client.InNamespace(req.Namespace),
}
if err := r.List(ctx, &oapList, opts...); err != nil && !apierrors.IsNotFound(err) {
return ctrl.Result{}, fmt.Errorf("failed to list oapserver: %w", err)
}
// get the specific version's oapserver
for i := range oapList.Items {
if oapList.Items[i].Spec.Version == oapServerConfig.Spec.Version {
oapServer := oapList.Items[i]
deployment := apps.Deployment{}
if err := r.Client.Get(ctx, client.ObjectKey{Namespace: oapServer.Namespace, Name: oapServer.Name + "-oap"}, &deployment); err != nil && !apierrors.IsNotFound(err) {
return ctrl.Result{}, fmt.Errorf("failed to get the deployment of OAPServer: %w", err)
}
// overlay the env configuration
envChanged, err := r.OverlayEnv(log, &oapServerConfig, &deployment)
if err != nil {
log.Error(err, "failed to overlay the env configuration")
}
// overlay the file configuration
fileChanged, err := r.OverlayStaticFile(ctx, log, &oapServerConfig, &deployment)
if err != nil {
log.Error(err, "failed to overlay the file configuration")
}
// update the deployment
if envChanged || fileChanged {
if err := r.Client.Update(ctx, &deployment); err != nil {
return ctrl.Result{}, fmt.Errorf("failed to update the deployment of OAPServer: %w", err)
}
}
}
}
if err := r.checkState(ctx, log, &oapServerConfig, oapList); err != nil {
log.Error(err, "failed to update OAPServerConfig's status")
return ctrl.Result{}, err
}
return ctrl.Result{RequeueAfter: schedDuration}, nil
}