Skip to content

Commit d7a45d0

Browse files
authored
Merge pull request #3092 from weaveworks/1941-pendo-agent-for-enterprise
Pendo Agent for Enterprise
2 parents 116b9e4 + 19c88ec commit d7a45d0

24 files changed

+86
-68
lines changed

cmd/gitops-server/cmd/cmd.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import (
3636
"github.com/weaveworks/weave-gitops/pkg/server"
3737
"github.com/weaveworks/weave-gitops/pkg/server/auth"
3838
"github.com/weaveworks/weave-gitops/pkg/server/middleware"
39+
"github.com/weaveworks/weave-gitops/pkg/telemetry"
3940
"k8s.io/client-go/tools/clientcmd"
4041
"sigs.k8s.io/controller-runtime/pkg/client"
4142
"sigs.k8s.io/controller-runtime/pkg/client/config"
@@ -189,6 +190,15 @@ func runCmd(cmd *cobra.Command, args []string) error {
189190
return fmt.Errorf("failed to create cluster client; %w", err)
190191
}
191192

193+
if featureflags.Get("WEAVE_GITOPS_FEATURE_TELEMETRY") == "true" {
194+
err := telemetry.InitTelemetry(ctx, cl)
195+
if err != nil {
196+
// If there's an error turning on telemetry, that's not a
197+
// thing that should interrupt anything else
198+
log.Info("Couldn't enable telemetry", "error", err)
199+
}
200+
}
201+
192202
if options.UseK8sCachedClients {
193203
cl = cluster.NewDelegatingCacheCluster(cl, rest, scheme)
194204
}

core/server/server.go

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,8 @@ import (
77
"github.com/go-logr/logr"
88
"github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
99
"github.com/weaveworks/weave-gitops/core/clustersmngr"
10-
"github.com/weaveworks/weave-gitops/core/logger"
1110
"github.com/weaveworks/weave-gitops/core/nsaccess"
1211
pb "github.com/weaveworks/weave-gitops/pkg/api/core"
13-
"github.com/weaveworks/weave-gitops/pkg/telemetry"
1412
"k8s.io/client-go/rest"
1513
)
1614

@@ -64,13 +62,6 @@ func NewCoreConfig(log logr.Logger, cfg *rest.Config, clusterName string, cluste
6462
}
6563

6664
func NewCoreServer(cfg CoreServerConfig) (pb.CoreServer, error) {
67-
err := telemetry.InitTelemetry(cfg.ClustersManager)
68-
if err != nil {
69-
// If there's an error turning on telemetry, that's not a
70-
// thing that should interrupt anything else
71-
cfg.log.V(logger.LogLevelDebug).Info("Couldn't enable telemetry", "error", err)
72-
}
73-
7465
return &coreServer{
7566
logger: cfg.log,
7667
nsChecker: cfg.NSAccess,

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
"jest-canvas-mock": "^2.4.0",
5858
"jest-fail-on-console": "^3.0.1",
5959
"jest-worker": "^27.5.1",
60+
"js-sha3": "0.8.0",
6061
"lodash": "^4.17.21",
6162
"luxon": "^1.27.0",
6263
"mnemonic-browser": "^0.0.1",

pkg/telemetry/telemetry.go

Lines changed: 38 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,51 @@
11
package telemetry
22

33
import (
4+
"context"
45
"encoding/hex"
6+
"fmt"
57

6-
"github.com/weaveworks/weave-gitops/core/clustersmngr"
8+
"github.com/weaveworks/weave-gitops/core/clustersmngr/cluster"
79
"github.com/weaveworks/weave-gitops/pkg/featureflags"
810
"golang.org/x/crypto/sha3"
9-
"k8s.io/apimachinery/pkg/types"
11+
v1 "k8s.io/api/core/v1"
12+
"sigs.k8s.io/controller-runtime/pkg/client"
1013
)
1114

12-
func InitTelemetry(factory clustersmngr.ClustersManager) error {
13-
if featureflags.Get("WEAVE_GITOPS_FEATURE_TELEMETRY") == "true" {
14-
var namespace types.UID
15-
16-
namespaces := factory.GetClustersNamespaces()["Default"]
17-
for _, ns := range namespaces {
18-
if ns.GetName() == "kube-system" {
19-
namespace = ns.GetUID()
20-
}
21-
}
22-
23-
key := []byte("VyzGoWoKvtJHyTnU+GVhDe+wU9bwZDH87bp505/0f/2UIpHzB+tmyZmfsH8/iJoH")
24-
buf := []byte(namespace)
25-
h := make([]byte, 32)
26-
d := sha3.NewShake128()
27-
28-
_, err := d.Write(key)
29-
if err != nil {
30-
return err
31-
}
32-
33-
_, err = d.Write(buf)
34-
if err != nil {
35-
return err
36-
}
37-
38-
_, err = d.Read(h)
39-
if err != nil {
40-
return err
41-
}
42-
43-
featureflags.Set("ACCOUNT_ID", hex.EncodeToString(h))
15+
func InitTelemetry(ctx context.Context, cl cluster.Cluster) error {
16+
serverClient, err := cl.GetServerClient()
17+
if err != nil {
18+
return fmt.Errorf("failed to get server client; %w", err)
4419
}
4520

21+
ns := &v1.Namespace{}
22+
23+
err = serverClient.Get(ctx, client.ObjectKey{Name: "kube-system"}, ns)
24+
if err != nil {
25+
return fmt.Errorf("failed to get cluster namespace; %w", err)
26+
}
27+
28+
key := []byte("VyzGoWoKvtJHyTnU+GVhDe+wU9bwZDH87bp505/0f/2UIpHzB+tmyZmfsH8/iJoH")
29+
buf := []byte(ns.GetUID())
30+
h := make([]byte, 32)
31+
d := sha3.NewShake128()
32+
33+
_, err = d.Write(key)
34+
if err != nil {
35+
return err
36+
}
37+
38+
_, err = d.Write(buf)
39+
if err != nil {
40+
return err
41+
}
42+
43+
_, err = d.Read(h)
44+
if err != nil {
45+
return err
46+
}
47+
48+
featureflags.Set("ACCOUNT_ID", hex.EncodeToString(h))
49+
4650
return nil
4751
}

tools/helm-values-dev.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,6 @@ envVars:
2424
- name: WEAVE_GITOPS_FEATURE_CLUSTER
2525
value: "false"
2626
- name: WEAVE_GITOPS_FEATURE_TELEMETRY
27-
value: "true"
27+
value: "false"
2828
- name: WEAVE_GITOPS_FEATURE_DEV_MODE
2929
value: "true"

ui/App.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ export default function AppContainer() {
112112
<AppContextProvider renderFooter>
113113
<AuthContextProvider>
114114
<CoreClientContextProvider api={Core}>
115-
<Pendo />
115+
<Pendo defaultTelemetryFlag="false" />
116116
<Switch>
117117
{/* <Signin> does not use the base page <Layout> so pull it up here */}
118118
<Route component={SignIn} exact path="/sign_in" />

ui/components/AlertsTable.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ export const makeEventSourceLink = (obj: CrossNamespaceObjectRef) => {
3535

3636
function AlertsTable({ className, rows = [] }: Props) {
3737
const { data: flagData } = useFeatureFlags();
38-
const flags = flagData?.flags || {};
38+
const flags = flagData.flags;
3939
let initialFilterState = {
4040
...filterConfig(rows, "name"),
4141
...filterConfig(rows, "namespace"),

ui/components/AutomationsTable.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ type Props = {
2626

2727
function AutomationsTable({ className, automations, hideSource }: Props) {
2828
const { data } = useFeatureFlags();
29-
const flags = data?.flags || {};
29+
const flags = data.flags;
3030

3131
let initialFilterState = {
3232
...filterConfig(automations, "type"),

ui/components/BucketDetail.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ type Props = {
1616

1717
function BucketDetail({ className, bucket, customActions }: Props) {
1818
const { data } = useFeatureFlags();
19-
const flags = data?.flags || {};
19+
const flags = data.flags;
2020

2121
const tenancyInfo: InfoField[] =
2222
flags.WEAVE_GITOPS_FEATURE_TENANCY === "true" && bucket.tenant

ui/components/ControllersTable.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ type Props = {
1414

1515
function ControllersTable({ className, controllers = [] }: Props) {
1616
const { data } = useFeatureFlags();
17-
const flags = data?.flags || {};
17+
const flags = data.flags;
1818

1919
let initialFilterState = {
2020
...filterConfig(controllers, "status", filterByStatusCallback),

0 commit comments

Comments
 (0)