Skip to content

Commit 2687c19

Browse files
committed
feat: wip
1 parent e2388c3 commit 2687c19

File tree

4 files changed

+51
-6
lines changed

4 files changed

+51
-6
lines changed

api/postgresql/v1alpha1/postgresqlbackup_types.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,6 @@ import (
2929
type PostgresqlBackupSpec struct {
3030
// Schedule for cronjob
3131
Schedule string `json:"schedule"`
32-
// One shot backup ?
33-
OneShot bool `json:"oneShot"`
3432
// Postgresql Database
3533
// +required
3634
// +kubebuilder:validation:Required

config/crd/bases/postgresql.easymile.com_postgresqlbackups.yaml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,16 +63,12 @@ spec:
6363
required:
6464
- name
6565
type: object
66-
oneShot:
67-
description: One shot backup ?
68-
type: boolean
6966
schedule:
7067
description: Schedule for cronjob
7168
type: string
7269
required:
7370
- backupProvider
7471
- database
75-
- oneShot
7672
- schedule
7773
type: object
7874
status:

internal/controller/postgresql/postgresqlbackup_controller.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import (
3333

3434
postgresqlv1alpha1 "github.com/easymile/postgresql-operator/api/postgresql/v1alpha1"
3535
"github.com/easymile/postgresql-operator/internal/controller/config"
36+
"github.com/easymile/postgresql-operator/internal/controller/utils"
3637
)
3738

3839
// PostgresqlBackupReconciler reconciles a PostgresqlBackup object.
@@ -151,6 +152,34 @@ func (r *PostgresqlBackupReconciler) mainReconcile(
151152
return ctrl.Result{}, nil
152153
}
153154

155+
// Get related database
156+
database, err := utils.FindPgDatabaseFromLink(ctx, r.Client, instance.Spec.Database, instance.Namespace)
157+
// Check error
158+
if err != nil {
159+
return r.manageError(ctx, reqLogger, instance, originalPatch, err)
160+
}
161+
162+
// Find pgec
163+
pgec, err := utils.FindPgEngineCfg(ctx, r.Client, database)
164+
// Check error
165+
if err != nil {
166+
return r.manageError(ctx, reqLogger, instance, originalPatch, err)
167+
}
168+
169+
// Find pgec secret
170+
pgecSecret, err := utils.FindSecretPgEngineCfg(ctx, r.Client, pgec)
171+
// Check error
172+
if err != nil {
173+
return r.manageError(ctx, reqLogger, instance, originalPatch, err)
174+
}
175+
176+
// Get related provider
177+
backupProvider, err := utils.FindPgBackupProviderFromLink(ctx, r.Client, instance.Spec.BackupProvider, instance.Namespace)
178+
// Check error
179+
if err != nil {
180+
return r.manageError(ctx, reqLogger, instance, originalPatch, err)
181+
}
182+
154183
// Compute spec hash
155184

156185
// Success

internal/controller/utils/utils.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,3 +144,25 @@ func FindPgDatabaseFromLink(
144144

145145
return pgDatabase, err
146146
}
147+
148+
func FindPgBackupProviderFromLink(
149+
ctx context.Context,
150+
cl client.Client,
151+
link *common.CRLink,
152+
instanceNamespace string,
153+
) (*postgresqlv1alpha1.PostgresqlBackupProvider, error) {
154+
// Try to get namespace from spec
155+
namespace := link.Namespace
156+
if namespace == "" {
157+
// Namespace not found, take it from instance namespace
158+
namespace = instanceNamespace
159+
}
160+
161+
item := &postgresqlv1alpha1.PostgresqlBackupProvider{}
162+
err := cl.Get(ctx, client.ObjectKey{
163+
Name: link.Name,
164+
Namespace: namespace,
165+
}, item)
166+
167+
return item, err
168+
}

0 commit comments

Comments
 (0)