Skip to content

Commit f2fc11f

Browse files
tronghnmortenlj
andcommitted
promote: return early if cnrm resources have correct ownerreferences
Co-authored-by: Morten Lied Johansen <[email protected]>
1 parent 6ac0a38 commit f2fc11f

File tree

2 files changed

+25
-12
lines changed

2 files changed

+25
-12
lines changed

cmd/promote/main.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ func main() {
130130
os.Exit(17)
131131
}
132132

133-
err = instance.WaitForCnrmResourcesToGoAway(ctx, cfg.TargetInstance.Name, mgr)
133+
err = instance.WaitForCnrmResourcesToGoAway(ctx, cfg.TargetInstance.Name, cfg.ApplicationName, mgr)
134134
if err != nil {
135135
mgr.Logger.Error("helper instance definition is stuck", "error", err)
136136
os.Exit(18)

internal/pkg/instance/instance.go

+24-11
Original file line numberDiff line numberDiff line change
@@ -218,27 +218,33 @@ func WaitForSQLDatabaseResourceToGoAway(ctx context.Context, appName string, mgr
218218
return err
219219
}
220220

221-
func WaitForCnrmResourcesToGoAway(ctx context.Context, name string, mgr *common_main.Manager) error {
222-
logger := mgr.Logger.With("instance_name", name)
221+
func WaitForCnrmResourcesToGoAway(ctx context.Context, instanceName, applicationName string, mgr *common_main.Manager) error {
222+
logger := mgr.Logger.With("instance_name", instanceName)
223223
logger.Info("waiting for relevant CNRM resources to go away...")
224224

225-
type resource struct {
225+
type resource[ struct {
226226
kind string
227-
getter func() error
227+
getter func() (metav1.Object, error)
228228
}
229229
resources := []resource{
230230
{
231231
"SQLInstance",
232-
func() error {
233-
_, err := mgr.SqlInstanceClient.Get(ctx, name)
234-
return err
232+
func() (metav1.Object, error) {
233+
instance, err := mgr.SqlInstanceClient.Get(ctx, instanceName)
234+
if err != nil {
235+
return nil, err
236+
}
237+
return instance.GetObjectMeta(), nil
235238
},
236239
},
237240
{
238241
"SQLUser",
239-
func() error {
240-
_, err := mgr.SqlUserClient.Get(ctx, name)
241-
return err
242+
func() (metav1.Object, error){
243+
user, err := mgr.SqlUserClient.Get(ctx, instanceName)
244+
if err != nil {
245+
return nil, err
246+
}
247+
return user.GetObjectMeta(), nil
242248
},
243249
},
244250
}
@@ -251,8 +257,15 @@ func WaitForCnrmResourcesToGoAway(ctx context.Context, name string, mgr *common_
251257
b = retry.WithMaxDuration(5*time.Minute, b)
252258

253259
err := retry.Do(ctx, b, func(ctx context.Context) error {
254-
err := r.getter()
260+
obj, err := r.getter()
255261
if err == nil {
262+
for _, ref := range obj.GetOwnerReferences() {
263+
if ref.Name == applicationName {
264+
logger.Info("resource already transferred to target application", "kind", r.kind)
265+
return nil
266+
}
267+
}
268+
256269
logger.Info("waiting for resource to go away...", "kind", r.kind)
257270
return retry.RetryableError(errors.New("resource still exists"))
258271
}

0 commit comments

Comments
 (0)