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  }