cleanups and code fixes incl templ
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
package handler
|
||||
|
||||
import (
|
||||
"context"
|
||||
"database/sql"
|
||||
"net/http"
|
||||
"time"
|
||||
"vctp/db/queries"
|
||||
"vctp/internal/vcenter"
|
||||
)
|
||||
@@ -17,6 +19,11 @@ import (
|
||||
// @Failure 500 {object} models.ErrorResponse "Server error"
|
||||
// @Router /api/inventory/vm/update [post]
|
||||
func (h *Handler) VmUpdateDetails(w http.ResponseWriter, r *http.Request) {
|
||||
if r.Method != http.MethodPost {
|
||||
writeJSONError(w, http.StatusMethodNotAllowed, "method not allowed")
|
||||
return
|
||||
}
|
||||
|
||||
if h.denyLegacyAPI(w, "/api/inventory/vm/update") {
|
||||
return
|
||||
}
|
||||
@@ -31,20 +38,42 @@ func (h *Handler) VmUpdateDetails(w http.ResponseWriter, r *http.Request) {
|
||||
defer cancel()
|
||||
|
||||
// reload settings in case vcenter list has changed
|
||||
h.Settings.ReadYMLSettings()
|
||||
if err := h.Settings.ReadYMLSettings(); err != nil {
|
||||
h.Logger.Error("unable to reload settings", "error", err)
|
||||
writeJSONError(w, http.StatusInternalServerError, "Unable to reload settings")
|
||||
return
|
||||
}
|
||||
|
||||
for _, url := range h.Settings.Values.Settings.VcenterAddresses {
|
||||
h.Logger.Debug("connecting to vcenter", "url", url)
|
||||
vc := vcenter.New(h.Logger, h.VcCreds)
|
||||
vc.Login(url)
|
||||
if err := vc.Login(url); err != nil {
|
||||
h.Logger.Error("unable to connect to vcenter", "url", url, "error", err)
|
||||
writeJSONError(w, http.StatusInternalServerError, "Unable to connect to vcenter")
|
||||
return
|
||||
}
|
||||
logout := func() {
|
||||
logoutCtx, cancel := context.WithTimeout(context.WithoutCancel(ctx), 5*time.Second)
|
||||
defer cancel()
|
||||
if err := vc.Logout(logoutCtx); err != nil {
|
||||
h.Logger.Warn("vcenter logout failed", "url", url, "error", err)
|
||||
}
|
||||
}
|
||||
|
||||
// Get list of VMs from vcenter
|
||||
vms, err := vc.GetAllVmReferences()
|
||||
if err != nil {
|
||||
logout()
|
||||
h.Logger.Error("Unable to query vcenter VM references", "url", url, "error", err)
|
||||
writeJSONError(w, http.StatusInternalServerError, "Unable to query vcenter VM references")
|
||||
return
|
||||
}
|
||||
|
||||
// Get list of VMs from inventory table
|
||||
h.Logger.Debug("Querying inventory table")
|
||||
results, err := h.Database.Queries().GetInventoryByVcenter(ctx, url)
|
||||
if err != nil {
|
||||
logout()
|
||||
h.Logger.Error("Unable to query inventory table", "error", err)
|
||||
writeJSONError(w, http.StatusInternalServerError, "Unable to query inventory table")
|
||||
return
|
||||
@@ -116,6 +145,7 @@ func (h *Handler) VmUpdateDetails(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
}
|
||||
logout()
|
||||
}
|
||||
|
||||
h.Logger.Debug("Processed vm update successfully")
|
||||
|
||||
Reference in New Issue
Block a user