mirror of https://github.com/portainer/portainer
48 lines
1.3 KiB
Go
48 lines
1.3 KiB
Go
package chisel
|
|
|
|
import (
|
|
"strconv"
|
|
|
|
portainer "github.com/portainer/portainer/api"
|
|
)
|
|
|
|
// AddSchedule register a schedule inside the tunnel details associated to an endpoint.
|
|
func (service *Service) AddSchedule(endpointID portainer.EndpointID, schedule *portainer.EdgeSchedule) {
|
|
tunnel := service.GetTunnelDetails(endpointID)
|
|
|
|
existingScheduleIndex := -1
|
|
for idx, existingSchedule := range tunnel.Schedules {
|
|
if existingSchedule.ID == schedule.ID {
|
|
existingScheduleIndex = idx
|
|
break
|
|
}
|
|
}
|
|
|
|
if existingScheduleIndex == -1 {
|
|
tunnel.Schedules = append(tunnel.Schedules, *schedule)
|
|
} else {
|
|
tunnel.Schedules[existingScheduleIndex] = *schedule
|
|
}
|
|
|
|
key := strconv.Itoa(int(endpointID))
|
|
service.tunnelDetailsMap.Set(key, tunnel)
|
|
}
|
|
|
|
// RemoveSchedule will remove the specified schedule from each tunnel it was registered with.
|
|
func (service *Service) RemoveSchedule(scheduleID portainer.ScheduleID) {
|
|
for item := range service.tunnelDetailsMap.IterBuffered() {
|
|
tunnelDetails := item.Val.(*portainer.TunnelDetails)
|
|
|
|
updatedSchedules := make([]portainer.EdgeSchedule, 0)
|
|
for _, schedule := range tunnelDetails.Schedules {
|
|
if schedule.ID == scheduleID {
|
|
continue
|
|
}
|
|
updatedSchedules = append(updatedSchedules, schedule)
|
|
}
|
|
|
|
tunnelDetails.Schedules = updatedSchedules
|
|
service.tunnelDetailsMap.Set(item.Key, tunnelDetails)
|
|
}
|
|
}
|