From 2bae3e75410cd3194591e015d895825b03a91341 Mon Sep 17 00:00:00 2001 From: Nathan Coad Date: Wed, 25 Sep 2024 12:42:45 +1000 Subject: [PATCH] test converting import data to db params --- server/handler/vmImport.go | 29 ++++++++++++++++++++++++++++- server/models/models.go | 15 +++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/server/handler/vmImport.go b/server/handler/vmImport.go index d938f1b..3f0bf1d 100644 --- a/server/handler/vmImport.go +++ b/server/handler/vmImport.go @@ -1,21 +1,48 @@ package handler import ( + "encoding/json" "fmt" "io" "net/http" + "vctp/db" + queries "vctp/db/queries" + models "vctp/server/models" ) // VmImport is used for bulk import of existing VMs func (h *Handler) VmImport(w http.ResponseWriter, r *http.Request) { + reqBody, err := io.ReadAll(r.Body) if err != nil { + h.Logger.Error("Invalid data received", "error", err) fmt.Fprintf(w, "Invalid data received") w.WriteHeader(http.StatusInternalServerError) return + } else { + h.Logger.Debug("received input data", "length", len(reqBody)) } - h.Logger.Debug("received import request", "body", string(reqBody)) + // Decode the JSON body into CloudEventReceived struct + var inData models.ImportReceived + if err := json.Unmarshal(reqBody, &inData); err != nil { + h.Logger.Error("unable to decode json", "error", err) + http.Error(w, "Invalid JSON body", http.StatusBadRequest) + return + } else { + h.Logger.Debug("successfully decoded JSON") + prettyPrint(inData) + } + + // Create an instance of CreateInventoryParams + var params queries.CreateInventoryParams + + // Convert vmModel to CreateInventoryParams using the utility function + db.ConvertToSQLParams(&inData, ¶ms) + + prettyPrint(params) + + //h.Logger.Debug("received import request", "body", string(reqBody)) w.WriteHeader(http.StatusOK) fmt.Fprintf(w, "Import Request (%d): %v\n", len(reqBody), string(reqBody)) } diff --git a/server/models/models.go b/server/models/models.go index 282c731..dd9f8c8 100644 --- a/server/models/models.go +++ b/server/models/models.go @@ -64,6 +64,21 @@ type CloudEventReceived struct { } `json:"cloudEvent"` } +type ImportReceived struct { + Name string `json:"Name"` + Vcenter string `json:"Vcenter"` + VmId string `json:"VmId"` + InitialRam int `json:"InitialRam"` + PowerState int `json:"PowerState"` + CreationTime int `json:"CreationTime"` + InitialVcpus int `json:"InitialVcpus"` + ProvisionedDisk float64 `json:"ProvisionedDisk"` + Folder string `json:"Folder"` + ResourcePool string `json:"ResourcePool"` + Datacenter string `json:"Datacenter"` + Cluster string `json:"Cluster"` +} + type ConfigChangesReceived struct { Modified string `json:"modified"` }