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
2 changes: 2 additions & 0 deletions pkg/apis/openstackproviderconfig/v1alpha1/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,8 @@ type NetworkParam struct {
Filter Filter `json:"filter,omitempty"`
// Subnet within a network to use
Subnets []SubnetParam `json:"subnets,omitempty"`
// NoAllowedAddressPairs disables creation of allowed address pairs for the network ports
NoAllowedAddressPairs bool `json:"noAllowedAddressPairs,omitempty"`
}

type Filter struct {
Expand Down
11 changes: 10 additions & 1 deletion pkg/cloud/openstack/clients/machineservice.go
Original file line number Diff line number Diff line change
Expand Up @@ -494,6 +494,7 @@ func (is *InstanceService) InstanceCreate(clusterName string, name string, clust
}
// Get all network UUIDs
var nets []ServerNetwork
netsWithoutAllowedAddressPairs := map[string]struct{}{}
for _, net := range config.Networks {
opts := networks.ListOpts(net.Filter)
opts.ID = net.UUID
Expand All @@ -502,6 +503,9 @@ func (is *InstanceService) InstanceCreate(clusterName string, name string, clust
return nil, err
}
for _, netID := range ids {
if net.NoAllowedAddressPairs {
netsWithoutAllowedAddressPairs[netID] = struct{}{}
}
if net.Subnets == nil {
nets = append(nets, ServerNetwork{
networkID: netID,
Expand Down Expand Up @@ -569,7 +573,12 @@ func (is *InstanceService) InstanceCreate(clusterName string, name string, clust
var port ports.Port
if len(portList) == 0 {
// create server port
port, err = CreatePort(is, name, net, &securityGroups, &allowedAddressPairs)
if _, ok := netsWithoutAllowedAddressPairs[net.networkID]; ok {
// create ports without address pairs
port, err = CreatePort(is, name, net, &securityGroups, &[]ports.AddressPair{})
} else {
port, err = CreatePort(is, name, net, &securityGroups, &allowedAddressPairs)
}
if err != nil {
return nil, fmt.Errorf("Failed to create port err: %v", err)
}
Expand Down