github.com/gophercloud/gophercloud@v1.11.0/internal/acceptance/openstack/compute/v2/instance_actions_test.go (about) 1 //go:build acceptance || compute || limits 2 // +build acceptance compute limits 3 4 package v2 5 6 import ( 7 "testing" 8 "time" 9 10 "github.com/gophercloud/gophercloud/internal/acceptance/clients" 11 "github.com/gophercloud/gophercloud/internal/acceptance/tools" 12 "github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/instanceactions" 13 "github.com/gophercloud/gophercloud/openstack/compute/v2/servers" 14 th "github.com/gophercloud/gophercloud/testhelper" 15 ) 16 17 func TestInstanceActions(t *testing.T) { 18 client, err := clients.NewComputeV2Client() 19 th.AssertNoErr(t, err) 20 21 server, err := CreateServer(t, client) 22 th.AssertNoErr(t, err) 23 defer DeleteServer(t, client, server) 24 25 allPages, err := instanceactions.List(client, server.ID, nil).AllPages() 26 th.AssertNoErr(t, err) 27 allActions, err := instanceactions.ExtractInstanceActions(allPages) 28 th.AssertNoErr(t, err) 29 30 var found bool 31 32 for _, action := range allActions { 33 action, err := instanceactions.Get(client, server.ID, action.RequestID).Extract() 34 th.AssertNoErr(t, err) 35 tools.PrintResource(t, action) 36 37 if action.Action == "create" { 38 found = true 39 } 40 } 41 42 th.AssertEquals(t, found, true) 43 } 44 45 func TestInstanceActionsMicroversions(t *testing.T) { 46 clients.RequireLong(t) 47 48 now := time.Now() 49 50 client, err := clients.NewComputeV2Client() 51 th.AssertNoErr(t, err) 52 client.Microversion = "2.66" 53 54 server, err := CreateMicroversionServer(t, client) 55 th.AssertNoErr(t, err) 56 defer DeleteServer(t, client, server) 57 58 rebootOpts := servers.RebootOpts{ 59 Type: servers.HardReboot, 60 } 61 62 err = servers.Reboot(client, server.ID, rebootOpts).ExtractErr() 63 if err = WaitForComputeStatus(client, server, "ACTIVE"); err != nil { 64 t.Fatal(err) 65 } 66 67 listOpts := instanceactions.ListOpts{ 68 Limit: 1, 69 ChangesSince: &now, 70 } 71 72 allPages, err := instanceactions.List(client, server.ID, listOpts).AllPages() 73 th.AssertNoErr(t, err) 74 75 allActions, err := instanceactions.ExtractInstanceActions(allPages) 76 th.AssertNoErr(t, err) 77 78 var found bool 79 80 for _, action := range allActions { 81 action, err := instanceactions.Get(client, server.ID, action.RequestID).Extract() 82 th.AssertNoErr(t, err) 83 tools.PrintResource(t, action) 84 85 if action.Action == "reboot" { 86 found = true 87 } 88 } 89 90 th.AssertEquals(t, found, true) 91 92 listOpts = instanceactions.ListOpts{ 93 Limit: 1, 94 ChangesBefore: &now, 95 } 96 97 allPages, err = instanceactions.List(client, server.ID, listOpts).AllPages() 98 th.AssertNoErr(t, err) 99 100 allActions, err = instanceactions.ExtractInstanceActions(allPages) 101 th.AssertNoErr(t, err) 102 103 th.AssertEquals(t, len(allActions), 0) 104 }