additionally return 'error' from 'ToCreateServerMap'
diff --git a/openstack/compute/v2/extensions/bootfromvolume/requests.go b/openstack/compute/v2/extensions/bootfromvolume/requests.go
index b0cf61e..bbef496 100644
--- a/openstack/compute/v2/extensions/bootfromvolume/requests.go
+++ b/openstack/compute/v2/extensions/bootfromvolume/requests.go
@@ -1,31 +1,34 @@
package bootfromvolume
import (
- "errors"
+ "errors"
- "github.com/rackspace/gophercloud/openstack/compute/v2/servers"
+ "github.com/rackspace/gophercloud/openstack/compute/v2/servers"
)
type CreateOptsExt struct {
servers.CreateOptsBuilder
- BlockDeviceMapping BlockDeviceMapping
+ BDM BlockDeviceMapping
}
// ToServerCreateMap adds the block device mapping option to the base server
// creation options.
func (opts CreateOptsExt) ToServerCreateMap() (map[string]interface{}, error) {
- if opts.SourceType != "volume" && opts.SourceType != "image" && opts.SourceType != "snapshot" {
- return nil, errors.New("SourceType must be one of: volume, image, snapshot.")
- }
+ if opts.BDM.SourceType != "volume" && opts.BDM.SourceType != "image" && opts.BDM.SourceType != "snapshot" {
+ return nil, errors.New("SourceType must be one of: volume, image, snapshot.")
+ }
- if opts.UUID == "" {
- return nil, errors.New("Required field UUID not set.")
- }
+ if opts.BDM.UUID == "" {
+ return nil, errors.New("Required field UUID not set.")
+ }
- base := opts.CreateOptsBuilder.ToServerCreateMap()
+ base, err := opts.CreateOptsBuilder.ToServerCreateMap()
+ if err != nil {
+ return nil, err
+ }
- serverMap := base["server"].(map[string]interface{})
- serverMap["block_device_mapping_v2"] = opts.BlockDeviceMapping
+ serverMap := base["server"].(map[string]interface{})
+ serverMap["block_device_mapping_v2"] = opts.BDM
- return base
+ return base, nil
}
diff --git a/openstack/compute/v2/extensions/bootfromvolume/results.go b/openstack/compute/v2/extensions/bootfromvolume/results.go
index ef093e8..9d33728 100644
--- a/openstack/compute/v2/extensions/bootfromvolume/results.go
+++ b/openstack/compute/v2/extensions/bootfromvolume/results.go
@@ -1,10 +1,10 @@
package bootfromvolume
type BlockDeviceMapping struct {
- BootIndex int `json:"boot_index"`
- DeleteOnTermination bool `json:"delete_on_termination"`
- DestinationType string `json:"destination_type"`
- SourceType string `json:"source_type"`
- UUID string `json:"uuid"`
- VolumeSize int `json:"volume_size"`
+ BootIndex int `json:"boot_index"`
+ DeleteOnTermination bool `json:"delete_on_termination"`
+ DestinationType string `json:"destination_type"`
+ SourceType string `json:"source_type"`
+ UUID string `json:"uuid"`
+ VolumeSize int `json:"volume_size"`
}
diff --git a/openstack/compute/v2/extensions/diskconfig/requests.go b/openstack/compute/v2/extensions/diskconfig/requests.go
index 06a922a..cc390f7 100644
--- a/openstack/compute/v2/extensions/diskconfig/requests.go
+++ b/openstack/compute/v2/extensions/diskconfig/requests.go
@@ -45,13 +45,16 @@
}
// ToServerCreateMap adds the diskconfig option to the base server creation options.
-func (opts CreateOptsExt) ToServerCreateMap() map[string]interface{} {
- base := opts.CreateOptsBuilder.ToServerCreateMap()
+func (opts CreateOptsExt) ToServerCreateMap() (map[string]interface{}, error) {
+ base, err := opts.CreateOptsBuilder.ToServerCreateMap()
+ if err != nil {
+ return nil, err
+ }
serverMap := base["server"].(map[string]interface{})
serverMap["OS-DCF:diskConfig"] = string(opts.DiskConfig)
- return base
+ return base, nil
}
// RebuildOptsExt adds a DiskConfig option to the base RebuildOpts.
diff --git a/openstack/compute/v2/extensions/diskconfig/requests_test.go b/openstack/compute/v2/extensions/diskconfig/requests_test.go
index 1f4f626..e3c26d4 100644
--- a/openstack/compute/v2/extensions/diskconfig/requests_test.go
+++ b/openstack/compute/v2/extensions/diskconfig/requests_test.go
@@ -29,7 +29,9 @@
}
}
`
- th.CheckJSONEquals(t, expected, ext.ToServerCreateMap())
+ actual, err := ext.ToServerCreateMap()
+ th.AssertNoErr(t, err)
+ th.CheckJSONEquals(t, expected, actual)
}
func TestRebuildOpts(t *testing.T) {