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