github.com/gophercloud/gophercloud@v1.11.0/internal/acceptance/openstack/compute/v2/hypervisors_test.go (about) 1 //go:build acceptance || compute || hypervisors 2 // +build acceptance compute hypervisors 3 4 package v2 5 6 import ( 7 "fmt" 8 "testing" 9 10 "github.com/gophercloud/gophercloud" 11 "github.com/gophercloud/gophercloud/internal/acceptance/clients" 12 "github.com/gophercloud/gophercloud/internal/acceptance/tools" 13 "github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/hypervisors" 14 th "github.com/gophercloud/gophercloud/testhelper" 15 ) 16 17 func TestHypervisorsList(t *testing.T) { 18 clients.RequireAdmin(t) 19 20 client, err := clients.NewComputeV2Client() 21 th.AssertNoErr(t, err) 22 23 allPages, err := hypervisors.List(client, nil).AllPages() 24 th.AssertNoErr(t, err) 25 26 allHypervisors, err := hypervisors.ExtractHypervisors(allPages) 27 th.AssertNoErr(t, err) 28 29 for _, h := range allHypervisors { 30 tools.PrintResource(t, h) 31 } 32 } 33 34 func TestHypervisorsGet(t *testing.T) { 35 clients.RequireAdmin(t) 36 37 client, err := clients.NewComputeV2Client() 38 th.AssertNoErr(t, err) 39 40 hypervisorID, err := getHypervisorID(t, client) 41 th.AssertNoErr(t, err) 42 43 hypervisor, err := hypervisors.Get(client, hypervisorID).Extract() 44 th.AssertNoErr(t, err) 45 46 tools.PrintResource(t, hypervisor) 47 48 th.AssertEquals(t, hypervisorID, hypervisor.ID) 49 } 50 51 func TestHypervisorsGetStatistics(t *testing.T) { 52 clients.RequireAdmin(t) 53 54 client, err := clients.NewComputeV2Client() 55 th.AssertNoErr(t, err) 56 57 hypervisorsStats, err := hypervisors.GetStatistics(client).Extract() 58 th.AssertNoErr(t, err) 59 60 tools.PrintResource(t, hypervisorsStats) 61 62 if hypervisorsStats.Count == 0 { 63 t.Fatalf("Unable to get hypervisor stats") 64 } 65 } 66 67 func TestHypervisorsGetUptime(t *testing.T) { 68 clients.RequireAdmin(t) 69 70 client, err := clients.NewComputeV2Client() 71 th.AssertNoErr(t, err) 72 73 hypervisorID, err := getHypervisorID(t, client) 74 th.AssertNoErr(t, err) 75 76 hypervisor, err := hypervisors.GetUptime(client, hypervisorID).Extract() 77 th.AssertNoErr(t, err) 78 79 tools.PrintResource(t, hypervisor) 80 81 th.AssertEquals(t, hypervisorID, hypervisor.ID) 82 } 83 84 func TestHypervisorListQuery(t *testing.T) { 85 clients.RequireAdmin(t) 86 87 client, err := clients.NewComputeV2Client() 88 th.AssertNoErr(t, err) 89 90 client.Microversion = "2.53" 91 92 server, err := CreateMicroversionServer(t, client) 93 th.AssertNoErr(t, err) 94 defer DeleteServer(t, client, server) 95 96 iTrue := true 97 listOpts := hypervisors.ListOpts{ 98 WithServers: &iTrue, 99 } 100 101 allPages, err := hypervisors.List(client, listOpts).AllPages() 102 th.AssertNoErr(t, err) 103 104 allHypervisors, err := hypervisors.ExtractHypervisors(allPages) 105 th.AssertNoErr(t, err) 106 107 hypervisor := allHypervisors[0] 108 if len(*hypervisor.Servers) < 1 { 109 t.Fatalf("hypervisor.Servers length should be >= 1") 110 } 111 } 112 113 func getHypervisorID(t *testing.T, client *gophercloud.ServiceClient) (string, error) { 114 allPages, err := hypervisors.List(client, nil).AllPages() 115 th.AssertNoErr(t, err) 116 117 allHypervisors, err := hypervisors.ExtractHypervisors(allPages) 118 th.AssertNoErr(t, err) 119 120 if len(allHypervisors) > 0 { 121 return allHypervisors[0].ID, nil 122 } 123 124 return "", fmt.Errorf("Unable to get hypervisor ID") 125 }