77 v1 "k8s.io/api/core/v1"
88 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
99 "k8s.io/utils/ptr"
10- capo "sigs.k8s.io/cluster-api-provider-openstack/api/v1alpha7 "
10+ capo "sigs.k8s.io/cluster-api-provider-openstack/api/v1beta1 "
1111 capi "sigs.k8s.io/cluster-api/api/v1beta1"
1212
1313 machinev1 "github.com/openshift/api/machine/v1"
@@ -121,18 +121,19 @@ func generateMachineSpec(clusterID string, platform *openstack.Platform, mpool *
121121 }
122122
123123 if platform .ControlPlanePort != nil {
124- port .Network = & capo.NetworkFilter {
125- Name : platform .ControlPlanePort .Network .Name ,
126- ID : platform .ControlPlanePort .Network .ID ,
124+ if networkID := platform .ControlPlanePort .Network .ID ; networkID != "" {
125+ port .Network = & capo.NetworkParam {ID : & networkID }
126+ } else if networkName := platform .ControlPlanePort .Network .Name ; networkName != "" {
127+ port .Network = & capo.NetworkParam {Filter : & capo.NetworkFilter {Name : networkName }}
127128 }
128129
129130 var fixedIPs []capo.FixedIP
130131 for _ , fixedIP := range platform .ControlPlanePort .FixedIPs {
131- fixedIPs = append ( fixedIPs , capo. FixedIP {
132- Subnet : & capo.SubnetFilter {
133- ID : fixedIP . Subnet . ID ,
134- Name : fixedIP .Subnet .Name ,
135- }})
132+ if subnetID := fixedIP . Subnet . ID ; subnetID != "" {
133+ fixedIPs = append ( fixedIPs , capo. FixedIP { Subnet : & capo.SubnetParam { ID : & subnetID }})
134+ } else {
135+ fixedIPs = append ( fixedIPs , capo. FixedIP { Subnet : & capo. SubnetParam { Filter : & capo. SubnetFilter { Name : fixedIP .Subnet .Name }}})
136+ }
136137 }
137138 port .FixedIPs = fixedIPs
138139 if len (addressPairs ) > 0 {
@@ -142,10 +143,14 @@ func generateMachineSpec(clusterID string, platform *openstack.Platform, mpool *
142143 port = capo.PortOpts {
143144 FixedIPs : []capo.FixedIP {
144145 {
145- Subnet : & capo.SubnetFilter {
146- // NOTE(mandre) the format of the subnet name changes when letting CAPI create it.
147- // So solely rely on tags for now.
148- Tags : fmt .Sprintf ("openshiftClusterID=%s" , clusterID ),
146+ Subnet : & capo.SubnetParam {
147+ Filter : & capo.SubnetFilter {
148+ // NOTE(mandre) the format of the subnet name changes when letting CAPI create it.
149+ // So solely rely on tags for now.
150+ FilterByNeutronTags : capo.FilterByNeutronTags {
151+ TagsAny : []capo.NeutronTag {capo .NeutronTag ("openshiftClusterID=" + clusterID )},
152+ },
153+ },
149154 },
150155 },
151156 },
@@ -156,49 +161,44 @@ func generateMachineSpec(clusterID string, platform *openstack.Platform, mpool *
156161 }
157162
158163 additionalPorts := make ([]capo.PortOpts , 0 , len (mpool .AdditionalNetworkIDs ))
159- for _ , networkID := range mpool .AdditionalNetworkIDs {
164+ for i := range mpool .AdditionalNetworkIDs {
160165 additionalPorts = append (additionalPorts , capo.PortOpts {
161- Network : & capo.NetworkFilter {
162- ID : networkID ,
163- },
166+ Network : & capo.NetworkParam {ID : & mpool .AdditionalNetworkIDs [i ]},
164167 })
165168 }
166169
167- securityGroups := []capo.SecurityGroupFilter {
170+ securityGroups := []capo.SecurityGroupParam {
168171 {
169172 // Bootstrap and Master share the same security group
170- Name : fmt .Sprintf ("%s-master" , clusterID ),
173+ Filter : & capo. SecurityGroupFilter { Name : fmt .Sprintf ("%s-master" , clusterID )} ,
171174 },
172175 }
173176
174- for _ , securityGroup := range mpool .AdditionalSecurityGroupIDs {
175- securityGroups = append (securityGroups , capo.SecurityGroupFilter {ID : securityGroup })
177+ for i := range mpool .AdditionalSecurityGroupIDs {
178+ securityGroups = append (securityGroups , capo.SecurityGroupParam {ID : & mpool . AdditionalSecurityGroupIDs [ i ] })
176179 }
177180
178- // FIXME: Uncomment when the server group rework merged
179- // https://github.com/kubernetes-sigs/cluster-api-provider-openstack/pull/1779
180- // serverGroupName := clusterID + "-" + role
181181 spec := capo.OpenStackMachineSpec {
182- CloudName : CloudName ,
183- Flavor : mpool .FlavorName ,
182+ Flavor : mpool .FlavorName ,
184183 IdentityRef : & capo.OpenStackIdentityReference {
185- Kind : "Secret " ,
186- Name : clusterID + "-cloud-config" ,
184+ Name : clusterID + "-cloud-config " ,
185+ CloudName : CloudName ,
187186 },
188- // FIXME(stephenfin): We probably want a FIP for bootstrap?
189- // TODO: This is an image name. Migrate to a filter with Name when API v1alpha8 is released.
190- Image : osImage ,
187+ Image : capo.ImageParam {Filter : & capo.ImageFilter {Name : & osImage }},
191188 Ports : append ([]capo.PortOpts {port }, additionalPorts ... ),
192189 SecurityGroups : securityGroups ,
193- // FIXME: Uncomment when the server group rework merged
194- // https://github.com/kubernetes-sigs/cluster-api-provider-openstack/pull/1779
195- //ServerGroup: *capo.ServerGroupFilter{
196- // "Name": serverGroupName,
197- // },
198- ServerMetadata : map [string ]string {
199- "Name" : fmt .Sprintf ("%s-%s" , clusterID , role ),
200- "openshiftClusterID" : clusterID ,
190+ ServerGroup : & capo.ServerGroupParam {Filter : & capo.ServerGroupFilter {Name : ptr .To (clusterID + "-" + role )}},
191+ ServerMetadata : []capo.ServerMetadata {
192+ {
193+ Key : "Name" ,
194+ Value : fmt .Sprintf ("%s-%s" , clusterID , role ),
195+ },
196+ {
197+ Key : "openshiftClusterID" ,
198+ Value : clusterID ,
199+ },
201200 },
201+
202202 Trunk : trunkSupport ,
203203 Tags : []string {
204204 fmt .Sprintf ("openshiftClusterID=%s" , clusterID ),
@@ -207,9 +207,14 @@ func generateMachineSpec(clusterID string, platform *openstack.Platform, mpool *
207207
208208 if mpool .RootVolume != nil {
209209 spec .RootVolume = & capo.RootVolume {
210- Size : mpool .RootVolume .Size ,
211- VolumeType : failureDomain .RootVolume .VolumeType ,
212- AvailabilityZone : failureDomain .RootVolume .AvailabilityZone ,
210+ SizeGiB : mpool .RootVolume .Size ,
211+ BlockDeviceVolume : capo.BlockDeviceVolume {Type : failureDomain .RootVolume .VolumeType },
212+ }
213+ if failureDomain .RootVolume .AvailabilityZone != "" {
214+ spec .RootVolume .BlockDeviceVolume .AvailabilityZone = & capo.VolumeAvailabilityZone {
215+ From : capo .VolumeAZFromName ,
216+ Name : ptr .To (capo .VolumeAZName (failureDomain .RootVolume .AvailabilityZone )),
217+ }
213218 }
214219 }
215220
0 commit comments