@@ -64,11 +64,13 @@ type LinodeMachineSpec struct {
6464 // authorizedKeys is a list of SSH public keys to add to the instance.
6565 // +optional
6666 // +kubebuilder:validation:XValidation:rule="self == oldSelf",message="Value is immutable"
67+ // +listType=set
6768 AuthorizedKeys []string `json:"authorizedKeys,omitempty"`
6869
6970 // authorizedUsers is a list of usernames to add to the instance.
7071 // +optional
7172 // +kubebuilder:validation:XValidation:rule="self == oldSelf",message="Value is immutable"
73+ // +listType=set
7274 AuthorizedUsers []string `json:"authorizedUsers,omitempty"`
7375
7476 // backupID is the ID of the backup to restore the instance from.
@@ -84,12 +86,14 @@ type LinodeMachineSpec struct {
8486 // interfaces is a list of legacy network interfaces to use for the instance.
8587 // +optional
8688 // +kubebuilder:validation:XValidation:rule="self == oldSelf",message="Value is immutable"
89+ // +listType=atomic
8790 Interfaces []InstanceConfigInterfaceCreateOptions `json:"interfaces,omitempty"`
8891
8992 // linodeInterfaces is a list of Linode network interfaces to use for the instance. Requires Linode Interfaces beta opt-in to use.
9093 // +optional
9194 // +kubebuilder:validation:XValidation:rule="self == oldSelf",message="Value is immutable"
9295 // +kubebuilder:object:generate=true
96+ // +listType=atomic
9397 LinodeInterfaces []LinodeInterfaceCreateOptions `json:"linodeInterfaces,omitempty"`
9498
9599 // backupsEnabled is a boolean indicating whether backups should be enabled for the instance.
@@ -104,6 +108,7 @@ type LinodeMachineSpec struct {
104108
105109 // tags is a list of tags to apply to the Linode instance.
106110 // +optional
111+ // +listType=set
107112 Tags []string `json:"tags,omitempty"`
108113
109114 // firewallID is the id of the cloud firewall to apply to the Linode Instance
@@ -298,6 +303,7 @@ type InstanceConfigInterfaceCreateOptions struct {
298303
299304 // ipRanges is a list of IPv4 ranges to assign to the interface.
300305 // +optional
306+ // +listType=set
301307 IPRanges []string `json:"ipRanges,omitempty"`
302308}
303309
@@ -350,6 +356,8 @@ type PublicInterfaceCreateOptions struct {
350356type PublicInterfaceIPv4CreateOptions struct {
351357 // addresses is the IPv4 addresses for the public interface.
352358 // +optional
359+ // +listType=map
360+ // +listMapKey=address
353361 Addresses []PublicInterfaceIPv4AddressCreateOptions `json:"addresses,omitempty"`
354362}
355363
@@ -368,6 +376,8 @@ type PublicInterfaceIPv4AddressCreateOptions struct {
368376type PublicInterfaceIPv6CreateOptions struct {
369377 // ranges is the IPv6 ranges for the public interface.
370378 // +optional
379+ // +listType=map
380+ // +listMapKey=range
371381 Ranges []PublicInterfaceIPv6RangeCreateOptions `json:"ranges,omitempty"`
372382}
373383
@@ -397,10 +407,14 @@ type VPCInterfaceCreateOptions struct {
397407type VPCInterfaceIPv6CreateOptions struct {
398408 // slaac is the IPv6 SLAAC configuration for the interface.
399409 // +optional
410+ // +listType=map
411+ // +listMapKey=range
400412 SLAAC []VPCInterfaceIPv6SLAACCreateOptions `json:"slaac,omitempty"`
401413
402414 // ranges is the IPv6 ranges for the interface.
403415 // +optional
416+ // +listType=map
417+ // +listMapKey=range
404418 Ranges []VPCInterfaceIPv6RangeCreateOptions `json:"ranges,omitempty"`
405419
406420 // is_public is a boolean indicating whether the interface is public.
@@ -426,10 +440,14 @@ type VPCInterfaceIPv6RangeCreateOptions struct {
426440type VPCInterfaceIPv4CreateOptions struct {
427441 // addresses is the IPv4 addresses for the interface.
428442 // +optional
443+ // +listType=map
444+ // +listMapKey=address
429445 Addresses []VPCInterfaceIPv4AddressCreateOptions `json:"addresses,omitempty"`
430446
431447 // ranges is the IPv4 ranges for the interface.
432448 // +optional
449+ // +listType=map
450+ // +listMapKey=range
433451 Ranges []VPCInterfaceIPv4RangeCreateOptions `json:"ranges,omitempty"`
434452}
435453
@@ -494,6 +512,8 @@ type LinodeMachineStatus struct {
494512
495513 // addresses contains the Linode instance associated addresses.
496514 // +optional
515+ // +listType=map
516+ // +listMapKey=address
497517 Addresses []clusterv1.MachineAddress `json:"addresses,omitempty"`
498518
499519 // cloudinitMetadataSupport determines whether to use cloud-init or not.
@@ -547,6 +567,7 @@ type LinodeMachineStatus struct {
547567
548568 // tags are the tags applied to the Linode Machine.
549569 // +optional
570+ // +listType=set
550571 Tags []string `json:"tags,omitempty"`
551572}
552573
0 commit comments