mirror of
https://github.com/gravitl/netmaker.git
synced 2025-11-10 00:30:37 +08:00
migrate remote access gw tags
This commit is contained in:
parent
aca11049c9
commit
f3fd10326f
6 changed files with 44 additions and 21 deletions
|
|
@ -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{
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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(),
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue