func()

in operator/controllers/operator/oapserverdynamicconfig_controller.go [219:270]


func (r *OAPServerDynamicConfigReconciler) checkState(ctx context.Context, log logr.Logger,
	config *operatorv1alpha1.OAPServerDynamicConfig) error {
	errCol := new(kubernetes.ErrorCollector)

	nilTime := metav1.Time{}
	now := metav1.NewTime(time.Now())
	overlay := operatorv1alpha1.OAPServerDynamicConfigStatus{
		State: "Stopped",
	}

	// get dynamic configuration's state
	configmapList := core.ConfigMapList{}
	opts := []client.ListOption{
		client.InNamespace(config.Namespace),
		client.MatchingLabels{
			"version":         config.Spec.Version,
			"OAPServerConfig": "dynamic",
		},
	}

	if err := r.List(ctx, &configmapList, opts...); err != nil && !apierrors.IsNotFound(err) {
		errCol.Collect(fmt.Errorf("failed to list configmap: %w", err))
	}

	for i := range configmapList.Items {
		if strings.Contains(configmapList.Items[i].Name, config.Name) {
			overlay.State = "Running"
		}
	}

	if config.Status.CreationTime == nilTime {
		overlay.CreationTime = now
		overlay.LastUpdateTime = now
	} else {
		overlay.CreationTime = config.Status.CreationTime
		overlay.LastUpdateTime = now
	}

	config.Status = overlay
	config.Kind = "OAPServerDynamicConfig"
	if err := kubernetes.ApplyOverlay(config, &operatorv1alpha1.OAPServerDynamicConfig{Status: overlay}); err != nil {
		errCol.Collect(fmt.Errorf("failed to apply overlay: %w", err))
		return errCol.Error()
	}

	if err := r.updateStatus(ctx, config, overlay, errCol); err != nil {
		errCol.Collect(fmt.Errorf("failed to update status of OAPServerDynamicConfig: %w", err))
	}

	log.Info("updated OAPServerDynamicConfig sub resource")
	return errCol.Error()
}