Addressing PR remarks

This commit is contained in:
jasminSPC 2016-09-14 15:05:45 +02:00
parent 325401eaf0
commit 2008c6019a
2 changed files with 19 additions and 4 deletions

View File

@ -1,6 +1,7 @@
package profitbricks
import (
"encoding/json"
"errors"
"fmt"
"github.com/mitchellh/multistep"
@ -62,7 +63,7 @@ func (s *stepCreateServer) Run(state multistep.StateBag) multistep.StepAction {
datacenter = profitbricks.CompositeCreateDatacenter(datacenter)
if datacenter.StatusCode > 299 {
ui.Error(datacenter.Response)
ui.Error(parseErrorMessage(datacenter.Response))
return multistep.ActionHalt
}
s.waitTillProvisioned(datacenter.Headers.Get("Location"), *c)
@ -77,7 +78,7 @@ func (s *stepCreateServer) Run(state multistep.StateBag) multistep.StepAction {
})
if lan.StatusCode > 299 {
ui.Error(fmt.Sprintf("Error occured %s", lan.Response))
ui.Error(fmt.Sprintf("Error occured %s", parseErrorMessage(lan.Response)))
return multistep.ActionHalt
}
@ -93,7 +94,7 @@ func (s *stepCreateServer) Run(state multistep.StateBag) multistep.StepAction {
})
if lan.StatusCode > 299 {
ui.Error(fmt.Sprintf("Error occured %s", nic.Response))
ui.Error(fmt.Sprintf("Error occured %s", parseErrorMessage(nic.Response)))
return multistep.ActionHalt
}
@ -180,3 +181,17 @@ func (d *stepCreateServer) getImageId(imageName string, c *Config) string {
}
return ""
}
func parseErrorMessage(raw string) (toreturn string) {
var tmp map[string]interface{}
json.Unmarshal([]byte(raw), &tmp)
for _, v := range tmp["messages"].([]interface{}) {
for index, i := range v.(map[string]interface{}) {
if index == "message" {
toreturn = toreturn + i.(string) + "\n"
}
}
}
return toreturn
}

View File

@ -25,7 +25,7 @@ builder.
### Required
- `image` (string) - ProfitBricks volume image
- `image` (string) - ProfitBricks volume image. Only Linux public images are supported. Defaults to "Ubuntu-16.04". To obtain full list of available images you can use [ProfitBricks CLI](https://github.com/profitbricks/profitbricks-cli#image).
- `password` (string) - ProfitBrucks password. This can be specified via environment variable `PROFITBRICKS_PASSWORD', if provided. The value definded in the config has precedence over environemnt variable.