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 }