allow for string 'image' attribute when server created via bfv
diff --git a/openstack/compute/v2/servers/results.go b/openstack/compute/v2/servers/results.go
index 3a145f8..e3c006f 100644
--- a/openstack/compute/v2/servers/results.go
+++ b/openstack/compute/v2/servers/results.go
@@ -1,6 +1,8 @@
 package servers
 
 import (
+	"reflect"
+
 	"github.com/mitchellh/mapstructure"
 	"github.com/rackspace/gophercloud"
 	"github.com/rackspace/gophercloud/pagination"
@@ -20,8 +22,26 @@
 		Server Server `mapstructure:"server"`
 	}
 
-	err := mapstructure.Decode(r.Body, &response)
-	return &response.Server, err
+	config := &mapstructure.DecoderConfig{
+		DecodeHook: func(from reflect.Kind, to reflect.Kind, data interface{}) (interface{}, error) {
+			if (from == reflect.String) && (to == reflect.Map) {
+				return map[string]interface{}{}, nil
+			}
+			return data, nil
+		},
+		Result: &response,
+	}
+	decoder, err := mapstructure.NewDecoder(config)
+	if err != nil {
+		return nil, err
+	}
+
+	err = decoder.Decode(r.Body)
+	if err != nil {
+		return nil, err
+	}
+
+	return &response.Server, nil
 }
 
 // CreateResult temporarily contains the response from a Create call.
@@ -164,7 +184,24 @@
 	var response struct {
 		Servers []Server `mapstructure:"servers"`
 	}
-	err := mapstructure.Decode(casted, &response)
+
+	config := &mapstructure.DecoderConfig{
+		DecodeHook: func(from reflect.Kind, to reflect.Kind, data interface{}) (interface{}, error) {
+			if (from == reflect.String) && (to == reflect.Map) {
+				return map[string]interface{}{}, nil
+			}
+			return data, nil
+		},
+		Result: &response,
+	}
+	decoder, err := mapstructure.NewDecoder(config)
+	if err != nil {
+		return nil, err
+	}
+
+	err = decoder.Decode(casted)
+
+	//err := mapstructure.Decode(casted, &response)
 	return response.Servers, err
 }