diff --git a/migrate/migrate.go b/migrate/migrate.go index 2e156ef6..f0c333d1 100644 --- a/migrate/migrate.go +++ b/migrate/migrate.go @@ -536,21 +536,27 @@ func migrateToEgressV1() { } for _, node := range nodes { if node.IsEgressGateway { - egressHost, err := logic.GetHost(node.HostID.String()) + _, err := logic.GetHost(node.HostID.String()) if err != nil { continue } - for _, rangeI := range node.EgressGatewayRequest.Ranges { - e := schema.Egress{ + for _, rangeMetric := range node.EgressGatewayRequest.RangesWithMetric { + e := &schema.Egress{Range: rangeMetric.Network} + if err := e.DoesEgressRouteExists(db.WithContext(context.TODO())); err == nil { + e.Nodes[node.ID.String()] = rangeMetric.RouteMetric + e.Update(db.WithContext(context.TODO())) + continue + } + e = &schema.Egress{ ID: uuid.New().String(), - Name: fmt.Sprintf("%s egress", egressHost.Name), + Name: fmt.Sprintf("%s egress", rangeMetric.Network), Description: "", Network: node.Network, Nodes: datatypes.JSONMap{ - node.ID.String(): 256, + node.ID.String(): rangeMetric.RouteMetric, }, Tags: make(datatypes.JSONMap), - Range: rangeI, + Range: rangeMetric.Network, Nat: node.EgressGatewayRequest.NatEnabled == "yes", Status: true, CreatedBy: user.UserName, diff --git a/schema/egress.go b/schema/egress.go index d420198a..2c711f58 100644 --- a/schema/egress.go +++ b/schema/egress.go @@ -50,6 +50,10 @@ func (e *Egress) UpdateEgressStatus(ctx context.Context) error { }).Error } +func (e *Egress) DoesEgressRouteExists(ctx context.Context) error { + return db.FromContext(ctx).Table(e.Table()).Where("range = ?", e.Range).First(&e).Error +} + func (e *Egress) Create(ctx context.Context) error { return db.FromContext(ctx).Table(e.Table()).Create(&e).Error }