updated to better handle all responses from the provisioner as well as add more debugging information
Change-Id: I217df62b42c339b387f65bc6c6bf7a1bc56fa3ed
diff --git a/automation/state.go b/automation/state.go
index 30d3f06..5890b31 100644
--- a/automation/state.go
+++ b/automation/state.go
@@ -169,12 +169,12 @@
}
record, err := options.ProvTracker.Get(node.ID())
- if options.Verbose {
- log.Printf("[info] Current state of node '%s' is '%s'", node.Hostname(), record.State.String())
- }
if err != nil {
log.Printf("[warn] unable to retrieve provisioning state of node '%s' : %s", node.Hostname(), err)
} else if record.State == Unprovisioned || record.State == ProvisionError {
+ if options.Verbose {
+ log.Printf("[info] Current state of node '%s' is '%s'", node.Hostname(), record.State.String())
+ }
var err error = nil
var callout *url.URL
log.Printf("PROVISION '%s'", node.Hostname())
@@ -298,6 +298,9 @@
node.Hostname(), err)
} else {
defer resp.Body.Close()
+ if options.Verbose {
+ log.Printf("[debug] Got status '%s' for node '%s'", resp.Status, node.Hostname())
+ }
switch resp.StatusCode {
case http.StatusOK: // provisioning completed or failed
decoder := json.NewDecoder(resp.Body)
@@ -331,6 +334,8 @@
}
case http.StatusAccepted: // in the provisioning state
// Noop, presumably alread in this state
+ case http.StatusNotFound:
+ // Noop, but not an error
default: // Consider anything else an erorr
log.Printf("[warn] Node '%s' with ID '%s' failed provisioning, will retry",
node.Hostname(), node.ID())