Skip to content
9 changes: 7 additions & 2 deletions controllers/openstackmachine_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -554,8 +554,13 @@ func openStackMachineSpecToOpenStackServerSpec(openStackMachineSpec *infrav1.Ope

// If not ports are provided we create one.
// Ports must have a network so if none is provided we use the default network.
serverPorts := openStackMachineSpec.Ports
if len(openStackMachineSpec.Ports) == 0 {
var serverPorts []infrav1.PortOpts
if len(openStackMachineSpec.Ports) > 0 {
serverPorts = make([]infrav1.PortOpts, len(openStackMachineSpec.Ports))
for i := range openStackMachineSpec.Ports {
openStackMachineSpec.Ports[i].DeepCopyInto(&serverPorts[i])
}
} else {
serverPorts = make([]infrav1.PortOpts, 1)
}

Expand Down
7 changes: 7 additions & 0 deletions controllers/openstackmachine_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -385,6 +385,10 @@ func TestOpenStackMachineSpecToOpenStackServerSpec(t *testing.T) {
for i := range tests {
tt := tests[i]
t.Run(tt.name, func(t *testing.T) {
var specCopy *infrav1.OpenStackMachineSpec
if tt.spec != nil {
specCopy = tt.spec.DeepCopy()
}
spec, err := openStackMachineSpecToOpenStackServerSpec(tt.spec, identityRef, tags, "", userData, &openStackCluster.Status.WorkerSecurityGroup.ID, tt.cluster)
if (err != nil) != tt.wantErr {
t.Errorf("openStackMachineSpecToOpenStackServerSpec() error = %v, wantErr %v", err, tt.wantErr)
Expand All @@ -393,6 +397,9 @@ func TestOpenStackMachineSpecToOpenStackServerSpec(t *testing.T) {
if !tt.wantErr && !reflect.DeepEqual(spec, tt.want) {
t.Errorf("openStackMachineSpecToOpenStackServerSpec() got = %+v, want %+v", spec, tt.want)
}
if tt.spec != nil && !reflect.DeepEqual(tt.spec, specCopy) {
t.Errorf("openStackMachineSpecToOpenStackServerSpec() mutated the input spec! before: %+v, after: %+v", specCopy, tt.spec)
}
})
}
}
Expand Down