Skip to content

Commit e6ac2a4

Browse files
author
Andrea Falzetti
committed
feat(gitpod-cli): report errors to ide-metrics-api
1 parent fef62f3 commit e6ac2a4

File tree

4 files changed

+82
-2
lines changed

4 files changed

+82
-2
lines changed

components/gitpod-cli/cmd/ports-list.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414
supervisor_helper "github.com/gitpod-io/gitpod/gitpod-cli/pkg/supervisor-helper"
1515
"github.com/gitpod-io/gitpod/gitpod-cli/pkg/utils"
1616
supervisor "github.com/gitpod-io/gitpod/supervisor/api"
17+
"github.com/go-errors/errors"
1718
log "github.com/sirupsen/logrus"
1819
"github.com/spf13/cobra"
1920

@@ -27,9 +28,13 @@ var listPortsCmd = &cobra.Command{
2728
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
2829
defer cancel()
2930

31+
fakeError := errors.New("Testing IDE Metrics API")
32+
utils.LogError(ctx, fakeError)
33+
3034
ports, portsListError := supervisor_helper.GetPortsList(ctx)
3135

3236
if portsListError != nil {
37+
// todo: pass error to ide metrics
3338
log.WithError(portsListError).Error("Could not get the ports list.")
3439
return
3540
}

components/gitpod-cli/go.mod

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ require (
66
github.com/creack/pty v1.1.17
77
github.com/gitpod-io/gitpod/common-go v0.0.0-00010101000000-000000000000
88
github.com/gitpod-io/gitpod/gitpod-protocol v0.0.0-00010101000000-000000000000
9+
github.com/gitpod-io/gitpod/ide-metrics-api v0.0.0-00010101000000-000000000000
910
github.com/gitpod-io/gitpod/supervisor/api v0.0.0-00010101000000-000000000000
11+
github.com/go-errors/errors v1.4.2
1012
github.com/golang/mock v1.6.0
1113
github.com/google/go-cmp v0.5.8
1214
github.com/google/shlex v0.0.0-20181106134648-c34317bd91bf
@@ -21,7 +23,7 @@ require (
2123
github.com/spf13/cobra v1.1.3
2224
golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d
2325
golang.org/x/term v0.0.0-20220526004731-065cf7ba2467
24-
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1
26+
golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f
2527
google.golang.org/grpc v1.49.0
2628
gopkg.in/yaml.v2 v2.4.0
2729
)
@@ -46,4 +48,6 @@ replace github.com/gitpod-io/gitpod/gitpod-protocol => ../gitpod-protocol/go //
4648

4749
replace github.com/gitpod-io/gitpod/supervisor/api => ../supervisor-api/go // leeway
4850

51+
replace github.com/gitpod-io/gitpod/ide-metrics-api => ../ide-metrics-api/go // leeway
52+
4953
replace github.com/gitpod-io/gitpod/common-go => ../common-go // leeway

components/gitpod-cli/go.sum

Lines changed: 4 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
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 utils
6+
7+
import (
8+
"context"
9+
"fmt"
10+
"net/url"
11+
12+
gitpod "github.com/gitpod-io/gitpod/gitpod-cli/pkg/gitpod"
13+
supervisor_helper "github.com/gitpod-io/gitpod/gitpod-cli/pkg/supervisor-helper"
14+
ide_metrics "github.com/gitpod-io/gitpod/ide-metrics-api"
15+
supervisor "github.com/gitpod-io/gitpod/supervisor/api"
16+
"github.com/go-errors/errors"
17+
log "github.com/sirupsen/logrus"
18+
"golang.org/x/xerrors"
19+
"google.golang.org/grpc"
20+
"google.golang.org/grpc/credentials/insecure"
21+
)
22+
23+
func LogError(ctx context.Context, errToReport error) {
24+
// todo: move supervisor dial into singleton helper
25+
conn, err := supervisor_helper.Dial(ctx)
26+
if err != nil {
27+
log.Fatal(err)
28+
}
29+
defer conn.Close()
30+
31+
// todo: move wsInfo fetch into its own utility as used multiple times already
32+
wsInfo, err := supervisor.NewInfoServiceClient(conn).WorkspaceInfo(ctx, &supervisor.WorkspaceInfoRequest{})
33+
if err != nil {
34+
fmt.Errorf("failed to retrieve workspace info: %w", err)
35+
}
36+
parsedUrl, err := url.Parse(wsInfo.GitpodHost)
37+
if err != nil {
38+
// todo: proper msg
39+
fmt.Errorf("todo", err)
40+
}
41+
42+
ideMetricsUrl := fmt.Sprintf("https://ide.%s/metrics-api", parsedUrl.Host)
43+
44+
fmt.Println(ideMetricsUrl)
45+
46+
// todo: move this into its own singleton utiltiy to retrieve the ideMetricsConn
47+
ideMetricsConn, err := grpc.DialContext(ctx, ideMetricsUrl, grpc.WithTransportCredentials(insecure.NewCredentials()))
48+
if err != nil {
49+
err = xerrors.Errorf("failed connecting to supervisor: %w", err)
50+
}
51+
defer ideMetricsConn.Close()
52+
53+
ideMetricsClient := ide_metrics.NewMetricsServiceClient(ideMetricsConn)
54+
55+
reportErrorRequest := &ide_metrics.ReportErrorRequest{
56+
ErrorStack: errToReport.(*errors.Error).ErrorStack(),
57+
Component: "gp-cli",
58+
Version: gitpod.Version,
59+
UserId: "", // todo: retrieve from server
60+
WorkspaceId: wsInfo.WorkspaceId,
61+
InstanceId: wsInfo.InstanceId,
62+
Properties: map[string]string{},
63+
}
64+
65+
ideMetricsClient.ReportError(ctx, reportErrorRequest)
66+
fmt.Println("Error reported succerssfully")
67+
68+
}

0 commit comments

Comments
 (0)