diff --git a/pkg/controllers/uiplugin/controller.go b/pkg/controllers/uiplugin/controller.go index 1241b9b61..0ff8be930 100644 --- a/pkg/controllers/uiplugin/controller.go +++ b/pkg/controllers/uiplugin/controller.go @@ -257,7 +257,7 @@ func (rm resourceManager) Reconcile(ctx context.Context, req ctrl.Request) (ctrl return ctrl.Result{}, err } - pluginInfo, err := PluginInfoBuilder(ctx, rm.k8sClient, rm.k8sDynamicClient, plugin, rm.pluginConf, compatibilityInfo, rm.clusterVersion) + pluginInfo, err := PluginInfoBuilder(ctx, rm.k8sClient, rm.k8sDynamicClient, plugin, rm.pluginConf, compatibilityInfo, rm.clusterVersion, rm.logger) if err != nil { logger.Error(err, "failed to reconcile plugin") diff --git a/pkg/controllers/uiplugin/logging.go b/pkg/controllers/uiplugin/logging.go index 6de73d76f..5db61481c 100644 --- a/pkg/controllers/uiplugin/logging.go +++ b/pkg/controllers/uiplugin/logging.go @@ -8,6 +8,7 @@ import ( "strings" "time" + "github.com/go-logr/logr" osv1 "github.com/openshift/api/console/v1" osv1alpha1 "github.com/openshift/api/console/v1alpha1" "gopkg.in/yaml.v3" @@ -27,8 +28,8 @@ type loggingConfig struct { Schema string `yaml:"schema,omitempty"` } -func createLoggingPluginInfo(plugin *uiv1alpha1.UIPlugin, namespace, name, image string, features []string, ctx context.Context, dk dynamic.Interface) (*UIPluginInfo, error) { - lokiStack, err := getLokiStack(plugin, ctx, dk) +func createLoggingPluginInfo(plugin *uiv1alpha1.UIPlugin, namespace, name, image string, features []string, ctx context.Context, dk dynamic.Interface, logger logr.Logger) (*UIPluginInfo, error) { + lokiStack, err := getLokiStack(plugin, ctx, dk, logger) if err != nil { return nil, err } @@ -209,7 +210,7 @@ var lokiStackResource = schema.GroupVersionResource{ // getLokiStack returns the LokiStack resource to use for the logging plugin. // It either uses the explicitly configured LokiStack or discovers one from the cluster. -func getLokiStack(plugin *uiv1alpha1.UIPlugin, ctx context.Context, client dynamic.Interface) (*types.NamespacedName, error) { +func getLokiStack(plugin *uiv1alpha1.UIPlugin, ctx context.Context, client dynamic.Interface, logger logr.Logger) (*types.NamespacedName, error) { config := plugin.Spec.Logging searchNamespace := OpenshiftLoggingNs @@ -231,15 +232,18 @@ func getLokiStack(plugin *uiv1alpha1.UIPlugin, ctx context.Context, client dynam lokiStacks, err := client.Resource(lokiStackResource).Namespace(searchNamespace).List(ctx, metav1.ListOptions{}) if err != nil { - return nil, fmt.Errorf("failed to list LokiStacks in namespace %s: %w", searchNamespace, err) + logger.Info("Failed to list LokiStacks in namespace, will use default", "namespace", searchNamespace, "error", err.Error()) } - if len(lokiStacks.Items) == 0 { - return nil, fmt.Errorf("no LokiStack found in namespace %s", searchNamespace) + if len(lokiStacks.Items) > 0 { + return &types.NamespacedName{ + Name: lokiStacks.Items[0].GetName(), + Namespace: searchNamespace, + }, nil } return &types.NamespacedName{ - Name: lokiStacks.Items[0].GetName(), + Name: "loki-stack", Namespace: searchNamespace, }, nil } diff --git a/pkg/controllers/uiplugin/plugin_info_builder.go b/pkg/controllers/uiplugin/plugin_info_builder.go index 60278693a..3a5d73a05 100644 --- a/pkg/controllers/uiplugin/plugin_info_builder.go +++ b/pkg/controllers/uiplugin/plugin_info_builder.go @@ -4,6 +4,7 @@ import ( "context" "fmt" + "github.com/go-logr/logr" osv1 "github.com/openshift/api/console/v1" osv1alpha1 "github.com/openshift/api/console/v1alpha1" corev1 "k8s.io/api/core/v1" @@ -43,7 +44,7 @@ var pluginTypeToConsoleName = map[uiv1alpha1.UIPluginType]string{ uiv1alpha1.TypeMonitoring: "monitoring-console-plugin", } -func PluginInfoBuilder(ctx context.Context, k client.Client, dk dynamic.Interface, plugin *uiv1alpha1.UIPlugin, pluginConf UIPluginsConfiguration, compatibilityInfo CompatibilityEntry, clusterVersion string) (*UIPluginInfo, error) { +func PluginInfoBuilder(ctx context.Context, k client.Client, dk dynamic.Interface, plugin *uiv1alpha1.UIPlugin, pluginConf UIPluginsConfiguration, compatibilityInfo CompatibilityEntry, clusterVersion string, logger logr.Logger) (*UIPluginInfo, error) { image := pluginConf.Images[compatibilityInfo.ImageKey] if image == "" { return nil, fmt.Errorf("no image provided for plugin type %s with key %s", plugin.Spec.Type, compatibilityInfo.ImageKey) @@ -82,7 +83,7 @@ func PluginInfoBuilder(ctx context.Context, k client.Client, dk dynamic.Interfac return createDistributedTracingPluginInfo(plugin, namespace, plugin.Name, image, []string{}) case uiv1alpha1.TypeLogging: - return createLoggingPluginInfo(plugin, namespace, plugin.Name, image, compatibilityInfo.Features, ctx, dk) + return createLoggingPluginInfo(plugin, namespace, plugin.Name, image, compatibilityInfo.Features, ctx, dk, logger) case uiv1alpha1.TypeMonitoring: return createMonitoringPluginInfo(plugin, namespace, plugin.Name, image, compatibilityInfo.Features, clusterVersion, pluginConf.Images["health-analyzer"], pluginConf.Images["perses"])