migrate remote access gw tags

This commit is contained in:
abhishek9686 2025-03-11 00:50:44 +04:00
parent aca11049c9
commit f3fd10326f
6 changed files with 44 additions and 21 deletions

View file

@ -95,11 +95,11 @@ func CreateDefaultAclNetworkPolicies(netID models.NetworkID) {
InsertAcl(defaultUserAcl) InsertAcl(defaultUserAcl)
} }
if !IsAclExists(fmt.Sprintf("%s.%s", netID, "all-remote-access-gws")) { if !IsAclExists(fmt.Sprintf("%s.%s", netID, "all-gateways")) {
defaultUserAcl := models.Acl{ defaultUserAcl := models.Acl{
ID: fmt.Sprintf("%s.%s", netID, "all-remote-access-gws"), ID: fmt.Sprintf("%s.%s", netID, "all-gateways"),
Default: true, Default: true,
Name: "All Remote Access Gateways", Name: "All Gateways",
NetworkID: netID, NetworkID: netID,
Proto: models.ALL, Proto: models.ALL,
ServiceType: models.Any, ServiceType: models.Any,
@ -108,7 +108,7 @@ func CreateDefaultAclNetworkPolicies(netID models.NetworkID) {
Src: []models.AclPolicyTag{ Src: []models.AclPolicyTag{
{ {
ID: models.NodeTagID, ID: models.NodeTagID,
Value: fmt.Sprintf("%s.%s", netID, models.RemoteAccessTagName), Value: fmt.Sprintf("%s.%s", netID, models.GwTagName),
}, },
}, },
Dst: []models.AclPolicyTag{ Dst: []models.AclPolicyTag{

View file

@ -220,7 +220,7 @@ func CreateIngressGateway(netid string, nodeid string, ingress models.IngressReq
if node.Tags == nil { if node.Tags == nil {
node.Tags = make(map[models.TagID]struct{}) node.Tags = make(map[models.TagID]struct{})
} }
node.Tags[models.TagID(fmt.Sprintf("%s.%s", netid, models.RemoteAccessTagName))] = struct{}{} node.Tags[models.TagID(fmt.Sprintf("%s.%s", netid, models.GwTagName))] = struct{}{}
err = UpsertNode(&node) err = UpsertNode(&node)
if err != nil { if err != nil {
return models.Node{}, err return models.Node{}, err
@ -272,7 +272,7 @@ func DeleteIngressGateway(nodeid string) (models.Node, []models.ExtClient, error
if !servercfg.IsPro { if !servercfg.IsPro {
node.IsInternetGateway = false node.IsInternetGateway = false
} }
delete(node.Tags, models.TagID(fmt.Sprintf("%s.%s", node.Network, models.RemoteAccessTagName))) delete(node.Tags, models.TagID(fmt.Sprintf("%s.%s", node.Network, models.GwTagName)))
node.IngressGatewayRange = "" node.IngressGatewayRange = ""
node.Metadata = "" node.Metadata = ""
err = UpsertNode(&node) err = UpsertNode(&node)

View file

@ -280,8 +280,8 @@ func CheckIDSyntax(id string) error {
func CreateDefaultTags(netID models.NetworkID) { func CreateDefaultTags(netID models.NetworkID) {
// create tag for remote access gws in the network // create tag for remote access gws in the network
tag := models.Tag{ tag := models.Tag{
ID: models.TagID(fmt.Sprintf("%s.%s", netID.String(), models.RemoteAccessTagName)), ID: models.TagID(fmt.Sprintf("%s.%s", netID.String(), models.GwTagName)),
TagName: models.RemoteAccessTagName, TagName: models.GwTagName,
Network: netID, Network: netID,
CreatedBy: "auto", CreatedBy: "auto",
CreatedAt: time.Now(), CreatedAt: time.Now(),

View file

@ -204,15 +204,6 @@ func updateNodes() {
logic.UpsertNode(&node) logic.UpsertNode(&node)
} }
if node.IsIngressGateway { if node.IsIngressGateway {
tagID := models.TagID(fmt.Sprintf("%s.%s", node.Network,
models.RemoteAccessTagName))
if node.Tags == nil {
node.Tags = make(map[models.TagID]struct{})
}
if _, ok := node.Tags[tagID]; !ok {
node.Tags[tagID] = struct{}{}
logic.UpsertNode(&node)
}
host, err := logic.GetHost(node.HostID.String()) host, err := logic.GetHost(node.HostID.String())
if err == nil { if err == nil {
go logic.DeleteRole(models.GetRAGRoleID(node.Network, host.ID.String()), true) go logic.DeleteRole(models.GetRAGRoleID(node.Network, host.ID.String()), true)
@ -448,7 +439,8 @@ func createDefaultTagsAndPolicies() {
for _, network := range networks { for _, network := range networks {
logic.CreateDefaultTags(models.NetworkID(network.NetID)) logic.CreateDefaultTags(models.NetworkID(network.NetID))
logic.CreateDefaultAclNetworkPolicies(models.NetworkID(network.NetID)) logic.CreateDefaultAclNetworkPolicies(models.NetworkID(network.NetID))
// delete old remote access gws policy
logic.DeleteAcl(models.Acl{ID: fmt.Sprintf("%s.%s", network.NetID, "all-remote-access-gws")})
} }
logic.MigrateAclPolicies() logic.MigrateAclPolicies()
} }
@ -463,7 +455,37 @@ func migrateToGws() {
node.IsGw = true node.IsGw = true
node.IsIngressGateway = true node.IsIngressGateway = true
node.IsRelay = true node.IsRelay = true
if node.Tags == nil {
node.Tags = make(map[models.TagID]struct{})
}
node.Tags[models.TagID(fmt.Sprintf("%s.%s", node.Network, models.GwTagName))] = struct{}{}
delete(node.Tags, models.TagID(fmt.Sprintf("%s.%s", node.Network, models.OldRemoteAccessTagName)))
logic.UpsertNode(&node) logic.UpsertNode(&node)
} }
} }
acls := logic.ListAcls()
for _, acl := range acls {
upsert := false
for i, srcI := range acl.Src {
if srcI.ID == models.NodeTagID && srcI.Value == fmt.Sprintf("%s.%s", acl.NetworkID.String(), models.OldRemoteAccessTagName) {
srcI.Value = models.GwTagName
acl.Src[i] = srcI
upsert = true
}
}
for i, dstI := range acl.Dst {
if dstI.ID == models.NodeTagID && dstI.Value == fmt.Sprintf("%s.%s", acl.NetworkID.String(), models.OldRemoteAccessTagName) {
dstI.Value = models.GwTagName
acl.Dst[i] = dstI
upsert = true
}
}
if upsert {
logic.UpsertAcl(acl)
}
}
nets, _ := logic.GetNetworks()
for _, netI := range nets {
logic.DeleteTag(models.TagID(fmt.Sprintf("%s.%s", netI.NetID, models.OldRemoteAccessTagName)), true)
}
} }

View file

@ -8,7 +8,8 @@ import (
type TagID string type TagID string
const ( const (
RemoteAccessTagName = "remote-access-gws" OldRemoteAccessTagName = "remote-access-gws"
GwTagName = "gateways"
) )
func (id TagID) String() string { func (id TagID) String() string {

View file

@ -1230,7 +1230,7 @@ func CreateDefaultUserPolicies(netID models.NetworkID) {
Dst: []models.AclPolicyTag{ Dst: []models.AclPolicyTag{
{ {
ID: models.NodeTagID, ID: models.NodeTagID,
Value: fmt.Sprintf("%s.%s", netID, models.RemoteAccessTagName), Value: fmt.Sprintf("%s.%s", netID, models.GwTagName),
}}, }},
AllowedDirection: models.TrafficDirectionUni, AllowedDirection: models.TrafficDirectionUni,
Enabled: true, Enabled: true,
@ -1264,7 +1264,7 @@ func CreateDefaultUserPolicies(netID models.NetworkID) {
Dst: []models.AclPolicyTag{ Dst: []models.AclPolicyTag{
{ {
ID: models.NodeTagID, ID: models.NodeTagID,
Value: fmt.Sprintf("%s.%s", netID, models.RemoteAccessTagName), Value: fmt.Sprintf("%s.%s", netID, models.GwTagName),
}}, }},
AllowedDirection: models.TrafficDirectionUni, AllowedDirection: models.TrafficDirectionUni,
Enabled: true, Enabled: true,