diff --git a/controllers/network.go b/controllers/network.go index 03f40cb9..d6ad45e6 100644 --- a/controllers/network.go +++ b/controllers/network.go @@ -530,8 +530,9 @@ func createNetwork(w http.ResponseWriter, r *http.Request) { logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest")) return } - logic.CreateDefaultNetworkRolesAndGroups(models.NetworkID(network.NetID)) + logic.CreateDefaultNetworkRolesAndGroups(models.NetworkID(network.NetID)) + logic.CreateDefaultTags(models.NetworkID(network.NetID)) //add new network to allocated ip map go logic.AddNetworkToAllocatedIpMap(network.NetID) diff --git a/logic/tags.go b/logic/tags.go index 413f9a3d..1bca3968 100644 --- a/logic/tags.go +++ b/logic/tags.go @@ -7,9 +7,11 @@ import ( "regexp" "sort" "sync" + "time" "github.com/gravitl/netmaker/database" "github.com/gravitl/netmaker/models" + "golang.org/x/exp/slog" ) var tagMutex = &sync.RWMutex{} @@ -201,3 +203,23 @@ func CheckIDSyntax(id string) error { } return nil } + +func CreateDefaultTags(netID models.NetworkID) { + // create tag for remote access gws in the network + tag := models.Tag{ + ID: models.TagID(fmt.Sprintf("%s.%s", netID.String(), "remote-access-gws")), + TagName: "remote-access-gws", + Network: netID, + CreatedBy: "auto", + CreatedAt: time.Now(), + } + _, err := GetTag(tag.ID) + if err == nil { + return + } + err = InsertTag(tag) + if err != nil { + slog.Error("failed to create remote access gw tag", "error", err.Error()) + return + } +} diff --git a/migrate/migrate.go b/migrate/migrate.go index 6612d4dd..3f42a0a9 100644 --- a/migrate/migrate.go +++ b/migrate/migrate.go @@ -26,6 +26,7 @@ func Run() { updateHosts() updateNodes() updateAcls() + createDefaultTags() } func assignSuperAdmin() { @@ -432,3 +433,13 @@ func syncUsers() { } } } + +func createDefaultTags() { + networks, err := logic.GetNetworks() + if err != nil { + return + } + for _, network := range networks { + logic.CreateDefaultTags(models.NetworkID(network.NetID)) + } +}