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  }