create server helper fields
diff --git a/openstack/compute/v2/images/requests.go b/openstack/compute/v2/images/requests.go
index 7ce5139..1e021ad 100644
--- a/openstack/compute/v2/images/requests.go
+++ b/openstack/compute/v2/images/requests.go
@@ -1,6 +1,8 @@
package images
import (
+ "fmt"
+
"github.com/rackspace/gophercloud"
"github.com/rackspace/gophercloud/pagination"
)
@@ -70,3 +72,38 @@
_, result.Err = client.Delete(deleteURL(client, id), nil)
return result
}
+
+// IDFromName is a convienience function that returns an image's ID given its name.
+func IDFromName(client *gophercloud.ServiceClient, name string) (string, error) {
+ imageCount := 0
+ imageID := ""
+ if name == "" {
+ return "", fmt.Errorf("An image name must be provided.")
+ }
+ pager := ListDetail(client, &ListOpts{
+ Name: name,
+ })
+ pager.EachPage(func(page pagination.Page) (bool, error) {
+ imageList, err := ExtractImages(page)
+ if err != nil {
+ return false, err
+ }
+
+ for _, i := range imageList {
+ if i.Name == name {
+ imageCount++
+ imageID = i.ID
+ }
+ }
+ return true, nil
+ })
+
+ switch imageCount {
+ case 0:
+ return "", fmt.Errorf("Unable to find image: %s", name)
+ case 1:
+ return imageID, nil
+ default:
+ return "", fmt.Errorf("Found %d images matching %s", imageCount, name)
+ }
+}