Skip to content

Commit 9202ddd

Browse files
easyCZroboquat
authored andcommitted
[usage] Configure database connection details
1 parent 77279a8 commit 9202ddd

File tree

4 files changed

+72
-0
lines changed

4 files changed

+72
-0
lines changed

components/usage/cmd/run.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,10 @@ package cmd
77
import (
88
"github.com/gitpod-io/gitpod/common-go/baseserver"
99
"github.com/gitpod-io/gitpod/common-go/log"
10+
"github.com/gitpod-io/gitpod/usage/pkg/db"
1011
"github.com/spf13/cobra"
12+
"net"
13+
"os"
1114
)
1215

1316
func init() {
@@ -28,6 +31,16 @@ func run() *cobra.Command {
2831

2932
log.Info("Hello world usage server")
3033

34+
_, err := db.Connect(db.ConnectionParams{
35+
User: os.Getenv("DB_USERNAME"),
36+
Password: os.Getenv("DB_PASSWORD"),
37+
Host: net.JoinHostPort(os.Getenv("DB_HOST"), os.Getenv("DB_PORT")),
38+
Database: "gitpod",
39+
})
40+
if err != nil {
41+
log.WithError(err).Fatal("Failed to establish database connection.")
42+
}
43+
3144
srv, err := baseserver.New("usage")
3245
if err != nil {
3346
log.WithError(err).Fatal("Failed to initialize server.")

install/installer/pkg/components/usage/deployment.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020

2121
func deployment(ctx *common.RenderContext) ([]runtime.Object, error) {
2222
labels := common.DefaultLabels(Component)
23+
2324
return []runtime.Object{
2425
&appsv1.Deployment{
2526
TypeMeta: common.TypeMetaDeployment,
@@ -64,6 +65,7 @@ func deployment(ctx *common.RenderContext) ([]runtime.Object, error) {
6465
},
6566
Env: common.MergeEnv(
6667
common.DefaultEnv(&ctx.Config),
68+
common.DatabaseEnv(&ctx.Config),
6769
),
6870
LivenessProbe: &corev1.Probe{
6971
ProbeHandler: corev1.ProbeHandler{
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
// Copyright (c) 2022 Gitpod GmbH. All rights reserved.
2+
// Licensed under the MIT License. See License-MIT.txt in the project root for license information.
3+
4+
package usage
5+
6+
import (
7+
"github.com/stretchr/testify/require"
8+
appsv1 "k8s.io/api/apps/v1"
9+
corev1 "k8s.io/api/core/v1"
10+
"testing"
11+
)
12+
13+
func TestDeployment_ContainsDBEnvVars(t *testing.T) {
14+
ctx := renderContextWithUsageEnabled(t)
15+
16+
objs, err := deployment(ctx)
17+
require.NoError(t, err)
18+
19+
dpl, ok := objs[0].(*appsv1.Deployment)
20+
require.True(t, ok)
21+
22+
containers := dpl.Spec.Template.Spec.Containers
23+
require.Len(t, containers, 2)
24+
25+
usageContainer := containers[0]
26+
secretRef := corev1.LocalObjectReference{Name: ctx.Config.Database.CloudSQL.ServiceAccount.Name}
27+
28+
require.Contains(t, usageContainer.Env, corev1.EnvVar{
29+
Name: "DB_HOST",
30+
Value: "cloudsqlproxy",
31+
})
32+
require.Contains(t, usageContainer.Env, corev1.EnvVar{
33+
Name: "DB_PORT",
34+
Value: "3306",
35+
})
36+
require.Contains(t, usageContainer.Env, corev1.EnvVar{
37+
Name: "DB_PASSWORD",
38+
ValueFrom: &corev1.EnvVarSource{SecretKeyRef: &corev1.SecretKeySelector{
39+
LocalObjectReference: secretRef,
40+
Key: "password",
41+
}},
42+
})
43+
require.Contains(t, usageContainer.Env, corev1.EnvVar{
44+
Name: "DB_USERNAME",
45+
ValueFrom: &corev1.EnvVarSource{SecretKeyRef: &corev1.SecretKeySelector{
46+
LocalObjectReference: secretRef,
47+
Key: "username",
48+
}},
49+
})
50+
}

install/installer/pkg/components/usage/objects_test.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,13 @@ func renderContextWithUsageEnabled(t *testing.T) *common.RenderContext {
3838
Usage: &experimental.UsageConfig{Enabled: true},
3939
},
4040
},
41+
Database: config.Database{
42+
CloudSQL: &config.DatabaseCloudSQL{
43+
ServiceAccount: config.ObjectRef{
44+
Name: "gcp-db-creds-service-account-name",
45+
},
46+
},
47+
},
4148
}, versions.Manifest{
4249
Components: versions.Components{
4350
Usage: versions.Versioned{

0 commit comments

Comments
 (0)