test unmarshal configspec
Some checks are pending
CI / Lint (push) Waiting to run
CI / Test (push) Waiting to run
CI / End-to-End (push) Waiting to run
CI / Publish Docker (push) Blocked by required conditions
continuous-integration/drone/push Build is passing

This commit is contained in:
2024-09-25 20:48:29 +10:00
parent 3c5aa418df
commit fd64990e8e
3 changed files with 56 additions and 33 deletions

View File

@@ -24,6 +24,8 @@ func (h *Handler) VmModify(w http.ResponseWriter, r *http.Request) {
params := queries.CreateUpdateParams{}
var unixTimestamp int64
//re := regexp.MustCompile(`/([^/]+)/[^/]+\.vmdk$`)
reqBody, err := io.ReadAll(r.Body)
if err != nil {
h.Logger.Error("Invalid data received", "error", err)
@@ -52,7 +54,17 @@ func (h *Handler) VmModify(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusAccepted)
fmt.Fprintf(w, "Processed update event but no config changes were found\n")
} else {
h.Logger.Debug("Received event contains config change info", "source", event.CloudEvent.Source, "vm", event.CloudEvent.Data.VM.Name)
h.Logger.Debug("Received event contains config change info", "source", event.CloudEvent.Source,
"vm", event.CloudEvent.Data.VM.Name, "user_name", event.CloudEvent.Data.UserName)
// Try to decode the config changes data
var testConfig models.ConfigSpec
if err := json.Unmarshal(*event.CloudEvent.Data.ConfigSpec, &testConfig); err != nil {
h.Logger.Warn("unable to decode ConfigSpec json", "error", err)
} else {
h.Logger.Debug("successfully decoded ConfigSpec JSON")
}
configChanges = h.processConfigChanges(event.CloudEvent.Data.ConfigChanges.Modified)
//prettyPrint(configChanges)
@@ -85,6 +97,15 @@ func (h *Handler) VmModify(w http.ResponseWriter, r *http.Request) {
if strings.Contains(change["type"], "config.hardware.device") &&
strings.Contains(event.CloudEvent.Data.FullFormattedMessage, ".vmdk") {
// TODO - query current disk size from Inventory table and only create an update if the size is now changed
if testConfig.DeviceChange != nil {
for i := range testConfig.DeviceChange {
if testConfig.DeviceChange[i].Device.Backing != nil {
h.Logger.Debug("Found backing in configspec", "backing", testConfig.DeviceChange[i].Device.Backing)
}
}
}
// TODO - recalculate total disk size
h.Logger.Debug("Detected config change for VM disk")
found = true