Skip to content

Commit

Permalink
Removing IDFromName Functions (#1897)
Browse files Browse the repository at this point in the history
These functions will be moved to https://github.com/gophercloud/utils.
  • Loading branch information
jtopjian committed Mar 16, 2020
1 parent 405a05e commit b49be8e
Show file tree
Hide file tree
Showing 24 changed files with 51 additions and 698 deletions.
11 changes: 2 additions & 9 deletions acceptance/openstack/blockstorage/extensions/extensions.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,21 +51,14 @@ func CreateUploadImage(t *testing.T, client *gophercloud.ServiceClient, volume *

// DeleteUploadedImage deletes uploaded image. An error will be returned
// if the deletion request failed.
func DeleteUploadedImage(t *testing.T, client *gophercloud.ServiceClient, imageName string) error {
func DeleteUploadedImage(t *testing.T, client *gophercloud.ServiceClient, imageID string) error {
if testing.Short() {
t.Skip("Skipping test that requires volume-backed image removing in short mode.")
}

t.Logf("Getting image id for image name %s", imageName)

imageID, err := images.IDFromName(client, imageName)
if err != nil {
return err
}

t.Logf("Removing image %s", imageID)

err = images.Delete(client, imageID).ExtractErr()
err := images.Delete(client, imageID).ExtractErr()
if err != nil {
return err
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ func TestVolumeActionsUploadImageDestroy(t *testing.T) {

tools.PrintResource(t, volumeImage)

err = DeleteUploadedImage(t, computeClient, volumeImage.ImageName)
err = DeleteUploadedImage(t, computeClient, volumeImage.ImageID)
th.AssertNoErr(t, err)
}

Expand Down
4 changes: 2 additions & 2 deletions acceptance/openstack/compute/v2/servers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (

"github.com/gophercloud/gophercloud"
"github.com/gophercloud/gophercloud/acceptance/clients"
networks "github.com/gophercloud/gophercloud/acceptance/openstack/networking/v2"
"github.com/gophercloud/gophercloud/acceptance/tools"
"github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/attachinterfaces"
"github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/availabilityzones"
Expand All @@ -19,7 +20,6 @@ import (
"github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/suspendresume"
"github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/tags"
"github.com/gophercloud/gophercloud/openstack/compute/v2/servers"
"github.com/gophercloud/gophercloud/openstack/networking/v2/networks"
th "github.com/gophercloud/gophercloud/testhelper"
)

Expand Down Expand Up @@ -315,7 +315,7 @@ func TestServersActionRebuild(t *testing.T) {
rebuildOpts := servers.RebuildOpts{
Name: tools.RandomString("ACPTTEST", 16),
AdminPass: tools.MakeNewPassword(server.AdminPass),
ImageID: choices.ImageID,
ImageRef: choices.ImageID,
}

rebuilt, err := servers.Rebuild(client, server.ID, rebuildOpts).Extract()
Expand Down
38 changes: 38 additions & 0 deletions acceptance/openstack/networking/v2/networking.go
Original file line number Diff line number Diff line change
Expand Up @@ -528,3 +528,41 @@ func WaitForPortToCreate(client *gophercloud.ServiceClient, portID string, secs
return false, nil
})
}

// This is duplicated from https://github.com/gophercloud/utils
// so that Gophercloud "core" doesn't have a dependency on the
// complementary utils repository.
func IDFromName(client *gophercloud.ServiceClient, name string) (string, error) {
count := 0
id := ""

listOpts := networks.ListOpts{
Name: name,
}

pages, err := networks.List(client, listOpts).AllPages()
if err != nil {
return "", err
}

all, err := networks.ExtractNetworks(pages)
if err != nil {
return "", err
}

for _, s := range all {
if s.Name == name {
count++
id = s.ID
}
}

switch count {
case 0:
return "", gophercloud.ErrResourceNotFound{Name: name, ResourceType: "network"}
case 1:
return id, nil
default:
return "", gophercloud.ErrMultipleResourcesFound{Name: name, Count: count, ResourceType: "network"}
}
}
36 changes: 0 additions & 36 deletions openstack/blockstorage/v1/snapshots/requests.go
Original file line number Diff line number Diff line change
Expand Up @@ -125,39 +125,3 @@ func UpdateMetadata(client *gophercloud.ServiceClient, id string, opts UpdateMet
})
return
}

// IDFromName is a convienience function that returns a snapshot's ID given its name.
func IDFromName(client *gophercloud.ServiceClient, name string) (string, error) {
count := 0
id := ""

listOpts := ListOpts{
Name: name,
}

pages, err := List(client, listOpts).AllPages()
if err != nil {
return "", err
}

all, err := ExtractSnapshots(pages)
if err != nil {
return "", err
}

for _, s := range all {
if s.Name == name {
count++
id = s.ID
}
}

switch count {
case 0:
return "", gophercloud.ErrResourceNotFound{Name: name, ResourceType: "snapshot"}
case 1:
return id, nil
default:
return "", gophercloud.ErrMultipleResourcesFound{Name: name, Count: count, ResourceType: "snapshot"}
}
}
36 changes: 0 additions & 36 deletions openstack/blockstorage/v1/volumes/requests.go
Original file line number Diff line number Diff line change
Expand Up @@ -134,39 +134,3 @@ func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder
})
return
}

