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