/vendor/github.com/gophercloud/gophercloud/acceptance/openstack/compute/v2/volumeattach_test.go
Go | 78 lines | 60 code | 17 blank | 1 comment | 20 complexity | 3d6a520f963635e57f0a5dcb116b85c6 MD5 | raw file
- // +build acceptance compute volumeattach
- package v2
- import (
- "testing"
- "github.com/gophercloud/gophercloud"
- "github.com/gophercloud/gophercloud/acceptance/clients"
- "github.com/gophercloud/gophercloud/acceptance/tools"
- "github.com/gophercloud/gophercloud/openstack/blockstorage/v1/volumes"
- )
- func TestVolumeAttachAttachment(t *testing.T) {
- if testing.Short() {
- t.Skip("Skipping test that requires server creation in short mode.")
- }
- client, err := clients.NewComputeV2Client()
- if err != nil {
- t.Fatalf("Unable to create a compute client: %v", err)
- }
- blockClient, err := clients.NewBlockStorageV1Client()
- if err != nil {
- t.Fatalf("Unable to create a blockstorage client: %v", err)
- }
- server, err := CreateServer(t, client)
- if err != nil {
- t.Fatalf("Unable to create server: %v", err)
- }
- defer DeleteServer(t, client, server)
- volume, err := createVolume(t, blockClient)
- if err != nil {
- t.Fatalf("Unable to create volume: %v", err)
- }
- if err = volumes.WaitForStatus(blockClient, volume.ID, "available", 60); err != nil {
- t.Fatalf("Unable to wait for volume: %v", err)
- }
- defer deleteVolume(t, blockClient, volume)
- volumeAttachment, err := CreateVolumeAttachment(t, client, blockClient, server, volume)
- if err != nil {
- t.Fatalf("Unable to attach volume: %v", err)
- }
- defer DeleteVolumeAttachment(t, client, blockClient, server, volumeAttachment)
- tools.PrintResource(t, volumeAttachment)
- }
- func createVolume(t *testing.T, blockClient *gophercloud.ServiceClient) (*volumes.Volume, error) {
- volumeName := tools.RandomString("ACPTTEST", 16)
- createOpts := volumes.CreateOpts{
- Size: 1,
- Name: volumeName,
- }
- volume, err := volumes.Create(blockClient, createOpts).Extract()
- if err != nil {
- return volume, err
- }
- t.Logf("Created volume: %s", volume.ID)
- return volume, nil
- }
- func deleteVolume(t *testing.T, blockClient *gophercloud.ServiceClient, volume *volumes.Volume) {
- err := volumes.Delete(blockClient, volume.ID).ExtractErr()
- if err != nil {
- t.Fatalf("Unable to delete volume: %v", err)
- }
- t.Logf("Deleted volume: %s", volume.ID)
- }