Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions pkg/console/operator/sync_v400.go
Original file line number Diff line number Diff line change
Expand Up @@ -481,6 +481,9 @@ func (co *consoleOperator) GetTelemetryConfiguration(ctx context.Context, operat
if err != nil {
return nil, err
}
if accessToken == "" {
return telemetryConfig, nil
}
organizationID, accountMail, refreshCache := telemetry.GetOrganizationMeta(telemetryConfig, co.trackables.organizationID, co.trackables.accountMail, clusterID, accessToken)
// cache fetched ORGANIZATION_ID and ACCOUNT_MAIL
if refreshCache {
Expand Down
6 changes: 3 additions & 3 deletions pkg/console/telemetry/telemetry.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,12 +82,12 @@ func GetAccessToken(secretsLister v1.SecretLister) (string, error) {
var config DockerConfig
err = json.Unmarshal(configBytes, &config)
if err != nil {
fmt.Println("Error decoding JSON:", err)
return "", err
klog.Errorf("error decoding pull-secret JSON: %v", err)
return "", fmt.Errorf("error decoding pull-secret JSON: %w", err)
}
authsBytes, ok := config.Auths["cloud.openshift.com"]
if !ok {
return "", fmt.Errorf("failed to parse 'cloud.openshift.com' field from pull-secret")
return "", nil
}
return authsBytes.Auth, nil
}
Expand Down
53 changes: 53 additions & 0 deletions pkg/console/telemetry/telemetry_test.go
Original file line number Diff line number Diff line change
@@ -1,8 +1,18 @@
package telemetry

import (
// standard lib
"testing"
"time"

// kube
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
corev1listers "k8s.io/client-go/listers/core/v1"
"k8s.io/client-go/tools/cache"

// operator
"github.com/openshift/console-operator/pkg/api"
)

// Helpers to set rate-limit timestamps and restore after test
Expand All @@ -18,6 +28,49 @@ func withLastSuccessTime(t *testing.T, ts time.Time) {
t.Cleanup(func() { lastSuccessTime = prev })
}

func newFakeSecretLister(t *testing.T, secrets ...*corev1.Secret) corev1listers.SecretLister {
t.Helper()
indexer := cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
for _, s := range secrets {
if err := indexer.Add(s.DeepCopy()); err != nil {
t.Fatalf("failed to add secret to indexer: %v", err)
}
}
return corev1listers.NewSecretLister(indexer)
}

func TestGetAccessToken_MissingCloudEntry(t *testing.T) {
secret := &corev1.Secret{
ObjectMeta: metav1.ObjectMeta{Name: PullSecretName, Namespace: api.OpenShiftConfigNamespace},
Data: map[string][]byte{".dockerconfigjson": []byte(`{"auths":{}}`)},
}
lister := newFakeSecretLister(t, secret)

token, err := GetAccessToken(lister)
if err != nil {
t.Fatalf("expected no error for missing cloud.openshift.com, got: %v", err)
}
if token != "" {
t.Fatalf("expected empty token, got %q", token)
}
}

func TestGetAccessToken_PresentCloudEntry(t *testing.T) {
secret := &corev1.Secret{
ObjectMeta: metav1.ObjectMeta{Name: PullSecretName, Namespace: api.OpenShiftConfigNamespace},
Data: map[string][]byte{".dockerconfigjson": []byte(`{"auths":{"cloud.openshift.com":{"auth":"my-token"}}}`)},
}
lister := newFakeSecretLister(t, secret)

token, err := GetAccessToken(lister)
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if token != "my-token" {
t.Fatalf("expected %q, got %q", "my-token", token)
}
}

func TestGetOrganizationMeta_UsesCustomOverrides(t *testing.T) {
telemetryConfig := map[string]string{
"ORGANIZATION_ID": "org-custom",
Expand Down