@@ -20,6 +20,8 @@ import (
2020 "net"
2121 "testing"
2222
23+ "github.com/gophercloud/gophercloud/openstack/compute/v2/servers"
24+ "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/layer3/routers"
2325 "k8s.io/apimachinery/pkg/types"
2426 "k8s.io/kubernetes/pkg/cloudprovider"
2527)
@@ -37,9 +39,9 @@ func TestRoutes(t *testing.T) {
3739 t .Fatalf ("Failed to construct/authenticate OpenStack: %s" , err )
3840 }
3941
40- if os . routeOpts . RouterId == "" {
41- t . Skip ( "router-id is empty. skipping test" )
42- }
42+ // Pick the first router and server to try a test with
43+ os . routeOpts . RouterId = getRouters ( os )[ 0 ]. ID
44+ servername := getServers ( os )[ 0 ]. Name
4345
4446 r , ok := os .Routes ()
4547 if ! ok {
@@ -48,7 +50,7 @@ func TestRoutes(t *testing.T) {
4850
4951 newroute := cloudprovider.Route {
5052 DestinationCIDR : "10.164.2.0/24" ,
51- TargetNode : types .NodeName ("testinstance" ),
53+ TargetNode : types .NodeName (servername ),
5254 }
5355 err = r .CreateRoute (clusterName , "myhint" , & newroute )
5456 if err != nil {
@@ -73,3 +75,39 @@ func TestRoutes(t *testing.T) {
7375 t .Fatalf ("DeleteRoute error: %v" , err )
7476 }
7577}
78+
79+ func getServers (os * OpenStack ) []servers.Server {
80+ c , err := os .NewComputeV2 ()
81+ allPages , err := servers .List (c , servers.ListOpts {}).AllPages ()
82+ if err != nil {
83+ panic (err )
84+ }
85+ allServers , err := servers .ExtractServers (allPages )
86+ if err != nil {
87+ panic (err )
88+ }
89+ if len (allServers ) == 0 {
90+ panic ("No servers to test with" )
91+ }
92+ return allServers
93+ }
94+
95+ func getRouters (os * OpenStack ) []routers.Router {
96+ listOpts := routers.ListOpts {}
97+ n , err := os .NewNetworkV2 ()
98+ if err != nil {
99+ panic (err )
100+ }
101+ allPages , err := routers .List (n , listOpts ).AllPages ()
102+ if err != nil {
103+ panic (err )
104+ }
105+ allRouters , err := routers .ExtractRouters (allPages )
106+ if err != nil {
107+ panic (err )
108+ }
109+ if len (allRouters ) == 0 {
110+ panic ("No routers to test with" )
111+ }
112+ return allRouters
113+ }
0 commit comments