From 9e086eb494441de0967b84d0f04d3b4dc7e753c2 Mon Sep 17 00:00:00 2001 From: Eric Multanen Date: Tue, 14 Apr 2020 20:51:50 -0700 Subject: Add code to apply workload network annotations Apply workload network intents to indicated resources in the AppContext. This will add/update network annotations for pods or resources that have pod templates. Issue-ID: MULTICLOUD-1029 Signed-off-by: Eric Multanen Change-Id: I9ae4387a8c28a95510406da361cfef3f8257bc80 --- src/ncm/api/api.go | 1 + src/ncm/api/netcontrolintenthandler.go | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) (limited to 'src/ncm/api') diff --git a/src/ncm/api/api.go b/src/ncm/api/api.go index 7892113a..2b105716 100644 --- a/src/ncm/api/api.go +++ b/src/ncm/api/api.go @@ -135,6 +135,7 @@ func NewRouter(testClient interface{}) *mux.Router { router.HandleFunc("/projects/{project}/composite-apps/{composite-app-name}/{version}/network-controller-intent/{name}", netcontrolintentHandler.putHandler).Methods("PUT") router.HandleFunc("/projects/{project}/composite-apps/{composite-app-name}/{version}/network-controller-intent/{name}", netcontrolintentHandler.getHandler).Methods("GET") router.HandleFunc("/projects/{project}/composite-apps/{composite-app-name}/{version}/network-controller-intent/{name}", netcontrolintentHandler.deleteHandler).Methods("DELETE") + router.HandleFunc("/projects/{project}/composite-apps/{composite-app-name}/{version}/network-controller-intent/{name}/apply", netcontrolintentHandler.applyHandler).Methods("POST") workloadintentHandler := workloadintentHandler{ client: setClient(moduleClient.WorkloadIntent, testClient).(moduleLib.WorkloadIntentManager), diff --git a/src/ncm/api/netcontrolintenthandler.go b/src/ncm/api/netcontrolintenthandler.go index c59a389b..48ef1de2 100644 --- a/src/ncm/api/netcontrolintenthandler.go +++ b/src/ncm/api/netcontrolintenthandler.go @@ -196,3 +196,35 @@ func (h netcontrolintentHandler) deleteHandler(w http.ResponseWriter, r *http.Re w.WriteHeader(http.StatusNoContent) } + +// Apply handles POST operations to Apply a particular NetControlIntent to the App Context +func (h netcontrolintentHandler) applyHandler(w http.ResponseWriter, r *http.Request) { + vars := mux.Vars(r) + name := vars["name"] + project := vars["project"] + compositeApp := vars["composite-app-name"] + compositeAppVersion := vars["version"] + + var aci struct { + AppContextId string `json:"appContextId"` + } + + err := json.NewDecoder(r.Body).Decode(&aci) + + switch { + case err == io.EOF: + http.Error(w, "Empty body", http.StatusBadRequest) + return + case err != nil: + http.Error(w, err.Error(), http.StatusUnprocessableEntity) + return + } + + err = h.client.ApplyNetControlIntent(name, project, compositeApp, compositeAppVersion, aci.AppContextId) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + w.WriteHeader(http.StatusNoContent) +} -- cgit 1.2.3-korg