github.com/vnpaycloud-console/gophercloud/v2@v2.0.5/internal/acceptance/openstack/blockstorage/v2/schedulerhints_test.go (about) 1 //go:build acceptance || blockstorage || schedulerhints 2 3 package v2 4 5 import ( 6 "context" 7 "testing" 8 "time" 9 10 "github.com/vnpaycloud-console/gophercloud/v2/internal/acceptance/clients" 11 "github.com/vnpaycloud-console/gophercloud/v2/internal/acceptance/tools" 12 "github.com/vnpaycloud-console/gophercloud/v2/openstack/blockstorage/v2/volumes" 13 th "github.com/vnpaycloud-console/gophercloud/v2/testhelper" 14 ) 15 16 func TestSchedulerHints(t *testing.T) { 17 clients.SkipReleasesAbove(t, "stable/ocata") 18 clients.RequireLong(t) 19 20 client, err := clients.NewBlockStorageV2Client() 21 th.AssertNoErr(t, err) 22 23 volumeName := tools.RandomString("ACPTTEST", 16) 24 createOpts := volumes.CreateOpts{ 25 Size: 1, 26 Name: volumeName, 27 } 28 29 volume1, err := volumes.Create(context.TODO(), client, createOpts, nil).Extract() 30 th.AssertNoErr(t, err) 31 32 ctx, cancel := context.WithTimeout(context.TODO(), 60*time.Second) 33 defer cancel() 34 35 err = volumes.WaitForStatus(ctx, client, volume1.ID, "available") 36 th.AssertNoErr(t, err) 37 defer volumes.Delete(context.TODO(), client, volume1.ID, volumes.DeleteOpts{}) 38 39 volumeName = tools.RandomString("ACPTTEST", 16) 40 createOpts = volumes.CreateOpts{ 41 Size: 1, 42 Name: volumeName, 43 } 44 schedulerHintOpts := volumes.SchedulerHintOpts{ 45 SameHost: []string{ 46 volume1.ID, 47 }, 48 } 49 50 volume2, err := volumes.Create(context.TODO(), client, createOpts, schedulerHintOpts).Extract() 51 th.AssertNoErr(t, err) 52 53 ctx2, cancel := context.WithTimeout(context.TODO(), 60*time.Second) 54 defer cancel() 55 56 err = volumes.WaitForStatus(ctx2, client, volume2.ID, "available") 57 th.AssertNoErr(t, err) 58 59 err = volumes.Delete(context.TODO(), client, volume2.ID, volumes.DeleteOpts{}).ExtractErr() 60 th.AssertNoErr(t, err) 61 }