github.com/gophercloud/gophercloud@v1.11.0/internal/acceptance/openstack/compute/v2/services_test.go (about)

     1  //go:build acceptance || compute || services
     2  // +build acceptance compute services
     3  
     4  package v2
     5  
     6  import (
     7  	"testing"
     8  
     9  	"github.com/gophercloud/gophercloud/internal/acceptance/clients"
    10  	"github.com/gophercloud/gophercloud/internal/acceptance/tools"
    11  	"github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/services"
    12  	th "github.com/gophercloud/gophercloud/testhelper"
    13  )
    14  
    15  func TestServicesList(t *testing.T) {
    16  	clients.RequireAdmin(t)
    17  
    18  	client, err := clients.NewComputeV2Client()
    19  	th.AssertNoErr(t, err)
    20  
    21  	allPages, err := services.List(client, nil).AllPages()
    22  	th.AssertNoErr(t, err)
    23  
    24  	allServices, err := services.ExtractServices(allPages)
    25  	th.AssertNoErr(t, err)
    26  
    27  	var found bool
    28  	for _, service := range allServices {
    29  		tools.PrintResource(t, service)
    30  
    31  		if service.Binary == "nova-scheduler" {
    32  			found = true
    33  		}
    34  	}
    35  
    36  	th.AssertEquals(t, found, true)
    37  }
    38  
    39  func TestServicesListWithOpts(t *testing.T) {
    40  	clients.RequireAdmin(t)
    41  
    42  	client, err := clients.NewComputeV2Client()
    43  	th.AssertNoErr(t, err)
    44  
    45  	opts := services.ListOpts{
    46  		Binary: "nova-scheduler",
    47  	}
    48  
    49  	allPages, err := services.List(client, opts).AllPages()
    50  	th.AssertNoErr(t, err)
    51  
    52  	allServices, err := services.ExtractServices(allPages)
    53  	th.AssertNoErr(t, err)
    54  
    55  	var found bool
    56  	for _, service := range allServices {
    57  		tools.PrintResource(t, service)
    58  		th.AssertEquals(t, service.Binary, "nova-scheduler")
    59  
    60  		if service.Binary == "nova-scheduler" {
    61  			found = true
    62  		}
    63  	}
    64  
    65  	th.AssertEquals(t, found, true)
    66  }
    67  
    68  func TestServicesUpdate(t *testing.T) {
    69  	clients.RequireAdmin(t)
    70  
    71  	client, err := clients.NewComputeV2Client()
    72  	th.AssertNoErr(t, err)
    73  
    74  	listOpts := services.ListOpts{
    75  		Binary: "nova-compute",
    76  	}
    77  
    78  	client.Microversion = "2.53"
    79  	allPages, err := services.List(client, listOpts).AllPages()
    80  	th.AssertNoErr(t, err)
    81  
    82  	allServices, err := services.ExtractServices(allPages)
    83  	th.AssertNoErr(t, err)
    84  
    85  	// disable all services
    86  	for _, service := range allServices {
    87  		opts := services.UpdateOpts{
    88  			Status: services.ServiceDisabled,
    89  		}
    90  		updated, err := services.Update(client, service.ID, opts).Extract()
    91  		th.AssertNoErr(t, err)
    92  
    93  		th.AssertEquals(t, updated.ID, service.ID)
    94  	}
    95  
    96  	// verify all services are disabled
    97  	allPages, err = services.List(client, listOpts).AllPages()
    98  	th.AssertNoErr(t, err)
    99  
   100  	allServices, err = services.ExtractServices(allPages)
   101  	th.AssertNoErr(t, err)
   102  
   103  	for _, service := range allServices {
   104  		th.AssertEquals(t, service.Status, "disabled")
   105  	}
   106  
   107  	// reenable all services
   108  	allPages, err = services.List(client, listOpts).AllPages()
   109  	th.AssertNoErr(t, err)
   110  
   111  	allServices, err = services.ExtractServices(allPages)
   112  	th.AssertNoErr(t, err)
   113  
   114  	for _, service := range allServices {
   115  		opts := services.UpdateOpts{
   116  			Status: services.ServiceEnabled,
   117  		}
   118  		updated, err := services.Update(client, service.ID, opts).Extract()
   119  		th.AssertNoErr(t, err)
   120  
   121  		th.AssertEquals(t, updated.ID, service.ID)
   122  	}
   123  }