|
@@ -3,6 +3,7 @@ package controller
|
|
import (
|
|
import (
|
|
"encoding/json"
|
|
"encoding/json"
|
|
"net/http"
|
|
"net/http"
|
|
|
|
+ "time"
|
|
|
|
|
|
"github.com/gorilla/mux"
|
|
"github.com/gorilla/mux"
|
|
"github.com/gravitl/netmaker/logger"
|
|
"github.com/gravitl/netmaker/logger"
|
|
@@ -44,20 +45,44 @@ func getAllTags(w http.ResponseWriter, r *http.Request) {
|
|
// @Success 200 {array} models.SuccessResponse
|
|
// @Success 200 {array} models.SuccessResponse
|
|
// @Failure 500 {object} models.ErrorResponse
|
|
// @Failure 500 {object} models.ErrorResponse
|
|
func createTag(w http.ResponseWriter, r *http.Request) {
|
|
func createTag(w http.ResponseWriter, r *http.Request) {
|
|
- var tag models.Tag
|
|
|
|
- err := json.NewDecoder(r.Body).Decode(&tag)
|
|
|
|
|
|
+ var req models.CreateTagReq
|
|
|
|
+ err := json.NewDecoder(r.Body).Decode(&req)
|
|
if err != nil {
|
|
if err != nil {
|
|
logger.Log(0, "error decoding request body: ",
|
|
logger.Log(0, "error decoding request body: ",
|
|
err.Error())
|
|
err.Error())
|
|
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
|
|
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
+ user, err := logic.GetUser(r.Header.Get("user"))
|
|
|
|
+ if err != nil {
|
|
|
|
+ logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ go func() {
|
|
|
|
+ for _, hostID := range req.TaggedHosts {
|
|
|
|
+ h, err := logic.GetHost(hostID)
|
|
|
|
+ if err != nil {
|
|
|
|
+ continue
|
|
|
|
+ }
|
|
|
|
+ if h.Tags == nil {
|
|
|
|
+ h.Tags = make(map[models.TagID]struct{})
|
|
|
|
+ }
|
|
|
|
+ h.Tags[req.ID] = struct{}{}
|
|
|
|
+ logic.UpsertHost(h)
|
|
|
|
+ }
|
|
|
|
+ }()
|
|
|
|
+
|
|
|
|
+ tag := models.Tag{
|
|
|
|
+ ID: req.ID,
|
|
|
|
+ CreatedBy: user.UserName,
|
|
|
|
+ CreatedAt: time.Now(),
|
|
|
|
+ }
|
|
err = logic.InsertTag(tag)
|
|
err = logic.InsertTag(tag)
|
|
if err != nil {
|
|
if err != nil {
|
|
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
|
|
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
|
|
return
|
|
return
|
|
}
|
|
}
|
|
- logic.ReturnSuccessResponseWithJson(w, r, tag, "created tag successfully")
|
|
|
|
|
|
+ logic.ReturnSuccessResponseWithJson(w, r, req, "created tag successfully")
|
|
}
|
|
}
|
|
|
|
|
|
// @Summary Update Tag
|
|
// @Summary Update Tag
|
|
@@ -75,6 +100,11 @@ func updateTag(w http.ResponseWriter, r *http.Request) {
|
|
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
|
|
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
+ _, err = logic.GetTag(updateTag.ID)
|
|
|
|
+ if err != nil {
|
|
|
|
+ logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
|
|
|
|
+ return
|
|
|
|
+ }
|
|
go logic.UpdateTag(updateTag)
|
|
go logic.UpdateTag(updateTag)
|
|
logic.ReturnSuccessResponse(w, r, "updating tags")
|
|
logic.ReturnSuccessResponse(w, r, "updating tags")
|
|
}
|
|
}
|