blob: 05c0a9950b37500f557a6f428cdbf893a3fa2a09 [file] [log] [blame]
Joe Topjianaa8e5e32016-07-25 20:09:52 +00001// +build acceptance compute bootfromvolume
Jon Perritt0b09d1d2014-10-24 13:26:18 -05002
3package v2
4
5import (
6 "testing"
7
Joe Topjian1c15e3f2016-08-08 10:48:38 -06008 "github.com/gophercloud/gophercloud/acceptance/clients"
Jon Perritt27249f42016-02-18 10:35:59 -06009 "github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/bootfromvolume"
Jon Perritt0b09d1d2014-10-24 13:26:18 -050010)
11
Joe Topjianaa8e5e32016-07-25 20:09:52 +000012func TestBootFromVolumeSingleVolume(t *testing.T) {
Jon Perritt0b09d1d2014-10-24 13:26:18 -050013 if testing.Short() {
14 t.Skip("Skipping test that requires server creation in short mode.")
15 }
16
Joe Topjian1c15e3f2016-08-08 10:48:38 -060017 client, err := clients.NewComputeV2Client()
Joe Topjianaa8e5e32016-07-25 20:09:52 +000018 if err != nil {
19 t.Fatalf("Unable to create a compute client: %v", err)
20 }
21
Joe Topjian1c15e3f2016-08-08 10:48:38 -060022 choices, err := clients.AcceptanceTestChoicesFromEnv()
Jon Perritt0b09d1d2014-10-24 13:26:18 -050023 if err != nil {
24 t.Fatal(err)
25 }
26
Joe Topjianaa8e5e32016-07-25 20:09:52 +000027 blockDevices := []bootfromvolume.BlockDevice{
Jon Perritt01686cd2014-10-24 14:10:16 -050028 bootfromvolume.BlockDevice{
29 UUID: choices.ImageID,
30 SourceType: bootfromvolume.Image,
31 VolumeSize: 10,
32 },
Jon Perritt0b09d1d2014-10-24 13:26:18 -050033 }
34
Joe Topjian1c15e3f2016-08-08 10:48:38 -060035 server, err := CreateBootableVolumeServer(t, client, blockDevices, choices)
Joe Topjianaa8e5e32016-07-25 20:09:52 +000036 if err != nil {
37 t.Fatal("Unable to create server: %v", err)
Jon Perritt0b09d1d2014-10-24 13:26:18 -050038 }
Joe Topjian1c15e3f2016-08-08 10:48:38 -060039 defer DeleteServer(t, client, server)
Jon Perrittcf01b932014-11-18 13:49:26 -070040
Joe Topjian1c15e3f2016-08-08 10:48:38 -060041 PrintServer(t, server)
Jon Perritt0b09d1d2014-10-24 13:26:18 -050042}
Joe Topjianecf63dd2015-12-12 20:33:50 +000043
Joe Topjianaa8e5e32016-07-25 20:09:52 +000044func TestBootFromVolumeMultiEphemeral(t *testing.T) {
Joe Topjianecf63dd2015-12-12 20:33:50 +000045 if testing.Short() {
46 t.Skip("Skipping test that requires server creation in short mode.")
47 }
48
Joe Topjian1c15e3f2016-08-08 10:48:38 -060049 client, err := clients.NewComputeV2Client()
Joe Topjianaa8e5e32016-07-25 20:09:52 +000050 if err != nil {
51 t.Fatalf("Unable to create a compute client: %v", err)
52 }
53
Joe Topjian1c15e3f2016-08-08 10:48:38 -060054 choices, err := clients.AcceptanceTestChoicesFromEnv()
Joe Topjianecf63dd2015-12-12 20:33:50 +000055 if err != nil {
56 t.Fatal(err)
57 }
58
Joe Topjianaa8e5e32016-07-25 20:09:52 +000059 blockDevices := []bootfromvolume.BlockDevice{
Joe Topjianecf63dd2015-12-12 20:33:50 +000060 bootfromvolume.BlockDevice{
61 BootIndex: 0,
62 UUID: choices.ImageID,
63 SourceType: bootfromvolume.Image,
64 DestinationType: "local",
65 DeleteOnTermination: true,
Joe Topjianaa8e5e32016-07-25 20:09:52 +000066 VolumeSize: 5,
Joe Topjianecf63dd2015-12-12 20:33:50 +000067 },
68 bootfromvolume.BlockDevice{
69 BootIndex: -1,
70 SourceType: bootfromvolume.Blank,
71 DestinationType: "local",
72 DeleteOnTermination: true,
73 GuestFormat: "ext4",
74 VolumeSize: 1,
75 },
76 bootfromvolume.BlockDevice{
77 BootIndex: -1,
78 SourceType: bootfromvolume.Blank,
79 DestinationType: "local",
80 DeleteOnTermination: true,
81 GuestFormat: "ext4",
82 VolumeSize: 1,
83 },
84 }
85
Joe Topjian1c15e3f2016-08-08 10:48:38 -060086 server, err := CreateBootableVolumeServer(t, client, blockDevices, choices)
Joe Topjianaa8e5e32016-07-25 20:09:52 +000087 if err != nil {
88 t.Fatalf("Unable to create server: %v", err)
89 }
Joe Topjian1c15e3f2016-08-08 10:48:38 -060090 defer DeleteServer(t, client, server)
Joe Topjianaa8e5e32016-07-25 20:09:52 +000091
Joe Topjian1c15e3f2016-08-08 10:48:38 -060092 PrintServer(t, server)
Joe Topjianecf63dd2015-12-12 20:33:50 +000093}