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  }