88
99 "github.com/deckhouse/deckhouse/pkg/log"
1010
11- pkg "github.com/flant/shell-operator/pkg"
11+ "github.com/flant/shell-operator/pkg"
1212 bctx "github.com/flant/shell-operator/pkg/hook/binding_context"
1313 htypes "github.com/flant/shell-operator/pkg/hook/types"
1414 kubeeventsmanager "github.com/flant/shell-operator/pkg/kube_events_manager"
@@ -27,6 +27,7 @@ type KubernetesBindingsController interface {
2727 WithKubernetesBindings ([]htypes.OnKubernetesEventConfig )
2828 WithKubeEventsManager (kubeeventsmanager.KubeEventsSource )
2929 EnableKubernetesBindings () ([]BindingExecutionInfo , error )
30+ DisableKubernetesBindings ()
3031 UpdateMonitor (monitorId string , kind , apiVersion string ) error
3132 UnlockEvents ()
3233 UnlockEventsFor (monitorID string )
@@ -82,6 +83,12 @@ func (c *kubernetesBindingsController) WithKubeEventsManager(kubeEventsManager k
8283func (c * kubernetesBindingsController ) EnableKubernetesBindings () ([]BindingExecutionInfo , error ) {
8384 res := make ([]BindingExecutionInfo , 0 )
8485
86+ c .l .Lock ()
87+ if len (c .BindingMonitorLinks ) > 0 {
88+ return res , nil
89+ }
90+ c .l .Unlock ()
91+
8592 for _ , config := range c .KubernetesBindings {
8693 err := c .kubeEventsManager .AddMonitor (config .Monitor )
8794 if err != nil {
@@ -182,6 +189,16 @@ func (c *kubernetesBindingsController) StopMonitors() {
182189 })
183190}
184191
192+ func (c * kubernetesBindingsController ) DisableKubernetesBindings () {
193+ c .l .Lock ()
194+ defer c .l .Unlock ()
195+
196+ for _ , binding := range c .BindingMonitorLinks {
197+ _ = c .kubeEventsManager .StopMonitor (binding .MonitorId )
198+ delete (c .BindingMonitorLinks , binding .MonitorId )
199+ }
200+ }
201+
185202func (c * kubernetesBindingsController ) CanHandleEvent (kubeEvent kemtypes.KubeEvent ) bool {
186203 var canHandleEvent bool
187204
0 commit comments