Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 16 additions & 12 deletions pkg/apis/openstackproviderconfig/v1alpha1/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ limitations under the License.
package v1alpha1

import (
"github.com/gophercloud/gophercloud/openstack/networking/v2/ports"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
Expand Down Expand Up @@ -200,17 +199,17 @@ type SubnetFilter struct {
}

type PortOpts struct {
NetworkID string `json:"networkID" required:"true"`
NameSuffix string `json:"nameSuffix" required:"true"`
Description string `json:"description,omitempty"`
AdminStateUp *bool `json:"adminStateUp,omitempty"`
MACAddress string `json:"macAddress,omitempty"`
FixedIPs []FixedIPs `json:"fixedIPs,omitempty"`
TenantID string `json:"tenantID,omitempty"`
ProjectID string `json:"projectID,omitempty"`
SecurityGroups *[]string `json:"securityGroups,omitempty"`
AllowedAddressPairs []ports.AddressPair `json:"allowedAddressPairs,omitempty"`
Tags []string `json:"tags,omitempty"`
NetworkID string `json:"networkID" required:"true"`
NameSuffix string `json:"nameSuffix" required:"true"`
Description string `json:"description,omitempty"`
AdminStateUp *bool `json:"adminStateUp,omitempty"`
MACAddress string `json:"macAddress,omitempty"`
FixedIPs []FixedIPs `json:"fixedIPs,omitempty"`
TenantID string `json:"tenantID,omitempty"`
ProjectID string `json:"projectID,omitempty"`
SecurityGroups *[]string `json:"securityGroups,omitempty"`
AllowedAddressPairs []AddressPair `json:"allowedAddressPairs,omitempty"`
Tags []string `json:"tags,omitempty"`

// The ID of the host where the port is allocated
HostID string `json:"hostID,omitempty"`
Expand All @@ -224,6 +223,11 @@ type PortOpts struct {
PortSecurity *bool `json:"portSecurity,omitempty"`
}

type AddressPair struct {
IPAddress string `json:"ipAddress,omitempty"`
MACAddress string `json:"macAddress,omitempty"`
}

type FixedIPs struct {
SubnetID string `json:"subnetID"`
IPAddress string `json:"ipAddress,omitempty"`
Expand Down
15 changes: 11 additions & 4 deletions pkg/cloud/openstack/clients/machineservice.go
Original file line number Diff line number Diff line change
Expand Up @@ -342,7 +342,14 @@ func getOrCreatePort(is *InstanceService, name string, portOpts openstackconfigv
TenantID: portOpts.TenantID,
ProjectID: portOpts.ProjectID,
SecurityGroups: portOpts.SecurityGroups,
AllowedAddressPairs: portOpts.AllowedAddressPairs,
AllowedAddressPairs: []ports.AddressPair{},
}

for _, ap := range portOpts.AllowedAddressPairs {
createOpts.AllowedAddressPairs = append(createOpts.AllowedAddressPairs, ports.AddressPair{
IPAddress: ap.IPAddress,
MACAddress: ap.MACAddress,
})
}
if len(portOpts.FixedIPs) != 0 {
fixedIPs := make([]ports.IP, len(portOpts.FixedIPs))
Expand Down Expand Up @@ -533,7 +540,7 @@ func (is *InstanceService) InstanceCreate(clusterName string, name string, clust
return nil, fmt.Errorf("Failed to retrieve cluster Infrastructure object: %v", err)
}

allowedAddressPairs := []ports.AddressPair{}
allowedAddressPairs := []openstackconfigv1.AddressPair{}
if clusterInfra != nil && clusterInfra.Status.PlatformStatus != nil && clusterInfra.Status.PlatformStatus.OpenStack != nil {
clusterVips := []string{
clusterInfra.Status.PlatformStatus.OpenStack.APIServerInternalIP,
Expand All @@ -543,7 +550,7 @@ func (is *InstanceService) InstanceCreate(clusterName string, name string, clust

for _, vip := range clusterVips {
if vip != "" {
allowedAddressPairs = append(allowedAddressPairs, ports.AddressPair{IPAddress: vip})
allowedAddressPairs = append(allowedAddressPairs, openstackconfigv1.AddressPair{IPAddress: vip})
}
}
}
Expand All @@ -557,7 +564,7 @@ func (is *InstanceService) InstanceCreate(clusterName string, name string, clust
portOpt.SecurityGroups = &securityGroups
portOpt.AllowedAddressPairs = allowedAddressPairs
if _, ok := netsWithoutAllowedAddressPairs[portOpt.NetworkID]; ok {
portOpt.AllowedAddressPairs = []ports.AddressPair{}
portOpt.AllowedAddressPairs = []openstackconfigv1.AddressPair{}
}

port, err := getOrCreatePort(is, name, portOpt)
Expand Down