@@ -195,6 +195,33 @@ func (service *HTTPRestService) GetPartitionKey() (dncPartitionKey string) {
195195 return
196196}
197197
198+ // Get the network info from the service network state
199+ func (service * HTTPRestService ) getNetworkInfo (networkName string ) (* networkInfo , bool ) {
200+ service .lock .Lock ()
201+ defer service .lock .Unlock ()
202+ networkInfo , found := service .state .Networks [networkName ]
203+
204+ return networkInfo , found
205+ }
206+
207+ // Set the network info in the service network state
208+ func (service * HTTPRestService ) setNetworkInfo (networkName string , networkInfo * networkInfo ) {
209+ service .lock .Lock ()
210+ defer service .lock .Unlock ()
211+ service .state .Networks [networkName ] = networkInfo
212+
213+ return
214+ }
215+
216+ // Remove the network info from the service network state
217+ func (service * HTTPRestService ) removeNetworkInfo (networkName string ) {
218+ service .lock .Lock ()
219+ defer service .lock .Unlock ()
220+ delete (service .state .Networks , networkName )
221+
222+ return
223+ }
224+
198225// Handles requests to set the environment type.
199226func (service * HTTPRestService ) setEnvironment (w http.ResponseWriter , r * http.Request ) {
200227 log .Printf ("[Azure CNS] setEnvironment" )
@@ -376,7 +403,7 @@ func (service *HTTPRestService) deleteNetwork(w http.ResponseWriter, r *http.Req
376403 err = service .Listener .Encode (w , & resp )
377404
378405 if returnCode == 0 {
379- delete ( service .state . Networks , req .NetworkName )
406+ service .removeNetworkInfo ( req .NetworkName )
380407 service .saveState ()
381408 }
382409
@@ -407,9 +434,7 @@ func (service *HTTPRestService) createHnsNetwork(w http.ResponseWriter, r *http.
407434 networkInfo := & networkInfo {
408435 NetworkName : req .NetworkName ,
409436 }
410- service .lock .Lock ()
411- service .state .Networks [req .NetworkName ] = networkInfo
412- service .lock .Unlock ()
437+ service .setNetworkInfo (req .NetworkName , networkInfo )
413438 returnMessage = fmt .Sprintf ("[Azure CNS] Successfully created HNS network: %s" , req .NetworkName )
414439 } else {
415440 returnMessage = fmt .Sprintf ("[Azure CNS] CreateHnsNetwork failed with error %v" , err .Error ())
@@ -429,9 +454,7 @@ func (service *HTTPRestService) createHnsNetwork(w http.ResponseWriter, r *http.
429454 err = service .Listener .Encode (w , & resp )
430455
431456 if returnCode == 0 {
432- service .lock .Lock ()
433457 service .saveState ()
434- service .lock .Unlock ()
435458 }
436459
437460 log .Response (service .Name , resp , resp .ReturnCode , ReturnCodeToString (resp .ReturnCode ), err )
@@ -455,9 +478,8 @@ func (service *HTTPRestService) deleteHnsNetwork(w http.ResponseWriter, r *http.
455478 } else {
456479 switch r .Method {
457480 case "POST" :
458- service .lock .Lock ()
459- networkInfo , ok := service .state .Networks [req .NetworkName ]
460- if ok && networkInfo .NetworkName == req .NetworkName {
481+ networkInfo , found := service .getNetworkInfo (req .NetworkName )
482+ if found && networkInfo .NetworkName == req .NetworkName {
461483 if err = platform .DeleteHnsNetwork (req .NetworkName ); err == nil {
462484 returnMessage = fmt .Sprintf ("[Azure CNS] Successfully deleted HNS network: %s" , req .NetworkName )
463485 } else {
@@ -468,7 +490,6 @@ func (service *HTTPRestService) deleteHnsNetwork(w http.ResponseWriter, r *http.
468490 returnMessage = fmt .Sprintf ("[Azure CNS] Network %s not found" , req .NetworkName )
469491 returnCode = InvalidParameter
470492 }
471- service .lock .Unlock ()
472493 default :
473494 returnMessage = "[Azure CNS] Error. DeleteHnsNetwork did not receive a POST."
474495 returnCode = InvalidParameter
@@ -483,10 +504,8 @@ func (service *HTTPRestService) deleteHnsNetwork(w http.ResponseWriter, r *http.
483504 err = service .Listener .Encode (w , & resp )
484505
485506 if returnCode == 0 {
486- service .lock .Lock ()
487- delete (service .state .Networks , req .NetworkName )
507+ service .removeNetworkInfo (req .NetworkName )
488508 service .saveState ()
489- service .lock .Unlock ()
490509 }
491510
492511 log .Response (service .Name , resp , resp .ReturnCode , ReturnCodeToString (resp .ReturnCode ), err )
0 commit comments