github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/acceptance/openstack/networking/v2/extensions/helpers.go (about) 1 package extensions 2 3 import ( 4 "testing" 5 6 golangsdk "github.com/opentelekomcloud/gophertelekomcloud" 7 "github.com/opentelekomcloud/gophertelekomcloud/acceptance/clients" 8 "github.com/opentelekomcloud/gophertelekomcloud/acceptance/tools" 9 "github.com/opentelekomcloud/gophertelekomcloud/openstack/networking/v1/eips" 10 th "github.com/opentelekomcloud/gophertelekomcloud/testhelper" 11 ) 12 13 func createEip(t *testing.T) *eips.PublicIp { 14 client, err := clients.NewNetworkV1Client() 15 th.AssertNoErr(t, err) 16 17 t.Logf("Attempting to create eip/bandwidth") 18 eipCreateOpts := eips.ApplyOpts{ 19 IP: eips.PublicIpOpts{ 20 Type: "5_bgp", 21 }, 22 Bandwidth: eips.BandwidthOpts{ 23 ShareType: "PER", 24 Name: tools.RandomString("acc-band-", 3), 25 Size: 100, 26 }, 27 } 28 29 eip, err := eips.Apply(client, eipCreateOpts).Extract() 30 th.AssertNoErr(t, err) 31 32 // wait to be DOWN 33 t.Logf("Waiting for eip %s to be active", eip.ID) 34 err = waitForEipToActive(client, eip.ID, 600) 35 th.AssertNoErr(t, err) 36 37 newEip, err := eips.Get(client, eip.ID).Extract() 38 th.AssertNoErr(t, err) 39 40 t.Logf("Created eip/bandwidth: %s", newEip.ID) 41 42 return newEip 43 } 44 45 func deleteEip(t *testing.T, eipID string) { 46 client, err := clients.NewNetworkV1Client() 47 th.AssertNoErr(t, err) 48 49 t.Logf("Attempting to delete eip/bandwidth: %s", eipID) 50 51 err = eips.Delete(client, eipID).ExtractErr() 52 th.AssertNoErr(t, err) 53 54 // wait to be deleted 55 t.Logf("Waitting for eip %s to be deleted", eipID) 56 57 err = waitForEipToDelete(client, eipID, 600) 58 th.AssertNoErr(t, err) 59 60 t.Logf("Deleted eip/bandwidth: %s", eipID) 61 } 62 63 func waitForEipToActive(client *golangsdk.ServiceClient, eipID string, secs int) error { 64 return golangsdk.WaitFor(secs, func() (bool, error) { 65 eip, err := eips.Get(client, eipID).Extract() 66 if err != nil { 67 return false, err 68 } 69 if eip.Status == "DOWN" { 70 return true, nil 71 } 72 73 return false, nil 74 }) 75 } 76 77 func waitForEipToDelete(client *golangsdk.ServiceClient, eipID string, secs int) error { 78 return golangsdk.WaitFor(secs, func() (bool, error) { 79 _, err := eips.Get(client, eipID).Extract() 80 if err != nil { 81 if _, ok := err.(golangsdk.ErrDefault404); ok { 82 return true, nil 83 } 84 return false, err 85 } 86 87 return false, nil 88 }) 89 }