Skip to content

feat: add awsiamrds db auth driver #12566

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 21 commits into from
Mar 20, 2024
Prev Previous commit
Next Next commit
rename awsrdsiam to awsiamrds to match v1
  • Loading branch information
f0ssel committed Mar 19, 2024
commit c0a05156350eb202c6e3b0ef2a0ec576ca1d4fc6
6 changes: 3 additions & 3 deletions cli/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ import (
"github.com/coder/coder/v2/coderd/autobuild"
"github.com/coder/coder/v2/coderd/batchstats"
"github.com/coder/coder/v2/coderd/database"
"github.com/coder/coder/v2/coderd/database/awsrdsiam"
"github.com/coder/coder/v2/coderd/database/awsiamrds"
"github.com/coder/coder/v2/coderd/database/dbmem"
"github.com/coder/coder/v2/coderd/database/dbmetrics"
"github.com/coder/coder/v2/coderd/database/dbpurge"
Expand Down Expand Up @@ -2551,8 +2551,8 @@ func getPostgresDB(ctx context.Context, logger slog.Logger, postgresURL string,
return nil, "", xerrors.Errorf("escaping postgres URL: %w", err)
}

if auth == codersdk.PostgresAuthAWSRDSIAM {
sqlDriver, err = awsrdsiam.Register(ctx, sqlDriver)
if auth == codersdk.PostgresAuthAWSIAMRDS {
sqlDriver, err = awsiamrds.Register(ctx, sqlDriver)
if err != nil {
return nil, "", xerrors.Errorf("register aws rds iam auth: %w", err)
}
Expand Down
6 changes: 3 additions & 3 deletions cli/server_createadminuser.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import (
"cdr.dev/slog/sloggers/sloghuman"
"github.com/coder/coder/v2/cli/cliui"
"github.com/coder/coder/v2/coderd/database"
"github.com/coder/coder/v2/coderd/database/awsrdsiam"
"github.com/coder/coder/v2/coderd/database/awsiamrds"
"github.com/coder/coder/v2/coderd/database/dbtime"
"github.com/coder/coder/v2/coderd/gitsshkey"
"github.com/coder/coder/v2/coderd/httpapi"
Expand Down Expand Up @@ -65,8 +65,8 @@ func (r *RootCmd) newCreateAdminUserCommand() *serpent.Command {
}

sqlDriver := "postgres"
if codersdk.PostgresAuth(newUserPgAuth) == codersdk.PostgresAuthAWSRDSIAM {
sqlDriver, err = awsrdsiam.Register(inv.Context(), sqlDriver)
if codersdk.PostgresAuth(newUserPgAuth) == codersdk.PostgresAuthAWSIAMRDS {
sqlDriver, err = awsiamrds.Register(inv.Context(), sqlDriver)
if err != nil {
return xerrors.Errorf("register aws rds iam auth: %w", err)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package awsrdsiam
package awsiamrds

import (
"context"
Expand All @@ -13,14 +13,14 @@ import (
"golang.org/x/xerrors"
)

type awsRdsIamDriver struct {
type awsIamRdsDriver struct {
parent driver.Driver
cfg aws.Config
}

var _ driver.Driver = &awsRdsIamDriver{}
var _ driver.Driver = &awsIamRdsDriver{}

// Register initializes and registers our aws rds iam wrapped database driver.
// Register initializes and registers our aws iam rds wrapped database driver.
func Register(ctx context.Context, parentName string) (string, error) {
cfg, err := config.LoadDefaultConfig(ctx)
if err != nil {
Expand All @@ -32,24 +32,24 @@ func Register(ctx context.Context, parentName string) (string, error) {
return "", err
}

// create a new aws rds iam driver
// create a new aws iam rds driver
d := newDriver(db.Driver(), cfg)
name := fmt.Sprintf("%s-awsrdsiam", parentName)
sql.Register(fmt.Sprintf("%s-awsrdsiam", parentName), d)
name := fmt.Sprintf("%s-awsiamrds", parentName)
sql.Register(fmt.Sprintf("%s-awsiamrds", parentName), d)

return name, nil
}

// newDriver will create a new *AwsRdsIamDriver using the environment aws session.
func newDriver(parentDriver driver.Driver, cfg aws.Config) *awsRdsIamDriver {
return &awsRdsIamDriver{
// newDriver will create a new *AwsIamRdsDriver using the environment aws session.
func newDriver(parentDriver driver.Driver, cfg aws.Config) *awsIamRdsDriver {
return &awsIamRdsDriver{
parent: parentDriver,
cfg: cfg,
}
}

// Open creates a new connection to the database using the provided name.
func (d *awsRdsIamDriver) Open(name string) (driver.Conn, error) {
func (d *awsIamRdsDriver) Open(name string) (driver.Conn, error) {
// set password with signed aws authentication token for the rds instance
nURL, err := getAuthenticatedURL(d.cfg, name)
if err != nil {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package awsrdsiam_test
package awsiamrds_test

import (
"context"
Expand All @@ -10,7 +10,7 @@ import (
"cdr.dev/slog/sloggers/slogtest"

"github.com/coder/coder/v2/cli"
"github.com/coder/coder/v2/coderd/database/awsrdsiam"
awsrdsiam "github.com/coder/coder/v2/coderd/database/awsiamrds"
"github.com/coder/coder/v2/testutil"
)

Expand Down
4 changes: 2 additions & 2 deletions codersdk/deployment.go
Original file line number Diff line number Diff line change
Expand Up @@ -139,12 +139,12 @@ type PostgresAuth string

const (
PostgresAuthPassword PostgresAuth = "password"
PostgresAuthAWSRDSIAM PostgresAuth = "awsrdsiam"
PostgresAuthAWSIAMRDS PostgresAuth = "awsiamrds"
)

var PostgresAuthDrivers = []string{
string(PostgresAuthPassword),
string(PostgresAuthAWSRDSIAM),
string(PostgresAuthAWSIAMRDS),
}

// DeploymentValues is the central configuration values the coder server.
Expand Down
2 changes: 1 addition & 1 deletion docs/cli/server.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion docs/cli/server_create-admin-user.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion docs/cli/server_dbcrypt_decrypt.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion docs/cli/server_dbcrypt_delete.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion docs/cli/server_dbcrypt_rotate.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 7 additions & 7 deletions enterprise/cli/server_dbcrypt.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import (
"cdr.dev/slog/sloggers/sloghuman"
"github.com/coder/coder/v2/cli"
"github.com/coder/coder/v2/cli/cliui"
"github.com/coder/coder/v2/coderd/database/awsrdsiam"
"github.com/coder/coder/v2/coderd/database/awsiamrds"
"github.com/coder/coder/v2/codersdk"
"github.com/coder/coder/v2/enterprise/dbcrypt"
"github.com/coder/serpent"
Expand Down Expand Up @@ -91,8 +91,8 @@ func (*RootCmd) dbcryptRotateCmd() *serpent.Command {
}

sqlDriver := "postgres"
if codersdk.PostgresAuth(flags.PostgresAuth) == codersdk.PostgresAuthAWSRDSIAM {
sqlDriver, err = awsrdsiam.Register(inv.Context(), sqlDriver)
if codersdk.PostgresAuth(flags.PostgresAuth) == codersdk.PostgresAuthAWSIAMRDS {
sqlDriver, err = awsiamrds.Register(inv.Context(), sqlDriver)
if err != nil {
return xerrors.Errorf("register aws rds iam auth: %w", err)
}
Expand Down Expand Up @@ -156,8 +156,8 @@ func (*RootCmd) dbcryptDecryptCmd() *serpent.Command {
}

sqlDriver := "postgres"
if codersdk.PostgresAuth(flags.PostgresAuth) == codersdk.PostgresAuthAWSRDSIAM {
sqlDriver, err = awsrdsiam.Register(inv.Context(), sqlDriver)
if codersdk.PostgresAuth(flags.PostgresAuth) == codersdk.PostgresAuthAWSIAMRDS {
sqlDriver, err = awsiamrds.Register(inv.Context(), sqlDriver)
if err != nil {
return xerrors.Errorf("register aws rds iam auth: %w", err)
}
Expand Down Expand Up @@ -212,8 +212,8 @@ Are you sure you want to continue?`

var err error
sqlDriver := "postgres"
if codersdk.PostgresAuth(flags.PostgresAuth) == codersdk.PostgresAuthAWSRDSIAM {
sqlDriver, err = awsrdsiam.Register(inv.Context(), sqlDriver)
if codersdk.PostgresAuth(flags.PostgresAuth) == codersdk.PostgresAuthAWSIAMRDS {
sqlDriver, err = awsiamrds.Register(inv.Context(), sqlDriver)
if err != nil {
return xerrors.Errorf("register aws rds iam auth: %w", err)
}
Expand Down
4 changes: 2 additions & 2 deletions site/src/api/typesGenerated.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.