Skip to content

Commit

Permalink
refactor(providers): introduce provutils.ReadDbConfigFromSecret
Browse files Browse the repository at this point in the history
  • Loading branch information
vkrizan committed Dec 9, 2024
1 parent 711abd7 commit ed99c98
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 39 deletions.
24 changes: 4 additions & 20 deletions controllers/cloud.redhat.com/providers/database/localdb.go
Original file line number Diff line number Diff line change
Expand Up @@ -183,39 +183,23 @@ func (db *localDbProvider) processSharedDB(app *crd.ClowdApp) error {
return err
}

dbCfg := config.DatabaseConfig{}
dbCfg.SslMode = "disable"

refApp, err := crd.GetAppForDBInSameEnv(db.Ctx, db.Client, app)

if err != nil {
return err
}

secret := core.Secret{}

dbCfg := config.DatabaseConfig{}
inn := types.NamespacedName{
Name: fmt.Sprintf("%s-db", refApp.Name),
Namespace: refApp.Namespace,
}

// This is a REAL call here, not a cached call as the reconciliation must have been processed
// for the app we depend on.
if err = db.Client.Get(db.Ctx, inn, &secret); err != nil {
return errors.Wrap("Couldn't set/get secret", err)
}

secMap := make(map[string]string)

for k, v := range secret.Data {
(secMap)[k] = string(v)
}

err = dbCfg.Populate(&secMap)
// for the app we depend on, hence the nil for the ident.
err = provutils.ReadDbConfigFromSecret(db.Provider, nil, &dbCfg, inn)
if err != nil {
return errors.Wrap("couldn't convert to int", err)
return err
}
dbCfg.AdminUsername = provutils.DefaultPGAdminUsername

db.Config.Database = &dbCfg

Expand Down
23 changes: 4 additions & 19 deletions controllers/cloud.redhat.com/providers/database/shareddb.go
Original file line number Diff line number Diff line change
Expand Up @@ -332,39 +332,24 @@ func (db *sharedDbProvider) processSharedDB(app *crd.ClowdApp) error {
return err
}

dbCfg := config.DatabaseConfig{}
dbCfg.SslMode = "disable"

refApp, err := crd.GetAppForDBInSameEnv(db.Ctx, db.Client, app)

if err != nil {
return err
}

secret := core.Secret{}

dbCfg := config.DatabaseConfig{}
inn := types.NamespacedName{
Name: fmt.Sprintf("%s-db", refApp.Name),
Namespace: refApp.Namespace,
}

// This is a REAL call here, not a cached call as the reconciliation must have been processed
// for the app we depend on.
if err = db.Client.Get(db.Ctx, inn, &secret); err != nil {
return errors.Wrap("Couldn't set/get secret", err)
}

secMap := make(map[string]string)

for k, v := range secret.Data {
(secMap)[k] = string(v)
}

err = dbCfg.Populate(&secMap)
// for the app we depend on, hence the nil for the ident.
err = provutils.ReadDbConfigFromSecret(db.Provider, nil, &dbCfg, inn)
if err != nil {
return errors.Wrap("couldn't convert to int", err)
return err
}
dbCfg.AdminUsername = provutils.DefaultPGAdminUsername

db.Config.Database = &dbCfg

Expand Down
31 changes: 31 additions & 0 deletions controllers/cloud.redhat.com/providers/utils/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
crd "github.com/RedHatInsights/clowder/apis/cloud.redhat.com/v1alpha1"
"github.com/RedHatInsights/clowder/controllers/cloud.redhat.com/clowderconfig"
"github.com/RedHatInsights/clowder/controllers/cloud.redhat.com/config"
"github.com/RedHatInsights/clowder/controllers/cloud.redhat.com/errors"
obj "github.com/RedHatInsights/clowder/controllers/cloud.redhat.com/object"
"github.com/RedHatInsights/clowder/controllers/cloud.redhat.com/providers"
"github.com/RedHatInsights/clowder/controllers/cloud.redhat.com/providers/sizing"
Expand All @@ -19,6 +20,7 @@ import (
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/intstr"

rc "github.com/RedHatInsights/rhc-osdk-utils/resourceCache"
"github.com/RedHatInsights/rhc-osdk-utils/utils"
)

Expand Down Expand Up @@ -188,6 +190,35 @@ func PGAdminConnectionStr(cfg *config.DatabaseConfig, dbname string) string {
)
}

func ReadDbConfigFromSecret(p providers.Provider, resourceIdent rc.ResourceIdent, dbCfg *config.DatabaseConfig, nn types.NamespacedName) error {
secret := &core.Secret{}

var err error
if resourceIdent != nil {
err = p.Cache.Get(resourceIdent, secret, nn)
} else {
err = fmt.Errorf("no cache")
}
if err != nil {
if err := p.Client.Get(p.Ctx, nn, secret); err != nil {
return errors.Wrap("couldn't get db secret", err)
}
}

secMap := make(map[string]string)
for k, v := range secret.Data {
(secMap)[k] = string(v)
}

if err := dbCfg.Populate(&secMap); err != nil {
return errors.Wrap("couldn't convert to int", err)
}
dbCfg.AdminUsername = DefaultPGAdminUsername
dbCfg.SslMode = "disable"

return nil
}

// GetCaddyImage returns the caddy image to use in a given environment
func GetCaddyGatewayImage(env *crd.ClowdEnvironment) string {
if env.Spec.Providers.Web.Images.CaddyGateway != "" {
Expand Down

0 comments on commit ed99c98

Please sign in to comment.