@@ -24,6 +24,7 @@ import (
24
24
"strings"
25
25
"time"
26
26
27
+ "github.com/gophercloud/gophercloud"
27
28
"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/portsbinding"
28
29
"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/portsecurity"
29
30
"github.com/gophercloud/gophercloud/openstack/networking/v2/ports"
@@ -58,6 +59,19 @@ func (s *Service) GetPortFromInstanceIP(instanceID string, ip string) ([]ports.P
58
59
return s .client .ListPort (portOpts )
59
60
}
60
61
62
+ type PortListOpts struct {
63
+ DeviceOwner []string `q:"device_owner"`
64
+ NetworkID string `q:"network_id"`
65
+ }
66
+
67
+ func (p * PortListOpts ) ToPortListQuery () (string , error ) {
68
+ q , err := gophercloud .BuildQueryString (p )
69
+ if err != nil {
70
+ return "" , err
71
+ }
72
+ return q .String (), nil
73
+ }
74
+
61
75
func (s * Service ) GetPortForExternalNetwork (instanceID string , externalNetworkID string ) (* ports.Port , error ) {
62
76
instancePortsOpts := ports.ListOpts {
63
77
DeviceID : instanceID ,
@@ -68,9 +82,9 @@ func (s *Service) GetPortForExternalNetwork(instanceID string, externalNetworkID
68
82
}
69
83
70
84
for _ , instancePort := range instancePorts {
71
- networkPortsOpts := ports. ListOpts {
85
+ networkPortsOpts := & PortListOpts {
72
86
NetworkID : instancePort .NetworkID ,
73
- DeviceOwner : "network:router_interface" ,
87
+ DeviceOwner : [] string { "network:router_interface" , "network:router_interface_distributed" , "network:ha_router_replicated_interface" , "network:router_ha_interface" } ,
74
88
}
75
89
76
90
networkPorts , err := s .client .ListPort (networkPortsOpts )
0 commit comments