@@ -50,7 +50,7 @@ func newNs(name string) (*Namespace, error) {
5050 return ns , nil
5151}
5252
53- func getNamespaceObjFromNsObj (nsObj * Namespace ) * corev1.Namespace {
53+ func (nsObj * Namespace ) getNamespaceObjFromNsObj ( ) * corev1.Namespace {
5454 return & corev1.Namespace {
5555 ObjectMeta : metav1.ObjectMeta {
5656 Name : nsObj .name ,
@@ -60,7 +60,7 @@ func getNamespaceObjFromNsObj(nsObj *Namespace) *corev1.Namespace {
6060}
6161
6262// setResourceVersion setter func for RV
63- func setResourceVersion (nsObj * Namespace , rv string ) {
63+ func (nsObj * Namespace ) setResourceVersion ( rv string ) {
6464 nsObj .resourceVersion = util .ParseResourceVersion (rv )
6565}
6666
@@ -103,15 +103,14 @@ func (nsc *nameSpaceController) needSync(obj interface{}, event string) (string,
103103
104104 nsObj , ok := obj .(* corev1.Namespace )
105105 if ! ok {
106- metrics .SendErrorLogAndMetric (util .NSID , "%s Pod: Received unexpected object type: %v" , event , obj )
106+ metrics .SendErrorLogAndMetric (util .NSID , "[NAMESPACE %s EVENT] Received unexpected object type: %v" , event , obj )
107107 return key , needSync
108108 }
109109
110110 var err error
111111 if key , err = cache .MetaNamespaceKeyFunc (obj ); err != nil {
112112 utilruntime .HandleError (err )
113- err = fmt .Errorf ("[%sNameSpace] Error: nameSpaceKey is empty for %s namespace" , event , util .GetNSNameWithPrefix (nsObj .Name ))
114- metrics .SendErrorLogAndMetric (util .NSID , err .Error ())
113+ metrics .SendErrorLogAndMetric (util .NSID , "[NAMESPACE %s EVENT] Error: NameSpaceKey is empty for %s namespace" , event , util .GetNSNameWithPrefix (nsObj .Name ))
115114 return key , needSync
116115 }
117116
@@ -147,17 +146,15 @@ func (nsc *nameSpaceController) updateNamespace(old, new interface{}) {
147146 }
148147
149148 nsKey := util .GetNSNameWithPrefix (key )
149+
150150 nsc .npMgr .Lock ()
151151 defer nsc .npMgr .Unlock ()
152152 cachedNsObj , nsExists := nsc .npMgr .NsMap [nsKey ]
153- if ! nsExists {
154- nsc .workqueue .Add (key )
155- return
156- }
157-
158- if reflect .DeepEqual (cachedNsObj .LabelsMap , nsObj .ObjectMeta .Labels ) {
159- log .Logf ("[NAMESPACE UPDATE EVENT] Namespace [%s] labels did not change" , key )
160- return
153+ if nsExists {
154+ if reflect .DeepEqual (cachedNsObj .LabelsMap , nsObj .ObjectMeta .Labels ) {
155+ log .Logf ("[NAMESPACE UPDATE EVENT] Namespace [%s] labels did not change" , key )
156+ return
157+ }
161158 }
162159
163160 nsc .workqueue .Add (key )
@@ -186,8 +183,7 @@ func (nsc *nameSpaceController) deleteNamespace(obj interface{}) {
186183 var key string
187184 if key , err = cache .MetaNamespaceKeyFunc (obj ); err != nil {
188185 utilruntime .HandleError (err )
189- err = fmt .Errorf ("[NAMESPACE DELETE EVENT] Error: nameSpaceKey is empty for %s namespace" , util .GetNSNameWithPrefix (nsObj .Name ))
190- metrics .SendErrorLogAndMetric (util .NSID , err .Error ())
186+ metrics .SendErrorLogAndMetric (util .NSID , "[NAMESPACE DELETE EVENT] Error: nameSpaceKey is empty for %s namespace" , util .GetNSNameWithPrefix (nsObj .Name ))
191187 return
192188 }
193189
@@ -197,7 +193,7 @@ func (nsc *nameSpaceController) deleteNamespace(obj interface{}) {
197193 nsKey := util .GetNSNameWithPrefix (key )
198194 _ , nsExists := nsc .npMgr .NsMap [nsKey ]
199195 if ! nsExists {
200- log .Logf ("[NAMESPACE Delete EVENT] Namespace [%s] does not exist in case, so returning" , key )
196+ log .Logf ("[NAMESPACE DELETE EVENT] Namespace [%s] does not exist in case, so returning" , key )
201197 return
202198 }
203199
@@ -208,11 +204,9 @@ func (nsc *nameSpaceController) Run(threadiness int, stopCh <-chan struct{}) err
208204 defer utilruntime .HandleCrash ()
209205 defer nsc .workqueue .ShutDown ()
210206
211- // Start the informer factories to begin populating the informer caches
212207 log .Logf ("Starting Namespace controller\n " )
213-
214208 log .Logf ("Starting workers" )
215- // Launch two workers to process namespace resources
209+ // Launch workers to process namespace resources
216210 for i := 0 ; i < threadiness ; i ++ {
217211 go wait .Until (nsc .runWorker , time .Second , stopCh )
218212 }
@@ -248,7 +242,7 @@ func (nsc *nameSpaceController) processNextWorkItem() bool {
248242 utilruntime .HandleError (fmt .Errorf ("expected string in workqueue but got %#v" , obj ))
249243 return nil
250244 }
251- // Run the syncHandler , passing it the namespace string of the
245+ // Run the syncNameSpace , passing it the namespace string of the
252246 // resource to be synced.
253247 // TODO : may consider using "c.queue.AddAfter(key, *requeueAfter)" according to error type later
254248 if err := nsc .syncNameSpace (key ); err != nil {
@@ -283,7 +277,7 @@ func (nsc *nameSpaceController) syncNameSpace(key string) error {
283277 if err != nil {
284278 if errors .IsNotFound (err ) {
285279 utilruntime .HandleError (fmt .Errorf ("NameSpace '%s' in work queue no longer exists" , key ))
286- // find the namespace object from a local cache and start cleaning up process (calling cleanUpDeletedPod function)
280+ // find the namespace object from a local cache and start cleaning up process (calling cleanDeletedNamespace function)
287281 nsKey := util .GetNSNameWithPrefix (key )
288282 cachedNs , found := nsc .npMgr .NsMap [nsKey ]
289283 // if the namespace does not exists, we do not need to clean up process and retry it
@@ -303,17 +297,15 @@ func (nsc *nameSpaceController) syncNameSpace(key string) error {
303297 }
304298
305299 if nsObj .DeletionTimestamp != nil || nsObj .DeletionGracePeriodSeconds != nil {
306- return nsc .cleanDeletedNamespace (
307- util .GetNSNameWithPrefix (nsObj .Name ),
308- nsObj .Labels ,
309- )
300+ return nsc .cleanDeletedNamespace (util .GetNSNameWithPrefix (nsObj .Name ), nsObj .Labels )
310301
311302 }
312303
313304 err = nsc .syncUpdateNameSpace (nsObj )
314305 // 1. deal with error code and retry this
315306 if err != nil {
316- return fmt .Errorf ("failed to sync namespace due to %s" , err .Error ())
307+ metrics .SendErrorLogAndMetric (util .NSID , "[syncNameSpace] failed to sync namespace due to %s" , err .Error ())
308+ return err
317309 }
318310
319311 return nil
@@ -383,11 +375,8 @@ func (nsc *nameSpaceController) syncAddNameSpace(nsObj *corev1.Namespace) error
383375 }
384376 }
385377
386- ns , err := newNs (nsName )
387- if err != nil {
388- metrics .SendErrorLogAndMetric (util .NSID , "[AddNamespace] Error: failed to create namespace %s with err: %v" , nsName , err )
389- }
390- setResourceVersion (ns , nsObj .GetObjectMeta ().GetResourceVersion ())
378+ ns , _ := newNs (nsName )
379+ ns .setResourceVersion (nsObj .GetObjectMeta ().GetResourceVersion ())
391380
392381 // Append all labels to the cache NS obj
393382 ns .LabelsMap = util .AppendMap (ns .LabelsMap , nsLabel )
@@ -444,16 +433,14 @@ func (nsc *nameSpaceController) syncUpdateNameSpace(newNsObj *corev1.Namespace)
444433
445434 // Append all labels to the cache NS obj
446435 curNsObj .LabelsMap = util .ClearAndAppendMap (curNsObj .LabelsMap , newNsLabel )
447- setResourceVersion (curNsObj , newNsObj .GetObjectMeta ().GetResourceVersion ())
436+ curNsObj . setResourceVersion (newNsObj .GetObjectMeta ().GetResourceVersion ())
448437 nsc .npMgr .NsMap [newNsNs ] = curNsObj
449438
450439 return nil
451440}
452441
453442// cleanDeletedNamespace handles deleting namespace from ipset.
454443func (nsc * nameSpaceController ) cleanDeletedNamespace (nsName string , nsLabel map [string ]string ) error {
455- var err error
456-
457444 log .Logf ("NAMESPACE DELETING: [%s/%v]" , nsName , nsLabel )
458445
459446 cachedNsObj , exists := nsc .npMgr .NsMap [nsName ]
@@ -462,9 +449,11 @@ func (nsc *nameSpaceController) cleanDeletedNamespace(nsName string, nsLabel map
462449 }
463450
464451 log .Logf ("NAMESPACE DELETING cached labels: [%s/%v]" , nsName , cachedNsObj .LabelsMap )
465- // Delete the namespace from its label's ipset list.
452+
453+ var err error
466454 ipsMgr := nsc .npMgr .NsMap [util .KubeAllNamespacesFlag ].IpsMgr
467455 nsLabels := util .GetIPSetListFromLabels (cachedNsObj .LabelsMap )
456+ // Delete the namespace from its label's ipset list.
468457 for _ , nsLabelKey := range nsLabels {
469458 labelKey := util .GetNSNameWithPrefix (nsLabelKey )
470459 log .Logf ("Deleting namespace %s from ipset list %s" , nsName , labelKey )
0 commit comments