| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- package logic
- import (
- "context"
- "errors"
- "github.com/gravitl/netmaker/db"
- "github.com/gravitl/netmaker/logic"
- "github.com/gravitl/netmaker/models"
- "github.com/gravitl/netmaker/schema"
- "github.com/gravitl/netmaker/servercfg"
- "gorm.io/datatypes"
- )
- func ValidateEgressReq(e *schema.Egress) error {
- if e.Network == "" {
- return errors.New("network id is empty")
- }
- _, err := logic.GetNetwork(e.Network)
- if err != nil {
- return errors.New("failed to get network " + err.Error())
- }
- if !servercfg.IsPro && len(e.Nodes) > 1 {
- return errors.New("can only set one routing node on CE")
- }
- if len(e.Nodes) > 0 {
- for k := range e.Nodes {
- _, err := logic.GetNodeByID(k)
- if err != nil {
- return errors.New("invalid routing node " + err.Error())
- }
- }
- }
- if len(e.Tags) > 0 {
- e.Nodes = make(datatypes.JSONMap)
- for tagID := range e.Tags {
- _, err := GetTag(models.TagID(tagID))
- if err != nil {
- return errors.New("invalid tag " + tagID)
- }
- }
- }
- return nil
- }
- func RemoveTagFromEgress(net models.NetworkID, tagID models.TagID) {
- eli, _ := (&schema.Egress{Network: net.String()}).ListByNetwork(db.WithContext(context.TODO()))
- for _, eI := range eli {
- if _, ok := eI.Tags[tagID.String()]; ok {
- delete(eI.Tags, tagID.String())
- eI.Update(db.WithContext(context.TODO()))
- }
- }
- }
|