Skip to content

Commit c758f71

Browse files
Merge pull request #890 from jhadvig/CONSOLE-3943
CONSOLE-3943: Default telemetry values
2 parents 0120ab8 + 79a86eb commit c758f71

File tree

6 files changed

+137
-20
lines changed

6 files changed

+137
-20
lines changed

manifests/05-telemetry-config.yaml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
apiVersion: v1
2+
kind: ConfigMap
3+
metadata:
4+
namespace: openshift-console-operator
5+
name: telemetry-config
6+
annotations:
7+
include.release.openshift.io/hypershift: "true"
8+
include.release.openshift.io/ibm-cloud-managed: "true"
9+
include.release.openshift.io/self-managed-high-availability: "true"
10+
include.release.openshift.io/single-node-developer: "true"
11+
capability.openshift.io/name: Console
12+
data:
13+
SEGMENT_API_HOST: console.redhat.com/connections/api/v1
14+
SEGMENT_JS_HOST: console.redhat.com/connections/cdn
15+
SEGMENT_PUBLIC_API_KEY: BnuS1RP39EmLQjP21ko67oDjhbl9zpNU

pkg/console/operator/operator.go

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -79,12 +79,13 @@ type consoleOperator struct {
7979
nodeClient coreclientv1.NodesGetter
8080
deploymentClient appsclientv1.DeploymentsGetter
8181
// openshift
82-
configNSConfigMapLister corev1listers.ConfigMapLister //for openshift-config namespace
83-
oauthClientLister oauthlistersv1.OAuthClientLister
84-
consoleOperatorLister operatorlistersv1.ConsoleLister
85-
routeClient routeclientv1.RoutesGetter
86-
routeLister routev1listers.RouteLister
87-
versionGetter status.VersionGetter
82+
operatorNSConfigMapLister corev1listers.ConfigMapLister //for openshift-console-operator namespace
83+
configNSConfigMapLister corev1listers.ConfigMapLister //for openshift-config namespace
84+
oauthClientLister oauthlistersv1.OAuthClientLister
85+
consoleOperatorLister operatorlistersv1.ConsoleLister
86+
routeClient routeclientv1.RoutesGetter
87+
routeLister routev1listers.RouteLister
88+
versionGetter status.VersionGetter
8889
// lister
8990
consolePluginLister listerv1.ConsolePluginLister
9091

@@ -122,6 +123,7 @@ func NewConsoleOperator(
122123
// plugins
123124
consolePluginInformer consoleinformersv1.ConsolePluginInformer,
124125
// openshift config
126+
operatorNSConfigMapInformer corev1.ConfigMapInformer,
125127
configNSConfigMapInformer corev1.ConfigMapInformer,
126128
configSecretsInformer corev1.SecretInformer,
127129
// openshift config managed
@@ -162,9 +164,10 @@ func NewConsoleOperator(
162164

163165
configMapClient: corev1Client,
164166

165-
targetNSConfigMapLister: targetNSConfigMapInformer.Lister(),
166-
configNSConfigMapLister: configNSConfigMapInformer.Lister(),
167-
managedNSConfigMapLister: managedNSConfigMapInformer.Lister(),
167+
targetNSConfigMapLister: targetNSConfigMapInformer.Lister(),
168+
operatorNSConfigMapLister: operatorNSConfigMapInformer.Lister(),
169+
configNSConfigMapLister: configNSConfigMapInformer.Lister(),
170+
managedNSConfigMapLister: managedNSConfigMapInformer.Lister(),
168171

169172
serviceClient: corev1Client,
170173
nodeClient: corev1Client,
@@ -231,6 +234,9 @@ func NewConsoleOperator(
231234
).WithFilteredEventsInformers(
232235
util.IncludeNamesFilter(deployment.ConsoleOauthConfigName),
233236
secretsInformer.Informer(),
237+
).WithFilteredEventsInformers(
238+
util.IncludeNamesFilter(telemetry.TelemetryConfigMapName),
239+
operatorNSConfigMapInformer.Informer(),
234240
).WithFilteredEventsInformers(
235241
util.IncludeNamesFilter(telemetry.TelemeterClientDeploymentName),
236242
monitoringDeploymentInformer.Informer(),

pkg/console/operator/sync_v400.go

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -367,7 +367,7 @@ func (co *consoleOperator) SyncConfigMap(
367367
monitoringSharedConfig = &corev1.ConfigMap{}
368368
}
369369

370-
telemeterConfig, tcErr := co.GetTelemeterConfiguration(ctx, operatorConfig)
370+
telemetryConfig, tcErr := co.GetTelemetryConfiguration(ctx, operatorConfig)
371371
if tcErr != nil {
372372
return nil, false, "FailedGetTelemetryConfig", tcErr
373373
}
@@ -397,7 +397,7 @@ func (co *consoleOperator) SyncConfigMap(
397397
nodeArchitectures,
398398
nodeOperatingSystems,
399399
copiedCSVsDisabled,
400-
telemeterConfig,
400+
telemetryConfig,
401401
)
402402
if err != nil {
403403
return nil, false, "FailedConsoleConfigBuilder", err
@@ -416,14 +416,11 @@ func (co *consoleOperator) SyncConfigMap(
416416
// Build telemetry configuration in following order:
417417
// 1. check if the telemetry client is available and set the "TELEMETER_CLIENT_DISABLED" annotation accordingly
418418
// 2. get telemetry annotation from console-operator config
419-
// 3. get CLUSTER_ID from the cluster-version config
420-
// 4. get ORGANIZATION_ID from OCM
421-
func (co *consoleOperator) GetTelemeterConfiguration(ctx context.Context, operatorConfig *operatorv1.Console) (map[string]string, error) {
419+
// 3. get default telemetry value from telemetry-config configmap
420+
// 4. get CLUSTER_ID from the cluster-version config
421+
// 5. get ORGANIZATION_ID from OCM, if ORGANIZATION_ID is not already set
422+
func (co *consoleOperator) GetTelemetryConfiguration(ctx context.Context, operatorConfig *operatorv1.Console) (map[string]string, error) {
422423
telemetryConfig := make(map[string]string)
423-
telemeterClientIsAvailable, err := telemetry.IsTelemeterClientAvailable(co.monitoringDeploymentLister)
424-
if err != nil {
425-
return telemetryConfig, err
426-
}
427424

428425
if len(operatorConfig.Annotations) > 0 {
429426
for k, v := range operatorConfig.Annotations {
@@ -433,12 +430,27 @@ func (co *consoleOperator) GetTelemeterConfiguration(ctx context.Context, operat
433430
}
434431
}
435432

433+
telemetryConfigMap, err := co.operatorNSConfigMapLister.ConfigMaps(api.OpenShiftConsoleOperatorNamespace).Get(telemetry.TelemetryConfigMapName)
434+
if err != nil {
435+
return telemetryConfig, err
436+
}
437+
438+
if len(telemetryConfigMap.Data) > 0 {
439+
for k, v := range telemetryConfigMap.Data {
440+
telemetryConfig[k] = v
441+
}
442+
}
443+
436444
clusterID, err := telemetry.GetClusterID(co.clusterVersionLister)
437445
if err != nil {
438446
return nil, err
439447
}
440448
telemetryConfig["CLUSTER_ID"] = clusterID
441449

450+
telemeterClientIsAvailable, err := telemetry.IsTelemeterClientAvailable(co.monitoringDeploymentLister)
451+
if err != nil {
452+
return telemetryConfig, err
453+
}
442454
if !telemeterClientIsAvailable {
443455
telemetryConfig["TELEMETER_CLIENT_DISABLED"] = "true"
444456
return telemetryConfig, nil

pkg/console/starter/starter.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,12 @@ func RunOperator(ctx context.Context, controllerContext *controllercmd.Controlle
124124
informers.WithNamespace(api.OpenShiftConfigNamespace),
125125
)
126126

127+
kubeInformersOperatorConfigNamespaced := informers.NewSharedInformerFactoryWithOptions(
128+
kubeClient,
129+
resync,
130+
informers.WithNamespace(api.OpenShiftConsoleOperatorNamespace),
131+
)
132+
127133
kubeInformersMonitoringNamespaced := informers.NewSharedInformerFactoryWithOptions(
128134
kubeClient,
129135
resync,
@@ -235,8 +241,9 @@ func RunOperator(ctx context.Context, controllerContext *controllercmd.Controlle
235241
// plugins
236242
consoleInformers.Console().V1().ConsolePlugins(),
237243
// openshift
238-
kubeInformersConfigNamespaced.Core().V1().ConfigMaps(), // openshift-config configMaps
239-
kubeInformersConfigNamespaced.Core().V1().Secrets(), // openshift-config secrets
244+
kubeInformersOperatorConfigNamespaced.Core().V1().ConfigMaps(), // openshift-console-operator configMaps
245+
kubeInformersConfigNamespaced.Core().V1().ConfigMaps(), // openshift-config configMaps
246+
kubeInformersConfigNamespaced.Core().V1().Secrets(), // openshift-config secrets
240247
// openshift managed
241248
kubeInformersManagedNamespaced.Core().V1(), // Managed ConfigMaps
242249
// event handling
@@ -536,6 +543,7 @@ func RunOperator(ctx context.Context, controllerContext *controllercmd.Controlle
536543
kubeInformersConfigNamespaced,
537544
kubeInformersManagedNamespaced,
538545
kubeInformersMonitoringNamespaced,
546+
kubeInformersOperatorConfigNamespaced,
539547
resourceSyncerInformers,
540548
operatorConfigInformers,
541549
consoleInformers,

pkg/console/telemetry/telemetry.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import (
1818
)
1919

2020
const (
21+
TelemetryConfigMapName = "telemetry-config"
2122
TelemeterClientDeploymentName = "telemeter-client"
2223
TelemetryAnnotationPrefix = "telemetry.console.openshift.io/"
2324
TelemeterClientDeploymentNamespace = "openshift-monitoring"

test/e2e/telemetry_config_test.go

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package e2e
2+
3+
import (
4+
"context"
5+
"fmt"
6+
"testing"
7+
"time"
8+
9+
operatorsv1 "github.com/openshift/api/operator/v1"
10+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
11+
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
12+
"k8s.io/apimachinery/pkg/types"
13+
"k8s.io/apimachinery/pkg/util/wait"
14+
15+
"github.com/openshift/console-operator/pkg/api"
16+
"github.com/openshift/console-operator/pkg/console/telemetry"
17+
"github.com/openshift/console-operator/test/e2e/framework"
18+
)
19+
20+
const (
21+
SEGMENT_API_HOST = "SEGMENT_API_HOST"
22+
)
23+
24+
func setupTelemetryConfigTestCase(t *testing.T) (*framework.ClientSet, *operatorsv1.Console) {
25+
return framework.StandardSetup(t)
26+
}
27+
28+
func cleanupTelemetryConfigTestCase(t *testing.T, client *framework.ClientSet) {
29+
framework.StandardCleanup(t, client)
30+
}
31+
32+
func TestTelemetryConfig(t *testing.T) {
33+
client, _ := setupDownloadsTestCase(t)
34+
defer cleanupDownloadsTestCase(t, client)
35+
telemetryConfigMap, err := client.Core.ConfigMaps(api.OpenShiftConsoleOperatorNamespace).Get(context.TODO(), telemetry.TelemetryConfigMapName, v1.GetOptions{})
36+
if err != nil {
37+
t.Fatal(err)
38+
}
39+
40+
if len(telemetryConfigMap.Data) == 0 {
41+
t.Fatal("telemetry-config configmap is empty")
42+
}
43+
44+
// check default value for SEGMENT_API_HOST key
45+
value, ok := telemetryConfigMap.Data[SEGMENT_API_HOST]
46+
if !ok {
47+
t.Fatalf("telemetry-config configmap does not contain SEGMENT_JS_HOST data key. Instead contains: %v", telemetryConfigMap.Data)
48+
}
49+
if value != "console.redhat.com/connections/api/v1" {
50+
t.Fatalf("telemetry-config configmap does not contain SEGMENT_API_HOST key with value 'console.redhat.com/connections/api/v1'. Instead contains: %q", value)
51+
}
52+
53+
// update the defaul value for SEGMENT_API_HOST key
54+
_, err = client.Core.ConfigMaps(api.OpenShiftConsoleOperatorNamespace).Patch(context.TODO(), telemetry.TelemetryConfigMapName, types.MergePatchType, []byte(`{"data": {"SEGMENT_API_HOST": "test"}}`), metav1.PatchOptions{})
55+
if err != nil {
56+
t.Fatal(err)
57+
}
58+
59+
err = wait.Poll(1*time.Second, framework.AsyncOperationTimeout, func() (stop bool, err error) {
60+
telemetryConfigMap, err := client.Core.ConfigMaps(api.OpenShiftConsoleOperatorNamespace).Get(context.TODO(), telemetry.TelemetryConfigMapName, v1.GetOptions{})
61+
if err != nil {
62+
t.Fatal(err)
63+
}
64+
value, ok := telemetryConfigMap.Data[SEGMENT_API_HOST]
65+
if !ok {
66+
return false, fmt.Errorf("updated telemetry-config configmap does not contain SEGMENT_JS_HOST data key. Instead contains: %v", telemetryConfigMap.Data)
67+
}
68+
if value != "test" {
69+
return false, fmt.Errorf("update telemetry-config configmap does not contain SEGMENT_API_HOST key with value 'console.redhat.com/connections/api/v1'. Instead contains: %q", value)
70+
}
71+
72+
return true, nil
73+
})
74+
75+
}

0 commit comments

Comments
 (0)