diff --git a/internal/acceptance/clients/clients.go b/internal/acceptance/clients/clients.go index 3de05132fd..9fdde23c10 100644 --- a/internal/acceptance/clients/clients.go +++ b/internal/acceptance/clients/clients.go @@ -218,7 +218,7 @@ func NewBlockStorageV2NoAuthClient() (*gophercloud.ServiceClient, error) { } // NewBlockStorageV3NoAuthClient returns a noauth *ServiceClient for -// making calls to the OpenStack Block Storage v2 API. An error will be +// making calls to the OpenStack Block Storage v3 API. An error will be // returned if client creation was not possible. func NewBlockStorageV3NoAuthClient() (*gophercloud.ServiceClient, error) { client, err := blockstorageNoAuth.NewClient(gophercloud.AuthOptions{ diff --git a/internal/acceptance/clients/conditions.go b/internal/acceptance/clients/conditions.go index a1239a1ba7..619d31a94e 100644 --- a/internal/acceptance/clients/conditions.go +++ b/internal/acceptance/clients/conditions.go @@ -83,8 +83,24 @@ func RequireNovaNetwork(t *testing.T) { } } -// RequireIronicHTTPBasic will restric a test to be only run in -// environments that have Ironic using http_basic. +// RequireCinderNoAuth will restrict a test to be only run in environments that +// have Cinder using noauth. +func RequireCinderNoAuth(t *testing.T) { + if os.Getenv("CINDER_ENDPOINT") == "" || os.Getenv("OS_USERNAME") == "" { + t.Skip("this test requires Cinder using noauth, set OS_USERNAME and CINDER_ENDPOINT") + } +} + +// RequireIronicNoAuth will restrict a test to be only run in environments that +// have Ironic using noauth. +func RequireIronicNoAuth(t *testing.T) { + if os.Getenv("IRONIC_ENDPOINT") == "" || os.Getenv("OS_USERNAME") == "" { + t.Skip("this test requires IRONIC using noauth, set OS_USERNAME and IRONIC_ENDPOINT") + } +} + +// RequireIronicHTTPBasic will restrict a test to be only run in environments +// that have Ironic using http_basic. func RequireIronicHTTPBasic(t *testing.T) { if os.Getenv("IRONIC_ENDPOINT") == "" || os.Getenv("OS_USERNAME") == "" || os.Getenv("OS_PASSWORD") == "" { t.Skip("this test requires Ironic using http_basic, set OS_USERNAME, OS_PASSWORD and IRONIC_ENDPOINT") diff --git a/internal/acceptance/openstack/baremetal/noauth/allocations_test.go b/internal/acceptance/openstack/baremetal/noauth/allocations_test.go index bad5c1400a..e6cb33ac3d 100644 --- a/internal/acceptance/openstack/baremetal/noauth/allocations_test.go +++ b/internal/acceptance/openstack/baremetal/noauth/allocations_test.go @@ -15,6 +15,7 @@ import ( func TestAllocationsCreateDestroy(t *testing.T) { clients.RequireLong(t) + clients.RequireIronicNoAuth(t) client, err := clients.NewBareMetalV1NoAuthClient() th.AssertNoErr(t, err) diff --git a/internal/acceptance/openstack/baremetal/noauth/nodes_test.go b/internal/acceptance/openstack/baremetal/noauth/nodes_test.go index b7e530d9d6..bd05203b2e 100644 --- a/internal/acceptance/openstack/baremetal/noauth/nodes_test.go +++ b/internal/acceptance/openstack/baremetal/noauth/nodes_test.go @@ -16,6 +16,7 @@ import ( func TestNodesCreateDestroy(t *testing.T) { clients.RequireLong(t) + clients.RequireIronicNoAuth(t) client, err := clients.NewBareMetalV1NoAuthClient() th.AssertNoErr(t, err) @@ -48,6 +49,7 @@ func TestNodesCreateDestroy(t *testing.T) { func TestNodesUpdate(t *testing.T) { clients.RequireLong(t) + clients.RequireIronicNoAuth(t) client, err := clients.NewBareMetalV1NoAuthClient() th.AssertNoErr(t, err) @@ -72,6 +74,7 @@ func TestNodesUpdate(t *testing.T) { func TestNodesRAIDConfig(t *testing.T) { clients.SkipReleasesBelow(t, "stable/ussuri") clients.RequireLong(t) + clients.RequireIronicNoAuth(t) client, err := clients.NewBareMetalV1NoAuthClient() th.AssertNoErr(t, err) diff --git a/internal/acceptance/openstack/baremetal/noauth/ports_test.go b/internal/acceptance/openstack/baremetal/noauth/ports_test.go index 9af3d38de7..f27b7fe78b 100644 --- a/internal/acceptance/openstack/baremetal/noauth/ports_test.go +++ b/internal/acceptance/openstack/baremetal/noauth/ports_test.go @@ -16,6 +16,7 @@ import ( func TestPortsCreateDestroy(t *testing.T) { clients.RequireLong(t) + clients.RequireIronicNoAuth(t) client, err := clients.NewBareMetalV1NoAuthClient() th.AssertNoErr(t, err) @@ -50,6 +51,7 @@ func TestPortsCreateDestroy(t *testing.T) { func TestPortsUpdate(t *testing.T) { clients.RequireLong(t) + clients.RequireIronicNoAuth(t) client, err := clients.NewBareMetalV1NoAuthClient() th.AssertNoErr(t, err) diff --git a/internal/acceptance/openstack/blockstorage/noauth/snapshots_test.go b/internal/acceptance/openstack/blockstorage/noauth/snapshots_test.go index 58ea0880a0..5b8bb2a982 100644 --- a/internal/acceptance/openstack/blockstorage/noauth/snapshots_test.go +++ b/internal/acceptance/openstack/blockstorage/noauth/snapshots_test.go @@ -12,6 +12,8 @@ import ( ) func TestSnapshotsList(t *testing.T) { + clients.RequireCinderNoAuth(t) + client, err := clients.NewBlockStorageV3NoAuthClient() if err != nil { t.Fatalf("Unable to create a blockstorage client: %v", err) @@ -33,6 +35,8 @@ func TestSnapshotsList(t *testing.T) { } func TestSnapshotsCreateDelete(t *testing.T) { + clients.RequireCinderNoAuth(t) + client, err := clients.NewBlockStorageV3NoAuthClient() if err != nil { t.Fatalf("Unable to create a blockstorage client: %v", err) diff --git a/internal/acceptance/openstack/blockstorage/noauth/volumes_test.go b/internal/acceptance/openstack/blockstorage/noauth/volumes_test.go index 90fa1bf7fe..0c993addad 100644 --- a/internal/acceptance/openstack/blockstorage/noauth/volumes_test.go +++ b/internal/acceptance/openstack/blockstorage/noauth/volumes_test.go @@ -12,6 +12,8 @@ import ( ) func TestVolumesList(t *testing.T) { + clients.RequireCinderNoAuth(t) + client, err := clients.NewBlockStorageV3NoAuthClient() if err != nil { t.Fatalf("Unable to create a blockstorage client: %v", err) @@ -33,6 +35,8 @@ func TestVolumesList(t *testing.T) { } func TestVolumesCreateDestroy(t *testing.T) { + clients.RequireCinderNoAuth(t) + client, err := clients.NewBlockStorageV3NoAuthClient() if err != nil { t.Fatalf("Unable to create blockstorage client: %v", err) diff --git a/internal/acceptance/openstack/networking/v2/conditions.go b/internal/acceptance/openstack/networking/v2/conditions.go new file mode 100644 index 0000000000..036cba6044 --- /dev/null +++ b/internal/acceptance/openstack/networking/v2/conditions.go @@ -0,0 +1,18 @@ +package v2 + +import ( + "context" + "testing" + + "github.com/gophercloud/gophercloud/v2" + "github.com/gophercloud/gophercloud/v2/openstack/common/extensions" +) + +// RequireNeutronExtension will restrict a test to be only run in environments +// with the requested Neutron extension present. +func RequireNeutronExtension(t *testing.T, client *gophercloud.ServiceClient, extension string) { + _, err := extensions.Get(context.TODO(), client, extension).Extract() + if err != nil { + t.Skipf("this test requires %s Neutron extension", extension) + } +} diff --git a/internal/acceptance/openstack/networking/v2/extensions/dns/dns_test.go b/internal/acceptance/openstack/networking/v2/extensions/dns/dns_test.go index 555ebe28fa..c9c32d4940 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/dns/dns_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/dns/dns_test.go @@ -11,7 +11,6 @@ import ( networking "github.com/gophercloud/gophercloud/v2/internal/acceptance/openstack/networking/v2" "github.com/gophercloud/gophercloud/v2/internal/acceptance/openstack/networking/v2/extensions/layer3" "github.com/gophercloud/gophercloud/v2/internal/acceptance/tools" - "github.com/gophercloud/gophercloud/v2/openstack/common/extensions" "github.com/gophercloud/gophercloud/v2/openstack/networking/v2/extensions/dns" "github.com/gophercloud/gophercloud/v2/openstack/networking/v2/extensions/layer3/floatingips" "github.com/gophercloud/gophercloud/v2/openstack/networking/v2/networks" @@ -26,11 +25,8 @@ func TestDNSPortCRUDL(t *testing.T) { client, err := clients.NewNetworkV2Client() th.AssertNoErr(t, err) - extension, err := extensions.Get(context.TODO(), client, "dns-integration").Extract() - if err != nil { - t.Skip("This test requires dns-integration Neutron extension") - } - tools.PrintResource(t, extension) + // Skip these tests if we don't have the required extension + networking.RequireNeutronExtension(t, client, "dns-integration") // Create Network networkDNSDomain := "local." @@ -153,11 +149,8 @@ func TestDNSFloatingIPCRDL(t *testing.T) { client, err := clients.NewNetworkV2Client() th.AssertNoErr(t, err) - extension, err := extensions.Get(context.TODO(), client, "dns-integration").Extract() - if err != nil { - t.Skip("This test requires dns-integration Neutron extension") - } - tools.PrintResource(t, extension) + // Skip these tests if we don't have the required extension + networking.RequireNeutronExtension(t, client, "dns-integration") choices, err := clients.AcceptanceTestChoicesFromEnv() th.AssertNoErr(t, err) @@ -215,11 +208,8 @@ func TestDNSNetwork(t *testing.T) { client, err := clients.NewNetworkV2Client() th.AssertNoErr(t, err) - extension, err := extensions.Get(context.TODO(), client, "dns-integration").Extract() - if err != nil { - t.Skip("This test requires dns-integration Neutron extension") - } - tools.PrintResource(t, extension) + // Skip these tests if we don't have the required extension + networking.RequireNeutronExtension(t, client, "dns-integration") // Create Network networkDNSDomain := "local." diff --git a/internal/acceptance/openstack/networking/v2/extensions/fwaas_v2/groups_test.go b/internal/acceptance/openstack/networking/v2/extensions/fwaas_v2/groups_test.go index dd4479c5ae..b8ee611c95 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/fwaas_v2/groups_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/fwaas_v2/groups_test.go @@ -7,6 +7,7 @@ import ( "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" + networking "github.com/gophercloud/gophercloud/v2/internal/acceptance/openstack/networking/v2" "github.com/gophercloud/gophercloud/v2/internal/acceptance/tools" "github.com/gophercloud/gophercloud/v2/openstack/networking/v2/extensions/fwaas_v2/groups" th "github.com/gophercloud/gophercloud/v2/testhelper" @@ -20,6 +21,9 @@ func TestGroupCRUD(t *testing.T) { client, err := clients.NewNetworkV2Client() th.AssertNoErr(t, err) + // Skip these tests if we don't have the required extension + networking.RequireNeutronExtension(t, client, "fwaas_v2") + createdGroup, err := CreateGroup(t, client) th.AssertNoErr(t, err) defer DeleteGroup(t, client, createdGroup.ID) diff --git a/internal/acceptance/openstack/networking/v2/extensions/fwaas_v2/policy_test.go b/internal/acceptance/openstack/networking/v2/extensions/fwaas_v2/policy_test.go index 2b8035cf81..881e9a87aa 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/fwaas_v2/policy_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/fwaas_v2/policy_test.go @@ -7,6 +7,7 @@ import ( "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" + networking "github.com/gophercloud/gophercloud/v2/internal/acceptance/openstack/networking/v2" "github.com/gophercloud/gophercloud/v2/internal/acceptance/tools" "github.com/gophercloud/gophercloud/v2/openstack/networking/v2/extensions/fwaas_v2/policies" th "github.com/gophercloud/gophercloud/v2/testhelper" @@ -20,6 +21,9 @@ func TestPolicyCRUD(t *testing.T) { client, err := clients.NewNetworkV2Client() th.AssertNoErr(t, err) + // Skip these tests if we don't have the required extension + networking.RequireNeutronExtension(t, client, "fwaas_v2") + // Create First Rule. This will be used as part of the Policy creation rule, err := CreateRule(t, client) th.AssertNoErr(t, err) diff --git a/internal/acceptance/openstack/networking/v2/extensions/fwaas_v2/rule_test.go b/internal/acceptance/openstack/networking/v2/extensions/fwaas_v2/rule_test.go index 56fd490171..53de93fa84 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/fwaas_v2/rule_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/fwaas_v2/rule_test.go @@ -9,6 +9,7 @@ import ( "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" + networking "github.com/gophercloud/gophercloud/v2/internal/acceptance/openstack/networking/v2" "github.com/gophercloud/gophercloud/v2/internal/acceptance/tools" "github.com/gophercloud/gophercloud/v2/openstack/networking/v2/extensions/fwaas_v2/rules" th "github.com/gophercloud/gophercloud/v2/testhelper" @@ -22,6 +23,9 @@ func TestRuleCRUD(t *testing.T) { client, err := clients.NewNetworkV2Client() th.AssertNoErr(t, err) + // Skip these tests if we don't have the required extension + networking.RequireNeutronExtension(t, client, "fwaas_v2") + rule, err := CreateRule(t, client) th.AssertNoErr(t, err) defer DeleteRule(t, client, rule.ID) diff --git a/internal/acceptance/openstack/networking/v2/extensions/layer3/l3_scheduling_test.go b/internal/acceptance/openstack/networking/v2/extensions/layer3/l3_scheduling_test.go index 70db4e9037..ed110dfff4 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/layer3/l3_scheduling_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/layer3/l3_scheduling_test.go @@ -7,9 +7,8 @@ import ( "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" - networking "github.com/gophercloud/gophercloud/v2/internal/acceptance/openstack/networking/v2" + v2 "github.com/gophercloud/gophercloud/v2/internal/acceptance/openstack/networking/v2" "github.com/gophercloud/gophercloud/v2/internal/acceptance/tools" - "github.com/gophercloud/gophercloud/v2/openstack/common/extensions" "github.com/gophercloud/gophercloud/v2/openstack/networking/v2/extensions/agents" "github.com/gophercloud/gophercloud/v2/openstack/networking/v2/extensions/layer3/routers" th "github.com/gophercloud/gophercloud/v2/testhelper" @@ -19,18 +18,16 @@ func TestLayer3RouterScheduling(t *testing.T) { client, err := clients.NewNetworkV2Client() th.AssertNoErr(t, err) - _, err = extensions.Get(context.TODO(), client, "l3_agent_scheduler").Extract() - if err != nil { - t.Skip("Extension l3_agent_scheduler not present") - } + // Skip these tests if we don't have the required extension + v2.RequireNeutronExtension(t, client, "l3_agent_scheduler") - network, err := networking.CreateNetwork(t, client) + network, err := v2.CreateNetwork(t, client) th.AssertNoErr(t, err) - defer networking.DeleteNetwork(t, client, network.ID) + defer v2.DeleteNetwork(t, client, network.ID) - subnet, err := networking.CreateSubnet(t, client, network.ID) + subnet, err := v2.CreateSubnet(t, client, network.ID) th.AssertNoErr(t, err) - defer networking.DeleteSubnet(t, client, subnet.ID) + defer v2.DeleteSubnet(t, client, subnet.ID) router, err := CreateRouter(t, client, network.ID) th.AssertNoErr(t, err) diff --git a/internal/acceptance/openstack/networking/v2/extensions/mtu/mtu_test.go b/internal/acceptance/openstack/networking/v2/extensions/mtu/mtu_test.go index 71ad8d4581..8f0e3b5e38 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/mtu/mtu_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/mtu/mtu_test.go @@ -22,11 +22,8 @@ func TestMTUNetworkCRUDL(t *testing.T) { client, err := clients.NewNetworkV2Client() th.AssertNoErr(t, err) - extension, err := extensions.Get(context.TODO(), client, "net-mtu").Extract() - if err != nil { - t.Skip("This test requires net-mtu Neutron extension") - } - tools.PrintResource(t, extension) + // Skip these tests if we don't have the required extension + networking.RequireNeutronExtension(t, client, "net-mtu") mtuWritable, _ := extensions.Get(context.TODO(), client, "net-mtu-writable").Extract() tools.PrintResource(t, mtuWritable) diff --git a/internal/acceptance/openstack/networking/v2/extensions/qos/policies/policies_test.go b/internal/acceptance/openstack/networking/v2/extensions/qos/policies/policies_test.go index fdd50cf21f..fc9563df38 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/qos/policies/policies_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/qos/policies/policies_test.go @@ -7,8 +7,8 @@ import ( "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" + v2 "github.com/gophercloud/gophercloud/v2/internal/acceptance/openstack/networking/v2" "github.com/gophercloud/gophercloud/v2/internal/acceptance/tools" - "github.com/gophercloud/gophercloud/v2/openstack/common/extensions" "github.com/gophercloud/gophercloud/v2/openstack/networking/v2/extensions/qos/policies" th "github.com/gophercloud/gophercloud/v2/testhelper" ) @@ -17,11 +17,8 @@ func TestPoliciesCRUD(t *testing.T) { client, err := clients.NewNetworkV2Client() th.AssertNoErr(t, err) - extension, err := extensions.Get(context.TODO(), client, "qos").Extract() - if err != nil { - t.Skip("This test requires qos Neutron extension") - } - tools.PrintResource(t, extension) + // Skip these tests if we don't have the required extension + v2.RequireNeutronExtension(t, client, "qos") // Create a QoS policy. policy, err := CreateQoSPolicy(t, client) diff --git a/internal/acceptance/openstack/networking/v2/extensions/qos/rules/rules_test.go b/internal/acceptance/openstack/networking/v2/extensions/qos/rules/rules_test.go index c441b58a8b..811e798862 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/qos/rules/rules_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/qos/rules/rules_test.go @@ -7,9 +7,9 @@ import ( "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" + v2 "github.com/gophercloud/gophercloud/v2/internal/acceptance/openstack/networking/v2" accpolicies "github.com/gophercloud/gophercloud/v2/internal/acceptance/openstack/networking/v2/extensions/qos/policies" "github.com/gophercloud/gophercloud/v2/internal/acceptance/tools" - "github.com/gophercloud/gophercloud/v2/openstack/common/extensions" "github.com/gophercloud/gophercloud/v2/openstack/networking/v2/extensions/qos/policies" "github.com/gophercloud/gophercloud/v2/openstack/networking/v2/extensions/qos/rules" th "github.com/gophercloud/gophercloud/v2/testhelper" @@ -19,11 +19,8 @@ func TestBandwidthLimitRulesCRUD(t *testing.T) { client, err := clients.NewNetworkV2Client() th.AssertNoErr(t, err) - extension, err := extensions.Get(context.TODO(), client, "qos").Extract() - if err != nil { - t.Skip("This test requires qos Neutron extension") - } - tools.PrintResource(t, extension) + // Skip these tests if we don't have the required extension + v2.RequireNeutronExtension(t, client, "qos") // Create a QoS policy policy, err := accpolicies.CreateQoSPolicy(t, client) @@ -68,11 +65,8 @@ func TestDSCPMarkingRulesCRUD(t *testing.T) { client, err := clients.NewNetworkV2Client() th.AssertNoErr(t, err) - extension, err := extensions.Get(context.TODO(), client, "qos").Extract() - if err != nil { - t.Skip("This test requires qos Neutron extension") - } - tools.PrintResource(t, extension) + // Skip these tests if we don't have the required extension + v2.RequireNeutronExtension(t, client, "qos") // Create a QoS policy policy, err := accpolicies.CreateQoSPolicy(t, client) @@ -117,11 +111,8 @@ func TestMinimumBandwidthRulesCRUD(t *testing.T) { client, err := clients.NewNetworkV2Client() th.AssertNoErr(t, err) - extension, err := extensions.Get(context.TODO(), client, "qos").Extract() - if err != nil { - t.Skip("This test requires qos Neutron extension") - } - tools.PrintResource(t, extension) + // Skip these tests if we don't have the required extension + v2.RequireNeutronExtension(t, client, "qos") // Create a QoS policy policy, err := accpolicies.CreateQoSPolicy(t, client) diff --git a/internal/acceptance/openstack/networking/v2/extensions/qos/ruletypes/ruletypes_test.go b/internal/acceptance/openstack/networking/v2/extensions/qos/ruletypes/ruletypes_test.go index 470408b163..7defe0358e 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/qos/ruletypes/ruletypes_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/qos/ruletypes/ruletypes_test.go @@ -7,8 +7,8 @@ import ( "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" + networking "github.com/gophercloud/gophercloud/v2/internal/acceptance/openstack/networking/v2" "github.com/gophercloud/gophercloud/v2/internal/acceptance/tools" - "github.com/gophercloud/gophercloud/v2/openstack/common/extensions" "github.com/gophercloud/gophercloud/v2/openstack/networking/v2/extensions/qos/ruletypes" ) @@ -19,11 +19,8 @@ func TestRuleTypes(t *testing.T) { return } - extension, err := extensions.Get(context.TODO(), client, "qos").Extract() - if err != nil { - t.Skip("This test requires qos Neutron extension") - } - tools.PrintResource(t, extension) + // Skip these tests if we don't have the required extension + networking.RequireNeutronExtension(t, client, "qos") page, err := ruletypes.ListRuleTypes(client).AllPages(context.TODO()) if err != nil { diff --git a/internal/acceptance/openstack/networking/v2/extensions/trunk_details/trunks_test.go b/internal/acceptance/openstack/networking/v2/extensions/trunk_details/trunks_test.go index 0daaca55e8..2cab0d035a 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/trunk_details/trunks_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/trunk_details/trunks_test.go @@ -9,7 +9,6 @@ import ( "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" v2 "github.com/gophercloud/gophercloud/v2/internal/acceptance/openstack/networking/v2" v2Trunks "github.com/gophercloud/gophercloud/v2/internal/acceptance/openstack/networking/v2/extensions/trunks" - "github.com/gophercloud/gophercloud/v2/openstack/common/extensions" "github.com/gophercloud/gophercloud/v2/openstack/networking/v2/extensions/trunk_details" "github.com/gophercloud/gophercloud/v2/openstack/networking/v2/extensions/trunks" "github.com/gophercloud/gophercloud/v2/openstack/networking/v2/ports" @@ -27,10 +26,8 @@ func TestListPortWithSubports(t *testing.T) { t.Fatalf("Unable to create a network client: %v", err) } - _, err = extensions.Get(context.TODO(), client, "trunk-details").Extract() - if err != nil { - t.Skip("This test requires trunk-details Neutron extension") - } + // Skip these tests if we don't have the required extension + v2.RequireNeutronExtension(t, client, "trunk-details") // Create Network network, err := v2.CreateNetwork(t, client) diff --git a/internal/acceptance/openstack/networking/v2/extensions/trunks/trunks_test.go b/internal/acceptance/openstack/networking/v2/extensions/trunks/trunks_test.go index 0fbf1b81d8..fac6a9df5d 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/trunks/trunks_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/trunks/trunks_test.go @@ -10,7 +10,6 @@ import ( "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" v2 "github.com/gophercloud/gophercloud/v2/internal/acceptance/openstack/networking/v2" "github.com/gophercloud/gophercloud/v2/internal/acceptance/tools" - "github.com/gophercloud/gophercloud/v2/openstack/common/extensions" "github.com/gophercloud/gophercloud/v2/openstack/networking/v2/extensions/attributestags" "github.com/gophercloud/gophercloud/v2/openstack/networking/v2/extensions/trunks" th "github.com/gophercloud/gophercloud/v2/testhelper" @@ -22,11 +21,8 @@ func TestTrunkCRUD(t *testing.T) { t.Fatalf("Unable to create a network client: %v", err) } - extension, err := extensions.Get(context.TODO(), client, "trunk").Extract() - if err != nil { - t.Skip("This test requires trunk Neutron extension") - } - tools.PrintResource(t, extension) + // Skip these tests if we don't have the required extension + v2.RequireNeutronExtension(t, client, "trunk") // Create Network network, err := v2.CreateNetwork(t, client) @@ -112,11 +108,8 @@ func TestTrunkList(t *testing.T) { t.Fatalf("Unable to create a network client: %v", err) } - extension, err := extensions.Get(context.TODO(), client, "trunk").Extract() - if err != nil { - t.Skip("This test requires trunk Neutron extension") - } - tools.PrintResource(t, extension) + // Skip these tests if we don't have the required extension + v2.RequireNeutronExtension(t, client, "trunk") allPages, err := trunks.List(client, nil).AllPages(context.TODO()) if err != nil { @@ -139,11 +132,8 @@ func TestTrunkSubportOperation(t *testing.T) { t.Fatalf("Unable to create a network client: %v", err) } - extension, err := extensions.Get(context.TODO(), client, "trunk").Extract() - if err != nil { - t.Skip("This test requires trunk Neutron extension") - } - tools.PrintResource(t, extension) + // Skip these tests if we don't have the required extension + v2.RequireNeutronExtension(t, client, "trunk") // Create Network network, err := v2.CreateNetwork(t, client) @@ -227,11 +217,8 @@ func TestTrunkTags(t *testing.T) { t.Fatalf("Unable to create a network client: %v", err) } - extension, err := extensions.Get(context.TODO(), client, "trunk").Extract() - if err != nil { - t.Skip("This test requires trunk Neutron extension") - } - tools.PrintResource(t, extension) + // Skip these tests if we don't have the required extension + v2.RequireNeutronExtension(t, client, "trunk") // Create Network network, err := v2.CreateNetwork(t, client) diff --git a/internal/acceptance/openstack/networking/v2/extensions/vlantransparent/vlantransparent_test.go b/internal/acceptance/openstack/networking/v2/extensions/vlantransparent/vlantransparent_test.go index bef19819b8..b36d01c071 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/vlantransparent/vlantransparent_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/vlantransparent/vlantransparent_test.go @@ -3,13 +3,11 @@ package v2 import ( - "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" - networkingv2 "github.com/gophercloud/gophercloud/v2/internal/acceptance/openstack/networking/v2" + networking "github.com/gophercloud/gophercloud/v2/internal/acceptance/openstack/networking/v2" "github.com/gophercloud/gophercloud/v2/internal/acceptance/tools" - "github.com/gophercloud/gophercloud/v2/openstack/common/extensions" th "github.com/gophercloud/gophercloud/v2/testhelper" ) @@ -17,16 +15,13 @@ func TestVLANTransparentCRUD(t *testing.T) { client, err := clients.NewNetworkV2Client() th.AssertNoErr(t, err) - extension, err := extensions.Get(context.TODO(), client, "vlan-transparent").Extract() - if err != nil { - t.Skip("This test requires vlan-transparent Neutron extension") - } - tools.PrintResource(t, extension) + // Skip these tests if we don't have the required extension + networking.RequireNeutronExtension(t, client, "vlan-transparent") // Create a VLAN transparent network. network, err := CreateVLANTransparentNetwork(t, client) th.AssertNoErr(t, err) - defer networkingv2.DeleteNetwork(t, client, network.ID) + defer networking.DeleteNetwork(t, client, network.ID) tools.PrintResource(t, network)