diff --git a/gnocchi/client.go b/gnocchi/client.go index a8cc0de..a8c9761 100644 --- a/gnocchi/client.go +++ b/gnocchi/client.go @@ -1,13 +1,15 @@ package gnocchi import ( + "context" + "github.com/gophercloud/gophercloud/v2" ) -func initClientOpts(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts, clientType string) (*gophercloud.ServiceClient, error) { +func initClientOpts(ctx context.Context, client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts, clientType string) (*gophercloud.ServiceClient, error) { sc := new(gophercloud.ServiceClient) eo.ApplyDefaults(clientType) - url, err := client.EndpointLocator(eo) + url, err := client.EndpointLocator(ctx, eo) if err != nil { return sc, err } @@ -18,8 +20,8 @@ func initClientOpts(client *gophercloud.ProviderClient, eo gophercloud.EndpointO } // NewGnocchiV1 creates a ServiceClient that may be used with the v1 Gnocchi package. -func NewGnocchiV1(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { - sc, err := initClientOpts(client, eo, "metric") +func NewGnocchiV1(ctx context.Context, client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { + sc, err := initClientOpts(ctx, client, eo, "metric") sc.ResourceBase = sc.Endpoint + "v1/" return sc, err } diff --git a/gnocchi/metric/v1/archivepolicies/testing/requests_test.go b/gnocchi/metric/v1/archivepolicies/testing/requests_test.go index 392c1ca..a36a25d 100644 --- a/gnocchi/metric/v1/archivepolicies/testing/requests_test.go +++ b/gnocchi/metric/v1/archivepolicies/testing/requests_test.go @@ -13,10 +13,10 @@ import ( ) func TestListArchivePolicies(t *testing.T) { - th.SetupHTTP() - defer th.TeardownHTTP() + fakeServer := th.SetupHTTP() + defer fakeServer.Teardown() - th.Mux.HandleFunc("/v1/archive_policy", func(w http.ResponseWriter, r *http.Request) { + fakeServer.Mux.HandleFunc("/v1/archive_policy", func(w http.ResponseWriter, r *http.Request) { th.TestMethod(t, r, "GET") th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) @@ -28,7 +28,7 @@ func TestListArchivePolicies(t *testing.T) { expected := ListArchivePoliciesExpected pages := 0 - err := archivepolicies.List(fake.ServiceClient()).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { + err := archivepolicies.List(fake.ServiceClient(fakeServer)).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := archivepolicies.ExtractArchivePolicies(page) @@ -46,10 +46,10 @@ func TestListArchivePolicies(t *testing.T) { } func TestListArchivePoliciesAllPages(t *testing.T) { - th.SetupHTTP() - defer th.TeardownHTTP() + fakeServer := th.SetupHTTP() + defer fakeServer.Teardown() - th.Mux.HandleFunc("/v1/archive_policy", func(w http.ResponseWriter, r *http.Request) { + fakeServer.Mux.HandleFunc("/v1/archive_policy", func(w http.ResponseWriter, r *http.Request) { th.TestMethod(t, r, "GET") th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) @@ -59,17 +59,17 @@ func TestListArchivePoliciesAllPages(t *testing.T) { fmt.Fprintf(w, ArchivePoliciesListResult) }) - allPages, err := archivepolicies.List(fake.ServiceClient()).AllPages(context.TODO()) + allPages, err := archivepolicies.List(fake.ServiceClient(fakeServer)).AllPages(context.TODO()) th.AssertNoErr(t, err) _, err = archivepolicies.ExtractArchivePolicies(allPages) th.AssertNoErr(t, err) } func TestGetArchivePolicy(t *testing.T) { - th.SetupHTTP() - defer th.TeardownHTTP() + fakeServer := th.SetupHTTP() + defer fakeServer.Teardown() - th.Mux.HandleFunc("/v1/archive_policy/test_policy", func(w http.ResponseWriter, r *http.Request) { + fakeServer.Mux.HandleFunc("/v1/archive_policy/test_policy", func(w http.ResponseWriter, r *http.Request) { th.TestMethod(t, r, "GET") th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) @@ -79,7 +79,7 @@ func TestGetArchivePolicy(t *testing.T) { fmt.Fprintf(w, ArchivePolicyGetResult) }) - s, err := archivepolicies.Get(context.TODO(), fake.ServiceClient(), "test_policy").Extract() + s, err := archivepolicies.Get(context.TODO(), fake.ServiceClient(fakeServer), "test_policy").Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, s.AggregationMethods, []string{ @@ -104,10 +104,10 @@ func TestGetArchivePolicy(t *testing.T) { } func TestCreate(t *testing.T) { - th.SetupHTTP() - defer th.TeardownHTTP() + fakeServer := th.SetupHTTP() + defer fakeServer.Teardown() - th.Mux.HandleFunc("/v1/archive_policy", func(w http.ResponseWriter, r *http.Request) { + fakeServer.Mux.HandleFunc("/v1/archive_policy", func(w http.ResponseWriter, r *http.Request) { th.TestMethod(t, r, "POST") th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) th.TestHeader(t, r, "Content-Type", "application/json") @@ -139,7 +139,7 @@ func TestCreate(t *testing.T) { }, Name: "test_policy", } - s, err := archivepolicies.Create(context.TODO(), fake.ServiceClient(), opts).Extract() + s, err := archivepolicies.Create(context.TODO(), fake.ServiceClient(fakeServer), opts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, s.AggregationMethods, []string{ @@ -164,10 +164,10 @@ func TestCreate(t *testing.T) { } func TestUpdateArchivePolicy(t *testing.T) { - th.SetupHTTP() - defer th.TeardownHTTP() + fakeServer := th.SetupHTTP() + defer fakeServer.Teardown() - th.Mux.HandleFunc("/v1/archive_policy/test_policy", func(w http.ResponseWriter, r *http.Request) { + fakeServer.Mux.HandleFunc("/v1/archive_policy/test_policy", func(w http.ResponseWriter, r *http.Request) { th.TestMethod(t, r, "PATCH") th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) th.TestHeader(t, r, "Content-Type", "application/json") @@ -192,7 +192,7 @@ func TestUpdateArchivePolicy(t *testing.T) { }, }, } - s, err := archivepolicies.Update(context.TODO(), fake.ServiceClient(), "test_policy", updateOpts).Extract() + s, err := archivepolicies.Update(context.TODO(), fake.ServiceClient(fakeServer), "test_policy", updateOpts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, s.AggregationMethods, []string{ @@ -215,15 +215,15 @@ func TestUpdateArchivePolicy(t *testing.T) { } func TestDelete(t *testing.T) { - th.SetupHTTP() - defer th.TeardownHTTP() + fakeServer := th.SetupHTTP() + defer fakeServer.Teardown() - th.Mux.HandleFunc("/v1/archive_policy/test_policy", func(w http.ResponseWriter, r *http.Request) { + fakeServer.Mux.HandleFunc("/v1/archive_policy/test_policy", func(w http.ResponseWriter, r *http.Request) { th.TestMethod(t, r, "DELETE") th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) w.WriteHeader(http.StatusNoContent) }) - res := archivepolicies.Delete(context.TODO(), fake.ServiceClient(), "test_policy") + res := archivepolicies.Delete(context.TODO(), fake.ServiceClient(fakeServer), "test_policy") th.AssertNoErr(t, res.Err) } diff --git a/gnocchi/metric/v1/measures/testing/requests_test.go b/gnocchi/metric/v1/measures/testing/requests_test.go index befe5c3..3446a19 100644 --- a/gnocchi/metric/v1/measures/testing/requests_test.go +++ b/gnocchi/metric/v1/measures/testing/requests_test.go @@ -14,10 +14,10 @@ import ( ) func TestListMeasures(t *testing.T) { - th.SetupHTTP() - defer th.TeardownHTTP() + fakeServer := th.SetupHTTP() + defer fakeServer.Teardown() - th.Mux.HandleFunc("/v1/metric/9e5a6441-1044-4181-b66e-34e180753040/measures", func(w http.ResponseWriter, r *http.Request) { + fakeServer.Mux.HandleFunc("/v1/metric/9e5a6441-1044-4181-b66e-34e180753040/measures", func(w http.ResponseWriter, r *http.Request) { th.TestMethod(t, r, "GET") th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) @@ -37,7 +37,7 @@ func TestListMeasures(t *testing.T) { } expected := ListMeasuresExpected pages := 0 - err := measures.List(fake.ServiceClient(), metricID, opts).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { + err := measures.List(fake.ServiceClient(fakeServer), metricID, opts).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := measures.ExtractMeasures(page) @@ -55,10 +55,10 @@ func TestListMeasures(t *testing.T) { } func TestCreateMeasures(t *testing.T) { - th.SetupHTTP() - defer th.TeardownHTTP() + fakeServer := th.SetupHTTP() + defer fakeServer.Teardown() - th.Mux.HandleFunc("/v1/metric/9e5a6441-1044-4181-b66e-34e180753040/measures", func(w http.ResponseWriter, r *http.Request) { + fakeServer.Mux.HandleFunc("/v1/metric/9e5a6441-1044-4181-b66e-34e180753040/measures", func(w http.ResponseWriter, r *http.Request) { th.TestMethod(t, r, "POST") th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) th.TestHeader(t, r, "Content-Type", "application/json") @@ -81,15 +81,15 @@ func TestCreateMeasures(t *testing.T) { }, }, } - res := measures.Create(context.TODO(), fake.ServiceClient(), "9e5a6441-1044-4181-b66e-34e180753040", createOpts) + res := measures.Create(context.TODO(), fake.ServiceClient(fakeServer), "9e5a6441-1044-4181-b66e-34e180753040", createOpts) th.AssertNoErr(t, res.Err) } func TestBatchCreateMetrics(t *testing.T) { - th.SetupHTTP() - defer th.TeardownHTTP() + fakeServer := th.SetupHTTP() + defer fakeServer.Teardown() - th.Mux.HandleFunc("/v1/batch/metrics/measures", func(w http.ResponseWriter, r *http.Request) { + fakeServer.Mux.HandleFunc("/v1/batch/metrics/measures", func(w http.ResponseWriter, r *http.Request) { th.TestMethod(t, r, "POST") th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) th.TestHeader(t, r, "Content-Type", "application/json") @@ -128,15 +128,15 @@ func TestBatchCreateMetrics(t *testing.T) { }, }, } - err := measures.BatchCreateMetrics(context.TODO(), fake.ServiceClient(), createOpts).ExtractErr() + err := measures.BatchCreateMetrics(context.TODO(), fake.ServiceClient(fakeServer), createOpts).ExtractErr() th.AssertNoErr(t, err) } func TestBatchCreateResourcesMetrics(t *testing.T) { - th.SetupHTTP() - defer th.TeardownHTTP() + fakeServer := th.SetupHTTP() + defer fakeServer.Teardown() - th.Mux.HandleFunc("/v1/batch/resources/metrics/measures", func(w http.ResponseWriter, r *http.Request) { + fakeServer.Mux.HandleFunc("/v1/batch/resources/metrics/measures", func(w http.ResponseWriter, r *http.Request) { th.TestMethod(t, r, "POST") th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) th.TestHeader(t, r, "Content-Type", "application/json") @@ -207,6 +207,6 @@ func TestBatchCreateResourcesMetrics(t *testing.T) { }, }, } - err := measures.BatchCreateResourcesMetrics(context.TODO(), fake.ServiceClient(), createOpts).ExtractErr() + err := measures.BatchCreateResourcesMetrics(context.TODO(), fake.ServiceClient(fakeServer), createOpts).ExtractErr() th.AssertNoErr(t, err) } diff --git a/gnocchi/metric/v1/metrics/testing/requests_test.go b/gnocchi/metric/v1/metrics/testing/requests_test.go index 9ee549d..2d746b0 100644 --- a/gnocchi/metric/v1/metrics/testing/requests_test.go +++ b/gnocchi/metric/v1/metrics/testing/requests_test.go @@ -16,10 +16,10 @@ import ( ) func TestList(t *testing.T) { - th.SetupHTTP() - defer th.TeardownHTTP() + fakeServer := th.SetupHTTP() + defer fakeServer.Teardown() - th.Mux.HandleFunc("/v1/metric", func(w http.ResponseWriter, r *http.Request) { + fakeServer.Mux.HandleFunc("/v1/metric", func(w http.ResponseWriter, r *http.Request) { th.TestMethod(t, r, "GET") th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) @@ -39,7 +39,7 @@ func TestList(t *testing.T) { count := 0 - metrics.List(fake.ServiceClient(), metrics.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { + metrics.List(fake.ServiceClient(fakeServer), metrics.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := metrics.ExtractMetrics(page) if err != nil { @@ -63,10 +63,10 @@ func TestList(t *testing.T) { } func TestGet(t *testing.T) { - th.SetupHTTP() - defer th.TeardownHTTP() + fakeServer := th.SetupHTTP() + defer fakeServer.Teardown() - th.Mux.HandleFunc("/v1/metric/0ddf61cf-3747-4f75-bf13-13c28ff03ae3", func(w http.ResponseWriter, r *http.Request) { + fakeServer.Mux.HandleFunc("/v1/metric/0ddf61cf-3747-4f75-bf13-13c28ff03ae3", func(w http.ResponseWriter, r *http.Request) { th.TestMethod(t, r, "GET") th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) @@ -76,7 +76,7 @@ func TestGet(t *testing.T) { fmt.Fprintf(w, MetricGetResult) }) - s, err := metrics.Get(context.TODO(), fake.ServiceClient(), "0ddf61cf-3747-4f75-bf13-13c28ff03ae3").Extract() + s, err := metrics.Get(context.TODO(), fake.ServiceClient(fakeServer), "0ddf61cf-3747-4f75-bf13-13c28ff03ae3").Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, s.ArchivePolicy, archivepolicies.ArchivePolicy{ @@ -123,10 +123,10 @@ func TestGet(t *testing.T) { } func TestCreate(t *testing.T) { - th.SetupHTTP() - defer th.TeardownHTTP() + fakeServer := th.SetupHTTP() + defer fakeServer.Teardown() - th.Mux.HandleFunc("/v1/metric", func(w http.ResponseWriter, r *http.Request) { + fakeServer.Mux.HandleFunc("/v1/metric", func(w http.ResponseWriter, r *http.Request) { th.TestMethod(t, r, "POST") th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) th.TestHeader(t, r, "Content-Type", "application/json") @@ -145,7 +145,7 @@ func TestCreate(t *testing.T) { ResourceID: "23d5d3f7-9dfa-4f73-b72b-8b0b0063ec55", Unit: "B/s", } - s, err := metrics.Create(context.TODO(), fake.ServiceClient(), opts).Extract() + s, err := metrics.Create(context.TODO(), fake.ServiceClient(fakeServer), opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, s.ArchivePolicyName, "high") @@ -159,15 +159,15 @@ func TestCreate(t *testing.T) { } func TestDelete(t *testing.T) { - th.SetupHTTP() - defer th.TeardownHTTP() + fakeServer := th.SetupHTTP() + defer fakeServer.Teardown() - th.Mux.HandleFunc("/v1/metric/01b2953e-de74-448a-a305-c84440697933", func(w http.ResponseWriter, r *http.Request) { + fakeServer.Mux.HandleFunc("/v1/metric/01b2953e-de74-448a-a305-c84440697933", func(w http.ResponseWriter, r *http.Request) { th.TestMethod(t, r, "DELETE") th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) w.WriteHeader(http.StatusNoContent) }) - res := metrics.Delete(context.TODO(), fake.ServiceClient(), "01b2953e-de74-448a-a305-c84440697933") + res := metrics.Delete(context.TODO(), fake.ServiceClient(fakeServer), "01b2953e-de74-448a-a305-c84440697933") th.AssertNoErr(t, res.Err) } diff --git a/gnocchi/metric/v1/resources/testing/requests_test.go b/gnocchi/metric/v1/resources/testing/requests_test.go index 30c0a53..49a2c8f 100644 --- a/gnocchi/metric/v1/resources/testing/requests_test.go +++ b/gnocchi/metric/v1/resources/testing/requests_test.go @@ -14,10 +14,10 @@ import ( ) func TestList(t *testing.T) { - th.SetupHTTP() - defer th.TeardownHTTP() + fakeServer := th.SetupHTTP() + defer fakeServer.Teardown() - th.Mux.HandleFunc("/v1/resource/generic", func(w http.ResponseWriter, r *http.Request) { + fakeServer.Mux.HandleFunc("/v1/resource/generic", func(w http.ResponseWriter, r *http.Request) { th.TestMethod(t, r, "GET") th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) @@ -37,7 +37,7 @@ func TestList(t *testing.T) { count := 0 - resources.List(fake.ServiceClient(), resources.ListOpts{}, "generic").EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { + resources.List(fake.ServiceClient(fakeServer), resources.ListOpts{}, "generic").EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := resources.ExtractResources(page) if err != nil { @@ -61,10 +61,10 @@ func TestList(t *testing.T) { } func TestGet(t *testing.T) { - th.SetupHTTP() - defer th.TeardownHTTP() + fakeServer := th.SetupHTTP() + defer fakeServer.Teardown() - th.Mux.HandleFunc("/v1/resource/compute_instance_network/75274f99-faf6-4112-a6d5-2794cb07c789", func(w http.ResponseWriter, r *http.Request) { + fakeServer.Mux.HandleFunc("/v1/resource/compute_instance_network/75274f99-faf6-4112-a6d5-2794cb07c789", func(w http.ResponseWriter, r *http.Request) { th.TestMethod(t, r, "GET") th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) @@ -74,7 +74,7 @@ func TestGet(t *testing.T) { fmt.Fprintf(w, ResourceGetResult) }) - s, err := resources.Get(context.TODO(), fake.ServiceClient(), "compute_instance_network", "75274f99-faf6-4112-a6d5-2794cb07c789").Extract() + s, err := resources.Get(context.TODO(), fake.ServiceClient(fakeServer), "compute_instance_network", "75274f99-faf6-4112-a6d5-2794cb07c789").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, s.CreatedByProjectID, "3d40ca37723449118987b9f288f4ae84") @@ -101,10 +101,10 @@ func TestGet(t *testing.T) { } func TestCreateWithoutMetrics(t *testing.T) { - th.SetupHTTP() - defer th.TeardownHTTP() + fakeServer := th.SetupHTTP() + defer fakeServer.Teardown() - th.Mux.HandleFunc("/v1/resource/generic", func(w http.ResponseWriter, r *http.Request) { + fakeServer.Mux.HandleFunc("/v1/resource/generic", func(w http.ResponseWriter, r *http.Request) { th.TestMethod(t, r, "POST") th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) th.TestHeader(t, r, "Content-Type", "application/json") @@ -122,7 +122,7 @@ func TestCreateWithoutMetrics(t *testing.T) { ProjectID: "4154f088-8333-4e04-94c4-1155c33c0fc9", UserID: "bd5874d6-6662-4b24-a9f01c128871e4ac", } - s, err := resources.Create(context.TODO(), fake.ServiceClient(), "generic", opts).Extract() + s, err := resources.Create(context.TODO(), fake.ServiceClient(fakeServer), "generic", opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, s.CreatedByProjectID, "3d40ca37-7234-4911-8987b9f288f4ae84") @@ -141,10 +141,10 @@ func TestCreateWithoutMetrics(t *testing.T) { } func TestCreateLinkMetrics(t *testing.T) { - th.SetupHTTP() - defer th.TeardownHTTP() + fakeServer := th.SetupHTTP() + defer fakeServer.Teardown() - th.Mux.HandleFunc("/v1/resource/compute_instance_network", func(w http.ResponseWriter, r *http.Request) { + fakeServer.Mux.HandleFunc("/v1/resource/compute_instance_network", func(w http.ResponseWriter, r *http.Request) { th.TestMethod(t, r, "POST") th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) th.TestHeader(t, r, "Content-Type", "application/json") @@ -170,7 +170,7 @@ func TestCreateLinkMetrics(t *testing.T) { "network.outgoing.bytes.rate": "dc9f3198-155b-4b88-a92c-58a3853ce2b2", }, } - s, err := resources.Create(context.TODO(), fake.ServiceClient(), "compute_instance_network", opts).Extract() + s, err := resources.Create(context.TODO(), fake.ServiceClient(fakeServer), "compute_instance_network", opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, s.CreatedByProjectID, "3d40ca37-7234-4911-8987b9f288f4ae84") @@ -192,10 +192,10 @@ func TestCreateLinkMetrics(t *testing.T) { } func TestCreateWithMetrics(t *testing.T) { - th.SetupHTTP() - defer th.TeardownHTTP() + fakeServer := th.SetupHTTP() + defer fakeServer.Teardown() - th.Mux.HandleFunc("/v1/resource/compute_instance_disk", func(w http.ResponseWriter, r *http.Request) { + fakeServer.Mux.HandleFunc("/v1/resource/compute_instance_disk", func(w http.ResponseWriter, r *http.Request) { th.TestMethod(t, r, "POST") th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) th.TestHeader(t, r, "Content-Type", "application/json") @@ -220,7 +220,7 @@ func TestCreateWithMetrics(t *testing.T) { }, }, } - s, err := resources.Create(context.TODO(), fake.ServiceClient(), "compute_instance_disk", opts).Extract() + s, err := resources.Create(context.TODO(), fake.ServiceClient(fakeServer), "compute_instance_disk", opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, s.CreatedByProjectID, "3d40ca37-7234-4911-8987b9f288f4ae84") @@ -241,10 +241,10 @@ func TestCreateWithMetrics(t *testing.T) { } func TestUpdateLinkMetrics(t *testing.T) { - th.SetupHTTP() - defer th.TeardownHTTP() + fakeServer := th.SetupHTTP() + defer fakeServer.Teardown() - th.Mux.HandleFunc("/v1/resource/compute_instance_network/23d5d3f7-9dfa-4f73-b72b-8b0b0063ec55", func(w http.ResponseWriter, r *http.Request) { + fakeServer.Mux.HandleFunc("/v1/resource/compute_instance_network/23d5d3f7-9dfa-4f73-b72b-8b0b0063ec55", func(w http.ResponseWriter, r *http.Request) { th.TestMethod(t, r, "PATCH") th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) th.TestHeader(t, r, "Content-Type", "application/json") @@ -265,7 +265,7 @@ func TestUpdateLinkMetrics(t *testing.T) { EndedAt: &endedAt, Metrics: &metrics, } - s, err := resources.Update(context.TODO(), fake.ServiceClient(), "compute_instance_network", "23d5d3f7-9dfa-4f73-b72b-8b0b0063ec55", updateOpts).Extract() + s, err := resources.Update(context.TODO(), fake.ServiceClient(fakeServer), "compute_instance_network", "23d5d3f7-9dfa-4f73-b72b-8b0b0063ec55", updateOpts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, s.CreatedByProjectID, "3d40ca37-7234-4911-8987b9f288f4ae84") @@ -286,10 +286,10 @@ func TestUpdateLinkMetrics(t *testing.T) { } func TestUpdateCreateMetrics(t *testing.T) { - th.SetupHTTP() - defer th.TeardownHTTP() + fakeServer := th.SetupHTTP() + defer fakeServer.Teardown() - th.Mux.HandleFunc("/v1/resource/compute_instance_network/23d5d3f7-9dfa-4f73-b72b-8b0b0063ec55", func(w http.ResponseWriter, r *http.Request) { + fakeServer.Mux.HandleFunc("/v1/resource/compute_instance_network/23d5d3f7-9dfa-4f73-b72b-8b0b0063ec55", func(w http.ResponseWriter, r *http.Request) { th.TestMethod(t, r, "PATCH") th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) th.TestHeader(t, r, "Content-Type", "application/json") @@ -312,7 +312,7 @@ func TestUpdateCreateMetrics(t *testing.T) { StartedAt: &startedAt, Metrics: &metrics, } - s, err := resources.Update(context.TODO(), fake.ServiceClient(), "compute_instance_network", "23d5d3f7-9dfa-4f73-b72b-8b0b0063ec55", updateOpts).Extract() + s, err := resources.Update(context.TODO(), fake.ServiceClient(fakeServer), "compute_instance_network", "23d5d3f7-9dfa-4f73-b72b-8b0b0063ec55", updateOpts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, s.CreatedByProjectID, "3d40ca37-7234-4911-8987b9f288f4ae84") @@ -333,15 +333,15 @@ func TestUpdateCreateMetrics(t *testing.T) { } func TestDelete(t *testing.T) { - th.SetupHTTP() - defer th.TeardownHTTP() + fakeServer := th.SetupHTTP() + defer fakeServer.Teardown() - th.Mux.HandleFunc("/v1/resource/generic/23d5d3f7-9dfa-4f73-b72b-8b0b0063ec55", func(w http.ResponseWriter, r *http.Request) { + fakeServer.Mux.HandleFunc("/v1/resource/generic/23d5d3f7-9dfa-4f73-b72b-8b0b0063ec55", func(w http.ResponseWriter, r *http.Request) { th.TestMethod(t, r, "DELETE") th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) w.WriteHeader(http.StatusNoContent) }) - res := resources.Delete(context.TODO(), fake.ServiceClient(), "generic", "23d5d3f7-9dfa-4f73-b72b-8b0b0063ec55") + res := resources.Delete(context.TODO(), fake.ServiceClient(fakeServer), "generic", "23d5d3f7-9dfa-4f73-b72b-8b0b0063ec55") th.AssertNoErr(t, res.Err) } diff --git a/gnocchi/metric/v1/resourcetypes/testing/requests_test.go b/gnocchi/metric/v1/resourcetypes/testing/requests_test.go index de081fd..a57f47c 100644 --- a/gnocchi/metric/v1/resourcetypes/testing/requests_test.go +++ b/gnocchi/metric/v1/resourcetypes/testing/requests_test.go @@ -13,10 +13,10 @@ import ( ) func TestList(t *testing.T) { - th.SetupHTTP() - defer th.TeardownHTTP() + fakeServer := th.SetupHTTP() + defer fakeServer.Teardown() - th.Mux.HandleFunc("/v1/resource_type", func(w http.ResponseWriter, r *http.Request) { + fakeServer.Mux.HandleFunc("/v1/resource_type", func(w http.ResponseWriter, r *http.Request) { th.TestMethod(t, r, "GET") th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) @@ -28,7 +28,7 @@ func TestList(t *testing.T) { count := 0 - resourcetypes.List(fake.ServiceClient()).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { + resourcetypes.List(fake.ServiceClient(fakeServer)).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := resourcetypes.ExtractResourceTypes(page) if err != nil { @@ -53,10 +53,10 @@ func TestList(t *testing.T) { } func TestGet(t *testing.T) { - th.SetupHTTP() - defer th.TeardownHTTP() + fakeServer := th.SetupHTTP() + defer fakeServer.Teardown() - th.Mux.HandleFunc("/v1/resource_type/compute_instance", func(w http.ResponseWriter, r *http.Request) { + fakeServer.Mux.HandleFunc("/v1/resource_type/compute_instance", func(w http.ResponseWriter, r *http.Request) { th.TestMethod(t, r, "GET") th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) @@ -66,7 +66,7 @@ func TestGet(t *testing.T) { fmt.Fprintf(w, ResourceTypeGetResult) }) - s, err := resourcetypes.Get(context.TODO(), fake.ServiceClient(), "compute_instance").Extract() + s, err := resourcetypes.Get(context.TODO(), fake.ServiceClient(fakeServer), "compute_instance").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, s.Name, "compute_instance") @@ -90,10 +90,10 @@ func TestGet(t *testing.T) { } func TestCreateWithoutAttributes(t *testing.T) { - th.SetupHTTP() - defer th.TeardownHTTP() + fakeServer := th.SetupHTTP() + defer fakeServer.Teardown() - th.Mux.HandleFunc("/v1/resource_type", func(w http.ResponseWriter, r *http.Request) { + fakeServer.Mux.HandleFunc("/v1/resource_type", func(w http.ResponseWriter, r *http.Request) { th.TestMethod(t, r, "POST") th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) th.TestHeader(t, r, "Content-Type", "application/json") @@ -109,7 +109,7 @@ func TestCreateWithoutAttributes(t *testing.T) { opts := resourcetypes.CreateOpts{ Name: "identity_project", } - s, err := resourcetypes.Create(context.TODO(), fake.ServiceClient(), opts).Extract() + s, err := resourcetypes.Create(context.TODO(), fake.ServiceClient(fakeServer), opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, s.Name, "identity_project") @@ -118,10 +118,10 @@ func TestCreateWithoutAttributes(t *testing.T) { } func TestCreateWithAttributes(t *testing.T) { - th.SetupHTTP() - defer th.TeardownHTTP() + fakeServer := th.SetupHTTP() + defer fakeServer.Teardown() - th.Mux.HandleFunc("/v1/resource_type", func(w http.ResponseWriter, r *http.Request) { + fakeServer.Mux.HandleFunc("/v1/resource_type", func(w http.ResponseWriter, r *http.Request) { th.TestMethod(t, r, "POST") th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) th.TestHeader(t, r, "Content-Type", "application/json") @@ -152,7 +152,7 @@ func TestCreateWithAttributes(t *testing.T) { }, }, } - s, err := resourcetypes.Create(context.TODO(), fake.ServiceClient(), opts).Extract() + s, err := resourcetypes.Create(context.TODO(), fake.ServiceClient(fakeServer), opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, s.Name, "compute_instance_network") @@ -176,10 +176,10 @@ func TestCreateWithAttributes(t *testing.T) { } func TestUpdate(t *testing.T) { - th.SetupHTTP() - defer th.TeardownHTTP() + fakeServer := th.SetupHTTP() + defer fakeServer.Teardown() - th.Mux.HandleFunc("/v1/resource_type/identity_project", func(w http.ResponseWriter, r *http.Request) { + fakeServer.Mux.HandleFunc("/v1/resource_type/identity_project", func(w http.ResponseWriter, r *http.Request) { th.TestMethod(t, r, "PATCH") th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) th.TestHeader(t, r, "Content-Type", "application/json-patch+json") @@ -226,7 +226,7 @@ func TestUpdate(t *testing.T) { }, } - s, err := resourcetypes.Update(context.TODO(), fake.ServiceClient(), "identity_project", opts).Extract() + s, err := resourcetypes.Update(context.TODO(), fake.ServiceClient(fakeServer), "identity_project", opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, s.Name, "identity_project") @@ -256,15 +256,15 @@ func TestUpdate(t *testing.T) { } func TestDelete(t *testing.T) { - th.SetupHTTP() - defer th.TeardownHTTP() + fakeServer := th.SetupHTTP() + defer fakeServer.Teardown() - th.Mux.HandleFunc("/v1/resource_type/compute_instance_network", func(w http.ResponseWriter, r *http.Request) { + fakeServer.Mux.HandleFunc("/v1/resource_type/compute_instance_network", func(w http.ResponseWriter, r *http.Request) { th.TestMethod(t, r, "DELETE") th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) w.WriteHeader(http.StatusNoContent) }) - res := resourcetypes.Delete(context.TODO(), fake.ServiceClient(), "compute_instance_network") + res := resourcetypes.Delete(context.TODO(), fake.ServiceClient(fakeServer), "compute_instance_network") th.AssertNoErr(t, res.Err) } diff --git a/gnocchi/metric/v1/status/testing/requests_test.go b/gnocchi/metric/v1/status/testing/requests_test.go index 021cc5b..2aaceab 100644 --- a/gnocchi/metric/v1/status/testing/requests_test.go +++ b/gnocchi/metric/v1/status/testing/requests_test.go @@ -12,10 +12,10 @@ import ( ) func TestGetWithDetails(t *testing.T) { - th.SetupHTTP() - defer th.TeardownHTTP() + fakeServer := th.SetupHTTP() + defer fakeServer.Teardown() - th.Mux.HandleFunc("/v1/status", func(w http.ResponseWriter, r *http.Request) { + fakeServer.Mux.HandleFunc("/v1/status", func(w http.ResponseWriter, r *http.Request) { th.TestMethod(t, r, "GET") th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) @@ -31,17 +31,17 @@ func TestGetWithDetails(t *testing.T) { Details: &details, } - s, err := status.Get(context.TODO(), fake.ServiceClient(), getOpts).Extract() + s, err := status.Get(context.TODO(), fake.ServiceClient(fakeServer), getOpts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, s.Metricd, GetStatusWithDetailsExpected.Metricd) th.AssertDeepEquals(t, s.Storage, GetStatusWithDetailsExpected.Storage) } func TestGetWithoutDetails(t *testing.T) { - th.SetupHTTP() - defer th.TeardownHTTP() + fakeServer := th.SetupHTTP() + defer fakeServer.Teardown() - th.Mux.HandleFunc("/v1/status", func(w http.ResponseWriter, r *http.Request) { + fakeServer.Mux.HandleFunc("/v1/status", func(w http.ResponseWriter, r *http.Request) { th.TestMethod(t, r, "GET") th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) @@ -57,7 +57,7 @@ func TestGetWithoutDetails(t *testing.T) { Details: &details, } - s, err := status.Get(context.TODO(), fake.ServiceClient(), getOpts).Extract() + s, err := status.Get(context.TODO(), fake.ServiceClient(fakeServer), getOpts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, s.Metricd, GetStatusWithoutDetailsExpected.Metricd) th.AssertDeepEquals(t, s.Storage, GetStatusWithoutDetailsExpected.Storage) diff --git a/gnocchi/testhelper/client/fake.go b/gnocchi/testhelper/client/fake.go index 79ad34e..6e4cbf7 100644 --- a/gnocchi/testhelper/client/fake.go +++ b/gnocchi/testhelper/client/fake.go @@ -2,6 +2,7 @@ package client import ( "github.com/gophercloud/gophercloud/v2" + th "github.com/gophercloud/gophercloud/v2/testhelper" "github.com/gophercloud/gophercloud/v2/testhelper/client" ) @@ -9,8 +10,8 @@ import ( const TokenID = client.TokenID // ServiceClient returns a generic service client for use in tests. -func ServiceClient() *gophercloud.ServiceClient { - sc := client.ServiceClient() +func ServiceClient(fakeServer th.FakeServer) *gophercloud.ServiceClient { + sc := client.ServiceClient(fakeServer) sc.ResourceBase = sc.Endpoint + "v1/" return sc } diff --git a/go.mod b/go.mod index c29c891..57a45a0 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ toolchain go1.24.1 require ( github.com/gofrs/uuid/v5 v5.3.2 - github.com/gophercloud/gophercloud/v2 v2.7.0 + github.com/gophercloud/gophercloud/v2 v2.0.1-0.20250709162049-71abd83a4ca7 golang.org/x/sys v0.34.0 golang.org/x/text v0.27.0 gopkg.in/yaml.v3 v3.0.1 diff --git a/go.sum b/go.sum index e15146c..689c292 100644 --- a/go.sum +++ b/go.sum @@ -1,7 +1,7 @@ github.com/gofrs/uuid/v5 v5.3.2 h1:2jfO8j3XgSwlz/wHqemAEugfnTlikAYHhnqQ8Xh4fE0= github.com/gofrs/uuid/v5 v5.3.2/go.mod h1:CDOjlDMVAtN56jqyRUZh58JT31Tiw7/oQyEXZV+9bD8= -github.com/gophercloud/gophercloud/v2 v2.7.0 h1:o0m4kgVcPgHlcXiWAjoVxGd8QCmvM5VU+YM71pFbn0E= -github.com/gophercloud/gophercloud/v2 v2.7.0/go.mod h1:Ki/ILhYZr/5EPebrPL9Ej+tUg4lqx71/YH2JWVeU+Qk= +github.com/gophercloud/gophercloud/v2 v2.0.1-0.20250709162049-71abd83a4ca7 h1:hqZdzFnXodN4g5f1TArkEU0ujK6AH9Pamk9WetTB+zQ= +github.com/gophercloud/gophercloud/v2 v2.0.1-0.20250709162049-71abd83a4ca7/go.mod h1:FuB4dwwlFPGSfQvicuLchZPOlhMkWdIIxeewpfK6Ka0= golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= diff --git a/openstack/clientconfig/requests.go b/openstack/clientconfig/requests.go index f334774..c378023 100644 --- a/openstack/clientconfig/requests.go +++ b/openstack/clientconfig/requests.go @@ -888,21 +888,21 @@ func NewServiceClient(ctx context.Context, service string, opts *ClientOpts) (*g switch service { case "baremetal": - return openstack.NewBareMetalV1(pClient, eo) + return openstack.NewBareMetalV1(ctx, pClient, eo) case "baremetal-introspection": - return openstack.NewBareMetalIntrospectionV1(pClient, eo) + return openstack.NewBareMetalIntrospectionV1(ctx, pClient, eo) case "compute": - return openstack.NewComputeV2(pClient, eo) + return openstack.NewComputeV2(ctx, pClient, eo) case "container": - return openstack.NewContainerV1(pClient, eo) + return openstack.NewContainerV1(ctx, pClient, eo) case "container-infra": - return openstack.NewContainerInfraV1(pClient, eo) + return openstack.NewContainerInfraV1(ctx, pClient, eo) case "database": - return openstack.NewDBV1(pClient, eo) + return openstack.NewDBV1(ctx, pClient, eo) case "dns": - return openstack.NewDNSV2(pClient, eo) + return openstack.NewDNSV2(ctx, pClient, eo) case "gnocchi": - return gnocchi.NewGnocchiV1(pClient, eo) + return gnocchi.NewGnocchiV1(ctx, pClient, eo) case "identity": identityVersion := "3" if v := cloud.IdentityAPIVersion; v != "" { @@ -911,34 +911,34 @@ func NewServiceClient(ctx context.Context, service string, opts *ClientOpts) (*g switch identityVersion { case "v2", "2", "2.0": - return openstack.NewIdentityV2(pClient, eo) + return openstack.NewIdentityV2(ctx, pClient, eo) case "v3", "3": - return openstack.NewIdentityV3(pClient, eo) + return openstack.NewIdentityV3(ctx, pClient, eo) default: return nil, fmt.Errorf("invalid identity API version") } case "image": - return openstack.NewImageV2(pClient, eo) + return openstack.NewImageV2(ctx, pClient, eo) case "key-manager": - return openstack.NewKeyManagerV1(pClient, eo) + return openstack.NewKeyManagerV1(ctx, pClient, eo) case "load-balancer": - return openstack.NewLoadBalancerV2(pClient, eo) + return openstack.NewLoadBalancerV2(ctx, pClient, eo) case "messaging": clientID, err := uuid.NewV4() if err != nil { return nil, fmt.Errorf("failed to generate UUID: %w", err) } - return openstack.NewMessagingV2(pClient, clientID.String(), eo) + return openstack.NewMessagingV2(ctx, pClient, clientID.String(), eo) case "network": - return openstack.NewNetworkV2(pClient, eo) + return openstack.NewNetworkV2(ctx, pClient, eo) case "object-store": - return openstack.NewObjectStorageV1(pClient, eo) + return openstack.NewObjectStorageV1(ctx, pClient, eo) case "orchestration": - return openstack.NewOrchestrationV1(pClient, eo) + return openstack.NewOrchestrationV1(ctx, pClient, eo) case "placement": - return openstack.NewPlacementV1(pClient, eo) + return openstack.NewPlacementV1(ctx, pClient, eo) case "sharev2": - return openstack.NewSharedFileSystemV2(pClient, eo) + return openstack.NewSharedFileSystemV2(ctx, pClient, eo) case "volume": volumeVersion := "3" if v := cloud.VolumeAPIVersion; v != "" { @@ -947,16 +947,16 @@ func NewServiceClient(ctx context.Context, service string, opts *ClientOpts) (*g switch volumeVersion { case "v1", "1": - return openstack.NewBlockStorageV1(pClient, eo) + return openstack.NewBlockStorageV1(ctx, pClient, eo) case "v2", "2": - return openstack.NewBlockStorageV2(pClient, eo) + return openstack.NewBlockStorageV2(ctx, pClient, eo) case "v3", "3": - return openstack.NewBlockStorageV3(pClient, eo) + return openstack.NewBlockStorageV3(ctx, pClient, eo) default: return nil, fmt.Errorf("invalid volume API version") } case "workflowv2": - return openstack.NewWorkflowV2(pClient, eo) + return openstack.NewWorkflowV2(ctx, pClient, eo) } return nil, fmt.Errorf("unable to create a service client for %s", service) diff --git a/openstack/objectstorage/v1/objects/testing/fixtures.go b/openstack/objectstorage/v1/objects/testing/fixtures.go index 0781269..d0e8081 100644 --- a/openstack/objectstorage/v1/objects/testing/fixtures.go +++ b/openstack/objectstorage/v1/objects/testing/fixtures.go @@ -64,8 +64,8 @@ var expectedMultipartManifest = []objects.Manifest{ // HandleDownloadManifestSuccessfully creates an HTTP handler at // `/testContainer/testObject` on the test handler mux that responds with a // Download response. -func HandleDownloadManifestSuccessfully(t *testing.T) { - th.Mux.HandleFunc("/testContainer/testObject", func(w http.ResponseWriter, r *http.Request) { +func HandleDownloadManifestSuccessfully(t *testing.T, fakeServer th.FakeServer) { + fakeServer.Mux.HandleFunc("/testContainer/testObject", func(w http.ResponseWriter, r *http.Request) { th.TestMethod(t, r, "GET") th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) th.TestHeader(t, r, "Accept", "application/json") diff --git a/openstack/objectstorage/v1/objects/testing/manifest_test.go b/openstack/objectstorage/v1/objects/testing/manifest_test.go index dde5f56..7784b12 100644 --- a/openstack/objectstorage/v1/objects/testing/manifest_test.go +++ b/openstack/objectstorage/v1/objects/testing/manifest_test.go @@ -42,15 +42,15 @@ func TestMultipartManifest(t *testing.T) { } func TestChunkData(t *testing.T) { - th.SetupHTTP() - defer th.TeardownHTTP() - HandleDownloadManifestSuccessfully(t) + fakeServer := th.SetupHTTP() + defer fakeServer.Teardown() + HandleDownloadManifestSuccessfully(t, fakeServer) downloadOpts := o.DownloadOpts{ MultipartManifest: "get", } - res := o.Download(context.TODO(), fake.ServiceClient(), "testContainer", "testObject", downloadOpts) + res := o.Download(context.TODO(), fake.ServiceClient(fakeServer), "testContainer", "testObject", downloadOpts) defer res.Body.Close() th.AssertNoErr(t, res.Err) @@ -67,7 +67,7 @@ func TestChunkData(t *testing.T) { StaticLargeObject: true, } - actualChunkData, err := objects.GetManifest(context.TODO(), fake.ServiceClient(), gmo) + actualChunkData, err := objects.GetManifest(context.TODO(), fake.ServiceClient(fakeServer), gmo) th.AssertNoErr(t, err) th.AssertDeepEquals(t, actualChunkData, expectedMultipartManifest) } diff --git a/terraform/auth/config.go b/terraform/auth/config.go index 622b9c5..1f758c8 100644 --- a/terraform/auth/config.go +++ b/terraform/auth/config.go @@ -247,7 +247,7 @@ func (c *Config) Authenticate(ctx context.Context) error { // DetermineEndpoint is a helper method to determine if the user wants to // override an endpoint returned from the catalog. -func (c *Config) DetermineEndpoint(client *gophercloud.ServiceClient, eo gophercloud.EndpointOpts, service string) (*gophercloud.ServiceClient, error) { +func (c *Config) DetermineEndpoint(ctx context.Context, client *gophercloud.ServiceClient, eo gophercloud.EndpointOpts, service string) (*gophercloud.ServiceClient, error) { v, ok := c.EndpointOverrides[service] if !ok { return client, nil @@ -270,7 +270,7 @@ func (c *Config) DetermineEndpoint(client *gophercloud.ServiceClient, eo gopherc // overriden endpoint is a new service type eo.ApplyDefaults(val) - url, err := c.OsClient.EndpointLocator(eo) + url, err := c.OsClient.EndpointLocator(ctx, eo) if err != nil { log.Printf("[DEBUG] Cannot set a new OpenStack Endpoint %s alias: %v", val, err) return client, err @@ -299,7 +299,7 @@ func (c *Config) DetermineRegion(region string) string { // The following methods assist with the creation of individual Service Clients // which interact with the various OpenStack services. -type commonCommonServiceClientInitFunc func(*gophercloud.ProviderClient, gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) +type commonCommonServiceClientInitFunc func(context.Context, *gophercloud.ProviderClient, gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) func (c *Config) CommonServiceClientInit(ctx context.Context, newClient commonCommonServiceClientInitFunc, region, service string) (*gophercloud.ServiceClient, error) { if err := c.Authenticate(ctx); err != nil { @@ -310,9 +310,9 @@ func (c *Config) CommonServiceClientInit(ctx context.Context, newClient commonCo Region: c.DetermineRegion(region), Availability: clientconfig.GetEndpointType(c.EndpointType), } - client, err := newClient(c.OsClient, eo) + client, err := newClient(ctx, c.OsClient, eo) if err, ok := err.(*gophercloud.ErrEndpointNotFound); ok && client != nil { - client, e := c.DetermineEndpoint(client, eo, service) + client, e := c.DetermineEndpoint(ctx, client, eo, service) if e != nil { return client, e } @@ -325,7 +325,7 @@ func (c *Config) CommonServiceClientInit(ctx context.Context, newClient commonCo return client, err } - return c.DetermineEndpoint(client, eo, service) + return c.DetermineEndpoint(ctx, client, eo, service) } func (c *Config) BlockStorageV1Client(ctx context.Context, region string) (*gophercloud.ServiceClient, error) { @@ -365,9 +365,9 @@ func (c *Config) MessagingV2Client(ctx context.Context, clientID string, region Region: c.DetermineRegion(region), Availability: clientconfig.GetEndpointType(c.EndpointType), } - client, err := openstack.NewMessagingV2(c.OsClient, clientID, eo) + client, err := openstack.NewMessagingV2(ctx, c.OsClient, clientID, eo) if err, ok := err.(*gophercloud.ErrEndpointNotFound); ok && client != nil { - client, e := c.DetermineEndpoint(client, eo, "messaging") + client, e := c.DetermineEndpoint(ctx, client, eo, "messaging") if e != nil { return client, e } @@ -380,7 +380,7 @@ func (c *Config) MessagingV2Client(ctx context.Context, clientID string, region return client, err } - return c.DetermineEndpoint(client, eo, "messaging") + return c.DetermineEndpoint(ctx, client, eo, "messaging") } func (c *Config) NetworkingV2Client(ctx context.Context, region string) (*gophercloud.ServiceClient, error) {