From 5769fc5c8831c48e4c0d2d4e4714396969cf0b29 Mon Sep 17 00:00:00 2001 From: Lukas Piwowarski Date: Tue, 13 Jan 2026 10:41:02 +0100 Subject: [PATCH] Set correct service ID for RHOSO Lightspeed Detect RHOSO Lightspeed deployments and use the correct service ID for feedback and transcript gathering. When OLSConfig contains the "openstack.org/lightspeed-owner-id" label, the service ID is set to "rhos-lightspeed" instead of the default "ols". This ensures proper identification when deployed via the openstack-lightspeed/operator. --- internal/controller/appserver/assets.go | 11 ++++++++-- internal/controller/appserver/assets_test.go | 22 ++++++++++++++++++++ internal/controller/utils/constants.go | 6 ++++++ 3 files changed, 37 insertions(+), 2 deletions(-) diff --git a/internal/controller/appserver/assets.go b/internal/controller/appserver/assets.go index 10ff5f03c..e54f1a616 100644 --- a/internal/controller/appserver/assets.go +++ b/internal/controller/appserver/assets.go @@ -339,8 +339,15 @@ func GenerateOLSConfigMap(r reconciler.Reconciler, ctx context.Context, cr *olsv } func generateExporterConfigMap(r reconciler.Reconciler, cr *olsv1alpha1.OLSConfig) (*corev1.ConfigMap, error) { + serviceID := utils.ServiceIDOLS + if cr.Labels != nil { + if _, hasRHOSLightspeedLabel := cr.Labels[utils.RHOSOLightspeedOwnerIDLabel]; hasRHOSLightspeedLabel { + serviceID = utils.ServiceIDRHOSO + } + } + // Collection interval is set to 300 seconds in production (5 minutes) - exporterConfigContent := `service_id: "ols" + exporterConfigContent := fmt.Sprintf(`service_id: "%s" ingress_server_url: "https://console.redhat.com/api/ingress/v1/upload" allowed_subdirs: - feedback @@ -348,7 +355,7 @@ allowed_subdirs: # Collection settings collection_interval: 300 cleanup_after_send: true -ingress_connection_timeout: 30` +ingress_connection_timeout: 30`, serviceID) cm := corev1.ConfigMap{ ObjectMeta: metav1.ObjectMeta{ diff --git a/internal/controller/appserver/assets_test.go b/internal/controller/appserver/assets_test.go index decbd7049..61eeba926 100644 --- a/internal/controller/appserver/assets_test.go +++ b/internal/controller/appserver/assets_test.go @@ -1117,6 +1117,28 @@ var _ = Describe("App server assets", func() { })) }) + It("should generate exporter configmap with service_id 'ols' by default", func() { + cm, err := generateExporterConfigMap(testReconcilerInstance, cr) + Expect(err).NotTo(HaveOccurred()) + Expect(cm.Name).To(Equal(utils.ExporterConfigCmName)) + Expect(cm.Namespace).To(Equal(utils.OLSNamespaceDefault)) + Expect(cm.Data[utils.ExporterConfigFilename]).To(ContainSubstring(`service_id: "` + utils.ServiceIDOLS + `"`)) + }) + + It("should generate exporter configmap with service_id 'rhos-lightspeed' when label is present", func() { + if cr.Labels == nil { + cr.Labels = make(map[string]string) + } + + cr.Labels[utils.RHOSOLightspeedOwnerIDLabel] = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx" + + cm, err := generateExporterConfigMap(testReconcilerInstance, cr) + Expect(err).NotTo(HaveOccurred()) + Expect(cm.Name).To(Equal(utils.ExporterConfigCmName)) + Expect(cm.Namespace).To(Equal(utils.OLSNamespaceDefault)) + Expect(cm.Data[utils.ExporterConfigFilename]).To(ContainSubstring(`service_id: "` + utils.ServiceIDRHOSO + `"`)) + }) + }) Context("empty custom resource", func() { diff --git a/internal/controller/utils/constants.go b/internal/controller/utils/constants.go index 97e8ee580..579f37871 100644 --- a/internal/controller/utils/constants.go +++ b/internal/controller/utils/constants.go @@ -320,6 +320,12 @@ ssl_ca_file = '/etc/certs/cm-olspostgresca/service-ca.crt' ExporterConfigFilename = "config.yaml" // OLSUserDataMountPath is the path where user data is mounted in the app server container OLSUserDataMountPath = "/app-root/ols-user-data" + // ServiceIDOLS is the service ID used by the data exporter + ServiceIDOLS = "ols" + // RHOSOLightspeedOwnerIDLabel is the label used to identify RHOSO Lightspeed deployment + RHOSOLightspeedOwnerIDLabel = "openstack.org/lightspeed-owner-id" + // ServiceIDRHOSO is the service ID used by the data exporter when RHOSO Lightspeed is deployed + ServiceIDRHOSO = "rhos-lightspeed" /*** Container Names (used for testing) ***/ // OLSAppServerContainerName is the name of the OLS application server container