Skip to content

Commit 44be48e

Browse files
committed
ImageFilter to ImageParam
1 parent 91669cf commit 44be48e

File tree

47 files changed

+507
-241
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+507
-241
lines changed

api/v1alpha5/conversion.go

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -356,13 +356,13 @@ func Convert_v1alpha5_OpenStackMachineSpec_To_v1beta1_OpenStackMachineSpec(in *O
356356
out.ServerGroup = &infrav1.ServerGroupFilter{}
357357
}
358358

359-
imageFilter := infrav1.ImageFilter{}
359+
imageParam := infrav1.ImageParam{}
360360
if in.ImageUUID != "" {
361-
imageFilter.ID = &in.ImageUUID
361+
imageParam.ID = &in.ImageUUID
362362
} else if in.Image != "" { // Only add name when ID is not set, in v1beta1 it's not possible to set both.
363-
imageFilter.Name = &in.Image
363+
imageParam.Filter = &infrav1.ImageFilter{Name: &in.Image}
364364
}
365-
out.Image = imageFilter
365+
out.Image = imageParam
366366

367367
if in.IdentityRef != nil {
368368
out.IdentityRef = &infrav1.OpenStackIdentityReference{Name: in.IdentityRef.Name}
@@ -686,12 +686,10 @@ func Convert_v1beta1_OpenStackMachineSpec_To_v1alpha5_OpenStackMachineSpec(in *i
686686
out.ServerGroupID = in.ServerGroup.ID
687687
}
688688

689-
if in.Image.Name != nil && *in.Image.Name != "" {
690-
out.Image = *in.Image.Name
691-
}
692-
693-
if in.Image.ID != nil && *in.Image.ID != "" {
689+
if in.Image.ID != nil {
694690
out.ImageUUID = *in.Image.ID
691+
} else if in.Image.Filter != nil && in.Image.Filter.Name != nil {
692+
out.Image = *in.Image.Filter.Name
695693
}
696694

697695
if in.IdentityRef != nil {

api/v1alpha5/zz_generated.conversion.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/v1alpha6/openstackmachine_conversion.go

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -272,13 +272,13 @@ func Convert_v1alpha6_OpenStackMachineSpec_To_v1beta1_OpenStackMachineSpec(in *O
272272
out.ServerGroup = nil
273273
}
274274

275-
imageFilter := infrav1.ImageFilter{}
275+
imageParam := infrav1.ImageParam{}
276276
if in.ImageUUID != "" {
277-
imageFilter.ID = &in.ImageUUID
277+
imageParam.ID = &in.ImageUUID
278278
} else if in.Image != "" { // Only add name when ID is not set, in v1beta1 it's not possible to set both.
279-
imageFilter.Name = &in.Image
279+
imageParam.Filter = &infrav1.ImageFilter{Name: &in.Image}
280280
}
281-
out.Image = imageFilter
281+
out.Image = imageParam
282282

283283
if len(in.ServerMetadata) > 0 {
284284
serverMetadata := make([]infrav1.ServerMetadata, 0, len(in.ServerMetadata))
@@ -320,12 +320,10 @@ func Convert_v1beta1_OpenStackMachineSpec_To_v1alpha6_OpenStackMachineSpec(in *i
320320
out.ServerGroupID = in.ServerGroup.ID
321321
}
322322

323-
if in.Image.Name != nil && *in.Image.Name != "" {
324-
out.Image = *in.Image.Name
325-
}
326-
327-
if in.Image.ID != nil && *in.Image.ID != "" {
323+
if in.Image.ID != nil {
328324
out.ImageUUID = *in.Image.ID
325+
} else if in.Image.Filter != nil && in.Image.Filter.Name != nil {
326+
out.Image = *in.Image.Filter.Name
329327
}
330328

331329
if len(in.ServerMetadata) > 0 {

api/v1alpha6/zz_generated.conversion.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/v1alpha7/openstackmachine_conversion.go

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -170,13 +170,13 @@ func Convert_v1alpha7_OpenStackMachineSpec_To_v1beta1_OpenStackMachineSpec(in *O
170170
out.ServerGroup = nil
171171
}
172172

173-
imageFilter := infrav1.ImageFilter{}
173+
imageParam := infrav1.ImageParam{}
174174
if in.ImageUUID != "" {
175-
imageFilter.ID = &in.ImageUUID
175+
imageParam.ID = &in.ImageUUID
176176
} else if in.Image != "" { // Only add name when ID is not set, in v1beta1 it's not possible to set both.
177-
imageFilter.Name = &in.Image
177+
imageParam.Filter = &infrav1.ImageFilter{Name: &in.Image}
178178
}
179-
out.Image = imageFilter
179+
out.Image = imageParam
180180

181181
if len(in.ServerMetadata) > 0 {
182182
serverMetadata := make([]infrav1.ServerMetadata, 0, len(in.ServerMetadata))
@@ -215,12 +215,10 @@ func Convert_v1beta1_OpenStackMachineSpec_To_v1alpha7_OpenStackMachineSpec(in *i
215215
out.ServerGroupID = in.ServerGroup.ID
216216
}
217217

218-
if in.Image.Name != nil && *in.Image.Name != "" {
219-
out.Image = *in.Image.Name
220-
}
221-
222-
if in.Image.ID != nil && *in.Image.ID != "" {
218+
if in.Image.ID != nil {
223219
out.ImageUUID = *in.Image.ID
220+
} else if in.Image.Filter != nil && in.Image.Filter.Name != nil {
221+
out.Image = *in.Image.Filter.Name
224222
}
225223

226224
if len(in.ServerMetadata) > 0 {

api/v1alpha7/zz_generated.conversion.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/v1beta1/openstackmachine_types.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ type OpenStackMachineSpec struct {
4545
// The image to use for your server instance.
4646
// If the rootVolume is specified, this will be used when creating the root volume.
4747
// +required
48-
Image ImageFilter `json:"image"`
48+
Image ImageParam `json:"image"`
4949

5050
// The ssh key to inject in the instance
5151
SSHKeyName string `json:"sshKeyName,omitempty"`

api/v1beta1/types.go

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,22 +28,42 @@ type OpenStackMachineTemplateResource struct {
2828
Spec OpenStackMachineSpec `json:"spec"`
2929
}
3030

31-
// ImageFilter describes the data needed to identify which image to use. If ID is provided it is required that all other fields are unset.
32-
// +kubebuilder:validation:XValidation:rule="(has(self.id) && !has(self.name) && !has(self.tags)) || !has(self.id)",message="when ID is set you cannot set other options"
33-
type ImageFilter struct {
34-
// The ID of the desired image. If ID is provided, the other filters cannot be provided. Must be in UUID format.
31+
// ImageParam describes a glance image. It can be specified by ID or filter.
32+
// +kubebuilder:validation:MaxProperties:=1
33+
// +kubebuilder:validation:MinProperties:=1
34+
type ImageParam struct {
35+
// ID is the uuid of the image. ID will not be validated before use.
3536
// +kubebuilder:validation:Format:=uuid
3637
// +optional
3738
ID optional.String `json:"id,omitempty"`
39+
40+
// Filter describes a query for an image. If specified, the combination
41+
// of name and tags must return a single matching image or an error will
42+
// be raised.
43+
// +optional
44+
Filter *ImageFilter `json:"filter,omitempty"`
45+
}
46+
47+
// ImageFilter describes a query for an image.
48+
// +kubebuilder:validation:MinProperties:=1
49+
type ImageFilter struct {
3850
// The name of the desired image. If specified, the combination of name and tags must return a single matching image or an error will be raised.
3951
// +optional
4052
Name optional.String `json:"name,omitempty"`
53+
4154
// The tags associated with the desired image. If specified, the combination of name and tags must return a single matching image or an error will be raised.
4255
// +listType=set
4356
// +optional
4457
Tags []string `json:"tags,omitempty"`
4558
}
4659

60+
func (f *ImageFilter) IsZero() bool {
61+
if f == nil {
62+
return true
63+
}
64+
return f.Name == nil && len(f.Tags) == 0
65+
}
66+
4767
type ExternalRouterIPParam struct {
4868
// The FixedIP in the corresponding subnet
4969
FixedIP string `json:"fixedIP,omitempty"`

api/v1beta1/zz_generated.deepcopy.go

Lines changed: 25 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

config/crd/bases/infrastructure.cluster.x-k8s.io_openstackclusters.yaml

Lines changed: 26 additions & 20 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)