// IDFromName is a convienience function that returns a volume's ID given its name.
func IDFromName(client *gophercloud.ServiceClient, name string) (string, error) {
count := 0
id := ""

listOpts := ListOpts{
Name: name,
}

pages, err := List(client, listOpts).AllPages()
if err != nil {
return "", err
}

all, err := ExtractVolumes(pages)
if err != nil {
return "", err
}

for _, s := range all {
if s.Name == name {
count++
id = s.ID
}
}

switch count {
case 0:
return "", gophercloud.ErrResourceNotFound{Name: name, ResourceType: "volume"}
case 1:
return id, nil
default:
return "", gophercloud.ErrMultipleResourcesFound{Name: name, Count: count, ResourceType: "volume"}
}
}
36 changes: 0 additions & 36 deletions openstack/blockstorage/v2/snapshots/requests.go
Original file line number Diff line number Diff line change
Expand Up @@ -137,39 +137,3 @@ func UpdateMetadata(client *gophercloud.ServiceClient, id string, opts UpdateMet
})
return
}

// IDFromName is a convienience function that returns a snapshot's ID given its name.
func IDFromName(client *gophercloud.ServiceClient, name string) (string, error) {
count := 0
id := ""

listOpts := ListOpts{
Name: name,
}

pages, err := List(client, listOpts).AllPages()
if err != nil {
return "", err
}

all, err := ExtractSnapshots(pages)
if err != nil {
return "", err
}

for _, s := range all {
if s.Name == name {
count++
id = s.ID
}
}

switch count {
case 0:
return "", gophercloud.ErrResourceNotFound{Name: name, ResourceType: "snapshot"}
case 1:
return id, nil
default:
return "", gophercloud.ErrMultipleResourcesFound{Name: name, Count: count, ResourceType: "snapshot"}
}
}
36 changes: 0 additions & 36 deletions openstack/blockstorage/v2/volumes/requests.go
Original file line number Diff line number Diff line change
Expand Up @@ -197,39 +197,3 @@ func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder
})
return
}

// IDFromName is a convienience function that returns a volume's ID given its name.
func IDFromName(client *gophercloud.ServiceClient, name string) (string, error) {
count := 0
id := ""

listOpts := ListOpts{
Name: name,
}

pages, err := List(client, listOpts).AllPages()
if err != nil {
return "", err
}

all, err := ExtractVolumes(pages)
if err != nil {
return "", err
}

for _, s := range all {
if s.Name == name {
count++
id = s.ID
}
}

switch count {
case 0:
return "", gophercloud.ErrResourceNotFound{Name: name, ResourceType: "volume"}
case 1:
return id, nil
default:
return "", gophercloud.ErrMultipleResourcesFound{Name: name, Count: count, ResourceType: "volume"}
}
}
36 changes: 0 additions & 36 deletions openstack/blockstorage/v3/snapshots/requests.go
Original file line number Diff line number Diff line change
Expand Up @@ -148,39 +148,3 @@ func UpdateMetadata(client *gophercloud.ServiceClient, id string, opts UpdateMet
})
return
}

// IDFromName is a convienience function that returns a snapshot's ID given its name.
func IDFromName(client *gophercloud.ServiceClient, name string) (string, error) {
count := 0
id := ""

listOpts := ListOpts{
Name: name,
}

pages, err := List(client, listOpts).AllPages()
if err != nil {
return "", err
}

all, err := ExtractSnapshots(pages)
if err != nil {
return "", err
}

for _, s := range all {
if s.Name == name {
count++
id = s.ID
}
}

switch count {
case 0:
return "", gophercloud.ErrResourceNotFound{Name: name, ResourceType: "snapshot"}
case 1:
return id, nil
default:
return "", gophercloud.ErrMultipleResourcesFound{Name: name, Count: count, ResourceType: "snapshot"}
}
}
36 changes: 0 additions & 36 deletions openstack/blockstorage/v3/volumes/requests.go
Original file line number Diff line number Diff line change
Expand Up @@ -202,39 +202,3 @@ func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder
})
return
}

// IDFromName is a convienience function that returns a volume's ID given its name.
func IDFromName(client *gophercloud.ServiceClient, name string) (string, error) {
count := 0
id := ""

listOpts := ListOpts{
Name: name,
}

pages, err := List(client, listOpts).AllPages()
if err != nil {
return "", err
}

all, err := ExtractVolumes(pages)
if err != nil {
return "", err
}

for _, s := range all {
if s.Name == name {
count++
id = s.ID
}
}

switch count {
case 0:
return "", gophercloud.ErrResourceNotFound{Name: name, ResourceType: "volume"}
case 1:
return id, nil
default:
return "", gophercloud.ErrMultipleResourcesFound{Name: name, Count: count, ResourceType: "volume"}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ func TestRebuildOpts(t *testing.T) {
base := servers.RebuildOpts{
Name: "rebuiltserver",
AdminPass: "swordfish",
ImageID: "asdfasdfasdf",
ImageRef: "asdfasdfasdf",
}

ext := diskconfig.RebuildOptsExt{
Expand Down
39 changes: 0 additions & 39 deletions openstack/compute/v2/flavors/requests.go
Original file line number Diff line number Diff line change
Expand Up @@ -316,42 +316,3 @@ func DeleteExtraSpec(client *gophercloud.ServiceClient, flavorID, key string) (r
})
return
}

// IDFromName is a convienience function that returns a flavor's ID given its
// name.
func IDFromName(client *gophercloud.ServiceClient, name string) (string, error) {
count := 0
id := ""
allPages, err := ListDetail(client, nil).AllPages()
if err != nil {
return "", err
}

all, err := ExtractFlavors(allPages)
if err != nil {
return "", err
}

for _, f := range all {
if f.Name == name {
count++
id = f.ID
}
}

switch count {
case 0:
err := &gophercloud.ErrResourceNotFound{}
err.ResourceType = "flavor"
err.Name = name
return "", err
case 1:
return id, nil
default:
err := &gophercloud.ErrMultipleResourcesFound{}
err.ResourceType = "flavor"
err.Name = name
err.Count = count
return "", err
}
}
Loading

0 comments on commit b49be8e

Please sign in to comment.