github.com/vnpaycloud-console/gophercloud/v2@v2.0.5/internal/acceptance/openstack/compute/v2/instance_actions_test.go (about) 1 //go:build acceptance || compute || limits 2 3 package v2 4 5 import ( 6 "context" 7 "testing" 8 "time" 9 10 "github.com/vnpaycloud-console/gophercloud/v2/internal/acceptance/clients" 11 "github.com/vnpaycloud-console/gophercloud/v2/internal/acceptance/tools" 12 "github.com/vnpaycloud-console/gophercloud/v2/openstack/compute/v2/instanceactions" 13 "github.com/vnpaycloud-console/gophercloud/v2/openstack/compute/v2/servers" 14 th "github.com/vnpaycloud-console/gophercloud/v2/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(context.TODO()) 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(context.TODO(), 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, true, found) 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(context.TODO(), client, server.ID, rebootOpts).ExtractErr() 63 th.AssertNoErr(t, err) 64 if err = WaitForComputeStatus(client, server, "ACTIVE"); err != nil { 65 t.Fatal(err) 66 } 67 68 listOpts := instanceactions.ListOpts{ 69 Limit: 1, 70 ChangesSince: &now, 71 } 72 73 allPages, err := instanceactions.List(client, server.ID, listOpts).AllPages(context.TODO()) 74 th.AssertNoErr(t, err) 75 76 allActions, err := instanceactions.ExtractInstanceActions(allPages) 77 th.AssertNoErr(t, err) 78 79 var found bool 80 81 for _, action := range allActions { 82 action, err := instanceactions.Get(context.TODO(), client, server.ID, action.RequestID).Extract() 83 th.AssertNoErr(t, err) 84 tools.PrintResource(t, action) 85 86 if action.Action == "reboot" { 87 found = true 88 } 89 } 90 91 th.AssertEquals(t, true, found) 92 93 listOpts = instanceactions.ListOpts{ 94 Limit: 1, 95 ChangesBefore: &now, 96 } 97 98 allPages, err = instanceactions.List(client, server.ID, listOpts).AllPages(context.TODO()) 99 th.AssertNoErr(t, err) 100 101 allActions, err = instanceactions.ExtractInstanceActions(allPages) 102 th.AssertNoErr(t, err) 103 104 th.AssertEquals(t, 0, len(allActions)) 105 }