github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/acceptance/openstack/sfs_turbo/v1/helpers.go (about) 1 package v1 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/openstack" 9 "github.com/opentelekomcloud/gophertelekomcloud/acceptance/tools" 10 "github.com/opentelekomcloud/gophertelekomcloud/openstack/sfs_turbo/v1/shares" 11 th "github.com/opentelekomcloud/gophertelekomcloud/testhelper" 12 ) 13 14 func createShare(t *testing.T, client *golangsdk.ServiceClient) *shares.Turbo { 15 t.Logf("Attempting to create SFSTurboV1") 16 17 vpcID := clients.EnvOS.GetEnv("VPC_ID") 18 subnetID := clients.EnvOS.GetEnv("NETWORK_ID") 19 az := clients.EnvOS.GetEnv("AVAILABILITY_ZONE") 20 if vpcID == "" || subnetID == "" || az == "" { 21 t.Skip(`One of OS_VPC_ID or OS_NETWORK_ID of OS_AVAILABILITY_ZONE 22 env vars is missing but SFS Turbo test requires`) 23 } 24 25 createOpts := shares.CreateOpts{ 26 Name: tools.RandomString("acc-share-", 3), 27 ShareType: "STANDARD", 28 Size: 500, 29 AvailabilityZone: az, 30 VpcID: vpcID, 31 SubnetID: subnetID, 32 SecurityGroupID: openstack.DefaultSecurityGroup(t), 33 Description: "some interesting description", 34 } 35 36 share, err := shares.Create(client, createOpts).Extract() 37 th.AssertNoErr(t, err) 38 39 t.Logf("Waiting for SFS Turbo %s to be active", share.ID) 40 err = waitForShareToActive(client, share.ID, 600) 41 th.AssertNoErr(t, err) 42 43 newShare, err := shares.Get(client, share.ID).Extract() 44 th.AssertNoErr(t, err) 45 46 t.Logf("Created SFS turbo: %s", newShare.ID) 47 48 return newShare 49 } 50 51 func deleteShare(t *testing.T, client *golangsdk.ServiceClient, shareID string) { 52 t.Logf("Attempting to delete SFS Turbo: %s", shareID) 53 54 err := shares.Delete(client, shareID).ExtractErr() 55 th.AssertNoErr(t, err) 56 57 err = waitForShareToDelete(client, shareID, 600) 58 th.AssertNoErr(t, err) 59 60 t.Logf("Deleted SFS Turbo: %s", shareID) 61 } 62 63 func expandShare(t *testing.T, client *golangsdk.ServiceClient, shareID string) *shares.Turbo { 64 t.Logf("Attempting to expand SFS Turbo: %s", shareID) 65 66 expandOpts := shares.ExpandOpts{ 67 Extend: shares.ExtendOpts{ 68 NewSize: 1000, 69 }, 70 } 71 72 err := shares.Expand(client, shareID, expandOpts).ExtractErr() 73 th.AssertNoErr(t, err) 74 75 err = waitForShareSubStatusSuccess(client, shareID, 600) 76 th.AssertNoErr(t, err) 77 78 newShare, err := shares.Get(client, shareID).Extract() 79 th.AssertNoErr(t, err) 80 81 t.Logf("Expanded SFS turbo: %s", shareID) 82 83 return newShare 84 } 85 86 func changeShareSG(t *testing.T, client *golangsdk.ServiceClient, shareID string, secGroupID string) *shares.Turbo { 87 t.Logf("Attempting to change SG SFS Turbo: %s", shareID) 88 89 changeSGOpts := shares.ChangeSGOpts{ 90 ChangeSecurityGroup: shares.SecurityGroupOpts{ 91 SecurityGroupID: secGroupID, 92 }, 93 } 94 95 err := shares.ChangeSG(client, shareID, changeSGOpts).ExtractErr() 96 th.AssertNoErr(t, err) 97 98 err = waitForShareSubStatusSuccess(client, shareID, 600) 99 th.AssertNoErr(t, err) 100 101 newShare, err := shares.Get(client, shareID).Extract() 102 th.AssertNoErr(t, err) 103 104 t.Logf("Change SG SFS turbo: %s", shareID) 105 106 return newShare 107 } 108 109 func waitForShareToActive(client *golangsdk.ServiceClient, shareID string, secs int) error { 110 return golangsdk.WaitFor(secs, func() (bool, error) { 111 share, err := shares.Get(client, shareID).Extract() 112 if err != nil { 113 return false, err 114 } 115 if share.Status == "200" { 116 return true, nil 117 } 118 119 return false, nil 120 }) 121 } 122 123 func waitForShareToDelete(client *golangsdk.ServiceClient, shareID string, secs int) error { 124 return golangsdk.WaitFor(secs, func() (bool, error) { 125 _, err := shares.Get(client, shareID).Extract() 126 if err != nil { 127 if _, ok := err.(golangsdk.ErrDefault404); ok { 128 return true, nil 129 } 130 return false, err 131 } 132 return false, nil 133 }) 134 } 135 136 func waitForShareSubStatusSuccess(client *golangsdk.ServiceClient, shareID string, secs int) error { 137 return golangsdk.WaitFor(secs, func() (bool, error) { 138 share, err := shares.Get(client, shareID).Extract() 139 if err != nil { 140 return false, err 141 } 142 143 if share.SubStatus == "221" || share.SubStatus == "232" { 144 return true, nil 145 } 146 147 return false, nil 148 }) 149 }