diff --git a/cns/cnsclient/cnsclient.go b/cns/cnsclient/cnsclient.go index e7e40f1e81..06954565d8 100644 --- a/cns/cnsclient/cnsclient.go +++ b/cns/cnsclient/cnsclient.go @@ -218,7 +218,7 @@ func (cnsClient *CNSClient) RequestIPAddress(orchestratorContext []byte) (*cns.G httpc := &http.Client{} url := cnsClient.connectionURL + cns.RequestIPConfig - payload := &cns.GetNetworkContainerRequest{ + payload := &cns.GetIPConfigRequest{ OrchestratorContext: orchestratorContext, } @@ -268,7 +268,7 @@ func (cnsClient *CNSClient) ReleaseIPAddress(orchestratorContext []byte) error { url := cnsClient.connectionURL + cns.ReleaseIPConfig log.Printf("ReleaseIPAddress url %v", url) - payload := &cns.GetNetworkContainerRequest{ + payload := &cns.GetIPConfigRequest{ OrchestratorContext: orchestratorContext, } diff --git a/cns/cnsclient/cnsclient_test.go b/cns/cnsclient/cnsclient_test.go index 2b7747f1af..689cb45ece 100644 --- a/cns/cnsclient/cnsclient_test.go +++ b/cns/cnsclient/cnsclient_test.go @@ -108,11 +108,15 @@ func TestMain(m *testing.M) { defer os.RemoveAll(tmpLogDir) defer os.Remove(tmpFileState.Name()) + logName := "azure-cns.log" + fmt.Printf("Test logger file: %v", tmpLogDir+"/"+logName) + fmt.Printf("Test state :%v", tmpFileState.Name()) + if err != nil { panic(err) } - logger.InitLogger("azure-cns.log", 0, 0, tmpLogDir) + logger.InitLogger(logName, 0, 0, tmpLogDir+"/") config := common.ServiceConfig{} httpRestService, err := restserver.NewHTTPRestService(&config) diff --git a/cns/restserver/ipam.go b/cns/restserver/ipam.go index 4ae8eebb45..ad36a5f040 100644 --- a/cns/restserver/ipam.go +++ b/cns/restserver/ipam.go @@ -30,7 +30,7 @@ func (service *HTTPRestService) requestIPConfigHandler(w http.ResponseWriter, r } // retrieve ipconfig from nc - returnCode, returnMessage = service.validateIpConfigRequest(ipconfigRequest) + _, returnCode, returnMessage = service.validateIpConfigRequest(ipconfigRequest) if returnCode == Success { if ipconfiguration, err = requestIPConfigHelper(service, ipconfigRequest); err != nil { returnCode = FailedToAllocateIpConfig @@ -54,7 +54,6 @@ func (service *HTTPRestService) requestIPConfigHandler(w http.ResponseWriter, r func (service *HTTPRestService) releaseIPConfigHandler(w http.ResponseWriter, r *http.Request) { var ( - podInfo cns.KubernetesPodInfo req cns.GetIPConfigRequest statusCode int returnMessage string @@ -81,7 +80,7 @@ func (service *HTTPRestService) releaseIPConfigHandler(w http.ResponseWriter, r logger.Response(service.Name, resp, resp.ReturnCode, ReturnCodeToString(resp.ReturnCode), err) }() - statusCode, returnMessage = service.validateIpConfigRequest(req) + podInfo, statusCode, returnMessage := service.validateIpConfigRequest(req) if err = service.releaseIPConfig(podInfo); err != nil { statusCode = NotFound @@ -146,12 +145,14 @@ func (service *HTTPRestService) releaseIPConfig(podInfo cns.KubernetesPodInfo) e if ipID != "" { if ipconfig, isExist := service.PodIPConfigState[ipID]; isExist { service.setIPConfigAsAvailable(ipconfig, podInfo) + logger.Printf("Released IP %+v for pod %+v", ipconfig.IPSubnet, podInfo) + } else { logger.Errorf("Failed to get release ipconfig. Pod to IPID exists, but IPID to IPConfig doesn't exist, CNS State potentially corrupt") return fmt.Errorf("releaseIPConfig failed. Pod to IPID exists, but IPID to IPConfig doesn't exist, CNS State potentially corrupt") } } else { - logger.Printf("SetIPConfigAsAvailable failed to release, no allocation found for pod") + logger.Errorf("SetIPConfigAsAvailable failed to release, no allocation found for pod") return nil } return nil diff --git a/cns/restserver/util.go b/cns/restserver/util.go index 836cab42dc..88637e569c 100644 --- a/cns/restserver/util.go +++ b/cns/restserver/util.go @@ -622,22 +622,23 @@ func (service *HTTPRestService) SendNCSnapShotPeriodically(ncSnapshotIntervalInM } } -func (service *HTTPRestService) validateIpConfigRequest(ipConfigRequest cns.GetIPConfigRequest) (int, string) { +func (service *HTTPRestService) validateIpConfigRequest(ipConfigRequest cns.GetIPConfigRequest) (cns.KubernetesPodInfo, int, string) { + var podInfo cns.KubernetesPodInfo + if service.state.OrchestratorType != cns.KubernetesCRD { - return UnsupportedOrchestratorType, fmt.Sprintf("ReleaseIPConfig API supported only for kubernetes orchestrator") + return podInfo, UnsupportedOrchestratorType, fmt.Sprintf("ReleaseIPConfig API supported only for kubernetes orchestrator") } if ipConfigRequest.OrchestratorContext == nil { - return EmptyOrchestratorContext, fmt.Sprintf("OrchastratorContext is not set in the req: %+v", ipConfigRequest) + return podInfo, EmptyOrchestratorContext, fmt.Sprintf("OrchastratorContext is not set in the req: %+v", ipConfigRequest) } // retrieve podinfo from orchestrator context - var podInfo cns.KubernetesPodInfo if err := json.Unmarshal(ipConfigRequest.OrchestratorContext, &podInfo); err != nil { - return UnsupportedOrchestratorContext, err.Error() + return podInfo, UnsupportedOrchestratorContext, err.Error() } - return Success, "" + return podInfo, Success, "" } func (service *HTTPRestService) populateIpConfigInfoFromNCUntransacted(ncId string, ipConfiguration *cns.IPConfiguration) error {