44 "context"
55 goerr "errors"
66 "fmt"
7+
78 "github.com/go-logr/logr"
89 dbv1alpha1 "github.com/movetokube/postgres-operator/pkg/apis/db/v1alpha1"
910 "github.com/movetokube/postgres-operator/pkg/postgres"
@@ -44,7 +45,8 @@ func newReconciler(mgr manager.Manager) reconcile.Reconciler {
4445 pgPass := utils .MustGetEnv ("POSTGRES_PASS" )
4546 pgUriArgs := utils .MustGetEnv ("POSTGRES_URI_ARGS" )
4647 pgCloudProvider := utils .GetEnv ("POSTGRES_CLOUD_PROVIDER" )
47- pg , err := postgres .NewPG (pgHost , pgUser , pgPass , pgUriArgs , pgCloudProvider , log .WithName ("postgres" ))
48+ pgDefaultDatabase := utils .GetEnv ("POSTGRES_DEFAULT_DATABASE" )
49+ pg , err := postgres .NewPG (pgHost , pgUser , pgPass , pgUriArgs , pgDefaultDatabase , pgCloudProvider , log .WithName ("postgres" ))
4850 if err != nil {
4951 return nil
5052 }
@@ -139,7 +141,7 @@ func (r *ReconcilePostgresUser) Reconcile(request reconcile.Request) (reconcile.
139141 }
140142
141143 // Creation logic
142- var role string
144+ var role , login string
143145 password := utils .GetRandomString (15 )
144146
145147 if instance .Status .PostgresRole == "" {
@@ -151,7 +153,7 @@ func (r *ReconcilePostgresUser) Reconcile(request reconcile.Request) (reconcile.
151153 // Create user role
152154 suffix := utils .GetRandomString (6 )
153155 role = fmt .Sprintf ("%s-%s" , instance .Spec .Role , suffix )
154- err = r .pg .CreateUserRole (role , password )
156+ login , err = r .pg .CreateUserRole (role , password )
155157 if err != nil {
156158 return r .requeue (instance , errors .NewInternalError (err ))
157159 }
@@ -181,13 +183,15 @@ func (r *ReconcilePostgresUser) Reconcile(request reconcile.Request) (reconcile.
181183
182184 instance .Status .PostgresRole = role
183185 instance .Status .PostgresGroup = groupRole
186+ instance .Status .PostgresLogin = login
184187 instance .Status .DatabaseName = database .Spec .Database
185188 err = r .client .Status ().Update (context .TODO (), instance )
186189 if err != nil {
187190 return r .requeue (instance , err )
188191 }
189192 } else {
190193 role = instance .Status .PostgresRole
194+ login = instance .Status .PostgresLogin
191195 }
192196
193197 err = r .addFinalizer (reqLogger , instance )
@@ -199,7 +203,7 @@ func (r *ReconcilePostgresUser) Reconcile(request reconcile.Request) (reconcile.
199203 return r .requeue (instance , err )
200204 }
201205
202- secret := r .newSecretForCR (instance , role , password )
206+ secret := r .newSecretForCR (instance , role , password , login )
203207
204208 // Set PostgresUser instance as the owner and controller
205209 if err := controllerutil .SetControllerReference (instance , secret , r .scheme ); err != nil {
@@ -248,7 +252,7 @@ func (r *ReconcilePostgresUser) addFinalizer(reqLogger logr.Logger, m *dbv1alpha
248252 return nil
249253}
250254
251- func (r * ReconcilePostgresUser ) newSecretForCR (cr * dbv1alpha1.PostgresUser , role , password string ) * corev1.Secret {
255+ func (r * ReconcilePostgresUser ) newSecretForCR (cr * dbv1alpha1.PostgresUser , role , password , login string ) * corev1.Secret {
252256 pgUserUrl := fmt .Sprintf ("postgresql://%s:%s@%s/%s" , role , password , r .pgHost , cr .Status .DatabaseName )
253257 labels := map [string ]string {
254258 "app" : cr .Name ,
@@ -263,6 +267,7 @@ func (r *ReconcilePostgresUser) newSecretForCR(cr *dbv1alpha1.PostgresUser, role
263267 "POSTGRES_URL" : []byte (pgUserUrl ),
264268 "ROLE" : []byte (role ),
265269 "PASSWORD" : []byte (password ),
270+ "LOGIN" : []byte (login ),
266271 },
267272 }
268273}
0 commit comments