mirror of
				https://github.com/gravitl/netmaker.git
				synced 2025-10-31 08:26:23 +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) | ||||
| 	} | ||||
| 
 | ||||
| 	if !IsAclExists(fmt.Sprintf("%s.%s", netID, "all-remote-access-gws")) { | ||||
| 	if !IsAclExists(fmt.Sprintf("%s.%s", netID, "all-gateways")) { | ||||
| 		defaultUserAcl := models.Acl{ | ||||
| 			ID:          fmt.Sprintf("%s.%s", netID, "all-remote-access-gws"), | ||||
| 			ID:          fmt.Sprintf("%s.%s", netID, "all-gateways"), | ||||
| 			Default:     true, | ||||
| 			Name:        "All Remote Access Gateways", | ||||
| 			Name:        "All Gateways", | ||||
| 			NetworkID:   netID, | ||||
| 			Proto:       models.ALL, | ||||
| 			ServiceType: models.Any, | ||||
|  | @ -108,7 +108,7 @@ func CreateDefaultAclNetworkPolicies(netID models.NetworkID) { | |||
| 			Src: []models.AclPolicyTag{ | ||||
| 				{ | ||||
| 					ID:    models.NodeTagID, | ||||
| 					Value: fmt.Sprintf("%s.%s", netID, models.RemoteAccessTagName), | ||||
| 					Value: fmt.Sprintf("%s.%s", netID, models.GwTagName), | ||||
| 				}, | ||||
| 			}, | ||||
| 			Dst: []models.AclPolicyTag{ | ||||
|  |  | |||
|  | @ -220,7 +220,7 @@ func CreateIngressGateway(netid string, nodeid string, ingress models.IngressReq | |||
| 	if node.Tags == nil { | ||||
| 		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) | ||||
| 	if err != nil { | ||||
| 		return models.Node{}, err | ||||
|  | @ -272,7 +272,7 @@ func DeleteIngressGateway(nodeid string) (models.Node, []models.ExtClient, error | |||
| 	if !servercfg.IsPro { | ||||
| 		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.Metadata = "" | ||||
| 	err = UpsertNode(&node) | ||||
|  |  | |||
|  | @ -280,8 +280,8 @@ func CheckIDSyntax(id string) error { | |||
| 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(), models.RemoteAccessTagName)), | ||||
| 		TagName:   models.RemoteAccessTagName, | ||||
| 		ID:        models.TagID(fmt.Sprintf("%s.%s", netID.String(), models.GwTagName)), | ||||
| 		TagName:   models.GwTagName, | ||||
| 		Network:   netID, | ||||
| 		CreatedBy: "auto", | ||||
| 		CreatedAt: time.Now(), | ||||
|  |  | |||
|  | @ -204,15 +204,6 @@ func updateNodes() { | |||
| 			logic.UpsertNode(&node) | ||||
| 		} | ||||
| 		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()) | ||||
| 			if err == nil { | ||||
| 				go logic.DeleteRole(models.GetRAGRoleID(node.Network, host.ID.String()), true) | ||||
|  | @ -448,7 +439,8 @@ func createDefaultTagsAndPolicies() { | |||
| 	for _, network := range networks { | ||||
| 		logic.CreateDefaultTags(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() | ||||
| } | ||||
|  | @ -463,7 +455,37 @@ func migrateToGws() { | |||
| 			node.IsGw = true | ||||
| 			node.IsIngressGateway = 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) | ||||
| 		} | ||||
| 	} | ||||
| 	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 | ||||
| 
 | ||||
| const ( | ||||
| 	RemoteAccessTagName = "remote-access-gws" | ||||
| 	OldRemoteAccessTagName = "remote-access-gws" | ||||
| 	GwTagName              = "gateways" | ||||
| ) | ||||
| 
 | ||||
| func (id TagID) String() string { | ||||
|  |  | |||
|  | @ -1230,7 +1230,7 @@ func CreateDefaultUserPolicies(netID models.NetworkID) { | |||
| 			Dst: []models.AclPolicyTag{ | ||||
| 				{ | ||||
| 					ID:    models.NodeTagID, | ||||
| 					Value: fmt.Sprintf("%s.%s", netID, models.RemoteAccessTagName), | ||||
| 					Value: fmt.Sprintf("%s.%s", netID, models.GwTagName), | ||||
| 				}}, | ||||
| 			AllowedDirection: models.TrafficDirectionUni, | ||||
| 			Enabled:          true, | ||||
|  | @ -1264,7 +1264,7 @@ func CreateDefaultUserPolicies(netID models.NetworkID) { | |||
| 			Dst: []models.AclPolicyTag{ | ||||
| 				{ | ||||
| 					ID:    models.NodeTagID, | ||||
| 					Value: fmt.Sprintf("%s.%s", netID, models.RemoteAccessTagName), | ||||
| 					Value: fmt.Sprintf("%s.%s", netID, models.GwTagName), | ||||
| 				}}, | ||||
| 			AllowedDirection: models.TrafficDirectionUni, | ||||
| 			Enabled:          true, | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue