|
@@ -23,6 +23,7 @@ func networkHandlers(r *mux.Router) {
|
|
|
r.HandleFunc("/api/networks", logic.SecurityCheck(true, checkFreeTierLimits(networks_l, http.HandlerFunc(createNetwork)))).Methods(http.MethodPost)
|
|
r.HandleFunc("/api/networks", logic.SecurityCheck(true, checkFreeTierLimits(networks_l, http.HandlerFunc(createNetwork)))).Methods(http.MethodPost)
|
|
|
r.HandleFunc("/api/networks/{networkname}", logic.SecurityCheck(false, http.HandlerFunc(getNetwork))).Methods(http.MethodGet)
|
|
r.HandleFunc("/api/networks/{networkname}", logic.SecurityCheck(false, http.HandlerFunc(getNetwork))).Methods(http.MethodGet)
|
|
|
r.HandleFunc("/api/networks/{networkname}", logic.SecurityCheck(true, http.HandlerFunc(deleteNetwork))).Methods(http.MethodDelete)
|
|
r.HandleFunc("/api/networks/{networkname}", logic.SecurityCheck(true, http.HandlerFunc(deleteNetwork))).Methods(http.MethodDelete)
|
|
|
|
|
+ r.HandleFunc("/api/networks/{networkname}", logic.SecurityCheck(true, http.HandlerFunc(updateNetwork))).Methods(http.MethodPut)
|
|
|
// ACLs
|
|
// ACLs
|
|
|
r.HandleFunc("/api/networks/{networkname}/acls", logic.SecurityCheck(true, http.HandlerFunc(updateNetworkACL))).Methods(http.MethodPut)
|
|
r.HandleFunc("/api/networks/{networkname}/acls", logic.SecurityCheck(true, http.HandlerFunc(updateNetworkACL))).Methods(http.MethodPut)
|
|
|
r.HandleFunc("/api/networks/{networkname}/acls", logic.SecurityCheck(true, http.HandlerFunc(getNetworkACL))).Methods(http.MethodGet)
|
|
r.HandleFunc("/api/networks/{networkname}/acls", logic.SecurityCheck(true, http.HandlerFunc(getNetworkACL))).Methods(http.MethodGet)
|
|
@@ -282,3 +283,57 @@ func createNetwork(w http.ResponseWriter, r *http.Request) {
|
|
|
w.WriteHeader(http.StatusOK)
|
|
w.WriteHeader(http.StatusOK)
|
|
|
json.NewEncoder(w).Encode(network)
|
|
json.NewEncoder(w).Encode(network)
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+// swagger:route PUT /api/networks networks updateNetwork
|
|
|
|
|
+//
|
|
|
|
|
+// Create a network.
|
|
|
|
|
+//
|
|
|
|
|
+// Schemes: https
|
|
|
|
|
+//
|
|
|
|
|
+// Security:
|
|
|
|
|
+// oauth
|
|
|
|
|
+//
|
|
|
|
|
+// Responses:
|
|
|
|
|
+// 200: networkBodyResponse
|
|
|
|
|
+func updateNetwork(w http.ResponseWriter, r *http.Request) {
|
|
|
|
|
+
|
|
|
|
|
+ w.Header().Set("Content-Type", "application/json")
|
|
|
|
|
+
|
|
|
|
|
+ var netNew models.Network
|
|
|
|
|
+
|
|
|
|
|
+ // we decode our body request params
|
|
|
|
|
+ err := json.NewDecoder(r.Body).Decode(&netNew)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ logger.Log(0, r.Header.Get("user"), "error decoding request body: ",
|
|
|
|
|
+ err.Error())
|
|
|
|
|
+ logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if netNew.AddressRange == "" && netNew.AddressRange6 == "" {
|
|
|
|
|
+ err := errors.New("IPv4 or IPv6 CIDR required")
|
|
|
|
|
+ logger.Log(0, r.Header.Get("user"), "failed to create netNew: ",
|
|
|
|
|
+ err.Error())
|
|
|
|
|
+ logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ netOld, err := logic.GetNetwork(netNew.NetID)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ logger.Log(0, r.Header.Get("user"), "error fetching network: ",
|
|
|
|
|
+ err.Error())
|
|
|
|
|
+ logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ _, _, _, _, _, err = logic.UpdateNetwork(&netOld, &netNew)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ logger.Log(0, r.Header.Get("user"), "failed to update netNew: ",
|
|
|
|
|
+ err.Error())
|
|
|
|
|
+ logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ logger.Log(1, r.Header.Get("user"), "updated netNew", netNew.NetID)
|
|
|
|
|
+ w.WriteHeader(http.StatusOK)
|
|
|
|
|
+ json.NewEncoder(w).Encode(netNew)
|
|
|
|
|
+}
|