Add uniq tunnel name - kic tunnel

pull/6460/head
Jose Donizetti 2020-02-05 14:22:15 -03:00
parent 60c6116f2c
commit e0bccd044c
1 changed files with 30 additions and 10 deletions

View File

@ -1,6 +1,8 @@
package kic
import (
"fmt"
"strings"
"time"
v1 "k8s.io/api/core/v1"
@ -34,32 +36,50 @@ func (t *Tunnel) Start() error {
return err
}
for _, v := range sshTunnels {
v.sigkill = true
for _, sshTunnel := range sshTunnels {
sshTunnel.sigkill = true
}
for _, s := range services.Items {
if s.Spec.Type == v1.ServiceTypeLoadBalancer {
sshTunnel, ok := sshTunnels[s.Name]
name := sshTunnelName(s.Name, s.Spec.ClusterIP, s.Spec.Ports)
existingSSHTunnel, ok := sshTunnels[name]
if ok {
sshTunnel.sigkill = false
existingSSHTunnel.sigkill = false
continue
}
newSSHTunnel := createSSHTunnel(t, s.Name, s.Spec.ClusterIP, s.Spec.Ports)
newSSHTunnel := createSSHTunnel(t, name, s.Spec.ClusterIP, s.Spec.Ports)
sshTunnels[newSSHTunnel.name] = newSSHTunnel
}
}
for _, v := range sshTunnels {
if v.sigkill {
v.stop()
delete(sshTunnels, v.name)
for _, sshTunnel := range sshTunnels {
if sshTunnel.sigkill {
sshTunnel.stop()
delete(sshTunnels, sshTunnel.name)
}
}
// which time to use?
// TODO: which time to use?
time.Sleep(1 * time.Second)
}
}
// sshTunnelName creaets a uniq name for the tunnel, using its name/clusterIP/ports.
// This allows a new process to be created if an existing service was changed,
// the new process will support the IP/Ports change ocurred.
func sshTunnelName(name, clusterIP string, ports []v1.ServicePort) string {
n := []string{
name,
"-",
clusterIP,
}
for _, port := range ports {
n = append(n, fmt.Sprintf("-%d", port.Port))
}
return strings.Join(n, "")
}