mirror of https://github.com/portainer/portainer
				
				
				
			
		
			
				
	
	
		
			48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
package chisel
 | 
						|
 | 
						|
import (
 | 
						|
	"strconv"
 | 
						|
 | 
						|
	portainer "github.com/portainer/portainer/api"
 | 
						|
)
 | 
						|
 | 
						|
// AddEdgeJob register an EdgeJob inside the tunnel details associated to an endpoint.
 | 
						|
func (service *Service) AddEdgeJob(endpointID portainer.EndpointID, edgeJob *portainer.EdgeJob) {
 | 
						|
	tunnel := service.GetTunnelDetails(endpointID)
 | 
						|
 | 
						|
	existingJobIndex := -1
 | 
						|
	for idx, existingJob := range tunnel.Jobs {
 | 
						|
		if existingJob.ID == edgeJob.ID {
 | 
						|
			existingJobIndex = idx
 | 
						|
			break
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	if existingJobIndex == -1 {
 | 
						|
		tunnel.Jobs = append(tunnel.Jobs, *edgeJob)
 | 
						|
	} else {
 | 
						|
		tunnel.Jobs[existingJobIndex] = *edgeJob
 | 
						|
	}
 | 
						|
 | 
						|
	key := strconv.Itoa(int(endpointID))
 | 
						|
	service.tunnelDetailsMap.Set(key, tunnel)
 | 
						|
}
 | 
						|
 | 
						|
// RemoveEdgeJob will remove the specified Edge job from each tunnel it was registered with.
 | 
						|
func (service *Service) RemoveEdgeJob(edgeJobID portainer.EdgeJobID) {
 | 
						|
	for item := range service.tunnelDetailsMap.IterBuffered() {
 | 
						|
		tunnelDetails := item.Val.(*portainer.TunnelDetails)
 | 
						|
 | 
						|
		updatedJobs := make([]portainer.EdgeJob, 0)
 | 
						|
		for _, edgeJob := range tunnelDetails.Jobs {
 | 
						|
			if edgeJob.ID == edgeJobID {
 | 
						|
				continue
 | 
						|
			}
 | 
						|
			updatedJobs = append(updatedJobs, edgeJob)
 | 
						|
		}
 | 
						|
 | 
						|
		tunnelDetails.Jobs = updatedJobs
 | 
						|
		service.tunnelDetailsMap.Set(item.Key, tunnelDetails)
 | 
						|
	}
 | 
						|
}
 |