Переглянути джерело

add inet gw status to egress model

abhishek9686 4 місяців тому
батько
коміт
f11565d9a2
3 змінених файлів з 29 додано та 10 видалено
  1. 9 0
      controllers/egress.go
  2. 12 10
      logic/egress.go
  3. 8 0
      models/egress.go

+ 9 - 0
controllers/egress.go

@@ -47,6 +47,7 @@ func createEgress(w http.ResponseWriter, r *http.Request) {
 		Description: req.Description,
 		Range:       req.Range,
 		Nat:         req.Nat,
+		IsInetGw:    req.IsInetGw,
 		Nodes:       make(datatypes.JSONMap),
 		Tags:        make(datatypes.JSONMap),
 		CreatedBy:   r.Header.Get("user"),
@@ -131,9 +132,13 @@ func updateEgress(w http.ResponseWriter, r *http.Request) {
 		e.Nodes[nodeID] = metric
 	}
 	var updateNat bool
+	var updateInetGw bool
 	if req.Nat != e.Nat {
 		updateNat = true
 	}
+	if req.IsInetGw != e.IsInetGw {
+		updateInetGw = true
+	}
 	e.Range = req.Range
 	e.Description = req.Description
 	e.Name = req.Name
@@ -155,6 +160,10 @@ func updateEgress(w http.ResponseWriter, r *http.Request) {
 		e.Nat = req.Nat
 		e.UpdateNatStatus()
 	}
+	if updateInetGw {
+		e.IsInetGw = req.IsInetGw
+		e.UpdateINetGwStatus()
+	}
 	logic.ReturnSuccessResponseWithJson(w, r, req, "updated egress resource")
 }
 

+ 12 - 10
logic/egress.go

@@ -15,16 +15,18 @@ func ValidateEgressReq(e *models.Egress) bool {
 	if err != nil {
 		return false
 	}
-	if e.Range == "" {
-		return false
-	}
-	_, _, err = net.ParseCIDR(e.Range)
-	if err != nil {
-		return false
-	}
-	err = ValidateEgressRange(e.Network, []string{e.Range})
-	if err != nil {
-		return false
+	if !e.IsInetGw {
+		if e.Range == "" {
+			return false
+		}
+		_, _, err = net.ParseCIDR(e.Range)
+		if err != nil {
+			return false
+		}
+		err = ValidateEgressRange(e.Network, []string{e.Range})
+		if err != nil {
+			return false
+		}
 	}
 	if len(e.Nodes) != 0 {
 		for k := range e.Nodes {

+ 8 - 0
models/egress.go

@@ -19,6 +19,7 @@ type EgressReq struct {
 	Tags        []string       `json:"tags"`
 	Range       string         `json:"range"`
 	Nat         bool           `json:"nat"`
+	IsInetGw    bool           `json:"is_internet_gateway"`
 }
 
 type Egress struct {
@@ -30,6 +31,7 @@ type Egress struct {
 	Tags        datatypes.JSONMap `gorm:"tags" json:"tags"`
 	Range       string            `gorm:"range" json:"range"`
 	Nat         bool              `gorm:"nat" json:"nat"`
+	IsInetGw    bool              `gorm:"is_internet_gateway"`
 	CreatedBy   string            `gorm:"created_by" json:"created_by"`
 	CreatedAt   time.Time         `gorm:"created_at" json:"created_at"`
 	UpdatedAt   time.Time         `gorm:"updated_at" json:"updated_at"`
@@ -53,6 +55,12 @@ func (e *Egress) UpdateNatStatus() error {
 	}).Error
 }
 
+func (e *Egress) UpdateINetGwStatus() error {
+	return db.FromContext(context.TODO()).Table(e.Table()).Where("id = ?", e.ID).Updates(map[string]any{
+		"is_internet_gateway": e.IsInetGw,
+	}).Error
+}
+
 func (e *Egress) Create() error {
 	return db.FromContext(context.TODO()).Table(e.Table()).Create(&e).Error
 }