Commit 1e33142f authored by galal-hussein's avatar galal-hussein

handle old service lb deployments

parent 3c01d1ab
...@@ -42,15 +42,17 @@ func Register(ctx context.Context, kubernetes kubernetes.Interface, enabled, roo ...@@ -42,15 +42,17 @@ func Register(ctx context.Context, kubernetes kubernetes.Interface, enabled, roo
appClients := appclient.ClientsFrom(ctx) appClients := appclient.ClientsFrom(ctx)
h := &handler{ h := &handler{
rootless: rootless, rootless: rootless,
enabled: enabled, enabled: enabled,
nodeCache: clients.Node.Cache(), nodeCache: clients.Node.Cache(),
podCache: clients.Pod.Cache(), podCache: clients.Pod.Cache(),
deploymentCache: appClients.Deployment.Cache(),
processor: objectset.NewProcessor("svccontroller"). processor: objectset.NewProcessor("svccontroller").
Client(appClients.DaemonSet), Client(appClients.DaemonSet),
serviceCache: clients.Service.Cache(), serviceCache: clients.Service.Cache(),
services: kubernetes.CoreV1(), services: kubernetes.CoreV1(),
daemonsets: kubernetes.AppsV1(), daemonsets: kubernetes.AppsV1(),
deployments: kubernetes.AppsV1(),
} }
clients.Service.OnChange(ctx, "svccontroller", h.onChangeService) clients.Service.OnChange(ctx, "svccontroller", h.onChangeService)
...@@ -65,14 +67,16 @@ func Register(ctx context.Context, kubernetes kubernetes.Interface, enabled, roo ...@@ -65,14 +67,16 @@ func Register(ctx context.Context, kubernetes kubernetes.Interface, enabled, roo
} }
type handler struct { type handler struct {
rootless bool rootless bool
enabled bool enabled bool
nodeCache coreclient.NodeClientCache nodeCache coreclient.NodeClientCache
podCache coreclient.PodClientCache podCache coreclient.PodClientCache
processor *objectset.Processor deploymentCache appclient.DeploymentClientCache
serviceCache coreclient.ServiceClientCache processor *objectset.Processor
services coregetter.ServicesGetter serviceCache coreclient.ServiceClientCache
daemonsets v1getter.DaemonSetsGetter services coregetter.ServicesGetter
daemonsets v1getter.DaemonSetsGetter
deployments v1getter.DeploymentsGetter
} }
func (h *handler) onResourceChange(name, namespace string, obj runtime.Object) ([]changeset.Key, error) { func (h *handler) onResourceChange(name, namespace string, obj runtime.Object) ([]changeset.Key, error) {
...@@ -218,7 +222,9 @@ func (h *handler) podIPs(pods []*core.Pod) ([]string, error) { ...@@ -218,7 +222,9 @@ func (h *handler) podIPs(pods []*core.Pod) ([]string, error) {
} }
func (h *handler) deployPod(svc *core.Service) error { func (h *handler) deployPod(svc *core.Service) error {
if err := h.deleteOldDeployments(svc); err != nil {
return err
}
objs := objectset.NewObjectSet() objs := objectset.NewObjectSet()
if !h.enabled { if !h.enabled {
return h.processor.NewDesiredSet(svc, objs).Apply() return h.processor.NewDesiredSet(svc, objs).Apply()
...@@ -363,3 +369,14 @@ func (h *handler) updateDaemonSets() error { ...@@ -363,3 +369,14 @@ func (h *handler) updateDaemonSets() error {
return nil return nil
} }
func (h *handler) deleteOldDeployments(svc *core.Service) error {
name := fmt.Sprintf("svclb-%s", svc.Name)
if _, err := h.deploymentCache.Get(svc.Namespace, name); err != nil {
if errors.IsNotFound(err) {
return nil
}
return err
}
return h.deployments.Deployments(svc.Namespace).Delete(name, &meta.DeleteOptions{})
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment