Skip to content

Commit 1f868f4

Browse files
author
Simon Emms
committed
[installation-telemetry]: get installationAdmin data from server
1 parent 6bdae44 commit 1f868f4

File tree

4 files changed

+128
-3
lines changed

4 files changed

+128
-3
lines changed

components/installation-telemetry/cmd/send.go

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ import (
99
"os"
1010

1111
"github.com/gitpod-io/gitpod/common-go/log"
12+
"github.com/gitpod-io/gitpod/installation-telemetry/pkg/common"
13+
"github.com/gitpod-io/gitpod/installation-telemetry/pkg/server"
1214
"github.com/spf13/cobra"
1315
"gopkg.in/segmentio/analytics-go.v3"
1416
)
@@ -19,9 +21,17 @@ var sendCmd = &cobra.Command{
1921
Use: "send",
2022
Short: "Sends telemetry data",
2123
RunE: func(cmd *cobra.Command, args []string) (err error) {
22-
// @todo(sje): replace with a database call to get status
23-
canSendData := false
24-
if !canSendData {
24+
config, err := common.NewConfig()
25+
if err != nil {
26+
return err
27+
}
28+
29+
data, err := server.GetInstallationAdminData(*config)
30+
if err != nil {
31+
return err
32+
}
33+
34+
if !data.SendTelemetry {
2535
log.Info("installation-telemetry is not permitted to send - exiting")
2636
return nil
2737
}

components/installation-telemetry/go.mod

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,53 @@ require (
1919
)
2020

2121
replace github.com/gitpod-io/gitpod/common-go => ../common-go // leeway
22+
23+
replace k8s.io/api => k8s.io/api v0.22.2 // leeway indirect from components/common-go:lib
24+
25+
replace k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.22.2 // leeway indirect from components/common-go:lib
26+
27+
replace k8s.io/apimachinery => k8s.io/apimachinery v0.22.2 // leeway indirect from components/common-go:lib
28+
29+
replace k8s.io/apiserver => k8s.io/apiserver v0.22.2 // leeway indirect from components/common-go:lib
30+
31+
replace k8s.io/cli-runtime => k8s.io/cli-runtime v0.22.2 // leeway indirect from components/common-go:lib
32+
33+
replace k8s.io/client-go => k8s.io/client-go v0.22.2 // leeway indirect from components/common-go:lib
34+
35+
replace k8s.io/cloud-provider => k8s.io/cloud-provider v0.22.2 // leeway indirect from components/common-go:lib
36+
37+
replace k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.22.2 // leeway indirect from components/common-go:lib
38+
39+
replace k8s.io/code-generator => k8s.io/code-generator v0.22.2 // leeway indirect from components/common-go:lib
40+
41+
replace k8s.io/component-base => k8s.io/component-base v0.22.2 // leeway indirect from components/common-go:lib
42+
43+
replace k8s.io/cri-api => k8s.io/cri-api v0.22.2 // leeway indirect from components/common-go:lib
44+
45+
replace k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.22.2 // leeway indirect from components/common-go:lib
46+
47+
replace k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.22.2 // leeway indirect from components/common-go:lib
48+
49+
replace k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.22.2 // leeway indirect from components/common-go:lib
50+
51+
replace k8s.io/kube-proxy => k8s.io/kube-proxy v0.22.2 // leeway indirect from components/common-go:lib
52+
53+
replace k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.22.2 // leeway indirect from components/common-go:lib
54+
55+
replace k8s.io/kubelet => k8s.io/kubelet v0.22.2 // leeway indirect from components/common-go:lib
56+
57+
replace k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.22.2 // leeway indirect from components/common-go:lib
58+
59+
replace k8s.io/metrics => k8s.io/metrics v0.22.2 // leeway indirect from components/common-go:lib
60+
61+
replace k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.22.2 // leeway indirect from components/common-go:lib
62+
63+
replace k8s.io/component-helpers => k8s.io/component-helpers v0.22.2 // leeway indirect from components/common-go:lib
64+
65+
replace k8s.io/controller-manager => k8s.io/controller-manager v0.22.2 // leeway indirect from components/common-go:lib
66+
67+
replace k8s.io/kubectl => k8s.io/kubectl v0.22.2 // leeway indirect from components/common-go:lib
68+
69+
replace k8s.io/mount-utils => k8s.io/mount-utils v0.22.2 // leeway indirect from components/common-go:lib
70+
71+
replace k8s.io/pod-security-admission => k8s.io/pod-security-admission v0.22.2 // leeway indirect from components/common-go:lib
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// Copyright (c) 2022 Gitpod GmbH. All rights reserved.
2+
// Licensed under the GNU Affero General Public License (AGPL).
3+
// See License-AGPL.txt in the project root for license information.
4+
5+
package common
6+
7+
import (
8+
"fmt"
9+
"os"
10+
)
11+
12+
type Config struct {
13+
Server string
14+
}
15+
16+
func NewConfig() (*Config, error) {
17+
config := Config{
18+
Server: os.Getenv("SERVER_URL"),
19+
}
20+
21+
if config.Server == "" {
22+
return nil, fmt.Errorf("SERVER_URL required")
23+
}
24+
25+
return &config, nil
26+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
// Copyright (c) 2022 Gitpod GmbH. All rights reserved.
2+
// Licensed under the GNU Affero General Public License (AGPL).
3+
// See License-AGPL.txt in the project root for license information.
4+
5+
package server
6+
7+
import (
8+
"encoding/json"
9+
"fmt"
10+
"io/ioutil"
11+
"net/http"
12+
13+
"github.com/gitpod-io/gitpod/installation-telemetry/pkg/common"
14+
)
15+
16+
type InstallationAdminData struct {
17+
SendTelemetry bool `json:"sendTelemetry"`
18+
}
19+
20+
func GetInstallationAdminData(config common.Config) (*InstallationAdminData, error) {
21+
resp, err := http.Get(fmt.Sprintf("%s/installation-admin/data", config.Server))
22+
if err != nil {
23+
return nil, err
24+
}
25+
26+
defer resp.Body.Close()
27+
28+
body, err := ioutil.ReadAll(resp.Body)
29+
if err != nil {
30+
return nil, err
31+
}
32+
33+
var data InstallationAdminData
34+
if err := json.Unmarshal(body, &data); err != nil {
35+
return nil, err
36+
}
37+
38+
return &data, nil
39+
}

0 commit comments

Comments
 (0)