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  }