github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/acceptance/openstack/networking/v2/bandwidths_test.go (about)

     1  package v2
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/opentelekomcloud/gophertelekomcloud/acceptance/clients"
     7  	"github.com/opentelekomcloud/gophertelekomcloud/acceptance/tools"
     8  	"github.com/opentelekomcloud/gophertelekomcloud/openstack/networking/v2/bandwidths"
     9  	"github.com/opentelekomcloud/gophertelekomcloud/openstack/networking/v2/extensions/layer3/floatingips"
    10  	th "github.com/opentelekomcloud/gophertelekomcloud/testhelper"
    11  )
    12  
    13  func TestBandwidthLifecycle(t *testing.T) {
    14  	client, err := clients.NewNetworkV2Client()
    15  	th.AssertNoErr(t, err)
    16  
    17  	t.Logf("Attempting to create BandwidthV2")
    18  	bandwidthName := tools.RandomString("band-create", 3)
    19  	createOpts := bandwidths.CreateOpts{
    20  		Name: bandwidthName,
    21  		Size: 20,
    22  	}
    23  
    24  	bandwidth, err := bandwidths.Create(client, createOpts).Extract()
    25  	th.AssertNoErr(t, err)
    26  	t.Cleanup(func() {
    27  		t.Logf("Attempting to delete BandwidthV2: %s", bandwidth.ID)
    28  		err := bandwidths.Delete(client, bandwidth.ID).ExtractErr()
    29  		th.AssertNoErr(t, err)
    30  		t.Logf("Deleted BandwidthV2: %s", bandwidth.ID)
    31  	})
    32  	th.AssertEquals(t, createOpts.Name, bandwidth.Name)
    33  	th.AssertEquals(t, createOpts.Size, bandwidth.Size)
    34  	t.Logf("Created BandwidthV2: %s", bandwidth.ID)
    35  
    36  	t.Logf("Attempting to update BandwidthV2: %s", bandwidth.ID)
    37  	bandwidthName = tools.RandomString("band-update", 3)
    38  	updateOpts := bandwidths.UpdateOpts{
    39  		Name: bandwidthName,
    40  		Size: 50,
    41  	}
    42  	_, err = bandwidths.Update(client, bandwidth.ID, updateOpts).Extract()
    43  	th.AssertNoErr(t, err)
    44  
    45  	newBandwidth, err := bandwidths.Get(client, bandwidth.ID).Extract()
    46  	th.AssertNoErr(t, err)
    47  	th.AssertEquals(t, updateOpts.Name, newBandwidth.Name)
    48  	th.AssertEquals(t, updateOpts.Size, newBandwidth.Size)
    49  	t.Logf("Updated BandwidthV2: %s", newBandwidth.ID)
    50  
    51  	bandwidthPages, err := bandwidths.List(client).AllPages()
    52  	th.AssertNoErr(t, err)
    53  
    54  	bandwidthList, err := bandwidths.ExtractBandwidths(bandwidthPages)
    55  	th.AssertNoErr(t, err)
    56  	flag := -1
    57  	for i, v := range bandwidthList {
    58  		if v.ID == newBandwidth.ID {
    59  			flag = i
    60  			break
    61  		}
    62  	}
    63  	th.AssertDeepEquals(t, newBandwidth, &bandwidthList[flag])
    64  }
    65  
    66  func TestBandwidthAssociate(t *testing.T) {
    67  	client, err := clients.NewNetworkV2Client()
    68  	th.AssertNoErr(t, err)
    69  
    70  	bandwidthName := tools.RandomString("band-create", 3)
    71  	createOpts := bandwidths.CreateOpts{
    72  		Name: bandwidthName,
    73  		Size: 20,
    74  	}
    75  
    76  	bandwidth, err := bandwidths.Create(client, createOpts).Extract()
    77  	th.AssertNoErr(t, err)
    78  	id := bandwidth.ID
    79  	t.Cleanup(func() {
    80  		t.Logf("Attempting to delete BandwidthV2: %s", id)
    81  		err := bandwidths.Delete(client, id).ExtractErr()
    82  		th.CheckNoErr(t, err)
    83  		t.Logf("Deleted BandwidthV2: %s", id)
    84  	})
    85  
    86  	eip, err := floatingips.Create(client, floatingips.CreateOpts{
    87  		FloatingNetworkID: "0a2228f2-7f8a-45f1-8e09-9039e1d09975", // yep, it's static
    88  	}).Extract()
    89  	th.AssertNoErr(t, err)
    90  	t.Cleanup(func() {
    91  		err := floatingips.Delete(client, eip.ID).ExtractErr()
    92  		th.CheckNoErr(t, err)
    93  	})
    94  
    95  	err = tools.WaitFor(func() (bool, error) {
    96  		fip, err := floatingips.Get(client, eip.ID).Extract()
    97  		if err != nil {
    98  			return false, err
    99  		}
   100  		return fip.Status == "ACTIVE" || fip.Status == "DOWN", nil
   101  	})
   102  	th.AssertNoErr(t, err)
   103  
   104  	err = tools.WaitFor(func() (bool, error) {
   105  		bdw, err := bandwidths.Get(client, id).Extract()
   106  		if err != nil {
   107  			return false, err
   108  		}
   109  		return bdw.Status == "NORMAL", nil
   110  	})
   111  	th.AssertNoErr(t, err)
   112  
   113  	assOpts := bandwidths.InsertOpts{PublicIpInfo: []bandwidths.PublicIpInfoInsertOpts{
   114  		{PublicIpID: eip.ID},
   115  	}}
   116  	_, err = bandwidths.Insert(client, id, assOpts).Extract()
   117  	th.AssertNoErr(t, err)
   118  
   119  	bnw, err := bandwidths.Get(client, id).Extract()
   120  	th.AssertNoErr(t, err)
   121  	th.AssertEquals(t, 1, len(bnw.PublicIpInfo))
   122  
   123  	remOpts := bandwidths.RemoveOpts{
   124  		ChargeMode: "bandwidth",
   125  		Size:       1,
   126  		PublicIpInfo: []bandwidths.PublicIpInfoID{
   127  			{PublicIpID: eip.ID},
   128  		},
   129  	}
   130  	err = bandwidths.Remove(client, id, remOpts).ExtractErr()
   131  	th.AssertNoErr(t, err)
   132  
   133  	bnwAfter, err := bandwidths.Get(client, id).Extract()
   134  	th.AssertNoErr(t, err)
   135  	th.AssertEquals(t, 0, len(bnwAfter.PublicIpInfo))
   136  }