Skip to content

Commit f9f9c2c

Browse files
tronghnmortenlj
andcommitted
all: more logging, everywhere
Co-authored-by: Morten Lied Johansen <[email protected]>
1 parent e5a93e6 commit f9f9c2c

File tree

9 files changed

+54
-30
lines changed

9 files changed

+54
-30
lines changed

cmd/cleanup/main.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,16 @@ package main
33
import (
44
"context"
55
"fmt"
6+
"os"
7+
"time"
8+
69
"github.com/nais/cloudsql-migrator/internal/pkg/common_main"
710
"github.com/nais/cloudsql-migrator/internal/pkg/config"
811
"github.com/nais/cloudsql-migrator/internal/pkg/instance"
912
"github.com/nais/cloudsql-migrator/internal/pkg/migration"
1013
"github.com/nais/cloudsql-migrator/internal/pkg/resolved"
1114
"github.com/sethvargo/go-envconfig"
1215
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
13-
"os"
14-
"time"
1516
)
1617

1718
func main() {
@@ -83,7 +84,6 @@ func main() {
8384
os.Exit(9)
8485
}
8586

86-
mgr.Logger.Info("deleting authorized networks")
8787
err = instance.CleanupAuthNetworks(ctx, target, mgr)
8888
if err != nil {
8989
mgr.Logger.Error("failed to cleanup authorized networks", "error", err)

cmd/promote/main.go

+5-2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ package main
33
import (
44
"context"
55
"fmt"
6+
"os"
7+
"time"
8+
69
"github.com/nais/cloudsql-migrator/internal/pkg/application"
710
"github.com/nais/cloudsql-migrator/internal/pkg/backup"
811
"github.com/nais/cloudsql-migrator/internal/pkg/common_main"
@@ -12,8 +15,6 @@ import (
1215
"github.com/nais/cloudsql-migrator/internal/pkg/promote"
1316
"github.com/nais/cloudsql-migrator/internal/pkg/resolved"
1417
"github.com/sethvargo/go-envconfig"
15-
"os"
16-
"time"
1718
)
1819

1920
func main() {
@@ -42,6 +43,7 @@ func main() {
4243
os.Exit(3)
4344
}
4445

46+
mgr.Logger.Info("getting application", "name", cfg.ApplicationName)
4547
app, err := mgr.AppClient.Get(ctx, cfg.ApplicationName)
4648
if err != nil {
4749
mgr.Logger.Error("failed to get application", "error", err)
@@ -66,6 +68,7 @@ func main() {
6668
os.Exit(7)
6769
}
6870

71+
mgr.Logger.Info("getting helper application", "name", helperName)
6972
helperApp, err := mgr.AppClient.Get(ctx, helperName)
7073
if err != nil {
7174
mgr.Logger.Error("failed to get helper application", "error", err)

internal/pkg/instance/certificate.go

+4-2
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,16 @@ package instance
33
import (
44
"context"
55
"fmt"
6+
"os"
7+
"time"
8+
69
"github.com/GoogleCloudPlatform/k8s-config-connector/pkg/clients/generated/apis/k8s/v1alpha1"
710
"github.com/GoogleCloudPlatform/k8s-config-connector/pkg/clients/generated/apis/sql/v1beta1"
811
"github.com/nais/cloudsql-migrator/internal/pkg/common_main"
912
"github.com/nais/cloudsql-migrator/internal/pkg/config"
1013
"github.com/nais/cloudsql-migrator/internal/pkg/resolved"
1114
"k8s.io/apimachinery/pkg/api/errors"
1215
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
13-
"os"
14-
"time"
1516
)
1617

1718
type CertPaths struct {
@@ -117,6 +118,7 @@ func DeleteSslCertByCommonName(ctx context.Context, instanceName, commonName str
117118
ctx, cancel := context.WithTimeout(ctx, 5*time.Minute)
118119
defer cancel()
119120

121+
mgr.Logger.Info("listing ssl certs", "instance", instanceName)
120122
listResponse, err := sslCertsService.List(gcpProject.Id, instanceName).Context(ctx).Do()
121123
if err != nil {
122124
return fmt.Errorf("failed to list ssl certs: %w", err)

internal/pkg/instance/instance.go

+15-9
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,13 @@ import (
44
"context"
55
"errors"
66
"fmt"
7+
"io"
8+
"net/http"
9+
"os"
10+
"os/user"
11+
"strings"
12+
"time"
13+
714
"github.com/GoogleCloudPlatform/k8s-config-connector/pkg/clients/generated/apis/sql/v1beta1"
815
_ "github.com/lib/pq"
916
"github.com/nais/cloudsql-migrator/internal/pkg/common_main"
@@ -12,15 +19,9 @@ import (
1219
nais_io_v1 "github.com/nais/liberator/pkg/apis/nais.io/v1"
1320
nais_io_v1alpha1 "github.com/nais/liberator/pkg/apis/nais.io/v1alpha1"
1421
"google.golang.org/api/googleapi"
15-
"io"
1622
k8s_errors "k8s.io/apimachinery/pkg/api/errors"
1723
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1824
"k8s.io/utils/ptr"
19-
"net/http"
20-
"os"
21-
"os/user"
22-
"strings"
23-
"time"
2425
)
2526

2627
const (
@@ -30,6 +31,7 @@ const (
3031
)
3132

3233
func CreateInstance(ctx context.Context, cfg *config.Config, source *resolved.Instance, gcpProject *resolved.GcpProject, databaseName string, mgr *common_main.Manager) (*resolved.Instance, error) {
34+
mgr.Logger.Info("getting source application", "name", cfg.ApplicationName)
3335
app, err := mgr.AppClient.Get(ctx, cfg.ApplicationName)
3436
if err != nil {
3537
return nil, err
@@ -42,6 +44,7 @@ func CreateInstance(ctx context.Context, cfg *config.Config, source *resolved.In
4244
return nil, err
4345
}
4446

47+
mgr.Logger.Info("get helper application", "name", helperName)
4548
dummyApp, err := mgr.AppClient.Get(ctx, helperName)
4649
if k8s_errors.IsNotFound(err) {
4750
dummyApp = &nais_io_v1alpha1.Application{
@@ -71,6 +74,7 @@ func CreateInstance(ctx context.Context, cfg *config.Config, source *resolved.In
7174
},
7275
}
7376

77+
mgr.Logger.Info("creating helper application", "name", helperName)
7478
app, err = mgr.AppClient.Create(ctx, dummyApp)
7579
}
7680
if err != nil {
@@ -213,15 +217,15 @@ func PrepareTargetInstance(ctx context.Context, cfg *config.Config, target *reso
213217
}
214218

215219
func prepareTargetInstanceWithRetries(ctx context.Context, cfg *config.Config, target *resolved.Instance, mgr *common_main.Manager, retries int) error {
220+
mgr.Logger.Info("preparing target instance for migration")
221+
216222
targetSqlInstance, err := mgr.SqlInstanceClient.Get(ctx, target.Name)
217223
if err != nil {
218224
if !k8s_errors.IsNotFound(err) {
219225
return err
220226
}
221227
}
222228

223-
mgr.Logger.Info("preparing target instance for migration")
224-
225229
targetSqlInstance.Spec.Settings.BackupConfiguration.Enabled = ptr.To(false)
226230

227231
var authNetwork v1beta1.InstanceAuthorizedNetworks
@@ -232,6 +236,7 @@ func prepareTargetInstanceWithRetries(ctx context.Context, cfg *config.Config, t
232236

233237
targetSqlInstance.Spec.Settings.IpConfiguration.AuthorizedNetworks = appendAuthNetIfNotExists(targetSqlInstance, authNetwork)
234238

239+
mgr.Logger.Info("updating target instance", "name", target.Name)
235240
_, err = mgr.SqlInstanceClient.Update(ctx, targetSqlInstance)
236241
if err != nil {
237242
if k8s_errors.IsConflict(err) && retries > 0 {
@@ -291,7 +296,7 @@ func updateTargetInstanceAfterPromotionWithRetries(ctx context.Context, target *
291296
func DeleteInstance(ctx context.Context, instanceName string, gcpProject *resolved.GcpProject, mgr *common_main.Manager) error {
292297
instancesService := mgr.SqlAdminService.Instances
293298

294-
mgr.Logger.Debug("checking for existence before deletion")
299+
mgr.Logger.Info("checking for instance existence before deletion", "name", instanceName)
295300
_, err := instancesService.Get(gcpProject.Id, instanceName).Context(ctx).Do()
296301
if err != nil {
297302
var ae *googleapi.Error
@@ -315,6 +320,7 @@ func CleanupAuthNetworks(ctx context.Context, target *resolved.Instance, mgr *co
315320
}
316321

317322
func cleanupAuthNetworksWithRetries(ctx context.Context, target *resolved.Instance, mgr *common_main.Manager, retries int) error {
323+
mgr.Logger.Info("deleting authorized networks")
318324
targetSqlInstance, err := mgr.SqlInstanceClient.Get(ctx, target.Name)
319325
if err != nil {
320326
return fmt.Errorf("failed to get target instance: %w", err)

internal/pkg/instance/profile.go

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
package instance
22

33
import (
4-
clouddms "cloud.google.com/go/clouddms/apiv1"
5-
"cloud.google.com/go/clouddms/apiv1/clouddmspb"
64
"context"
75
"fmt"
6+
7+
clouddms "cloud.google.com/go/clouddms/apiv1"
8+
"cloud.google.com/go/clouddms/apiv1/clouddmspb"
89
"github.com/nais/cloudsql-migrator/internal/pkg/common_main"
910
"github.com/nais/cloudsql-migrator/internal/pkg/config"
1011
"github.com/nais/cloudsql-migrator/internal/pkg/resolved"
@@ -91,6 +92,7 @@ func deleteOldConnectionProfiles(ctx context.Context, cps map[string]*clouddmspb
9192
}
9293

9394
for _, deleteOperation := range deleteOperations {
95+
mgr.Logger.Info("waiting for connection profile deletion...", "name", deleteOperation.Name())
9496
err := deleteOperation.Wait(ctx)
9597
if err != nil {
9698
return fmt.Errorf("failed to wait for connection profile deletion: %w", err)

internal/pkg/migration/migration.go

+4-1
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@ package migration
33
import (
44
"context"
55
"fmt"
6+
"time"
7+
68
"github.com/nais/cloudsql-migrator/internal/pkg/config"
79
"github.com/nais/cloudsql-migrator/internal/pkg/instance"
810
"github.com/nais/cloudsql-migrator/internal/pkg/resolved"
9-
"time"
1011

1112
"cloud.google.com/go/clouddms/apiv1/clouddmspb"
1213
"github.com/nais/cloudsql-migrator/internal/pkg/common_main"
@@ -89,6 +90,7 @@ func demoteTargetInstance(ctx context.Context, migrationJob *clouddmspb.Migratio
8990
}
9091

9192
func createMigrationJob(ctx context.Context, migrationName string, cfg *config.Config, gcpProject *resolved.GcpProject, mgr *common_main.Manager) (*clouddmspb.MigrationJob, error) {
93+
mgr.Logger.Info("looking for existing migration job", "name", migrationName)
9294
migrationJob, err := mgr.DBMigrationClient.GetMigrationJob(ctx, &clouddmspb.GetMigrationJobRequest{
9395
Name: gcpProject.GcpComponentURI("migrationJobs", migrationName),
9496
})
@@ -125,6 +127,7 @@ func createMigrationJob(ctx context.Context, migrationName string, cfg *config.C
125127
return nil, fmt.Errorf("unable to create new migration job: %w", err)
126128
}
127129

130+
mgr.Logger.Info("waiting for migration job creation", "name", migrationName)
128131
migrationJob, err = createOperation.Wait(ctx)
129132
if err != nil {
130133
return nil, fmt.Errorf("failed waiting for migration job creation: %w", err)

internal/pkg/netpol/netpol.go

+5-1
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,20 @@ package netpol
33
import (
44
"context"
55
"fmt"
6+
"os"
7+
68
"github.com/nais/cloudsql-migrator/internal/pkg/common_main"
79
"github.com/nais/cloudsql-migrator/internal/pkg/config"
810
"github.com/nais/cloudsql-migrator/internal/pkg/resolved"
911
v1 "k8s.io/api/networking/v1"
1012
k8s_errors "k8s.io/apimachinery/pkg/api/errors"
1113
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
12-
"os"
1314
)
1415

1516
func CreateNetworkPolicy(ctx context.Context, cfg *config.Config, source *resolved.Instance, target *resolved.Instance, mgr *common_main.Manager) error {
1617
v := os.Getenv("KUBERNETES_SERVICE_HOST")
1718
if v == "" {
19+
mgr.Logger.Debug("not running in kubernetes, skipping network policy creation")
1820
return nil
1921
}
2022

@@ -49,9 +51,11 @@ func CreateNetworkPolicy(ctx context.Context, cfg *config.Config, source *resolv
4951
},
5052
}
5153

54+
mgr.Logger.Info("creating network policy", "name", netpol.Name)
5255
_, err := mgr.K8sClient.NetworkingV1().NetworkPolicies(cfg.Namespace).Create(ctx, netpol, metav1.CreateOptions{})
5356
if err != nil {
5457
if k8s_errors.IsAlreadyExists(err) {
58+
mgr.Logger.Info("network policy already exists, updating", "name", netpol.Name)
5559
_, err = mgr.K8sClient.NetworkingV1().NetworkPolicies(cfg.Namespace).Update(ctx, netpol, metav1.UpdateOptions{})
5660
if err != nil {
5761
return fmt.Errorf("failed to update network policy: %w", err)

internal/pkg/promote/promote.go

+8-8
Original file line numberDiff line numberDiff line change
@@ -103,14 +103,14 @@ func waitForReplicationLagToReachZero(ctx context.Context, target *resolved.Inst
103103
req := &monitoringpb.QueryTimeSeriesRequest{
104104
Name: gcpProject.GcpParentURI(),
105105
Query: "fetch cloudsql_database\n" +
106-
"| metric\n" +
107-
" 'cloudsql.googleapis.com/database/postgresql/external_sync/max_replica_byte_lag'\n" +
108-
"| filter\n" +
109-
" resource.region == 'europe-north1' && \n" +
110-
fmt.Sprintf(" resource.project_id == '%s' &&\n", gcpProject.Id) +
111-
fmt.Sprintf(" resource.database_id == '%s:%s'\n", gcpProject.Id, target.Name) +
112-
"| group_by [], mean(val())\n" +
113-
"| within 5m\n",
106+
"| metric\n" +
107+
" 'cloudsql.googleapis.com/database/postgresql/external_sync/max_replica_byte_lag'\n" +
108+
"| filter\n" +
109+
" resource.region == 'europe-north1' && \n" +
110+
fmt.Sprintf(" resource.project_id == '%s' &&\n", gcpProject.Id) +
111+
fmt.Sprintf(" resource.database_id == '%s:%s'\n", gcpProject.Id, target.Name) +
112+
"| group_by [], mean(val())\n" +
113+
"| within 5m\n",
114114
}
115115

116116
for {

internal/pkg/resolved/resolved.go

+6-2
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,16 @@ package resolved
33
import (
44
"context"
55
"fmt"
6+
"strings"
7+
"time"
8+
69
"github.com/GoogleCloudPlatform/k8s-config-connector/pkg/clients/generated/apis/sql/v1beta1"
710
"github.com/nais/cloudsql-migrator/internal/pkg/common_main"
811
"github.com/nais/cloudsql-migrator/internal/pkg/config"
912
"github.com/nais/liberator/pkg/apis/nais.io/v1alpha1"
1013
"k8s.io/api/core/v1"
1114
"k8s.io/apimachinery/pkg/api/errors"
1215
meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
13-
"strings"
14-
"time"
1516
)
1617

1718
// Resolved is configuration that is resolved by looking up in the cluster
@@ -44,6 +45,7 @@ type GcpProject struct {
4445
}
4546

4647
func ResolveGcpProject(ctx context.Context, cfg *config.Config, mgr *common_main.Manager) (*GcpProject, error) {
48+
mgr.Logger.Info("resolving google project id", "namespace", cfg.Namespace)
4749
ns, err := mgr.K8sClient.CoreV1().Namespaces().Get(ctx, cfg.Namespace, meta_v1.GetOptions{})
4850
if err != nil {
4951
return nil, err
@@ -115,6 +117,8 @@ func ResolveInstance(ctx context.Context, app *nais_io_v1alpha1.Application, mgr
115117
Name: name,
116118
}
117119

120+
mgr.Logger.Info("resolving sql instance", "name", name)
121+
118122
var secret *v1.Secret
119123
for {
120124
secret, err = mgr.K8sClient.CoreV1().Secrets(app.Namespace).Get(ctx, "google-sql-"+app.Name, meta_v1.GetOptions{})

0 commit comments

Comments
 (0)