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 }