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)
|
|
}
|
|
}
|