diff --git a/pkg/cluster/cluster.go b/pkg/cluster/cluster.go index c5a005c5c..b1445ce20 100644 --- a/pkg/cluster/cluster.go +++ b/pkg/cluster/cluster.go @@ -8,6 +8,7 @@ import ( "fmt" "reflect" "regexp" + "strings" "sync" "time" @@ -779,10 +780,19 @@ func (c *Cluster) initSystemUsers() { func (c *Cluster) initPreparedDatabaseRoles() error { - for preparedDbName, preparedDB := range c.Spec.PreparedDatabases { + preparedDatabases := c.Spec.PreparedDatabases + if preparedDatabases == nil || len(preparedDatabases) == 0 { // TODO: add option to disable creating such a default DB + preparedDatabases = map[string]acidv1.PreparedDatabase{strings.Replace(c.Name, "-", "_", -1): {}} + c.Spec.PreparedDatabases = preparedDatabases + } + + for preparedDbName, preparedDB := range preparedDatabases { + // default roles per database if err := c.initDefaultRoles("admin", preparedDbName); err != nil { return fmt.Errorf("could not initialize default roles for database %s: %v", preparedDbName, err) } + + // default roles per database schema preparedSchemas := preparedDB.PreparedSchemas if len(preparedDB.PreparedSchemas) == 0 { preparedSchemas = map[string]acidv1.PreparedSchema{"data": {DefaultRoles: util.True()}} diff --git a/pkg/cluster/sync.go b/pkg/cluster/sync.go index 019cce15d..e3ccd1050 100644 --- a/pkg/cluster/sync.go +++ b/pkg/cluster/sync.go @@ -2,6 +2,7 @@ package cluster import ( "fmt" + "strings" batchv1beta1 "k8s.io/api/batch/v1beta1" v1 "k8s.io/api/core/v1" @@ -509,6 +510,12 @@ func (c *Cluster) syncDatabases() error { return fmt.Errorf("could not get current databases: %v", err) } + // if no prepared databases are specified create a database named like the cluster + preparedDatabases := c.Spec.PreparedDatabases + if preparedDatabases == nil || len(preparedDatabases) == 0 { // TODO: add option to disable creating such a default DB + preparedDatabases = map[string]acidv1.PreparedDatabase{strings.Replace(c.Name, "-", "_", -1): {}} + c.Spec.PreparedDatabases = preparedDatabases + } for preparedDatname := range c.Spec.PreparedDatabases { _, exists := currentDatabases[preparedDatname] if !exists {