github.com/gophercloud/gophercloud@v1.11.0/internal/acceptance/openstack/blockstorage/extensions/schedulerhints_test.go (about) 1 //go:build acceptance || blockstorage 2 // +build acceptance blockstorage 3 4 package extensions 5 6 import ( 7 "testing" 8 9 "github.com/gophercloud/gophercloud/internal/acceptance/clients" 10 "github.com/gophercloud/gophercloud/internal/acceptance/tools" 11 "github.com/gophercloud/gophercloud/openstack/blockstorage/extensions/schedulerhints" 12 "github.com/gophercloud/gophercloud/openstack/blockstorage/v3/volumes" 13 th "github.com/gophercloud/gophercloud/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(client, createOpts).Extract() 29 th.AssertNoErr(t, err) 30 31 err = volumes.WaitForStatus(client, volume1.ID, "available", 60) 32 th.AssertNoErr(t, err) 33 defer volumes.Delete(client, volume1.ID, volumes.DeleteOpts{}) 34 35 volumeName = tools.RandomString("ACPTTEST", 16) 36 base := volumes.CreateOpts{ 37 Size: 1, 38 Name: volumeName, 39 } 40 41 schedulerHints := schedulerhints.SchedulerHints{ 42 SameHost: []string{ 43 volume1.ID, 44 }, 45 } 46 47 createOptsWithHints := schedulerhints.CreateOptsExt{ 48 VolumeCreateOptsBuilder: base, 49 SchedulerHints: schedulerHints, 50 } 51 52 volume2, err := volumes.Create(client, createOptsWithHints).Extract() 53 th.AssertNoErr(t, err) 54 55 err = volumes.WaitForStatus(client, volume2.ID, "available", 60) 56 th.AssertNoErr(t, err) 57 58 err = volumes.Delete(client, volume2.ID, volumes.DeleteOpts{}).ExtractErr() 59 th.AssertNoErr(t, err) 60 }