Skip to content

Commit 34ca79e

Browse files
imageservice: Refactor: remove one loop (#137)
Remove one unnecessary loop for counting the results when computing IDFromName.
1 parent d93cf4b commit 34ca79e

File tree

1 file changed

+14
-19
lines changed
  • openstack/imageservice/v2/images

1 file changed

+14
-19
lines changed

openstack/imageservice/v2/images/utils.go

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -7,36 +7,31 @@ import (
77

88
// IDFromName is a convienience function that returns an image's ID given its name.
99
func IDFromName(client *gophercloud.ServiceClient, name string) (string, error) {
10-
count := 0
11-
id := ""
12-
13-
listOpts := images.ListOpts{
10+
allPages, err := images.List(client, images.ListOpts{
1411
Name: name,
15-
}
16-
17-
pages, err := images.List(client, listOpts).AllPages()
12+
}).AllPages()
1813
if err != nil {
1914
return "", err
2015
}
2116

22-
all, err := images.ExtractImages(pages)
17+
allImages, err := images.ExtractImages(allPages)
2318
if err != nil {
2419
return "", err
2520
}
2621

27-
for _, s := range all {
28-
if s.Name == name {
29-
count++
30-
id = s.ID
31-
}
32-
}
33-
34-
switch count {
22+
switch count := len(allImages); count {
3523
case 0:
36-
return "", gophercloud.ErrResourceNotFound{Name: name, ResourceType: "image"}
24+
return "", gophercloud.ErrResourceNotFound{
25+
Name: name,
26+
ResourceType: "image",
27+
}
3728
case 1:
38-
return id, nil
29+
return allImages[0].ID, nil
3930
default:
40-
return "", gophercloud.ErrMultipleResourcesFound{Name: name, Count: count, ResourceType: "image"}
31+
return "", gophercloud.ErrMultipleResourcesFound{
32+
Name: name,
33+
Count: count,
34+
ResourceType: "image",
35+
}
4136
}
4237
}

0 commit comments

Comments
 (0)