From 6b2f541155ce52cdb4df1f605ae47890515d90a7 Mon Sep 17 00:00:00 2001 From: Aditya Thebe Date: Wed, 1 May 2024 11:08:09 +0545 Subject: [PATCH] fix: topology & canary controllers --- go.mod | 2 +- go.sum | 4 ++-- hack/generate-schemas/go.mod | 2 +- hack/generate-schemas/go.sum | 4 ++-- pkg/db/canary.go | 10 +++++++++- pkg/db/topology.go | 18 ++++++++++++++---- 6 files changed, 29 insertions(+), 11 deletions(-) diff --git a/go.mod b/go.mod index 8f6d2a906..7b0da0d10 100644 --- a/go.mod +++ b/go.mod @@ -20,7 +20,7 @@ require ( github.com/fergusstrange/embedded-postgres v1.25.0 github.com/flanksource/artifacts v1.0.4 github.com/flanksource/commons v1.22.1 - github.com/flanksource/duty v1.0.433 + github.com/flanksource/duty v1.0.435 github.com/flanksource/gomplate/v3 v3.24.7 github.com/flanksource/is-healthy v1.0.4 github.com/flanksource/kommons v0.31.4 diff --git a/go.sum b/go.sum index 6a2746cc3..70806e43e 100644 --- a/go.sum +++ b/go.sum @@ -858,8 +858,8 @@ github.com/flanksource/artifacts v1.0.4 h1:KjQTwsvQ73uHqTK7o4Jwt/RW8fyxJOTJ6JLgz github.com/flanksource/artifacts v1.0.4/go.mod h1:wkbdseaTkDo4Q6k6T86vXd4Uy47M6NPCmexgHvCTDl0= github.com/flanksource/commons v1.22.1 h1:Ycg8r26bx537UTdAEFgngDW1r2j5bX6Lr3NGxLICpiw= github.com/flanksource/commons v1.22.1/go.mod h1:GD5+yGvmYFPIW3WMNN+y1JkeDMJY74e05pQAsRbrvwY= -github.com/flanksource/duty v1.0.433 h1:Mhbt/yc3Cv8Af/YN697eMuDeWoZKZZ0QkuvNxzzMOTU= -github.com/flanksource/duty v1.0.433/go.mod h1:GNckeTl2cnxQepuHJAH0b8xEaLsAnx9kQZs+VIPDnXc= +github.com/flanksource/duty v1.0.435 h1:pUDj8wmWhcyLZtYiJmfEHh9V4lDwGXj+USz7Q3Bv0XE= +github.com/flanksource/duty v1.0.435/go.mod h1:GNckeTl2cnxQepuHJAH0b8xEaLsAnx9kQZs+VIPDnXc= github.com/flanksource/gomplate/v3 v3.20.4/go.mod h1:27BNWhzzSjDed1z8YShO6W+z6G9oZXuxfNFGd/iGSdc= github.com/flanksource/gomplate/v3 v3.24.7 h1:XVIwcOTIR9l95D+jaerHcqRFN2Mo6MNEMttxsEsZ9aY= github.com/flanksource/gomplate/v3 v3.24.7/go.mod h1:7SJHGdFITvw3I8qf/ppF1BXbL2/ENyI5vpQkWt8MHtU= diff --git a/hack/generate-schemas/go.mod b/hack/generate-schemas/go.mod index 352c93b0f..af93cf1a2 100644 --- a/hack/generate-schemas/go.mod +++ b/hack/generate-schemas/go.mod @@ -51,7 +51,7 @@ require ( github.com/evanphx/json-patch v5.7.0+incompatible // indirect github.com/exaring/otelpgx v0.5.2 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/flanksource/duty v1.0.433 // indirect + github.com/flanksource/duty v1.0.435 // indirect github.com/flanksource/is-healthy v1.0.4 // indirect github.com/flanksource/kommons v0.31.4 // indirect github.com/flanksource/kubectl-neat v1.0.4 // indirect diff --git a/hack/generate-schemas/go.sum b/hack/generate-schemas/go.sum index 9d324dd56..bb604fd92 100644 --- a/hack/generate-schemas/go.sum +++ b/hack/generate-schemas/go.sum @@ -735,8 +735,8 @@ github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2 github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/flanksource/commons v1.22.1 h1:Ycg8r26bx537UTdAEFgngDW1r2j5bX6Lr3NGxLICpiw= github.com/flanksource/commons v1.22.1/go.mod h1:GD5+yGvmYFPIW3WMNN+y1JkeDMJY74e05pQAsRbrvwY= -github.com/flanksource/duty v1.0.433 h1:Mhbt/yc3Cv8Af/YN697eMuDeWoZKZZ0QkuvNxzzMOTU= -github.com/flanksource/duty v1.0.433/go.mod h1:GNckeTl2cnxQepuHJAH0b8xEaLsAnx9kQZs+VIPDnXc= +github.com/flanksource/duty v1.0.435 h1:pUDj8wmWhcyLZtYiJmfEHh9V4lDwGXj+USz7Q3Bv0XE= +github.com/flanksource/duty v1.0.435/go.mod h1:GNckeTl2cnxQepuHJAH0b8xEaLsAnx9kQZs+VIPDnXc= github.com/flanksource/gomplate/v3 v3.20.4/go.mod h1:27BNWhzzSjDed1z8YShO6W+z6G9oZXuxfNFGd/iGSdc= github.com/flanksource/gomplate/v3 v3.24.7 h1:XVIwcOTIR9l95D+jaerHcqRFN2Mo6MNEMttxsEsZ9aY= github.com/flanksource/gomplate/v3 v3.24.7/go.mod h1:7SJHGdFITvw3I8qf/ppF1BXbL2/ENyI5vpQkWt8MHtU= diff --git a/pkg/db/canary.go b/pkg/db/canary.go index 2a75d0d29..6efa2c001 100644 --- a/pkg/db/canary.go +++ b/pkg/db/canary.go @@ -374,7 +374,15 @@ func PersistCanaryModel(ctx context.Context, model pkg.Canary) (*pkg.Canary, err db := ctx.DB() err := db.Clauses( clause.OnConflict{ - Columns: []clause.Column{{Name: "agent_id"}, {Name: "name"}, {Name: "namespace"}, {Name: "source"}}, + Columns: []clause.Column{{Name: "agent_id"}, {Name: "name"}, {Name: "namespace"}, {Name: "source"}}, + TargetWhere: clause.Where{ + Exprs: []clause.Expression{ + clause.Or( + clause.Eq{Column: "deleted_at", Value: gorm.Expr("NULL")}, + clause.Not(clause.Eq{Column: "agent_id", Value: uuid.Nil.String()}), + ), + }, + }, DoUpdates: clause.AssignmentColumns([]string{"labels", "spec"}), }, clause.Returning{}, diff --git a/pkg/db/topology.go b/pkg/db/topology.go index 21f3c2fd9..61e05d3f9 100644 --- a/pkg/db/topology.go +++ b/pkg/db/topology.go @@ -40,10 +40,20 @@ func PersistV1Topology(ctx context.Context, t *v1.Topology) (pkg.Topology, bool, } func PersistTopology(ctx context.Context, model *pkg.Topology) (bool, error) { - tx := ctx.DB().Table("topologies").Clauses(clause.OnConflict{ - Columns: []clause.Column{{Name: "agent_id"}, {Name: "name"}, {Name: "namespace"}}, - UpdateAll: true, - }).Create(model) + tx := ctx.DB(). + Clauses(clause.OnConflict{ + Columns: []clause.Column{{Name: "agent_id"}, {Name: "name"}, {Name: "namespace"}}, + TargetWhere: clause.Where{ + Exprs: []clause.Expression{ + clause.Or( + clause.Eq{Column: "deleted_at", Value: gorm.Expr("NULL")}, + clause.Not(clause.Eq{Column: "agent_id", Value: uuid.Nil.String()}), + ), + }, + }, + DoUpdates: clause.AssignmentColumns([]string{"labels", "spec"}), + }). + Create(model) if tx.Error != nil { return false, tx.Error }