Skip to content

Commit

Permalink
Drop all tables if current schema version is not equal 0.2.0
Browse files Browse the repository at this point in the history
  • Loading branch information
jhoxhaa committed Jun 7, 2024
1 parent 017449d commit 66f4f19
Showing 1 changed file with 48 additions and 1 deletion.
49 changes: 48 additions & 1 deletion cmd/icinga-kubernetes/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,11 @@ import (
"flag"
_ "github.com/go-sql-driver/mysql"
"github.com/icinga/icinga-kubernetes/internal"
"github.com/icinga/icinga-kubernetes/pkg/backoff"
"github.com/icinga/icinga-kubernetes/pkg/com"
"github.com/icinga/icinga-kubernetes/pkg/database"
"github.com/icinga/icinga-kubernetes/pkg/periodic"
"github.com/icinga/icinga-kubernetes/pkg/retry"
schemav1 "github.com/icinga/icinga-kubernetes/pkg/schema/v1"
"github.com/icinga/icinga-kubernetes/pkg/sync"
syncv1 "github.com/icinga/icinga-kubernetes/pkg/sync/v1"
Expand All @@ -23,6 +25,8 @@ import (
"time"
)

const expectedSchemaVersion = "0.2.0"

func main() {
runtime.ReallyCrash = true

Expand Down Expand Up @@ -71,6 +75,50 @@ func main() {
klog.Fatal(err)
}

g, ctx := errgroup.WithContext(context.Background())

var version string
err = retry.WithBackoff(
ctx,
func(ctx context.Context) (err error) {
query := "SELECT version FROM kubernetes_schema ORDER BY id DESC LIMIT 1"
err = db.QueryRowxContext(ctx, query).Scan(&version)
if err != nil {
err = database.CantPerformQuery(err, query)
}
return
},
retry.Retryable,
backoff.NewExponentialWithJitter(128*time.Millisecond, 1*time.Minute),
retry.Settings{})
if err != nil {
klog.Fatal(err)
}

if hasSchema && version != expectedSchemaVersion {
rows, err := db.Query(
db.Rebind("SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA=?"),
d.Database,
)
if err != nil {
klog.Fatal(err)
}
defer rows.Close()

dbLog.Info("Dropping schema")
for rows.Next() {
var tableName string
if err := rows.Scan(&tableName); err != nil {
klog.Fatal(err)
}
_, err := db.Exec("DROP TABLE " + tableName)
if err != nil {
klog.Fatal(err)
}
}
hasSchema = false
}

if !hasSchema {
dbLog.Info("Importing schema")

Expand All @@ -83,7 +131,6 @@ func main() {
}
}

g, ctx := errgroup.WithContext(context.Background())
g.Go(func() error {
s := syncv1.NewSync(db, factory.Core().V1().Namespaces().Informer(), log.WithName("namespaces"), schemav1.NewNamespace)

Expand Down

0 comments on commit 66f4f19

Please sign in to comment.