Skip to content

Commit 6ac0a38

Browse files
tronghnmortenlj
andcommitted
promote: attempt to recover from deleted helper application
Co-authored-by: Morten Lied Johansen <[email protected]>
1 parent 26c349c commit 6ac0a38

File tree

1 file changed

+51
-50
lines changed

1 file changed

+51
-50
lines changed

cmd/promote/main.go

+51-50
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import (
1515
"github.com/nais/cloudsql-migrator/internal/pkg/promote"
1616
"github.com/nais/cloudsql-migrator/internal/pkg/resolved"
1717
"github.com/sethvargo/go-envconfig"
18+
"k8s.io/apimachinery/pkg/api/errors"
1819
)
1920

2021
func main() {
@@ -70,56 +71,56 @@ func main() {
7071

7172
mgr.Logger.Info("getting helper application", "name", helperName)
7273
helperApp, err := mgr.AppClient.Get(ctx, helperName)
73-
if err != nil {
74+
if err == nil {
75+
target, err := resolved.ResolveInstance(ctx, helperApp, mgr)
76+
if err != nil {
77+
mgr.Logger.Error("failed to resolve target", "error", err)
78+
os.Exit(8)
79+
}
80+
81+
err = promote.CheckReadyForPromotion(ctx, source, target, gcpProject, mgr)
82+
if err != nil {
83+
mgr.Logger.Error("migration is not ready for promotion", "error", err)
84+
os.Exit(9)
85+
}
86+
87+
err = application.ScaleApplication(ctx, cfg, mgr, 0)
88+
if err != nil {
89+
mgr.Logger.Error("failed to scale application", "error", err)
90+
os.Exit(10)
91+
}
92+
93+
err = promote.Promote(ctx, source, target, gcpProject, mgr)
94+
if err != nil {
95+
mgr.Logger.Error("failed to promote", "error", err)
96+
os.Exit(11)
97+
}
98+
99+
certPaths, err := database.PrepareTargetDatabase(ctx, cfg, target, gcpProject, mgr)
100+
if err != nil {
101+
mgr.Logger.Error("failed to prepare target database", "error", err)
102+
os.Exit(12)
103+
}
104+
105+
err = database.ChangeOwnership(ctx, mgr, target, config.PostgresDatabaseName, certPaths)
106+
if err != nil {
107+
mgr.Logger.Error("failed to change ownership for database", "databaseName", config.PostgresDatabaseName, "error", err)
108+
os.Exit(13)
109+
}
110+
111+
err = database.ChangeOwnership(ctx, mgr, target, databaseName, certPaths)
112+
if err != nil {
113+
mgr.Logger.Error("failed to change ownership for database", "databaseName", databaseName, "error", err)
114+
os.Exit(14)
115+
}
116+
117+
err = application.DeleteHelperApplication(ctx, cfg, mgr)
118+
if err != nil {
119+
mgr.Logger.Error("failed to delete helper application", "error", err)
120+
os.Exit(15)
121+
}
122+
} else if !errors.IsNotFound(err) {
74123
mgr.Logger.Error("failed to get helper application", "error", err)
75-
os.Exit(8)
76-
}
77-
78-
target, err := resolved.ResolveInstance(ctx, helperApp, mgr)
79-
if err != nil {
80-
mgr.Logger.Error("failed to resolve target", "error", err)
81-
os.Exit(9)
82-
}
83-
84-
err = promote.CheckReadyForPromotion(ctx, source, target, gcpProject, mgr)
85-
if err != nil {
86-
mgr.Logger.Error("migration is not ready for promotion", "error", err)
87-
os.Exit(10)
88-
}
89-
90-
err = application.ScaleApplication(ctx, cfg, mgr, 0)
91-
if err != nil {
92-
mgr.Logger.Error("failed to scale application", "error", err)
93-
os.Exit(11)
94-
}
95-
96-
err = promote.Promote(ctx, source, target, gcpProject, mgr)
97-
if err != nil {
98-
mgr.Logger.Error("failed to promote", "error", err)
99-
os.Exit(12)
100-
}
101-
102-
certPaths, err := database.PrepareTargetDatabase(ctx, cfg, target, gcpProject, mgr)
103-
if err != nil {
104-
mgr.Logger.Error("failed to prepare target database", "error", err)
105-
os.Exit(13)
106-
}
107-
108-
err = database.ChangeOwnership(ctx, mgr, target, config.PostgresDatabaseName, certPaths)
109-
if err != nil {
110-
mgr.Logger.Error("failed to change ownership for database", "databaseName", config.PostgresDatabaseName, "error", err)
111-
os.Exit(14)
112-
}
113-
114-
err = database.ChangeOwnership(ctx, mgr, target, databaseName, certPaths)
115-
if err != nil {
116-
mgr.Logger.Error("failed to change ownership for database", "databaseName", databaseName, "error", err)
117-
os.Exit(15)
118-
}
119-
120-
err = application.DeleteHelperApplication(ctx, cfg, mgr)
121-
if err != nil {
122-
mgr.Logger.Error("failed to delete helper application", "error", err)
123124
os.Exit(16)
124125
}
125126

@@ -141,7 +142,7 @@ func main() {
141142
os.Exit(19)
142143
}
143144

144-
target, err = resolved.ResolveInstance(ctx, app, mgr)
145+
target, err := resolved.ResolveInstance(ctx, app, mgr)
145146
if err != nil {
146147
mgr.Logger.Error("failed to resolve updated target", "error", err)
147148
os.Exit(20)

0 commit comments

Comments
 (0)