Skip to content

Commit 09cad5b

Browse files
committed
export cli.connectToPostgres
1 parent 63fda96 commit 09cad5b

File tree

4 files changed

+61
-3
lines changed

4 files changed

+61
-3
lines changed

cli/server.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -685,7 +685,7 @@ func (r *RootCmd) Server(newAPI func(context.Context, *coderd.Options) (*coderd.
685685
options.Database = dbfake.New()
686686
options.Pubsub = pubsub.NewInMemory()
687687
} else {
688-
sqlDB, err := connectToPostgres(ctx, logger, sqlDriver, vals.PostgresURL.String())
688+
sqlDB, err := ConnectToPostgres(ctx, logger, sqlDriver, vals.PostgresURL.String())
689689
if err != nil {
690690
return xerrors.Errorf("connect to postgres: %w", err)
691691
}
@@ -1950,7 +1950,7 @@ func BuildLogger(inv *clibase.Invocation, cfg *codersdk.DeploymentValues) (slog.
19501950
}, nil
19511951
}
19521952

1953-
func connectToPostgres(ctx context.Context, logger slog.Logger, driver string, dbURL string) (*sql.DB, error) {
1953+
func ConnectToPostgres(ctx context.Context, logger slog.Logger, driver string, dbURL string) (*sql.DB, error) {
19541954
logger.Debug(ctx, "connecting to postgresql")
19551955

19561956
// Try to connect for 30 seconds.

cli/server_createadminuser.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ func (r *RootCmd) newCreateAdminUserCommand() *clibase.Cmd {
6262
newUserDBURL = url
6363
}
6464

65-
sqlDB, err := connectToPostgres(ctx, logger, "postgres", newUserDBURL)
65+
sqlDB, err := ConnectToPostgres(ctx, logger, "postgres", newUserDBURL)
6666
if err != nil {
6767
return xerrors.Errorf("connect to postgres: %w", err)
6868
}

enterprise/cli/dbcrypt_rotate.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
//go:build !slim
2+
3+
package cli
4+
5+
import (
6+
"github.com/coder/coder/v2/cli/clibase"
7+
)
8+
9+
func (r *RootCmd) dbcryptRotate() *clibase.Cmd {
10+
cmd := &clibase.Cmd{
11+
Use: "dbcrypt-rotate",
12+
Short: "Rotate database encryption keys",
13+
Middleware: clibase.Chain(
14+
clibase.RequireNArgs(0),
15+
),
16+
Handler: func(inv *clibase.Invocation) error {
17+
// TODO: implement
18+
return nil
19+
},
20+
}
21+
return cmd
22+
}

enterprise/cli/dbcrypt_rotate_test.go

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package cli_test
2+
3+
import (
4+
"testing"
5+
6+
"github.com/coder/coder/v2/cli/clitest"
7+
"github.com/coder/coder/v2/codersdk"
8+
"github.com/coder/coder/v2/enterprise/coderd/coderdenttest"
9+
"github.com/coder/coder/v2/enterprise/coderd/license"
10+
"github.com/coder/coder/v2/pty/ptytest"
11+
"github.com/stretchr/testify/require"
12+
)
13+
14+
func TestDBCryptRotate(t *testing.T) {
15+
t.Parallel()
16+
17+
// TODO: create a test database and populate some encrypted data with cipher A
18+
19+
client, _ := coderdenttest.New(t, &coderdenttest.Options{LicenseOptions: &coderdenttest.LicenseOptions{
20+
Features: license.Features{
21+
codersdk.FeatureExternalTokenEncryption: 1,
22+
},
23+
}})
24+
25+
// Run the cmd with ciphers B,A
26+
27+
inv, conf := newCLI(t, "dbcrypt-rotate") // TODO: env?
28+
pty := ptytest.New(t)
29+
inv.Stdout = pty.Output()
30+
clitest.SetupConfig(t, client, conf)
31+
32+
err := inv.Run()
33+
require.NoError(t, err)
34+
35+
// TODO: validate that all data has been updated with the checksum of the new cipher.
36+
}

0 commit comments

Comments
 (0)