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()
}