Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion cns/nmagentclient/nmagentclient.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,11 @@ import (
)

const (
WireserverIP = "168.63.129.16"
GetNetworkContainerVersionURLFmt = "http://%s/machine/plugins/?comp=nmagent&type=NetworkManagement/interfaces/%s/networkContainers/%s/version/authenticationToken/%s/api-version/1"
)

var WireserverIP = "168.63.129.16"

// NMANetworkContainerResponse - NMAgent response.
type NMANetworkContainerResponse struct {
ResponseCode string `json:"httpStatusCode"`
Expand Down
24 changes: 24 additions & 0 deletions cns/restserver/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -1128,6 +1128,16 @@ func (service *HTTPRestService) getNumberOfCPUCores(w http.ResponseWriter, r *ht
logger.Response(service.Name, numOfCPUCoresResp, resp.ReturnCode, ReturnCodeToString(resp.ReturnCode), err)
}

func getInterfaceIdFromCreateNetworkContainerURL(
createNetworkContainerURL string) string {
return strings.Split(strings.Split(createNetworkContainerURL, "interfaces/")[1], "/")[0]
}

func getAuthTokenFromCreateNetworkContainerURL(
createNetworkContainerURL string) string {
return strings.Split(strings.Split(createNetworkContainerURL, "authenticationToken/")[1], "/")[0]
}

// Publish Network Container by calling nmagent
func (service *HTTPRestService) publishNetworkContainer(w http.ResponseWriter, r *http.Request) {
logger.Printf("[Azure-CNS] PublishNetworkContainer")
Expand Down Expand Up @@ -1184,6 +1194,17 @@ func (service *HTTPRestService) publishNetworkContainer(w http.ResponseWriter, r
logger.Errorf("[Azure-CNS] %s", returnMessage)
}
}

// Store ncGetVersionURL needed for calling NMAgent to check if vfp programming is completed for the NC
primaryInterfaceIdentifier := getInterfaceIdFromCreateNetworkContainerURL(req.CreateNetworkContainerURL)
authToken := getAuthTokenFromCreateNetworkContainerURL(req.CreateNetworkContainerURL)
ncGetVersionURL := fmt.Sprintf(nmagentclient.GetNetworkContainerVersionURLFmt,
nmagentclient.WireserverIP,
primaryInterfaceIdentifier,
req.NetworkContainerID,
authToken)
ncVersionURLs.Store(cns.SwiftPrefix+req.NetworkContainerID, ncGetVersionURL)

default:
returnMessage = "PublishNetworkContainer API expects a POST"
returnCode = UnsupportedVerb
Expand Down Expand Up @@ -1291,6 +1312,9 @@ func (service *HTTPRestService) unpublishNetworkContainer(w http.ResponseWriter,
unpublishResponse.Body.Close()
}
}

// Remove the NC version URL entry added during publish
ncVersionURLs.Delete(cns.SwiftPrefix + req.NetworkContainerID)
default:
returnMessage = "UnpublishNetworkContainer API expects a POST"
returnCode = UnsupportedVerb
Expand Down
Loading