diff --git a/.golangci.yml b/.golangci.yml
index 3301a5c65..0b78b6de8 100644
--- a/.golangci.yml
+++ b/.golangci.yml
@@ -34,10 +34,12 @@ linters:
settings:
linters:
disable:
- - optionalfields
+ # NOTE: conflicts with the lack of validation in the Status structs
+ - arrayofstruct
enable:
- commentstart
- conditions
+ - defaults
- duplicatemarkers
- integers
- jsontags
@@ -48,6 +50,7 @@ linters:
- nodurations
- nofloats
- nomaps
+ - nonpointerstructs
- nonullable
- notimestamp
- nophase
@@ -62,11 +65,14 @@ linters:
isFirstField: Warn
usePatchStrategy: Ignore
useProtobuf: Forbid
+ defaults:
+ # Let's use `+kubebuilder:default` until elastic/crd-ref-docs supports `+default`
+ preferredDefaultMarker: "kubebuilder:default"
requiredfields:
omitempty:
policy: Ignore
exclusions:
- generated: lax
+ generated: disable
rules:
- linters:
- lll
@@ -75,13 +81,22 @@ linters:
- dupl
- lll
path: internal/*
+ - linters:
+ - dupl
+ - goimports
+ - unparam
+ path: zz_generated
- linters:
- kubeapilinter
- path-except: api/*
+ path-except: ^api/*
paths:
- third_party$
- builtin$
- examples$
+ - applyconfiguration/*
+ - clientset/*
+ - informers/*
+ - listers/*
formatters:
enable:
- gofmt
@@ -92,3 +107,5 @@ formatters:
- third_party$
- builtin$
- examples$
+issues:
+ exclude-generated: disable
diff --git a/Makefile b/Makefile
index 57bcd42fb..92bca0c71 100644
--- a/Makefile
+++ b/Makefile
@@ -315,7 +315,7 @@ KUSTOMIZE_VERSION ?= v5.6.0
CONTROLLER_TOOLS_VERSION ?= v0.17.1
ENVTEST_VERSION ?= release-0.22
GOLANGCI_LINT_VERSION ?= v2.7.2
-KAL_VERSION ?= v0.0.0-20250924094418-502783c08f9d
+KAL_VERSION ?= v0.0.0-20260114104534-18147eee9c49
MOCKGEN_VERSION ?= v0.5.0
KUTTL_VERSION ?= v0.24.0
GOVULNCHECK_VERSION ?= v1.1.4
diff --git a/api/v1alpha1/controller_options.go b/api/v1alpha1/controller_options.go
index d0908b10e..99897115b 100644
--- a/api/v1alpha1/controller_options.go
+++ b/api/v1alpha1/controller_options.go
@@ -52,14 +52,14 @@ type ManagedOptions struct {
// default is `delete`.
// +kubebuilder:default:=delete
// +optional
- OnDelete OnDelete `json:"onDelete,omitempty"`
+ OnDelete *OnDelete `json:"onDelete,omitempty"`
}
// GetOnDelete returns the delete behaviour from ManagedOptions. If called on a
// nil receiver it safely returns the default.
func (o *ManagedOptions) GetOnDelete() OnDelete {
- if o == nil {
+ if o == nil || o.OnDelete == nil {
return OnDeleteDelete
}
- return o.OnDelete
+ return *o.OnDelete
}
diff --git a/api/v1alpha1/domain_types.go b/api/v1alpha1/domain_types.go
index e3e5dd8d7..d39abe6c6 100644
--- a/api/v1alpha1/domain_types.go
+++ b/api/v1alpha1/domain_types.go
@@ -53,12 +53,12 @@ type DomainResourceStatus struct {
// name is a Human-readable name for the resource. Might not be unique.
// +kubebuilder:validation:MaxLength=1024
// +optional
- Name string `json:"name,omitempty"`
+ Name *string `json:"name,omitempty"`
// description is a human-readable description for the resource.
// +kubebuilder:validation:MaxLength=1024
// +optional
- Description string `json:"description,omitempty"`
+ Description *string `json:"description,omitempty"`
// enabled defines whether a domain is enabled or not. Default is true.
// Note: Users can only authorize against an enabled domain (and any of its projects).
diff --git a/api/v1alpha1/flavor_types.go b/api/v1alpha1/flavor_types.go
index 991133619..b96d34d9e 100644
--- a/api/v1alpha1/flavor_types.go
+++ b/api/v1alpha1/flavor_types.go
@@ -56,7 +56,7 @@ type FlavorResourceSpec struct {
// MiB. If 0 (the default), no dedicated swap disk will be created.
// +kubebuilder:validation:Minimum=0
// +optional
- Swap int32 `json:"swap,omitempty"`
+ Swap *int32 `json:"swap,omitempty"`
// isPublic flags a flavor as being available to all projects or not.
// +optional
@@ -68,7 +68,7 @@ type FlavorResourceSpec struct {
// limitations. Defaults to 0.
// +kubebuilder:validation:Minimum=0
// +optional
- Ephemeral int32 `json:"ephemeral,omitempty"`
+ Ephemeral *int32 `json:"ephemeral,omitempty"`
}
// FlavorFilter defines an existing resource by its properties
@@ -99,12 +99,12 @@ type FlavorResourceStatus struct {
// name is a Human-readable name for the flavor. Might not be unique.
// +kubebuilder:validation:MaxLength=1024
// +optional
- Name string `json:"name,omitempty"`
+ Name *string `json:"name,omitempty"`
// description is a human-readable description for the resource.
// +kubebuilder:validation:MaxLength:=65535
// +optional
- Description string `json:"description,omitempty"`
+ Description *string `json:"description,omitempty"`
// ram is the memory of the flavor, measured in MB.
// +optional
diff --git a/api/v1alpha1/floatingip_types.go b/api/v1alpha1/floatingip_types.go
index fd2739aba..6013b1759 100644
--- a/api/v1alpha1/floatingip_types.go
+++ b/api/v1alpha1/floatingip_types.go
@@ -43,7 +43,7 @@ type FloatingIPFilter struct {
// status is the status of the floatingip.
// +kubebuilder:validation:MaxLength=1024
// +optional
- Status string `json:"status,omitempty"`
+ Status *string `json:"status,omitempty"`
FilterByNeutronTags `json:",inline"`
}
@@ -98,47 +98,47 @@ type FloatingIPResourceStatus struct {
// description is a human-readable description for the resource.
// +kubebuilder:validation:MaxLength=1024
// +optional
- Description string `json:"description,omitempty"`
+ Description *string `json:"description,omitempty"`
// floatingNetworkID is the ID of the network to which the floatingip is associated.
// +kubebuilder:validation:MaxLength=1024
// +optional
- FloatingNetworkID string `json:"floatingNetworkID,omitempty"`
+ FloatingNetworkID *string `json:"floatingNetworkID,omitempty"`
// floatingIP is the IP address of the floatingip.
// +kubebuilder:validation:MaxLength=1024
// +optional
- FloatingIP string `json:"floatingIP,omitempty"`
+ FloatingIP *string `json:"floatingIP,omitempty"`
// portID is the ID of the port to which the floatingip is associated.
// +kubebuilder:validation:MaxLength=1024
// +optional
- PortID string `json:"portID,omitempty"`
+ PortID *string `json:"portID,omitempty"`
// fixedIP is the IP address of the port to which the floatingip is associated.
// +kubebuilder:validation:MaxLength=1024
// +optional
- FixedIP string `json:"fixedIP,omitempty"`
+ FixedIP *string `json:"fixedIP,omitempty"`
// tenantID is the project owner of the resource.
// +kubebuilder:validation:MaxLength=1024
// +optional
- TenantID string `json:"tenantID,omitempty"`
+ TenantID *string `json:"tenantID,omitempty"`
// projectID is the project owner of the resource.
// +kubebuilder:validation:MaxLength=1024
// +optional
- ProjectID string `json:"projectID,omitempty"`
+ ProjectID *string `json:"projectID,omitempty"`
// status indicates the current status of the resource.
// +kubebuilder:validation:MaxLength=1024
// +optional
- Status string `json:"status,omitempty"`
+ Status *string `json:"status,omitempty"`
// routerID is the ID of the router to which the floatingip is associated.
// +kubebuilder:validation:MaxLength=1024
// +optional
- RouterID string `json:"routerID,omitempty"`
+ RouterID *string `json:"routerID,omitempty"`
// tags is the list of tags on the resource.
// +kubebuilder:validation:MaxItems:=64
diff --git a/api/v1alpha1/group_types.go b/api/v1alpha1/group_types.go
index f3719f5ae..00885a205 100644
--- a/api/v1alpha1/group_types.go
+++ b/api/v1alpha1/group_types.go
@@ -52,15 +52,15 @@ type GroupResourceStatus struct {
// name is a Human-readable name for the resource. Might not be unique.
// +kubebuilder:validation:MaxLength=1024
// +optional
- Name string `json:"name,omitempty"`
+ Name *string `json:"name,omitempty"`
// description is a human-readable description for the resource.
// +kubebuilder:validation:MaxLength=1024
// +optional
- Description string `json:"description,omitempty"`
+ Description *string `json:"description,omitempty"`
// domainID is the ID of the Domain to which the resource is associated.
// +kubebuilder:validation:MaxLength=1024
// +optional
- DomainID string `json:"domainID,omitempty"`
+ DomainID *string `json:"domainID,omitempty"`
}
diff --git a/api/v1alpha1/image_types.go b/api/v1alpha1/image_types.go
index b05992d78..5207ca226 100644
--- a/api/v1alpha1/image_types.go
+++ b/api/v1alpha1/image_types.go
@@ -257,7 +257,7 @@ type ImageContent struct {
// Permitted values are ami, ari, aki, bare, compressed, ovf, ova, and docker.
// +kubebuilder:default:=bare
// +optional
- ContainerFormat ImageContainerFormat `json:"containerFormat,omitempty"`
+ ContainerFormat *ImageContainerFormat `json:"containerFormat,omitempty"`
// diskFormat is the format of the disk image.
// Normal values are "qcow2", or "raw". Glance may be configured to support others.
@@ -267,8 +267,7 @@ type ImageContent struct {
// download describes how to obtain image data by downloading it from a URL.
// Must be set when creating a managed image.
// +required
- //nolint:kubeapilinter
- Download *ImageContentSourceDownload `json:"download"`
+ Download *ImageContentSourceDownload `json:"download,omitempty"`
}
type ImageContentSourceDownload struct {
@@ -364,21 +363,21 @@ type ImageResourceStatus struct {
// name is a Human-readable name for the image. Might not be unique.
// +kubebuilder:validation:MaxLength=1024
// +optional
- Name string `json:"name,omitempty"`
+ Name *string `json:"name,omitempty"`
// status is the image status as reported by Glance
// +kubebuilder:validation:MaxLength=1024
// +optional
- Status string `json:"status,omitempty"`
+ Status *string `json:"status,omitempty"`
// protected specifies that the image is protected from deletion.
// +optional
- Protected bool `json:"protected,omitempty"`
+ Protected *bool `json:"protected,omitempty"`
// visibility of the image
// +kubebuilder:validation:MaxLength=1024
// +optional
- Visibility string `json:"visibility,omitempty"`
+ Visibility *string `json:"visibility,omitempty"`
// hash is the hash of the image data published by Glance. Note that this is
// a hash of the data stored internally by Glance, which will have been
diff --git a/api/v1alpha1/keypair_types.go b/api/v1alpha1/keypair_types.go
index a1a04e858..8b768bf75 100644
--- a/api/v1alpha1/keypair_types.go
+++ b/api/v1alpha1/keypair_types.go
@@ -49,20 +49,20 @@ type KeyPairResourceStatus struct {
// name is a Human-readable name for the resource. Might not be unique.
// +kubebuilder:validation:MaxLength=1024
// +optional
- Name string `json:"name,omitempty"`
+ Name *string `json:"name,omitempty"`
// fingerprint is the fingerprint of the public key
// +kubebuilder:validation:MaxLength=1024
// +optional
- Fingerprint string `json:"fingerprint,omitempty"`
+ Fingerprint *string `json:"fingerprint,omitempty"`
// publicKey is the public key of the Keypair
// +kubebuilder:validation:MaxLength=16384
// +optional
- PublicKey string `json:"publicKey,omitempty"`
+ PublicKey *string `json:"publicKey,omitempty"`
// type is the type of the Keypair (ssh or x509)
// +kubebuilder:validation:MaxLength=64
// +optional
- Type string `json:"type,omitempty"`
+ Type *string `json:"type,omitempty"`
}
diff --git a/api/v1alpha1/network_types.go b/api/v1alpha1/network_types.go
index 18abf1e4e..efe971b79 100644
--- a/api/v1alpha1/network_types.go
+++ b/api/v1alpha1/network_types.go
@@ -22,7 +22,7 @@ type ProviderPropertiesStatus struct {
// Valid values depend on the networking back-end.
// +kubebuilder:validation:MaxLength=1024
// +optional
- NetworkType string `json:"networkType,omitempty"`
+ NetworkType *string `json:"networkType,omitempty"`
// physicalNetwork is the physical network where this network
// should be implemented. The Networking API v2.0 does not provide a
@@ -31,7 +31,7 @@ type ProviderPropertiesStatus struct {
// to specific bridges on each compute host.
// +kubebuilder:validation:MaxLength=1024
// +optional
- PhysicalNetwork string `json:"physicalNetwork,omitempty"`
+ PhysicalNetwork *string `json:"physicalNetwork,omitempty"`
// segmentationID is the ID of the isolated segment on the
// physical network. The network_type attribute defines the
@@ -146,24 +146,24 @@ type NetworkResourceStatus struct {
// name is a Human-readable name for the network. Might not be unique.
// +kubebuilder:validation:MaxLength=1024
// +optional
- Name string `json:"name,omitempty"`
+ Name *string `json:"name,omitempty"`
// description is a human-readable description for the resource.
// +kubebuilder:validation:MaxLength=1024
// +optional
- Description string `json:"description,omitempty"`
+ Description *string `json:"description,omitempty"`
// projectID is the project owner of the network.
// +kubebuilder:validation:MaxLength=1024
// +optional
- ProjectID string `json:"projectID,omitempty"`
+ ProjectID *string `json:"projectID,omitempty"`
// status indicates whether network is currently operational. Possible values
// include `ACTIVE', `DOWN', `BUILD', or `ERROR'. Plug-ins might define
// additional values.
// +kubebuilder:validation:MaxLength=1024
// +optional
- Status string `json:"status,omitempty"`
+ Status *string `json:"status,omitempty"`
// tags is the list of tags on the resource.
// +kubebuilder:validation:MaxItems=64
@@ -177,7 +177,7 @@ type NetworkResourceStatus struct {
// adminStateUp is the administrative state of the network,
// which is up (true) or down (false).
// +optional
- AdminStateUp *bool `json:"adminStateUp"`
+ AdminStateUp *bool `json:"adminStateUp,omitempty"`
// availabilityZoneHints is the availability zone candidate for the
// network.
@@ -190,7 +190,7 @@ type NetworkResourceStatus struct {
// dnsDomain is the DNS domain of the network
// +kubebuilder:validation:MaxLength=1024
// +optional
- DNSDomain string `json:"dnsDomain,omitempty"`
+ DNSDomain *string `json:"dnsDomain,omitempty"`
// mtu is the the maximum transmission unit value to address
// fragmentation. Minimum value is 68 for IPv4, and 1280 for IPv6.
diff --git a/api/v1alpha1/port_types.go b/api/v1alpha1/port_types.go
index 9e51d0153..b20b762b5 100644
--- a/api/v1alpha1/port_types.go
+++ b/api/v1alpha1/port_types.go
@@ -29,7 +29,7 @@ type PortFilter struct {
// networkRef is a reference to the ORC Network which this port is associated with.
// +optional
- NetworkRef KubernetesNameRef `json:"networkRef"`
+ NetworkRef *KubernetesNameRef `json:"networkRef,omitempty"`
// projectRef is a reference to the ORC Project this resource is associated with.
// Typically, only used by admin.
@@ -44,7 +44,7 @@ type PortFilter struct {
// macAddress is the MAC address of the port.
// +kubebuilder:validation:MaxLength=32
// +optional
- MACAddress string `json:"macAddress,omitempty"`
+ MACAddress *string `json:"macAddress,omitempty"`
FilterByNeutronTags `json:",inline"`
}
@@ -67,13 +67,13 @@ type AllowedAddressPairStatus struct {
// send packets with.
// +kubebuilder:validation:MaxLength=1024
// +optional
- IP string `json:"ip,omitempty"`
+ IP *string `json:"ip,omitempty"`
// mac contains a MAC address which a server connected to the port can
// send packets with.
// +kubebuilder:validation:MaxLength=1024
// +optional
- MAC string `json:"mac,omitempty"`
+ MAC *string `json:"mac,omitempty"`
}
type Address struct {
@@ -93,12 +93,12 @@ type FixedIPStatus struct {
// ip contains a fixed IP address assigned to the port.
// +kubebuilder:validation:MaxLength=1024
// +optional
- IP string `json:"ip,omitempty"`
+ IP *string `json:"ip,omitempty"`
// subnetID is the ID of the subnet this IP is allocated from.
// +kubebuilder:validation:MaxLength=1024
// +optional
- SubnetID string `json:"subnetID,omitempty"`
+ SubnetID *string `json:"subnetID,omitempty"`
}
// +kubebuilder:validation:XValidation:rule="has(self.portSecurity) && self.portSecurity == 'Disabled' ? !has(self.securityGroupRefs) : true",message="securityGroupRefs must be empty when portSecurity is set to Disabled"
@@ -159,7 +159,7 @@ type PortResourceSpec struct {
// deployments. If not specified, the Neutron default value is used.
// +kubebuilder:validation:MaxLength:=64
// +optional
- VNICType string `json:"vnicType,omitempty"`
+ VNICType *string `json:"vnicType,omitempty"`
// portSecurity controls port security for this port.
// When set to Enabled, port security is enabled.
@@ -168,7 +168,7 @@ type PortResourceSpec struct {
// +kubebuilder:default=Inherit
// +optional
// +kubebuilder:validation:XValidation:rule="!(oldSelf != 'Inherit' && self == 'Inherit')",message="portSecurity cannot be changed to Inherit"
- PortSecurity PortSecurityState `json:"portSecurity,omitempty"`
+ PortSecurity *PortSecurityState `json:"portSecurity,omitempty"`
// projectRef is a reference to the ORC Project this resource is associated with.
// Typically, only used by admin.
@@ -179,39 +179,39 @@ type PortResourceSpec struct {
// macAddress is the MAC address of the port.
// +kubebuilder:validation:MaxLength=32
// +optional
- MACAddress string `json:"macAddress,omitempty"`
+ MACAddress *string `json:"macAddress,omitempty"`
// hostID is the ID of host where the port resides.
// +kubebuilder:validation:MaxLength=36
// +optional
- HostID string `json:"hostID,omitempty"`
+ HostID *string `json:"hostID,omitempty"`
}
type PortResourceStatus struct {
// name is the human-readable name of the resource. Might not be unique.
// +kubebuilder:validation:MaxLength=1024
// +optional
- Name string `json:"name,omitempty"`
+ Name *string `json:"name,omitempty"`
// description is a human-readable description for the resource.
// +kubebuilder:validation:MaxLength=1024
// +optional
- Description string `json:"description,omitempty"`
+ Description *string `json:"description,omitempty"`
// networkID is the ID of the attached network.
// +kubebuilder:validation:MaxLength=1024
// +optional
- NetworkID string `json:"networkID,omitempty"`
+ NetworkID *string `json:"networkID,omitempty"`
// projectID is the project owner of the resource.
// +kubebuilder:validation:MaxLength=1024
// +optional
- ProjectID string `json:"projectID,omitempty"`
+ ProjectID *string `json:"projectID,omitempty"`
// status indicates the current status of the resource.
// +kubebuilder:validation:MaxLength=1024
// +optional
- Status string `json:"status,omitempty"`
+ Status *string `json:"status,omitempty"`
// tags is the list of tags on the resource.
// +kubebuilder:validation:MaxItems=64
@@ -228,17 +228,17 @@ type PortResourceStatus struct {
// macAddress is the MAC address of the port.
// +kubebuilder:validation:MaxLength=1024
// +optional
- MACAddress string `json:"macAddress,omitempty"`
+ MACAddress *string `json:"macAddress,omitempty"`
// deviceID is the ID of the device that uses this port.
// +kubebuilder:validation:MaxLength=1024
// +optional
- DeviceID string `json:"deviceID,omitempty"`
+ DeviceID *string `json:"deviceID,omitempty"`
// deviceOwner is the entity type that uses this port.
// +kubebuilder:validation:MaxLength=1024
// +optional
- DeviceOwner string `json:"deviceOwner,omitempty"`
+ DeviceOwner *string `json:"deviceOwner,omitempty"`
// allowedAddressPairs is a set of zero or more allowed address pair
// objects each where address pair object contains an IP address and
@@ -271,7 +271,7 @@ type PortResourceStatus struct {
// vnicType is the type of vNIC which this port is attached to.
// +kubebuilder:validation:MaxLength:=64
// +optional
- VNICType string `json:"vnicType,omitempty"`
+ VNICType *string `json:"vnicType,omitempty"`
// portSecurityEnabled indicates whether port security is enabled or not.
// +optional
@@ -280,7 +280,7 @@ type PortResourceStatus struct {
// hostID is the ID of host where the port resides.
// +kubebuilder:validation:MaxLength=128
// +optional
- HostID string `json:"hostID,omitempty"`
+ HostID *string `json:"hostID,omitempty"`
NeutronStatusMetadata `json:",inline"`
}
diff --git a/api/v1alpha1/project_types.go b/api/v1alpha1/project_types.go
index 3fa321c79..ce45e8584 100644
--- a/api/v1alpha1/project_types.go
+++ b/api/v1alpha1/project_types.go
@@ -91,12 +91,12 @@ type ProjectResourceStatus struct {
// name is a Human-readable name for the project. Might not be unique.
// +kubebuilder:validation:MaxLength=1024
// +optional
- Name string `json:"name,omitempty"`
+ Name *string `json:"name,omitempty"`
// description is a human-readable description for the resource.
// +kubebuilder:validation:MaxLength:=65535
// +optional
- Description string `json:"description,omitempty"`
+ Description *string `json:"description,omitempty"`
// enabled represents whether a project is enabled or not.
// +optional
diff --git a/api/v1alpha1/role_types.go b/api/v1alpha1/role_types.go
index f4a961dd1..de062e0c6 100644
--- a/api/v1alpha1/role_types.go
+++ b/api/v1alpha1/role_types.go
@@ -52,15 +52,15 @@ type RoleResourceStatus struct {
// name is a Human-readable name for the resource. Might not be unique.
// +kubebuilder:validation:MaxLength=1024
// +optional
- Name string `json:"name,omitempty"`
+ Name *string `json:"name,omitempty"`
// description is a human-readable description for the resource.
// +kubebuilder:validation:MaxLength=1024
// +optional
- Description string `json:"description,omitempty"`
+ Description *string `json:"description,omitempty"`
// domainID is the ID of the Domain to which the resource is associated.
// +kubebuilder:validation:MaxLength=1024
// +optional
- DomainID string `json:"domainID,omitempty"`
+ DomainID *string `json:"domainID,omitempty"`
}
diff --git a/api/v1alpha1/router_interface_types.go b/api/v1alpha1/router_interface_types.go
index 2676d07bd..2275c03f1 100644
--- a/api/v1alpha1/router_interface_types.go
+++ b/api/v1alpha1/router_interface_types.go
@@ -36,12 +36,12 @@ type RouterInterface struct {
metav1.ObjectMeta `json:"metadata,omitempty"`
// spec specifies the desired state of the resource.
- // +optional
- Spec RouterInterfaceSpec `json:"spec,omitempty"`
+ // +required
+ Spec RouterInterfaceSpec `json:"spec,omitzero"`
// status defines the observed state of the resource.
// +optional
- Status RouterInterfaceStatus `json:"status,omitempty"`
+ Status *RouterInterfaceStatus `json:"status,omitempty"`
}
// +kubebuilder:object:root=true
diff --git a/api/v1alpha1/router_types.go b/api/v1alpha1/router_types.go
index 999404a35..55be2a27d 100644
--- a/api/v1alpha1/router_types.go
+++ b/api/v1alpha1/router_types.go
@@ -46,7 +46,7 @@ type ExternalGatewayStatus struct {
// networkID is the ID of the network the gateway is on.
// +kubebuilder:validation:MaxLength=1024
// +optional
- NetworkID string `json:"networkID,omitempty"`
+ NetworkID *string `json:"networkID,omitempty"`
}
type RouterResourceSpec struct {
@@ -102,22 +102,22 @@ type RouterResourceStatus struct {
// name is the human-readable name of the resource. Might not be unique.
// +kubebuilder:validation:MaxLength=1024
// +optional
- Name string `json:"name,omitempty"`
+ Name *string `json:"name,omitempty"`
// description is a human-readable description for the resource.
// +kubebuilder:validation:MaxLength=1024
// +optional
- Description string `json:"description,omitempty"`
+ Description *string `json:"description,omitempty"`
// projectID is the project owner of the resource.
// +kubebuilder:validation:MaxLength=1024
// +optional
- ProjectID string `json:"projectID,omitempty"`
+ ProjectID *string `json:"projectID,omitempty"`
// status indicates the current status of the resource.
// +kubebuilder:validation:MaxLength=1024
// +optional
- Status string `json:"status,omitempty"`
+ Status *string `json:"status,omitempty"`
// tags is the list of tags on the resource.
// +kubebuilder:validation:MaxItems:=64
@@ -129,7 +129,7 @@ type RouterResourceStatus struct {
// adminStateUp is the administrative state of the router,
// which is up (true) or down (false).
// +optional
- AdminStateUp *bool `json:"adminStateUp"`
+ AdminStateUp *bool `json:"adminStateUp,omitempty"`
// externalGateways is a list of external gateways for the router.
// +kubebuilder:validation:MaxItems:=32
diff --git a/api/v1alpha1/securitygroup_types.go b/api/v1alpha1/securitygroup_types.go
index a3f977883..845f0b8e9 100644
--- a/api/v1alpha1/securitygroup_types.go
+++ b/api/v1alpha1/securitygroup_types.go
@@ -78,12 +78,12 @@ type PortRangeStatus struct {
// If the protocol is TCP, UDP, DCCP, SCTP or UDP-Lite this value must be less than or equal
// to the port_range_max attribute value. If the protocol is ICMP, this value must be an ICMP type
// +optional
- Min int32 `json:"min"`
+ Min *int32 `json:"min,omitempty"`
// max is the maximum port number in the range that is matched by the security group rule.
// If the protocol is TCP, UDP, DCCP, SCTP or UDP-Lite this value must be greater than or equal
// to the port_range_min attribute value. If the protocol is ICMP, this value must be an ICMP code.
// +optional
- Max int32 `json:"max"`
+ Max *int32 `json:"max,omitempty"`
}
// NOTE: A validation was removed from SecurityGroupRule until we bump minimum k8s to at least v1.31:
@@ -130,18 +130,18 @@ type SecurityGroupRuleStatus struct {
// id is the ID of the security group rule.
// +kubebuilder:validation:MaxLength=1024
// +optional
- ID string `json:"id,omitempty"`
+ ID *string `json:"id,omitempty"`
// description is a human-readable description for the resource.
// +kubebuilder:validation:MaxLength=1024
// +optional
- Description string `json:"description,omitempty"`
+ Description *string `json:"description,omitempty"`
// direction represents the direction in which the security group rule
// is applied. Can be ingress or egress.
// +kubebuilder:validation:MaxLength=1024
// +optional
- Direction string `json:"direction,omitempty"`
+ Direction *string `json:"direction,omitempty"`
// RemoteAddressGroupId (Not in gophercloud)
@@ -149,24 +149,24 @@ type SecurityGroupRuleStatus struct {
// RemoteGroupID
// +kubebuilder:validation:MaxLength=1024
// +optional
- RemoteGroupID string `json:"remoteGroupID,omitempty"`
+ RemoteGroupID *string `json:"remoteGroupID,omitempty"`
// remoteIPPrefix is an IP address block. Should match the Ethertype (IPv4 or IPv6)
// +kubebuilder:validation:MaxLength=1024
// +optional
- RemoteIPPrefix string `json:"remoteIPPrefix,omitempty"`
+ RemoteIPPrefix *string `json:"remoteIPPrefix,omitempty"`
// protocol is the IP protocol can be represented by a string, an
// integer, or null
// +kubebuilder:validation:MaxLength=1024
// +optional
- Protocol string `json:"protocol,omitempty"`
+ Protocol *string `json:"protocol,omitempty"`
// ethertype must be IPv4 or IPv6, and addresses represented in CIDR
// must match the ingress or egress rules.
// +kubebuilder:validation:MaxLength=1024
// +optional
- Ethertype string `json:"ethertype,omitempty"`
+ Ethertype *string `json:"ethertype,omitempty"`
// portRange sets the minimum and maximum ports range that the security group rule
// matches. If the protocol is [tcp, udp, dccp sctp,udplite] PortRange.Min must be less than
@@ -243,17 +243,17 @@ type SecurityGroupResourceStatus struct {
// name is a Human-readable name for the security group. Might not be unique.
// +kubebuilder:validation:MaxLength=1024
// +optional
- Name string `json:"name,omitempty"`
+ Name *string `json:"name,omitempty"`
// description is a human-readable description for the resource.
// +kubebuilder:validation:MaxLength=1024
// +optional
- Description string `json:"description,omitempty"`
+ Description *string `json:"description,omitempty"`
// projectID is the project owner of the security group.
// +kubebuilder:validation:MaxLength=1024
// +optional
- ProjectID string `json:"projectID,omitempty"`
+ ProjectID *string `json:"projectID,omitempty"`
// tags is the list of tags on the resource.
// +kubebuilder:validation:MaxItems:=64
@@ -264,7 +264,7 @@ type SecurityGroupResourceStatus struct {
// stateful indicates if the security group is stateful or stateless.
// +optional
- Stateful bool `json:"stateful,omitempty"`
+ Stateful *bool `json:"stateful,omitempty"`
// rules is a list of security group rules belonging to this SG.
// +kubebuilder:validation:MaxItems:=256
diff --git a/api/v1alpha1/server_types.go b/api/v1alpha1/server_types.go
index f4f40b279..a0191c27d 100644
--- a/api/v1alpha1/server_types.go
+++ b/api/v1alpha1/server_types.go
@@ -78,41 +78,41 @@ type ServerVolumeStatus struct {
// id is the ID of a volume attached to the server.
// +kubebuilder:validation:MaxLength:=1024
// +optional
- ID string `json:"id,omitempty"`
+ ID *string `json:"id,omitempty"`
}
type ServerInterfaceFixedIP struct {
// ipAddress is the IP address assigned to the port.
// +kubebuilder:validation:MaxLength:=1024
// +optional
- IPAddress string `json:"ipAddress,omitempty"`
+ IPAddress *string `json:"ipAddress,omitempty"`
// subnetID is the ID of the subnet from which the IP address is allocated.
// +kubebuilder:validation:MaxLength:=1024
// +optional
- SubnetID string `json:"subnetID,omitempty"`
+ SubnetID *string `json:"subnetID,omitempty"`
}
type ServerInterfaceStatus struct {
// portID is the ID of a port attached to the server.
// +kubebuilder:validation:MaxLength:=1024
// +optional
- PortID string `json:"portID,omitempty"`
+ PortID *string `json:"portID,omitempty"`
// netID is the ID of the network to which the interface is attached.
// +kubebuilder:validation:MaxLength:=1024
// +optional
- NetID string `json:"netID,omitempty"`
+ NetID *string `json:"netID,omitempty"`
// macAddr is the MAC address of the interface.
// +kubebuilder:validation:MaxLength:=1024
// +optional
- MACAddr string `json:"macAddr,omitempty"`
+ MACAddr *string `json:"macAddr,omitempty"`
// portState is the state of the port (e.g., ACTIVE, DOWN).
// +kubebuilder:validation:MaxLength:=1024
// +optional
- PortState string `json:"portState,omitempty"`
+ PortState *string `json:"portState,omitempty"`
// fixedIPs is the list of fixed IP addresses assigned to the interface.
// +kubebuilder:validation:MaxItems:=32
@@ -168,7 +168,7 @@ type ServerResourceSpec struct {
// +kubebuilder:validation:MaxLength=255
// +optional
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="availabilityZone is immutable"
- AvailabilityZone string `json:"availabilityZone,omitempty"`
+ AvailabilityZone *string `json:"availabilityZone,omitempty"`
// keypairRef is a reference to a KeyPair object. The server will be
// created with this keypair for SSH access.
@@ -229,7 +229,7 @@ type ServerFilter struct {
// availabilityZone is the availability zone of the existing resource
// +kubebuilder:validation:MaxLength=255
// +optional
- AvailabilityZone string `json:"availabilityZone,omitempty"`
+ AvailabilityZone *string `json:"availabilityZone,omitempty"`
FilterByServerTags `json:",inline"`
}
@@ -239,28 +239,28 @@ type ServerResourceStatus struct {
// name is the human-readable name of the resource. Might not be unique.
// +kubebuilder:validation:MaxLength=1024
// +optional
- Name string `json:"name,omitempty"`
+ Name *string `json:"name,omitempty"`
// hostID is the host where the server is located in the cloud.
// +kubebuilder:validation:MaxLength=1024
// +optional
- HostID string `json:"hostID,omitempty"`
+ HostID *string `json:"hostID,omitempty"`
// status contains the current operational status of the server,
// such as IN_PROGRESS or ACTIVE.
// +kubebuilder:validation:MaxLength=1024
// +optional
- Status string `json:"status,omitempty"`
+ Status *string `json:"status,omitempty"`
// imageID indicates the OS image used to deploy the server.
// +kubebuilder:validation:MaxLength=1024
// +optional
- ImageID string `json:"imageID,omitempty"`
+ ImageID *string `json:"imageID,omitempty"`
// availabilityZone is the availability zone where the server is located.
// +kubebuilder:validation:MaxLength=1024
// +optional
- AvailabilityZone string `json:"availabilityZone,omitempty"`
+ AvailabilityZone *string `json:"availabilityZone,omitempty"`
// serverGroups is a slice of strings containing the UUIDs of the
// server groups to which the server belongs. Currently this can
@@ -298,7 +298,7 @@ type ServerResourceStatus struct {
// configDrive indicates whether the server was booted with a config drive.
// +optional
- ConfigDrive bool `json:"configDrive,omitempty"`
+ ConfigDrive *bool `json:"configDrive,omitempty"`
}
// ServerMetadataStatus represents a key-value pair for server metadata in status.
@@ -306,10 +306,10 @@ type ServerMetadataStatus struct {
// key is the metadata key.
// +kubebuilder:validation:MaxLength:=255
// +optional
- Key string `json:"key,omitempty"`
+ Key *string `json:"key,omitempty"`
// value is the metadata value.
// +kubebuilder:validation:MaxLength:=255
// +optional
- Value string `json:"value,omitempty"`
+ Value *string `json:"value,omitempty"`
}
diff --git a/api/v1alpha1/servergroup_types.go b/api/v1alpha1/servergroup_types.go
index c8334709d..715ba0e92 100644
--- a/api/v1alpha1/servergroup_types.go
+++ b/api/v1alpha1/servergroup_types.go
@@ -36,7 +36,7 @@ type ServerGroupRules struct {
// maxServerPerHost specifies how many servers can reside on a single compute host.
// It can be used only with the "anti-affinity" policy.
// +optional
- MaxServerPerHost int32 `json:"maxServerPerHost,omitempty"`
+ MaxServerPerHost *int32 `json:"maxServerPerHost,omitempty"`
}
// ServerGroupResourceSpec contains the desired state of a servergroup
@@ -77,22 +77,22 @@ type ServerGroupResourceStatus struct {
// name is a Human-readable name for the servergroup. Might not be unique.
// +kubebuilder:validation:MaxLength=1024
// +optional
- Name string `json:"name,omitempty"`
+ Name *string `json:"name,omitempty"`
// policy is the policy of the servergroup.
// +kubebuilder:validation:MaxLength=1024
// +optional
- Policy string `json:"policy,omitempty"`
+ Policy *string `json:"policy,omitempty"`
// projectID is the project owner of the resource.
// +kubebuilder:validation:MaxLength=1024
// +optional
- ProjectID string `json:"projectID,omitempty"`
+ ProjectID *string `json:"projectID,omitempty"`
// userID of the server group.
// +kubebuilder:validation:MaxLength=1024
// +optional
- UserID string `json:"userID,omitempty"`
+ UserID *string `json:"userID,omitempty"`
// rules is the rules of the server group.
// +optional
diff --git a/api/v1alpha1/service_types.go b/api/v1alpha1/service_types.go
index 328f4fbbf..c9a30fdbf 100644
--- a/api/v1alpha1/service_types.go
+++ b/api/v1alpha1/service_types.go
@@ -60,17 +60,17 @@ type ServiceResourceStatus struct {
// name indicates the name of service.
// +kubebuilder:validation:MaxLength:=255
// +optional
- Name string `json:"name,omitempty"`
+ Name *string `json:"name,omitempty"`
// description indicates the description of service.
// +kubebuilder:validation:MaxLength:=255
// +optional
- Description string `json:"description,omitempty"`
+ Description *string `json:"description,omitempty"`
// type indicates which resource the service is responsible for.
// +kubebuilder:validation:MaxLength:=255
// +optional
- Type string `json:"type,omitempty"`
+ Type *string `json:"type,omitempty"`
// enabled indicates whether the service is enabled or not.
// +optional
diff --git a/api/v1alpha1/subnet_types.go b/api/v1alpha1/subnet_types.go
index 1a8450d03..34d25e4e5 100644
--- a/api/v1alpha1/subnet_types.go
+++ b/api/v1alpha1/subnet_types.go
@@ -52,7 +52,7 @@ type SubnetFilter struct {
// networkRef is a reference to the ORC Network which this subnet is associated with.
// +optional
- NetworkRef KubernetesNameRef `json:"networkRef"`
+ NetworkRef *KubernetesNameRef `json:"networkRef,omitempty"`
// projectRef is a reference to the ORC Project this resource is associated with.
// Typically, only used by admin.
@@ -151,12 +151,12 @@ type SubnetResourceStatus struct {
// name is the human-readable name of the subnet. Might not be unique.
// +kubebuilder:validation:MaxLength=1024
// +optional
- Name string `json:"name,omitempty"`
+ Name *string `json:"name,omitempty"`
// description is a human-readable description for the resource.
// +kubebuilder:validation:MaxLength=1024
// +optional
- Description string `json:"description,omitempty"`
+ Description *string `json:"description,omitempty"`
// ipVersion specifies IP version, either `4' or `6'.
// +optional
@@ -165,12 +165,12 @@ type SubnetResourceStatus struct {
// cidr representing IP range for this subnet, based on IP version.
// +kubebuilder:validation:MaxLength=1024
// +optional
- CIDR string `json:"cidr,omitempty"`
+ CIDR *string `json:"cidr,omitempty"`
// gatewayIP is the default gateway used by devices in this subnet, if any.
// +kubebuilder:validation:MaxLength=1024
// +optional
- GatewayIP string `json:"gatewayIP,omitempty"`
+ GatewayIP *string `json:"gatewayIP,omitempty"`
// dnsNameservers is a list of name servers used by hosts in this subnet.
// +kubebuilder:validation:MaxItems:=16
@@ -204,28 +204,28 @@ type SubnetResourceStatus struct {
// networkID is the ID of the network to which the subnet belongs.
// +kubebuilder:validation:MaxLength=1024
// +optional
- NetworkID string `json:"networkID,omitempty"`
+ NetworkID *string `json:"networkID,omitempty"`
// projectID is the project owner of the subnet.
// +kubebuilder:validation:MaxLength=1024
// +optional
- ProjectID string `json:"projectID,omitempty"`
+ ProjectID *string `json:"projectID,omitempty"`
// ipv6AddressMode specifies mechanisms for assigning IPv6 IP addresses.
// +kubebuilder:validation:MaxLength=1024
// +optional
- IPv6AddressMode string `json:"ipv6AddressMode,omitempty"`
+ IPv6AddressMode *string `json:"ipv6AddressMode,omitempty"`
// ipv6RAMode is the IPv6 router advertisement mode. It specifies
// whether the networking service should transmit ICMPv6 packets.
// +kubebuilder:validation:MaxLength=1024
// +optional
- IPv6RAMode string `json:"ipv6RAMode,omitempty"`
+ IPv6RAMode *string `json:"ipv6RAMode,omitempty"`
// subnetPoolID is the id of the subnet pool associated with the subnet.
// +kubebuilder:validation:MaxLength=1024
// +optional
- SubnetPoolID string `json:"subnetPoolID,omitempty"`
+ SubnetPoolID *string `json:"subnetPoolID,omitempty"`
// tags optionally set via extensions/attributestags
// +kubebuilder:validation:MaxItems:=64
@@ -307,12 +307,12 @@ type AllocationPoolStatus struct {
// start is the first IP address in the allocation pool.
// +kubebuilder:validation:MaxLength=1024
// +optional
- Start string `json:"start,omitempty"`
+ Start *string `json:"start,omitempty"`
// end is the last IP address in the allocation pool.
// +kubebuilder:validation:MaxLength=1024
// +optional
- End string `json:"end,omitempty"`
+ End *string `json:"end,omitempty"`
}
type HostRoute struct {
@@ -329,10 +329,10 @@ type HostRouteStatus struct {
// destination for the additional route.
// +kubebuilder:validation:MaxLength=1024
// +optional
- Destination string `json:"destination,omitempty"`
+ Destination *string `json:"destination,omitempty"`
// nextHop for the additional route.
// +kubebuilder:validation:MaxLength=1024
// +optional
- NextHop string `json:"nextHop,omitempty"`
+ NextHop *string `json:"nextHop,omitempty"`
}
diff --git a/api/v1alpha1/volume_types.go b/api/v1alpha1/volume_types.go
index 49e2f3d06..7da3fb77a 100644
--- a/api/v1alpha1/volume_types.go
+++ b/api/v1alpha1/volume_types.go
@@ -46,7 +46,7 @@ type VolumeResourceSpec struct {
// +kubebuilder:validation:MaxLength:=255
// +optional
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="availabilityZone is immutable"
- AvailabilityZone string `json:"availabilityZone,omitempty"`
+ AvailabilityZone *string `json:"availabilityZone,omitempty"`
// metadata key and value pairs to be associated with the volume.
// NOTE(mandre): gophercloud can't clear all metadata at the moment, we thus can't allow
@@ -86,28 +86,28 @@ type VolumeFilter struct {
// availabilityZone is the availability zone of the existing resource
// +kubebuilder:validation:MaxLength:=255
// +optional
- AvailabilityZone string `json:"availabilityZone,omitempty"`
+ AvailabilityZone *string `json:"availabilityZone,omitempty"`
}
type VolumeAttachmentStatus struct {
// attachmentID represents the attachment UUID.
// +kubebuilder:validation:MaxLength=1024
// +optional
- AttachmentID string `json:"attachmentID"`
+ AttachmentID *string `json:"attachmentID,omitempty"`
// serverID is the UUID of the server to which the volume is attached.
// +kubebuilder:validation:MaxLength=1024
// +optional
- ServerID string `json:"serverID"`
+ ServerID *string `json:"serverID,omitempty"`
// device is the name of the device in the instance.
// +kubebuilder:validation:MaxLength=1024
// +optional
- Device string `json:"device"`
+ Device *string `json:"device,omitempty"`
// attachedAt shows the date and time when the resource was attached. The date and time stamp format is ISO 8601.
// +optional
- AttachedAt *metav1.Time `json:"attachedAt"`
+ AttachedAt *metav1.Time `json:"attachedAt,omitempty"`
}
// VolumeResourceStatus represents the observed state of the resource.
@@ -115,12 +115,12 @@ type VolumeResourceStatus struct {
// name is a Human-readable name for the resource. Might not be unique.
// +kubebuilder:validation:MaxLength=1024
// +optional
- Name string `json:"name,omitempty"`
+ Name *string `json:"name,omitempty"`
// description is a human-readable description for the resource.
// +kubebuilder:validation:MaxLength=1024
// +optional
- Description string `json:"description,omitempty"`
+ Description *string `json:"description,omitempty"`
// size is the size of the volume in GiB.
// +optional
@@ -129,23 +129,23 @@ type VolumeResourceStatus struct {
// status represents the current status of the volume.
// +kubebuilder:validation:MaxLength=1024
// +optional
- Status string `json:"status,omitempty"`
+ Status *string `json:"status,omitempty"`
// availabilityZone is which availability zone the volume is in.
// +kubebuilder:validation:MaxLength=1024
// +optional
- AvailabilityZone string `json:"availabilityZone,omitempty"`
+ AvailabilityZone *string `json:"availabilityZone,omitempty"`
// attachments is a list of attachments for the volume.
// +kubebuilder:validation:MaxItems:=32
// +listType=atomic
// +optional
- Attachments []VolumeAttachmentStatus `json:"attachments"`
+ Attachments []VolumeAttachmentStatus `json:"attachments,omitempty"`
// volumeType is the name of associated the volume type.
// +kubebuilder:validation:MaxLength=1024
// +optional
- VolumeType string `json:"volumeType,omitempty"`
+ VolumeType *string `json:"volumeType,omitempty"`
// FIXME(mandre) Gophercloud doesn't return this field
// // volumeTypeID is the ID of the volumetype to which the resource is associated.
@@ -156,17 +156,17 @@ type VolumeResourceStatus struct {
// snapshotID is the ID of the snapshot from which the volume was created
// +kubebuilder:validation:MaxLength=1024
// +optional
- SnapshotID string `json:"snapshotID,omitempty"`
+ SnapshotID *string `json:"snapshotID,omitempty"`
// sourceVolID is the ID of another block storage volume from which the current volume was created
// +kubebuilder:validation:MaxLength=1024
// +optional
- SourceVolID string `json:"sourceVolID,omitempty"`
+ SourceVolID *string `json:"sourceVolID,omitempty"`
// backupID is the ID of the backup from which the volume was restored
// +kubebuilder:validation:MaxLength=1024
// +optional
- BackupID string `json:"backupID,omitempty"`
+ BackupID *string `json:"backupID,omitempty"`
// metadata key and value pairs to be associated with the volume.
// +kubebuilder:validation:MaxItems:=64
@@ -177,7 +177,7 @@ type VolumeResourceStatus struct {
// userID is the ID of the user who created the volume.
// +kubebuilder:validation:MaxLength=1024
// +optional
- UserID string `json:"userID,omitempty"`
+ UserID *string `json:"userID,omitempty"`
// bootable indicates whether this is a bootable volume.
// +optional
@@ -186,7 +186,7 @@ type VolumeResourceStatus struct {
// imageID is the ID of the image this volume was created from, if any.
// +kubebuilder:validation:MaxLength=1024
// +optional
- ImageID string `json:"imageID,omitempty"`
+ ImageID *string `json:"imageID,omitempty"`
// encrypted denotes if the volume is encrypted.
// +optional
@@ -195,12 +195,12 @@ type VolumeResourceStatus struct {
// replicationStatus is the status of replication.
// +kubebuilder:validation:MaxLength=1024
// +optional
- ReplicationStatus string `json:"replicationStatus,omitempty"`
+ ReplicationStatus *string `json:"replicationStatus,omitempty"`
// consistencyGroupID is the consistency group ID.
// +kubebuilder:validation:MaxLength=1024
// +optional
- ConsistencyGroupID string `json:"consistencyGroupID,omitempty"`
+ ConsistencyGroupID *string `json:"consistencyGroupID,omitempty"`
// multiattach denotes if the volume is multi-attach capable.
// +optional
@@ -209,12 +209,12 @@ type VolumeResourceStatus struct {
// host is the identifier of the host holding the volume.
// +kubebuilder:validation:MaxLength=1024
// +optional
- Host string `json:"host,omitempty"`
+ Host *string `json:"host,omitempty"`
// tenantID is the ID of the project that owns the volume.
// +kubebuilder:validation:MaxLength=1024
// +optional
- TenantID string `json:"tenantID,omitempty"`
+ TenantID *string `json:"tenantID,omitempty"`
// createdAt shows the date and time when the resource was created. The date and time stamp format is ISO 8601
// +optional
@@ -241,10 +241,10 @@ type VolumeMetadataStatus struct {
// name is the name of the metadata
// +kubebuilder:validation:MaxLength:=255
// +optional
- Name string `json:"name,omitempty"`
+ Name *string `json:"name,omitempty"`
// value is the value of the metadata
// +kubebuilder:validation:MaxLength:=255
// +optional
- Value string `json:"value,omitempty"`
+ Value *string `json:"value,omitempty"`
}
diff --git a/api/v1alpha1/volumetype_types.go b/api/v1alpha1/volumetype_types.go
index 76bdb210b..c5aca10e8 100644
--- a/api/v1alpha1/volumetype_types.go
+++ b/api/v1alpha1/volumetype_types.go
@@ -63,22 +63,22 @@ type VolumeTypeResourceStatus struct {
// name is a Human-readable name for the resource. Might not be unique.
// +kubebuilder:validation:MaxLength=1024
// +optional
- Name string `json:"name,omitempty"`
+ Name *string `json:"name,omitempty"`
// description is a human-readable description for the resource.
// +kubebuilder:validation:MaxLength=1024
// +optional
- Description string `json:"description,omitempty"`
+ Description *string `json:"description,omitempty"`
// extraSpecs is a map of key-value pairs that define extra specifications for the volume type.
// +kubebuilder:validation:MaxItems:=64
// +listType=atomic
// +optional
- ExtraSpecs []VolumeTypeExtraSpecStatus `json:"extraSpecs"`
+ ExtraSpecs []VolumeTypeExtraSpecStatus `json:"extraSpecs,omitempty"`
// isPublic indicates whether the VolumeType is public.
// +optional
- IsPublic *bool `json:"isPublic"`
+ IsPublic *bool `json:"isPublic,omitempty"`
}
type VolumeTypeExtraSpec struct {
@@ -97,10 +97,10 @@ type VolumeTypeExtraSpecStatus struct {
// name is the name of the extraspec
// +kubebuilder:validation:MaxLength:=255
// +optional
- Name string `json:"name,omitempty"`
+ Name *string `json:"name,omitempty"`
// value is the value of the extraspec
// +kubebuilder:validation:MaxLength:=255
// +optional
- Value string `json:"value,omitempty"`
+ Value *string `json:"value,omitempty"`
}
diff --git a/api/v1alpha1/zz_generated.deepcopy.go b/api/v1alpha1/zz_generated.deepcopy.go
index 1024ea46a..dafb04795 100644
--- a/api/v1alpha1/zz_generated.deepcopy.go
+++ b/api/v1alpha1/zz_generated.deepcopy.go
@@ -63,6 +63,16 @@ func (in *AllocationPool) DeepCopy() *AllocationPool {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *AllocationPoolStatus) DeepCopyInto(out *AllocationPoolStatus) {
*out = *in
+ if in.Start != nil {
+ in, out := &in.Start, &out.Start
+ *out = new(string)
+ **out = **in
+ }
+ if in.End != nil {
+ in, out := &in.End, &out.End
+ *out = new(string)
+ **out = **in
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AllocationPoolStatus.
@@ -98,6 +108,16 @@ func (in *AllowedAddressPair) DeepCopy() *AllowedAddressPair {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *AllowedAddressPairStatus) DeepCopyInto(out *AllowedAddressPairStatus) {
*out = *in
+ if in.IP != nil {
+ in, out := &in.IP, &out.IP
+ *out = new(string)
+ **out = **in
+ }
+ if in.MAC != nil {
+ in, out := &in.MAC, &out.MAC
+ *out = new(string)
+ **out = **in
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AllowedAddressPairStatus.
@@ -131,7 +151,11 @@ func (in *Domain) DeepCopyInto(out *Domain) {
out.TypeMeta = in.TypeMeta
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
in.Spec.DeepCopyInto(&out.Spec)
- in.Status.DeepCopyInto(&out.Status)
+ if in.Status != nil {
+ in, out := &in.Status, &out.Status
+ *out = new(DomainStatus)
+ (*in).DeepCopyInto(*out)
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Domain.
@@ -267,6 +291,16 @@ func (in *DomainResourceSpec) DeepCopy() *DomainResourceSpec {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *DomainResourceStatus) DeepCopyInto(out *DomainResourceStatus) {
*out = *in
+ if in.Name != nil {
+ in, out := &in.Name, &out.Name
+ *out = new(string)
+ **out = **in
+ }
+ if in.Description != nil {
+ in, out := &in.Description, &out.Description
+ *out = new(string)
+ **out = **in
+ }
if in.Enabled != nil {
in, out := &in.Enabled, &out.Enabled
*out = new(bool)
@@ -297,10 +331,15 @@ func (in *DomainSpec) DeepCopyInto(out *DomainSpec) {
*out = new(DomainResourceSpec)
(*in).DeepCopyInto(*out)
}
+ if in.ManagementPolicy != nil {
+ in, out := &in.ManagementPolicy, &out.ManagementPolicy
+ *out = new(ManagementPolicy)
+ **out = **in
+ }
if in.ManagedOptions != nil {
in, out := &in.ManagedOptions, &out.ManagedOptions
*out = new(ManagedOptions)
- **out = **in
+ (*in).DeepCopyInto(*out)
}
out.CloudCredentialsRef = in.CloudCredentialsRef
}
@@ -365,6 +404,11 @@ func (in *ExternalGateway) DeepCopy() *ExternalGateway {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ExternalGatewayStatus) DeepCopyInto(out *ExternalGatewayStatus) {
*out = *in
+ if in.NetworkID != nil {
+ in, out := &in.NetworkID, &out.NetworkID
+ *out = new(string)
+ **out = **in
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalGatewayStatus.
@@ -485,6 +529,16 @@ func (in *FilterByServerTags) DeepCopy() *FilterByServerTags {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *FixedIPStatus) DeepCopyInto(out *FixedIPStatus) {
*out = *in
+ if in.IP != nil {
+ in, out := &in.IP, &out.IP
+ *out = new(string)
+ **out = **in
+ }
+ if in.SubnetID != nil {
+ in, out := &in.SubnetID, &out.SubnetID
+ *out = new(string)
+ **out = **in
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FixedIPStatus.
@@ -503,7 +557,11 @@ func (in *Flavor) DeepCopyInto(out *Flavor) {
out.TypeMeta = in.TypeMeta
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
in.Spec.DeepCopyInto(&out.Spec)
- in.Status.DeepCopyInto(&out.Status)
+ if in.Status != nil {
+ in, out := &in.Status, &out.Status
+ *out = new(FlavorStatus)
+ (*in).DeepCopyInto(*out)
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Flavor.
@@ -629,11 +687,21 @@ func (in *FlavorResourceSpec) DeepCopyInto(out *FlavorResourceSpec) {
*out = new(string)
**out = **in
}
+ if in.Swap != nil {
+ in, out := &in.Swap, &out.Swap
+ *out = new(int32)
+ **out = **in
+ }
if in.IsPublic != nil {
in, out := &in.IsPublic, &out.IsPublic
*out = new(bool)
**out = **in
}
+ if in.Ephemeral != nil {
+ in, out := &in.Ephemeral, &out.Ephemeral
+ *out = new(int32)
+ **out = **in
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlavorResourceSpec.
@@ -649,6 +717,16 @@ func (in *FlavorResourceSpec) DeepCopy() *FlavorResourceSpec {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *FlavorResourceStatus) DeepCopyInto(out *FlavorResourceStatus) {
*out = *in
+ if in.Name != nil {
+ in, out := &in.Name, &out.Name
+ *out = new(string)
+ **out = **in
+ }
+ if in.Description != nil {
+ in, out := &in.Description, &out.Description
+ *out = new(string)
+ **out = **in
+ }
if in.RAM != nil {
in, out := &in.RAM, &out.RAM
*out = new(int32)
@@ -704,10 +782,15 @@ func (in *FlavorSpec) DeepCopyInto(out *FlavorSpec) {
*out = new(FlavorResourceSpec)
(*in).DeepCopyInto(*out)
}
+ if in.ManagementPolicy != nil {
+ in, out := &in.ManagementPolicy, &out.ManagementPolicy
+ *out = new(ManagementPolicy)
+ **out = **in
+ }
if in.ManagedOptions != nil {
in, out := &in.ManagedOptions, &out.ManagedOptions
*out = new(ManagedOptions)
- **out = **in
+ (*in).DeepCopyInto(*out)
}
out.CloudCredentialsRef = in.CloudCredentialsRef
}
@@ -760,7 +843,11 @@ func (in *FloatingIP) DeepCopyInto(out *FloatingIP) {
out.TypeMeta = in.TypeMeta
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
in.Spec.DeepCopyInto(&out.Spec)
- in.Status.DeepCopyInto(&out.Status)
+ if in.Status != nil {
+ in, out := &in.Status, &out.Status
+ *out = new(FloatingIPStatus)
+ (*in).DeepCopyInto(*out)
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FloatingIP.
@@ -809,6 +896,11 @@ func (in *FloatingIPFilter) DeepCopyInto(out *FloatingIPFilter) {
*out = new(KubernetesNameRef)
**out = **in
}
+ if in.Status != nil {
+ in, out := &in.Status, &out.Status
+ *out = new(string)
+ **out = **in
+ }
in.FilterByNeutronTags.DeepCopyInto(&out.FilterByNeutronTags)
}
@@ -937,6 +1029,51 @@ func (in *FloatingIPResourceSpec) DeepCopy() *FloatingIPResourceSpec {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *FloatingIPResourceStatus) DeepCopyInto(out *FloatingIPResourceStatus) {
*out = *in
+ if in.Description != nil {
+ in, out := &in.Description, &out.Description
+ *out = new(string)
+ **out = **in
+ }
+ if in.FloatingNetworkID != nil {
+ in, out := &in.FloatingNetworkID, &out.FloatingNetworkID
+ *out = new(string)
+ **out = **in
+ }
+ if in.FloatingIP != nil {
+ in, out := &in.FloatingIP, &out.FloatingIP
+ *out = new(string)
+ **out = **in
+ }
+ if in.PortID != nil {
+ in, out := &in.PortID, &out.PortID
+ *out = new(string)
+ **out = **in
+ }
+ if in.FixedIP != nil {
+ in, out := &in.FixedIP, &out.FixedIP
+ *out = new(string)
+ **out = **in
+ }
+ if in.TenantID != nil {
+ in, out := &in.TenantID, &out.TenantID
+ *out = new(string)
+ **out = **in
+ }
+ if in.ProjectID != nil {
+ in, out := &in.ProjectID, &out.ProjectID
+ *out = new(string)
+ **out = **in
+ }
+ if in.Status != nil {
+ in, out := &in.Status, &out.Status
+ *out = new(string)
+ **out = **in
+ }
+ if in.RouterID != nil {
+ in, out := &in.RouterID, &out.RouterID
+ *out = new(string)
+ **out = **in
+ }
if in.Tags != nil {
in, out := &in.Tags, &out.Tags
*out = make([]string, len(*in))
@@ -968,10 +1105,15 @@ func (in *FloatingIPSpec) DeepCopyInto(out *FloatingIPSpec) {
*out = new(FloatingIPResourceSpec)
(*in).DeepCopyInto(*out)
}
+ if in.ManagementPolicy != nil {
+ in, out := &in.ManagementPolicy, &out.ManagementPolicy
+ *out = new(ManagementPolicy)
+ **out = **in
+ }
if in.ManagedOptions != nil {
in, out := &in.ManagedOptions, &out.ManagedOptions
*out = new(ManagedOptions)
- **out = **in
+ (*in).DeepCopyInto(*out)
}
out.CloudCredentialsRef = in.CloudCredentialsRef
}
@@ -1024,7 +1166,11 @@ func (in *Group) DeepCopyInto(out *Group) {
out.TypeMeta = in.TypeMeta
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
in.Spec.DeepCopyInto(&out.Spec)
- in.Status.DeepCopyInto(&out.Status)
+ if in.Status != nil {
+ in, out := &in.Status, &out.Status
+ *out = new(GroupStatus)
+ (*in).DeepCopyInto(*out)
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Group.
@@ -1160,6 +1306,21 @@ func (in *GroupResourceSpec) DeepCopy() *GroupResourceSpec {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *GroupResourceStatus) DeepCopyInto(out *GroupResourceStatus) {
*out = *in
+ if in.Name != nil {
+ in, out := &in.Name, &out.Name
+ *out = new(string)
+ **out = **in
+ }
+ if in.Description != nil {
+ in, out := &in.Description, &out.Description
+ *out = new(string)
+ **out = **in
+ }
+ if in.DomainID != nil {
+ in, out := &in.DomainID, &out.DomainID
+ *out = new(string)
+ **out = **in
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupResourceStatus.
@@ -1185,10 +1346,15 @@ func (in *GroupSpec) DeepCopyInto(out *GroupSpec) {
*out = new(GroupResourceSpec)
(*in).DeepCopyInto(*out)
}
+ if in.ManagementPolicy != nil {
+ in, out := &in.ManagementPolicy, &out.ManagementPolicy
+ *out = new(ManagementPolicy)
+ **out = **in
+ }
if in.ManagedOptions != nil {
in, out := &in.ManagedOptions, &out.ManagedOptions
*out = new(ManagedOptions)
- **out = **in
+ (*in).DeepCopyInto(*out)
}
out.CloudCredentialsRef = in.CloudCredentialsRef
}
@@ -1221,7 +1387,7 @@ func (in *GroupStatus) DeepCopyInto(out *GroupStatus) {
if in.Resource != nil {
in, out := &in.Resource, &out.Resource
*out = new(GroupResourceStatus)
- **out = **in
+ (*in).DeepCopyInto(*out)
}
}
@@ -1253,6 +1419,16 @@ func (in *HostRoute) DeepCopy() *HostRoute {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *HostRouteStatus) DeepCopyInto(out *HostRouteStatus) {
*out = *in
+ if in.Destination != nil {
+ in, out := &in.Destination, &out.Destination
+ *out = new(string)
+ **out = **in
+ }
+ if in.NextHop != nil {
+ in, out := &in.NextHop, &out.NextHop
+ *out = new(string)
+ **out = **in
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HostRouteStatus.
@@ -1296,7 +1472,11 @@ func (in *Image) DeepCopyInto(out *Image) {
out.TypeMeta = in.TypeMeta
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
in.Spec.DeepCopyInto(&out.Spec)
- in.Status.DeepCopyInto(&out.Status)
+ if in.Status != nil {
+ in, out := &in.Status, &out.Status
+ *out = new(ImageStatus)
+ (*in).DeepCopyInto(*out)
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Image.
@@ -1320,6 +1500,11 @@ func (in *Image) DeepCopyObject() runtime.Object {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ImageContent) DeepCopyInto(out *ImageContent) {
*out = *in
+ if in.ContainerFormat != nil {
+ in, out := &in.ContainerFormat, &out.ContainerFormat
+ *out = new(ImageContainerFormat)
+ **out = **in
+ }
if in.Download != nil {
in, out := &in.Download, &out.Download
*out = new(ImageContentSourceDownload)
@@ -1652,6 +1837,26 @@ func (in *ImageResourceSpec) DeepCopy() *ImageResourceSpec {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ImageResourceStatus) DeepCopyInto(out *ImageResourceStatus) {
*out = *in
+ if in.Name != nil {
+ in, out := &in.Name, &out.Name
+ *out = new(string)
+ **out = **in
+ }
+ if in.Status != nil {
+ in, out := &in.Status, &out.Status
+ *out = new(string)
+ **out = **in
+ }
+ if in.Protected != nil {
+ in, out := &in.Protected, &out.Protected
+ *out = new(bool)
+ **out = **in
+ }
+ if in.Visibility != nil {
+ in, out := &in.Visibility, &out.Visibility
+ *out = new(string)
+ **out = **in
+ }
if in.Hash != nil {
in, out := &in.Hash, &out.Hash
*out = new(ImageHash)
@@ -1697,10 +1902,15 @@ func (in *ImageSpec) DeepCopyInto(out *ImageSpec) {
*out = new(ImageResourceSpec)
(*in).DeepCopyInto(*out)
}
+ if in.ManagementPolicy != nil {
+ in, out := &in.ManagementPolicy, &out.ManagementPolicy
+ *out = new(ManagementPolicy)
+ **out = **in
+ }
if in.ManagedOptions != nil {
in, out := &in.ManagedOptions, &out.ManagedOptions
*out = new(ManagedOptions)
- **out = **in
+ (*in).DeepCopyInto(*out)
}
out.CloudCredentialsRef = in.CloudCredentialsRef
}
@@ -1774,7 +1984,11 @@ func (in *KeyPair) DeepCopyInto(out *KeyPair) {
out.TypeMeta = in.TypeMeta
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
in.Spec.DeepCopyInto(&out.Spec)
- in.Status.DeepCopyInto(&out.Status)
+ if in.Status != nil {
+ in, out := &in.Status, &out.Status
+ *out = new(KeyPairStatus)
+ (*in).DeepCopyInto(*out)
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KeyPair.
@@ -1900,6 +2114,26 @@ func (in *KeyPairResourceSpec) DeepCopy() *KeyPairResourceSpec {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *KeyPairResourceStatus) DeepCopyInto(out *KeyPairResourceStatus) {
*out = *in
+ if in.Name != nil {
+ in, out := &in.Name, &out.Name
+ *out = new(string)
+ **out = **in
+ }
+ if in.Fingerprint != nil {
+ in, out := &in.Fingerprint, &out.Fingerprint
+ *out = new(string)
+ **out = **in
+ }
+ if in.PublicKey != nil {
+ in, out := &in.PublicKey, &out.PublicKey
+ *out = new(string)
+ **out = **in
+ }
+ if in.Type != nil {
+ in, out := &in.Type, &out.Type
+ *out = new(string)
+ **out = **in
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KeyPairResourceStatus.
@@ -1925,10 +2159,15 @@ func (in *KeyPairSpec) DeepCopyInto(out *KeyPairSpec) {
*out = new(KeyPairResourceSpec)
(*in).DeepCopyInto(*out)
}
+ if in.ManagementPolicy != nil {
+ in, out := &in.ManagementPolicy, &out.ManagementPolicy
+ *out = new(ManagementPolicy)
+ **out = **in
+ }
if in.ManagedOptions != nil {
in, out := &in.ManagedOptions, &out.ManagedOptions
*out = new(ManagedOptions)
- **out = **in
+ (*in).DeepCopyInto(*out)
}
out.CloudCredentialsRef = in.CloudCredentialsRef
}
@@ -1961,7 +2200,7 @@ func (in *KeyPairStatus) DeepCopyInto(out *KeyPairStatus) {
if in.Resource != nil {
in, out := &in.Resource, &out.Resource
*out = new(KeyPairResourceStatus)
- **out = **in
+ (*in).DeepCopyInto(*out)
}
}
@@ -1978,6 +2217,11 @@ func (in *KeyPairStatus) DeepCopy() *KeyPairStatus {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ManagedOptions) DeepCopyInto(out *ManagedOptions) {
*out = *in
+ if in.OnDelete != nil {
+ in, out := &in.OnDelete, &out.OnDelete
+ *out = new(OnDelete)
+ **out = **in
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedOptions.
@@ -1996,7 +2240,11 @@ func (in *Network) DeepCopyInto(out *Network) {
out.TypeMeta = in.TypeMeta
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
in.Spec.DeepCopyInto(&out.Spec)
- in.Status.DeepCopyInto(&out.Status)
+ if in.Status != nil {
+ in, out := &in.Status, &out.Status
+ *out = new(NetworkStatus)
+ (*in).DeepCopyInto(*out)
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Network.
@@ -2183,6 +2431,26 @@ func (in *NetworkResourceSpec) DeepCopy() *NetworkResourceSpec {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *NetworkResourceStatus) DeepCopyInto(out *NetworkResourceStatus) {
*out = *in
+ if in.Name != nil {
+ in, out := &in.Name, &out.Name
+ *out = new(string)
+ **out = **in
+ }
+ if in.Description != nil {
+ in, out := &in.Description, &out.Description
+ *out = new(string)
+ **out = **in
+ }
+ if in.ProjectID != nil {
+ in, out := &in.ProjectID, &out.ProjectID
+ *out = new(string)
+ **out = **in
+ }
+ if in.Status != nil {
+ in, out := &in.Status, &out.Status
+ *out = new(string)
+ **out = **in
+ }
if in.Tags != nil {
in, out := &in.Tags, &out.Tags
*out = make([]string, len(*in))
@@ -2199,6 +2467,11 @@ func (in *NetworkResourceStatus) DeepCopyInto(out *NetworkResourceStatus) {
*out = make([]string, len(*in))
copy(*out, *in)
}
+ if in.DNSDomain != nil {
+ in, out := &in.DNSDomain, &out.DNSDomain
+ *out = new(string)
+ **out = **in
+ }
if in.MTU != nil {
in, out := &in.MTU, &out.MTU
*out = new(int32)
@@ -2254,10 +2527,15 @@ func (in *NetworkSpec) DeepCopyInto(out *NetworkSpec) {
*out = new(NetworkResourceSpec)
(*in).DeepCopyInto(*out)
}
+ if in.ManagementPolicy != nil {
+ in, out := &in.ManagementPolicy, &out.ManagementPolicy
+ *out = new(ManagementPolicy)
+ **out = **in
+ }
if in.ManagedOptions != nil {
in, out := &in.ManagedOptions, &out.ManagedOptions
*out = new(ManagedOptions)
- **out = **in
+ (*in).DeepCopyInto(*out)
}
out.CloudCredentialsRef = in.CloudCredentialsRef
}
@@ -2338,7 +2616,11 @@ func (in *Port) DeepCopyInto(out *Port) {
out.TypeMeta = in.TypeMeta
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
in.Spec.DeepCopyInto(&out.Spec)
- in.Status.DeepCopyInto(&out.Status)
+ if in.Status != nil {
+ in, out := &in.Status, &out.Status
+ *out = new(PortStatus)
+ (*in).DeepCopyInto(*out)
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Port.
@@ -2372,6 +2654,11 @@ func (in *PortFilter) DeepCopyInto(out *PortFilter) {
*out = new(NeutronDescription)
**out = **in
}
+ if in.NetworkRef != nil {
+ in, out := &in.NetworkRef, &out.NetworkRef
+ *out = new(KubernetesNameRef)
+ **out = **in
+ }
if in.ProjectRef != nil {
in, out := &in.ProjectRef, &out.ProjectRef
*out = new(KubernetesNameRef)
@@ -2382,6 +2669,11 @@ func (in *PortFilter) DeepCopyInto(out *PortFilter) {
*out = new(bool)
**out = **in
}
+ if in.MACAddress != nil {
+ in, out := &in.MACAddress, &out.MACAddress
+ *out = new(string)
+ **out = **in
+ }
in.FilterByNeutronTags.DeepCopyInto(&out.FilterByNeutronTags)
}
@@ -2470,6 +2762,16 @@ func (in *PortRangeSpec) DeepCopy() *PortRangeSpec {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PortRangeStatus) DeepCopyInto(out *PortRangeStatus) {
*out = *in
+ if in.Min != nil {
+ in, out := &in.Min, &out.Min
+ *out = new(int32)
+ **out = **in
+ }
+ if in.Max != nil {
+ in, out := &in.Max, &out.Max
+ *out = new(int32)
+ **out = **in
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortRangeStatus.
@@ -2524,11 +2826,31 @@ func (in *PortResourceSpec) DeepCopyInto(out *PortResourceSpec) {
*out = make([]OpenStackName, len(*in))
copy(*out, *in)
}
+ if in.VNICType != nil {
+ in, out := &in.VNICType, &out.VNICType
+ *out = new(string)
+ **out = **in
+ }
+ if in.PortSecurity != nil {
+ in, out := &in.PortSecurity, &out.PortSecurity
+ *out = new(PortSecurityState)
+ **out = **in
+ }
if in.ProjectRef != nil {
in, out := &in.ProjectRef, &out.ProjectRef
*out = new(KubernetesNameRef)
**out = **in
}
+ if in.MACAddress != nil {
+ in, out := &in.MACAddress, &out.MACAddress
+ *out = new(string)
+ **out = **in
+ }
+ if in.HostID != nil {
+ in, out := &in.HostID, &out.HostID
+ *out = new(string)
+ **out = **in
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortResourceSpec.
@@ -2544,25 +2866,69 @@ func (in *PortResourceSpec) DeepCopy() *PortResourceSpec {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PortResourceStatus) DeepCopyInto(out *PortResourceStatus) {
*out = *in
- if in.Tags != nil {
- in, out := &in.Tags, &out.Tags
- *out = make([]string, len(*in))
- copy(*out, *in)
+ if in.Name != nil {
+ in, out := &in.Name, &out.Name
+ *out = new(string)
+ **out = **in
}
- if in.AdminStateUp != nil {
- in, out := &in.AdminStateUp, &out.AdminStateUp
- *out = new(bool)
+ if in.Description != nil {
+ in, out := &in.Description, &out.Description
+ *out = new(string)
+ **out = **in
+ }
+ if in.NetworkID != nil {
+ in, out := &in.NetworkID, &out.NetworkID
+ *out = new(string)
+ **out = **in
+ }
+ if in.ProjectID != nil {
+ in, out := &in.ProjectID, &out.ProjectID
+ *out = new(string)
+ **out = **in
+ }
+ if in.Status != nil {
+ in, out := &in.Status, &out.Status
+ *out = new(string)
+ **out = **in
+ }
+ if in.Tags != nil {
+ in, out := &in.Tags, &out.Tags
+ *out = make([]string, len(*in))
+ copy(*out, *in)
+ }
+ if in.AdminStateUp != nil {
+ in, out := &in.AdminStateUp, &out.AdminStateUp
+ *out = new(bool)
+ **out = **in
+ }
+ if in.MACAddress != nil {
+ in, out := &in.MACAddress, &out.MACAddress
+ *out = new(string)
+ **out = **in
+ }
+ if in.DeviceID != nil {
+ in, out := &in.DeviceID, &out.DeviceID
+ *out = new(string)
+ **out = **in
+ }
+ if in.DeviceOwner != nil {
+ in, out := &in.DeviceOwner, &out.DeviceOwner
+ *out = new(string)
**out = **in
}
if in.AllowedAddressPairs != nil {
in, out := &in.AllowedAddressPairs, &out.AllowedAddressPairs
*out = make([]AllowedAddressPairStatus, len(*in))
- copy(*out, *in)
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
}
if in.FixedIPs != nil {
in, out := &in.FixedIPs, &out.FixedIPs
*out = make([]FixedIPStatus, len(*in))
- copy(*out, *in)
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
}
if in.SecurityGroups != nil {
in, out := &in.SecurityGroups, &out.SecurityGroups
@@ -2574,11 +2940,21 @@ func (in *PortResourceStatus) DeepCopyInto(out *PortResourceStatus) {
*out = new(bool)
**out = **in
}
+ if in.VNICType != nil {
+ in, out := &in.VNICType, &out.VNICType
+ *out = new(string)
+ **out = **in
+ }
if in.PortSecurityEnabled != nil {
in, out := &in.PortSecurityEnabled, &out.PortSecurityEnabled
*out = new(bool)
**out = **in
}
+ if in.HostID != nil {
+ in, out := &in.HostID, &out.HostID
+ *out = new(string)
+ **out = **in
+ }
in.NeutronStatusMetadata.DeepCopyInto(&out.NeutronStatusMetadata)
}
@@ -2605,10 +2981,15 @@ func (in *PortSpec) DeepCopyInto(out *PortSpec) {
*out = new(PortResourceSpec)
(*in).DeepCopyInto(*out)
}
+ if in.ManagementPolicy != nil {
+ in, out := &in.ManagementPolicy, &out.ManagementPolicy
+ *out = new(ManagementPolicy)
+ **out = **in
+ }
if in.ManagedOptions != nil {
in, out := &in.ManagedOptions, &out.ManagedOptions
*out = new(ManagedOptions)
- **out = **in
+ (*in).DeepCopyInto(*out)
}
out.CloudCredentialsRef = in.CloudCredentialsRef
}
@@ -2661,7 +3042,11 @@ func (in *Project) DeepCopyInto(out *Project) {
out.TypeMeta = in.TypeMeta
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
in.Spec.DeepCopyInto(&out.Spec)
- in.Status.DeepCopyInto(&out.Status)
+ if in.Status != nil {
+ in, out := &in.Status, &out.Status
+ *out = new(ProjectStatus)
+ (*in).DeepCopyInto(*out)
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Project.
@@ -2798,6 +3183,16 @@ func (in *ProjectResourceSpec) DeepCopy() *ProjectResourceSpec {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ProjectResourceStatus) DeepCopyInto(out *ProjectResourceStatus) {
*out = *in
+ if in.Name != nil {
+ in, out := &in.Name, &out.Name
+ *out = new(string)
+ **out = **in
+ }
+ if in.Description != nil {
+ in, out := &in.Description, &out.Description
+ *out = new(string)
+ **out = **in
+ }
if in.Enabled != nil {
in, out := &in.Enabled, &out.Enabled
*out = new(bool)
@@ -2833,10 +3228,15 @@ func (in *ProjectSpec) DeepCopyInto(out *ProjectSpec) {
*out = new(ProjectResourceSpec)
(*in).DeepCopyInto(*out)
}
+ if in.ManagementPolicy != nil {
+ in, out := &in.ManagementPolicy, &out.ManagementPolicy
+ *out = new(ManagementPolicy)
+ **out = **in
+ }
if in.ManagedOptions != nil {
in, out := &in.ManagedOptions, &out.ManagedOptions
*out = new(ManagedOptions)
- **out = **in
+ (*in).DeepCopyInto(*out)
}
out.CloudCredentialsRef = in.CloudCredentialsRef
}
@@ -2886,6 +3286,16 @@ func (in *ProjectStatus) DeepCopy() *ProjectStatus {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ProviderPropertiesStatus) DeepCopyInto(out *ProviderPropertiesStatus) {
*out = *in
+ if in.NetworkType != nil {
+ in, out := &in.NetworkType, &out.NetworkType
+ *out = new(string)
+ **out = **in
+ }
+ if in.PhysicalNetwork != nil {
+ in, out := &in.PhysicalNetwork, &out.PhysicalNetwork
+ *out = new(string)
+ **out = **in
+ }
if in.SegmentationID != nil {
in, out := &in.SegmentationID, &out.SegmentationID
*out = new(int32)
@@ -2909,7 +3319,11 @@ func (in *Role) DeepCopyInto(out *Role) {
out.TypeMeta = in.TypeMeta
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
in.Spec.DeepCopyInto(&out.Spec)
- in.Status.DeepCopyInto(&out.Status)
+ if in.Status != nil {
+ in, out := &in.Status, &out.Status
+ *out = new(RoleStatus)
+ (*in).DeepCopyInto(*out)
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Role.
@@ -3045,6 +3459,21 @@ func (in *RoleResourceSpec) DeepCopy() *RoleResourceSpec {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *RoleResourceStatus) DeepCopyInto(out *RoleResourceStatus) {
*out = *in
+ if in.Name != nil {
+ in, out := &in.Name, &out.Name
+ *out = new(string)
+ **out = **in
+ }
+ if in.Description != nil {
+ in, out := &in.Description, &out.Description
+ *out = new(string)
+ **out = **in
+ }
+ if in.DomainID != nil {
+ in, out := &in.DomainID, &out.DomainID
+ *out = new(string)
+ **out = **in
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleResourceStatus.
@@ -3070,10 +3499,15 @@ func (in *RoleSpec) DeepCopyInto(out *RoleSpec) {
*out = new(RoleResourceSpec)
(*in).DeepCopyInto(*out)
}
+ if in.ManagementPolicy != nil {
+ in, out := &in.ManagementPolicy, &out.ManagementPolicy
+ *out = new(ManagementPolicy)
+ **out = **in
+ }
if in.ManagedOptions != nil {
in, out := &in.ManagedOptions, &out.ManagedOptions
*out = new(ManagedOptions)
- **out = **in
+ (*in).DeepCopyInto(*out)
}
out.CloudCredentialsRef = in.CloudCredentialsRef
}
@@ -3106,7 +3540,7 @@ func (in *RoleStatus) DeepCopyInto(out *RoleStatus) {
if in.Resource != nil {
in, out := &in.Resource, &out.Resource
*out = new(RoleResourceStatus)
- **out = **in
+ (*in).DeepCopyInto(*out)
}
}
@@ -3126,7 +3560,11 @@ func (in *Router) DeepCopyInto(out *Router) {
out.TypeMeta = in.TypeMeta
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
in.Spec.DeepCopyInto(&out.Spec)
- in.Status.DeepCopyInto(&out.Status)
+ if in.Status != nil {
+ in, out := &in.Status, &out.Status
+ *out = new(RouterStatus)
+ (*in).DeepCopyInto(*out)
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Router.
@@ -3209,7 +3647,11 @@ func (in *RouterInterface) DeepCopyInto(out *RouterInterface) {
out.TypeMeta = in.TypeMeta
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
in.Spec.DeepCopyInto(&out.Spec)
- in.Status.DeepCopyInto(&out.Status)
+ if in.Status != nil {
+ in, out := &in.Status, &out.Status
+ *out = new(RouterInterfaceStatus)
+ (*in).DeepCopyInto(*out)
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RouterInterface.
@@ -3399,6 +3841,26 @@ func (in *RouterResourceSpec) DeepCopy() *RouterResourceSpec {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *RouterResourceStatus) DeepCopyInto(out *RouterResourceStatus) {
*out = *in
+ if in.Name != nil {
+ in, out := &in.Name, &out.Name
+ *out = new(string)
+ **out = **in
+ }
+ if in.Description != nil {
+ in, out := &in.Description, &out.Description
+ *out = new(string)
+ **out = **in
+ }
+ if in.ProjectID != nil {
+ in, out := &in.ProjectID, &out.ProjectID
+ *out = new(string)
+ **out = **in
+ }
+ if in.Status != nil {
+ in, out := &in.Status, &out.Status
+ *out = new(string)
+ **out = **in
+ }
if in.Tags != nil {
in, out := &in.Tags, &out.Tags
*out = make([]string, len(*in))
@@ -3412,7 +3874,9 @@ func (in *RouterResourceStatus) DeepCopyInto(out *RouterResourceStatus) {
if in.ExternalGateways != nil {
in, out := &in.ExternalGateways, &out.ExternalGateways
*out = make([]ExternalGatewayStatus, len(*in))
- copy(*out, *in)
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
}
if in.AvailabilityZoneHints != nil {
in, out := &in.AvailabilityZoneHints, &out.AvailabilityZoneHints
@@ -3444,10 +3908,15 @@ func (in *RouterSpec) DeepCopyInto(out *RouterSpec) {
*out = new(RouterResourceSpec)
(*in).DeepCopyInto(*out)
}
+ if in.ManagementPolicy != nil {
+ in, out := &in.ManagementPolicy, &out.ManagementPolicy
+ *out = new(ManagementPolicy)
+ **out = **in
+ }
if in.ManagedOptions != nil {
in, out := &in.ManagedOptions, &out.ManagedOptions
*out = new(ManagedOptions)
- **out = **in
+ (*in).DeepCopyInto(*out)
}
out.CloudCredentialsRef = in.CloudCredentialsRef
}
@@ -3500,7 +3969,11 @@ func (in *SecurityGroup) DeepCopyInto(out *SecurityGroup) {
out.TypeMeta = in.TypeMeta
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
in.Spec.DeepCopyInto(&out.Spec)
- in.Status.DeepCopyInto(&out.Status)
+ if in.Status != nil {
+ in, out := &in.Status, &out.Status
+ *out = new(SecurityGroupStatus)
+ (*in).DeepCopyInto(*out)
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecurityGroup.
@@ -3659,11 +4132,31 @@ func (in *SecurityGroupResourceSpec) DeepCopy() *SecurityGroupResourceSpec {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *SecurityGroupResourceStatus) DeepCopyInto(out *SecurityGroupResourceStatus) {
*out = *in
+ if in.Name != nil {
+ in, out := &in.Name, &out.Name
+ *out = new(string)
+ **out = **in
+ }
+ if in.Description != nil {
+ in, out := &in.Description, &out.Description
+ *out = new(string)
+ **out = **in
+ }
+ if in.ProjectID != nil {
+ in, out := &in.ProjectID, &out.ProjectID
+ *out = new(string)
+ **out = **in
+ }
if in.Tags != nil {
in, out := &in.Tags, &out.Tags
*out = make([]string, len(*in))
copy(*out, *in)
}
+ if in.Stateful != nil {
+ in, out := &in.Stateful, &out.Stateful
+ *out = new(bool)
+ **out = **in
+ }
if in.Rules != nil {
in, out := &in.Rules, &out.Rules
*out = make([]SecurityGroupRuleStatus, len(*in))
@@ -3727,10 +4220,45 @@ func (in *SecurityGroupRule) DeepCopy() *SecurityGroupRule {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *SecurityGroupRuleStatus) DeepCopyInto(out *SecurityGroupRuleStatus) {
*out = *in
+ if in.ID != nil {
+ in, out := &in.ID, &out.ID
+ *out = new(string)
+ **out = **in
+ }
+ if in.Description != nil {
+ in, out := &in.Description, &out.Description
+ *out = new(string)
+ **out = **in
+ }
+ if in.Direction != nil {
+ in, out := &in.Direction, &out.Direction
+ *out = new(string)
+ **out = **in
+ }
+ if in.RemoteGroupID != nil {
+ in, out := &in.RemoteGroupID, &out.RemoteGroupID
+ *out = new(string)
+ **out = **in
+ }
+ if in.RemoteIPPrefix != nil {
+ in, out := &in.RemoteIPPrefix, &out.RemoteIPPrefix
+ *out = new(string)
+ **out = **in
+ }
+ if in.Protocol != nil {
+ in, out := &in.Protocol, &out.Protocol
+ *out = new(string)
+ **out = **in
+ }
+ if in.Ethertype != nil {
+ in, out := &in.Ethertype, &out.Ethertype
+ *out = new(string)
+ **out = **in
+ }
if in.PortRange != nil {
in, out := &in.PortRange, &out.PortRange
*out = new(PortRangeStatus)
- **out = **in
+ (*in).DeepCopyInto(*out)
}
}
@@ -3757,10 +4285,15 @@ func (in *SecurityGroupSpec) DeepCopyInto(out *SecurityGroupSpec) {
*out = new(SecurityGroupResourceSpec)
(*in).DeepCopyInto(*out)
}
+ if in.ManagementPolicy != nil {
+ in, out := &in.ManagementPolicy, &out.ManagementPolicy
+ *out = new(ManagementPolicy)
+ **out = **in
+ }
if in.ManagedOptions != nil {
in, out := &in.ManagedOptions, &out.ManagedOptions
*out = new(ManagedOptions)
- **out = **in
+ (*in).DeepCopyInto(*out)
}
out.CloudCredentialsRef = in.CloudCredentialsRef
}
@@ -3813,7 +4346,11 @@ func (in *Server) DeepCopyInto(out *Server) {
out.TypeMeta = in.TypeMeta
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
in.Spec.DeepCopyInto(&out.Spec)
- in.Status.DeepCopyInto(&out.Status)
+ if in.Status != nil {
+ in, out := &in.Status, &out.Status
+ *out = new(ServerStatus)
+ (*in).DeepCopyInto(*out)
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Server.
@@ -3842,6 +4379,11 @@ func (in *ServerFilter) DeepCopyInto(out *ServerFilter) {
*out = new(OpenStackName)
**out = **in
}
+ if in.AvailabilityZone != nil {
+ in, out := &in.AvailabilityZone, &out.AvailabilityZone
+ *out = new(string)
+ **out = **in
+ }
in.FilterByServerTags.DeepCopyInto(&out.FilterByServerTags)
}
@@ -3861,7 +4403,11 @@ func (in *ServerGroup) DeepCopyInto(out *ServerGroup) {
out.TypeMeta = in.TypeMeta
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
in.Spec.DeepCopyInto(&out.Spec)
- in.Status.DeepCopyInto(&out.Status)
+ if in.Status != nil {
+ in, out := &in.Status, &out.Status
+ *out = new(ServerGroupStatus)
+ (*in).DeepCopyInto(*out)
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerGroup.
@@ -3970,7 +4516,7 @@ func (in *ServerGroupResourceSpec) DeepCopyInto(out *ServerGroupResourceSpec) {
if in.Rules != nil {
in, out := &in.Rules, &out.Rules
*out = new(ServerGroupRules)
- **out = **in
+ (*in).DeepCopyInto(*out)
}
}
@@ -3987,6 +4533,26 @@ func (in *ServerGroupResourceSpec) DeepCopy() *ServerGroupResourceSpec {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ServerGroupResourceStatus) DeepCopyInto(out *ServerGroupResourceStatus) {
*out = *in
+ if in.Name != nil {
+ in, out := &in.Name, &out.Name
+ *out = new(string)
+ **out = **in
+ }
+ if in.Policy != nil {
+ in, out := &in.Policy, &out.Policy
+ *out = new(string)
+ **out = **in
+ }
+ if in.ProjectID != nil {
+ in, out := &in.ProjectID, &out.ProjectID
+ *out = new(string)
+ **out = **in
+ }
+ if in.UserID != nil {
+ in, out := &in.UserID, &out.UserID
+ *out = new(string)
+ **out = **in
+ }
if in.Rules != nil {
in, out := &in.Rules, &out.Rules
*out = new(ServerGroupRulesStatus)
@@ -4007,6 +4573,11 @@ func (in *ServerGroupResourceStatus) DeepCopy() *ServerGroupResourceStatus {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ServerGroupRules) DeepCopyInto(out *ServerGroupRules) {
*out = *in
+ if in.MaxServerPerHost != nil {
+ in, out := &in.MaxServerPerHost, &out.MaxServerPerHost
+ *out = new(int32)
+ **out = **in
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerGroupRules.
@@ -4052,10 +4623,15 @@ func (in *ServerGroupSpec) DeepCopyInto(out *ServerGroupSpec) {
*out = new(ServerGroupResourceSpec)
(*in).DeepCopyInto(*out)
}
+ if in.ManagementPolicy != nil {
+ in, out := &in.ManagementPolicy, &out.ManagementPolicy
+ *out = new(ManagementPolicy)
+ **out = **in
+ }
if in.ManagedOptions != nil {
in, out := &in.ManagedOptions, &out.ManagedOptions
*out = new(ManagedOptions)
- **out = **in
+ (*in).DeepCopyInto(*out)
}
out.CloudCredentialsRef = in.CloudCredentialsRef
}
@@ -4130,6 +4706,16 @@ func (in *ServerImport) DeepCopy() *ServerImport {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ServerInterfaceFixedIP) DeepCopyInto(out *ServerInterfaceFixedIP) {
*out = *in
+ if in.IPAddress != nil {
+ in, out := &in.IPAddress, &out.IPAddress
+ *out = new(string)
+ **out = **in
+ }
+ if in.SubnetID != nil {
+ in, out := &in.SubnetID, &out.SubnetID
+ *out = new(string)
+ **out = **in
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerInterfaceFixedIP.
@@ -4145,10 +4731,32 @@ func (in *ServerInterfaceFixedIP) DeepCopy() *ServerInterfaceFixedIP {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ServerInterfaceStatus) DeepCopyInto(out *ServerInterfaceStatus) {
*out = *in
+ if in.PortID != nil {
+ in, out := &in.PortID, &out.PortID
+ *out = new(string)
+ **out = **in
+ }
+ if in.NetID != nil {
+ in, out := &in.NetID, &out.NetID
+ *out = new(string)
+ **out = **in
+ }
+ if in.MACAddr != nil {
+ in, out := &in.MACAddr, &out.MACAddr
+ *out = new(string)
+ **out = **in
+ }
+ if in.PortState != nil {
+ in, out := &in.PortState, &out.PortState
+ *out = new(string)
+ **out = **in
+ }
if in.FixedIPs != nil {
in, out := &in.FixedIPs, &out.FixedIPs
*out = make([]ServerInterfaceFixedIP, len(*in))
- copy(*out, *in)
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
}
}
@@ -4212,6 +4820,16 @@ func (in *ServerMetadata) DeepCopy() *ServerMetadata {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ServerMetadataStatus) DeepCopyInto(out *ServerMetadataStatus) {
*out = *in
+ if in.Key != nil {
+ in, out := &in.Key, &out.Key
+ *out = new(string)
+ **out = **in
+ }
+ if in.Value != nil {
+ in, out := &in.Value, &out.Value
+ *out = new(string)
+ **out = **in
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerMetadataStatus.
@@ -4276,6 +4894,11 @@ func (in *ServerResourceSpec) DeepCopyInto(out *ServerResourceSpec) {
*out = new(KubernetesNameRef)
**out = **in
}
+ if in.AvailabilityZone != nil {
+ in, out := &in.AvailabilityZone, &out.AvailabilityZone
+ *out = new(string)
+ **out = **in
+ }
if in.KeypairRef != nil {
in, out := &in.KeypairRef, &out.KeypairRef
*out = new(KubernetesNameRef)
@@ -4311,6 +4934,31 @@ func (in *ServerResourceSpec) DeepCopy() *ServerResourceSpec {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ServerResourceStatus) DeepCopyInto(out *ServerResourceStatus) {
*out = *in
+ if in.Name != nil {
+ in, out := &in.Name, &out.Name
+ *out = new(string)
+ **out = **in
+ }
+ if in.HostID != nil {
+ in, out := &in.HostID, &out.HostID
+ *out = new(string)
+ **out = **in
+ }
+ if in.Status != nil {
+ in, out := &in.Status, &out.Status
+ *out = new(string)
+ **out = **in
+ }
+ if in.ImageID != nil {
+ in, out := &in.ImageID, &out.ImageID
+ *out = new(string)
+ **out = **in
+ }
+ if in.AvailabilityZone != nil {
+ in, out := &in.AvailabilityZone, &out.AvailabilityZone
+ *out = new(string)
+ **out = **in
+ }
if in.ServerGroups != nil {
in, out := &in.ServerGroups, &out.ServerGroups
*out = make([]string, len(*in))
@@ -4319,7 +4967,9 @@ func (in *ServerResourceStatus) DeepCopyInto(out *ServerResourceStatus) {
if in.Volumes != nil {
in, out := &in.Volumes, &out.Volumes
*out = make([]ServerVolumeStatus, len(*in))
- copy(*out, *in)
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
}
if in.Interfaces != nil {
in, out := &in.Interfaces, &out.Interfaces
@@ -4336,7 +4986,14 @@ func (in *ServerResourceStatus) DeepCopyInto(out *ServerResourceStatus) {
if in.Metadata != nil {
in, out := &in.Metadata, &out.Metadata
*out = make([]ServerMetadataStatus, len(*in))
- copy(*out, *in)
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
+ if in.ConfigDrive != nil {
+ in, out := &in.ConfigDrive, &out.ConfigDrive
+ *out = new(bool)
+ **out = **in
}
}
@@ -4363,10 +5020,15 @@ func (in *ServerSpec) DeepCopyInto(out *ServerSpec) {
*out = new(ServerResourceSpec)
(*in).DeepCopyInto(*out)
}
+ if in.ManagementPolicy != nil {
+ in, out := &in.ManagementPolicy, &out.ManagementPolicy
+ *out = new(ManagementPolicy)
+ **out = **in
+ }
if in.ManagedOptions != nil {
in, out := &in.ManagedOptions, &out.ManagedOptions
*out = new(ManagedOptions)
- **out = **in
+ (*in).DeepCopyInto(*out)
}
out.CloudCredentialsRef = in.CloudCredentialsRef
}
@@ -4436,6 +5098,11 @@ func (in *ServerVolumeSpec) DeepCopy() *ServerVolumeSpec {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ServerVolumeStatus) DeepCopyInto(out *ServerVolumeStatus) {
*out = *in
+ if in.ID != nil {
+ in, out := &in.ID, &out.ID
+ *out = new(string)
+ **out = **in
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerVolumeStatus.
@@ -4454,7 +5121,11 @@ func (in *Service) DeepCopyInto(out *Service) {
out.TypeMeta = in.TypeMeta
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
in.Spec.DeepCopyInto(&out.Spec)
- in.Status.DeepCopyInto(&out.Status)
+ if in.Status != nil {
+ in, out := &in.Status, &out.Status
+ *out = new(ServiceStatus)
+ (*in).DeepCopyInto(*out)
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Service.
@@ -4590,6 +5261,21 @@ func (in *ServiceResourceSpec) DeepCopy() *ServiceResourceSpec {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ServiceResourceStatus) DeepCopyInto(out *ServiceResourceStatus) {
*out = *in
+ if in.Name != nil {
+ in, out := &in.Name, &out.Name
+ *out = new(string)
+ **out = **in
+ }
+ if in.Description != nil {
+ in, out := &in.Description, &out.Description
+ *out = new(string)
+ **out = **in
+ }
+ if in.Type != nil {
+ in, out := &in.Type, &out.Type
+ *out = new(string)
+ **out = **in
+ }
if in.Enabled != nil {
in, out := &in.Enabled, &out.Enabled
*out = new(bool)
@@ -4620,10 +5306,15 @@ func (in *ServiceSpec) DeepCopyInto(out *ServiceSpec) {
*out = new(ServiceResourceSpec)
(*in).DeepCopyInto(*out)
}
+ if in.ManagementPolicy != nil {
+ in, out := &in.ManagementPolicy, &out.ManagementPolicy
+ *out = new(ManagementPolicy)
+ **out = **in
+ }
if in.ManagedOptions != nil {
in, out := &in.ManagedOptions, &out.ManagedOptions
*out = new(ManagedOptions)
- **out = **in
+ (*in).DeepCopyInto(*out)
}
out.CloudCredentialsRef = in.CloudCredentialsRef
}
@@ -4676,7 +5367,11 @@ func (in *Subnet) DeepCopyInto(out *Subnet) {
out.TypeMeta = in.TypeMeta
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
in.Spec.DeepCopyInto(&out.Spec)
- in.Status.DeepCopyInto(&out.Status)
+ if in.Status != nil {
+ in, out := &in.Status, &out.Status
+ *out = new(SubnetStatus)
+ (*in).DeepCopyInto(*out)
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Subnet.
@@ -4730,6 +5425,11 @@ func (in *SubnetFilter) DeepCopyInto(out *SubnetFilter) {
*out = new(IPv6Options)
(*in).DeepCopyInto(*out)
}
+ if in.NetworkRef != nil {
+ in, out := &in.NetworkRef, &out.NetworkRef
+ *out = new(KubernetesNameRef)
+ **out = **in
+ }
if in.ProjectRef != nil {
in, out := &in.ProjectRef, &out.ProjectRef
*out = new(KubernetesNameRef)
@@ -4903,11 +5603,31 @@ func (in *SubnetResourceSpec) DeepCopy() *SubnetResourceSpec {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *SubnetResourceStatus) DeepCopyInto(out *SubnetResourceStatus) {
*out = *in
+ if in.Name != nil {
+ in, out := &in.Name, &out.Name
+ *out = new(string)
+ **out = **in
+ }
+ if in.Description != nil {
+ in, out := &in.Description, &out.Description
+ *out = new(string)
+ **out = **in
+ }
if in.IPVersion != nil {
in, out := &in.IPVersion, &out.IPVersion
*out = new(int32)
**out = **in
}
+ if in.CIDR != nil {
+ in, out := &in.CIDR, &out.CIDR
+ *out = new(string)
+ **out = **in
+ }
+ if in.GatewayIP != nil {
+ in, out := &in.GatewayIP, &out.GatewayIP
+ *out = new(string)
+ **out = **in
+ }
if in.DNSNameservers != nil {
in, out := &in.DNSNameservers, &out.DNSNameservers
*out = make([]string, len(*in))
@@ -4921,18 +5641,47 @@ func (in *SubnetResourceStatus) DeepCopyInto(out *SubnetResourceStatus) {
if in.AllocationPools != nil {
in, out := &in.AllocationPools, &out.AllocationPools
*out = make([]AllocationPoolStatus, len(*in))
- copy(*out, *in)
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
}
if in.HostRoutes != nil {
in, out := &in.HostRoutes, &out.HostRoutes
*out = make([]HostRouteStatus, len(*in))
- copy(*out, *in)
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
}
if in.EnableDHCP != nil {
in, out := &in.EnableDHCP, &out.EnableDHCP
*out = new(bool)
**out = **in
}
+ if in.NetworkID != nil {
+ in, out := &in.NetworkID, &out.NetworkID
+ *out = new(string)
+ **out = **in
+ }
+ if in.ProjectID != nil {
+ in, out := &in.ProjectID, &out.ProjectID
+ *out = new(string)
+ **out = **in
+ }
+ if in.IPv6AddressMode != nil {
+ in, out := &in.IPv6AddressMode, &out.IPv6AddressMode
+ *out = new(string)
+ **out = **in
+ }
+ if in.IPv6RAMode != nil {
+ in, out := &in.IPv6RAMode, &out.IPv6RAMode
+ *out = new(string)
+ **out = **in
+ }
+ if in.SubnetPoolID != nil {
+ in, out := &in.SubnetPoolID, &out.SubnetPoolID
+ *out = new(string)
+ **out = **in
+ }
if in.Tags != nil {
in, out := &in.Tags, &out.Tags
*out = make([]string, len(*in))
@@ -4964,10 +5713,15 @@ func (in *SubnetSpec) DeepCopyInto(out *SubnetSpec) {
*out = new(SubnetResourceSpec)
(*in).DeepCopyInto(*out)
}
+ if in.ManagementPolicy != nil {
+ in, out := &in.ManagementPolicy, &out.ManagementPolicy
+ *out = new(ManagementPolicy)
+ **out = **in
+ }
if in.ManagedOptions != nil {
in, out := &in.ManagedOptions, &out.ManagedOptions
*out = new(ManagedOptions)
- **out = **in
+ (*in).DeepCopyInto(*out)
}
out.CloudCredentialsRef = in.CloudCredentialsRef
}
@@ -5040,7 +5794,11 @@ func (in *Volume) DeepCopyInto(out *Volume) {
out.TypeMeta = in.TypeMeta
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
in.Spec.DeepCopyInto(&out.Spec)
- in.Status.DeepCopyInto(&out.Status)
+ if in.Status != nil {
+ in, out := &in.Status, &out.Status
+ *out = new(VolumeStatus)
+ (*in).DeepCopyInto(*out)
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Volume.
@@ -5064,6 +5822,21 @@ func (in *Volume) DeepCopyObject() runtime.Object {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *VolumeAttachmentStatus) DeepCopyInto(out *VolumeAttachmentStatus) {
*out = *in
+ if in.AttachmentID != nil {
+ in, out := &in.AttachmentID, &out.AttachmentID
+ *out = new(string)
+ **out = **in
+ }
+ if in.ServerID != nil {
+ in, out := &in.ServerID, &out.ServerID
+ *out = new(string)
+ **out = **in
+ }
+ if in.Device != nil {
+ in, out := &in.Device, &out.Device
+ *out = new(string)
+ **out = **in
+ }
if in.AttachedAt != nil {
in, out := &in.AttachedAt, &out.AttachedAt
*out = (*in).DeepCopy()
@@ -5098,6 +5871,11 @@ func (in *VolumeFilter) DeepCopyInto(out *VolumeFilter) {
*out = new(int32)
**out = **in
}
+ if in.AvailabilityZone != nil {
+ in, out := &in.AvailabilityZone, &out.AvailabilityZone
+ *out = new(string)
+ **out = **in
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeFilter.
@@ -5185,6 +5963,16 @@ func (in *VolumeMetadata) DeepCopy() *VolumeMetadata {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *VolumeMetadataStatus) DeepCopyInto(out *VolumeMetadataStatus) {
*out = *in
+ if in.Name != nil {
+ in, out := &in.Name, &out.Name
+ *out = new(string)
+ **out = **in
+ }
+ if in.Value != nil {
+ in, out := &in.Value, &out.Value
+ *out = new(string)
+ **out = **in
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeMetadataStatus.
@@ -5215,6 +6003,11 @@ func (in *VolumeResourceSpec) DeepCopyInto(out *VolumeResourceSpec) {
*out = new(KubernetesNameRef)
**out = **in
}
+ if in.AvailabilityZone != nil {
+ in, out := &in.AvailabilityZone, &out.AvailabilityZone
+ *out = new(string)
+ **out = **in
+ }
if in.Metadata != nil {
in, out := &in.Metadata, &out.Metadata
*out = make([]VolumeMetadata, len(*in))
@@ -5240,11 +6033,31 @@ func (in *VolumeResourceSpec) DeepCopy() *VolumeResourceSpec {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *VolumeResourceStatus) DeepCopyInto(out *VolumeResourceStatus) {
*out = *in
+ if in.Name != nil {
+ in, out := &in.Name, &out.Name
+ *out = new(string)
+ **out = **in
+ }
+ if in.Description != nil {
+ in, out := &in.Description, &out.Description
+ *out = new(string)
+ **out = **in
+ }
if in.Size != nil {
in, out := &in.Size, &out.Size
*out = new(int32)
**out = **in
}
+ if in.Status != nil {
+ in, out := &in.Status, &out.Status
+ *out = new(string)
+ **out = **in
+ }
+ if in.AvailabilityZone != nil {
+ in, out := &in.AvailabilityZone, &out.AvailabilityZone
+ *out = new(string)
+ **out = **in
+ }
if in.Attachments != nil {
in, out := &in.Attachments, &out.Attachments
*out = make([]VolumeAttachmentStatus, len(*in))
@@ -5252,26 +6065,78 @@ func (in *VolumeResourceStatus) DeepCopyInto(out *VolumeResourceStatus) {
(*in)[i].DeepCopyInto(&(*out)[i])
}
}
+ if in.VolumeType != nil {
+ in, out := &in.VolumeType, &out.VolumeType
+ *out = new(string)
+ **out = **in
+ }
+ if in.SnapshotID != nil {
+ in, out := &in.SnapshotID, &out.SnapshotID
+ *out = new(string)
+ **out = **in
+ }
+ if in.SourceVolID != nil {
+ in, out := &in.SourceVolID, &out.SourceVolID
+ *out = new(string)
+ **out = **in
+ }
+ if in.BackupID != nil {
+ in, out := &in.BackupID, &out.BackupID
+ *out = new(string)
+ **out = **in
+ }
if in.Metadata != nil {
in, out := &in.Metadata, &out.Metadata
*out = make([]VolumeMetadataStatus, len(*in))
- copy(*out, *in)
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
+ if in.UserID != nil {
+ in, out := &in.UserID, &out.UserID
+ *out = new(string)
+ **out = **in
}
if in.Bootable != nil {
in, out := &in.Bootable, &out.Bootable
*out = new(bool)
**out = **in
}
+ if in.ImageID != nil {
+ in, out := &in.ImageID, &out.ImageID
+ *out = new(string)
+ **out = **in
+ }
if in.Encrypted != nil {
in, out := &in.Encrypted, &out.Encrypted
*out = new(bool)
**out = **in
}
+ if in.ReplicationStatus != nil {
+ in, out := &in.ReplicationStatus, &out.ReplicationStatus
+ *out = new(string)
+ **out = **in
+ }
+ if in.ConsistencyGroupID != nil {
+ in, out := &in.ConsistencyGroupID, &out.ConsistencyGroupID
+ *out = new(string)
+ **out = **in
+ }
if in.Multiattach != nil {
in, out := &in.Multiattach, &out.Multiattach
*out = new(bool)
**out = **in
}
+ if in.Host != nil {
+ in, out := &in.Host, &out.Host
+ *out = new(string)
+ **out = **in
+ }
+ if in.TenantID != nil {
+ in, out := &in.TenantID, &out.TenantID
+ *out = new(string)
+ **out = **in
+ }
if in.CreatedAt != nil {
in, out := &in.CreatedAt, &out.CreatedAt
*out = (*in).DeepCopy()
@@ -5305,10 +6170,15 @@ func (in *VolumeSpec) DeepCopyInto(out *VolumeSpec) {
*out = new(VolumeResourceSpec)
(*in).DeepCopyInto(*out)
}
+ if in.ManagementPolicy != nil {
+ in, out := &in.ManagementPolicy, &out.ManagementPolicy
+ *out = new(ManagementPolicy)
+ **out = **in
+ }
if in.ManagedOptions != nil {
in, out := &in.ManagedOptions, &out.ManagedOptions
*out = new(ManagedOptions)
- **out = **in
+ (*in).DeepCopyInto(*out)
}
out.CloudCredentialsRef = in.CloudCredentialsRef
}
@@ -5361,7 +6231,11 @@ func (in *VolumeType) DeepCopyInto(out *VolumeType) {
out.TypeMeta = in.TypeMeta
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
in.Spec.DeepCopyInto(&out.Spec)
- in.Status.DeepCopyInto(&out.Status)
+ if in.Status != nil {
+ in, out := &in.Status, &out.Status
+ *out = new(VolumeTypeStatus)
+ (*in).DeepCopyInto(*out)
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeType.
@@ -5400,6 +6274,16 @@ func (in *VolumeTypeExtraSpec) DeepCopy() *VolumeTypeExtraSpec {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *VolumeTypeExtraSpecStatus) DeepCopyInto(out *VolumeTypeExtraSpecStatus) {
*out = *in
+ if in.Name != nil {
+ in, out := &in.Name, &out.Name
+ *out = new(string)
+ **out = **in
+ }
+ if in.Value != nil {
+ in, out := &in.Value, &out.Value
+ *out = new(string)
+ **out = **in
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeTypeExtraSpecStatus.
@@ -5537,10 +6421,22 @@ func (in *VolumeTypeResourceSpec) DeepCopy() *VolumeTypeResourceSpec {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *VolumeTypeResourceStatus) DeepCopyInto(out *VolumeTypeResourceStatus) {
*out = *in
+ if in.Name != nil {
+ in, out := &in.Name, &out.Name
+ *out = new(string)
+ **out = **in
+ }
+ if in.Description != nil {
+ in, out := &in.Description, &out.Description
+ *out = new(string)
+ **out = **in
+ }
if in.ExtraSpecs != nil {
in, out := &in.ExtraSpecs, &out.ExtraSpecs
*out = make([]VolumeTypeExtraSpecStatus, len(*in))
- copy(*out, *in)
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
}
if in.IsPublic != nil {
in, out := &in.IsPublic, &out.IsPublic
@@ -5572,10 +6468,15 @@ func (in *VolumeTypeSpec) DeepCopyInto(out *VolumeTypeSpec) {
*out = new(VolumeTypeResourceSpec)
(*in).DeepCopyInto(*out)
}
+ if in.ManagementPolicy != nil {
+ in, out := &in.ManagementPolicy, &out.ManagementPolicy
+ *out = new(ManagementPolicy)
+ **out = **in
+ }
if in.ManagedOptions != nil {
in, out := &in.ManagedOptions, &out.ManagedOptions
*out = new(ManagedOptions)
- **out = **in
+ (*in).DeepCopyInto(*out)
}
out.CloudCredentialsRef = in.CloudCredentialsRef
}
diff --git a/api/v1alpha1/zz_generated.domain-resource.go b/api/v1alpha1/zz_generated.domain-resource.go
index 9fd2b85a4..22af4ddb2 100644
--- a/api/v1alpha1/zz_generated.domain-resource.go
+++ b/api/v1alpha1/zz_generated.domain-resource.go
@@ -29,8 +29,9 @@ type DomainImport struct {
// id contains the unique identifier of an existing OpenStack resource. Note
// that when specifying an import by ID, the resource MUST already exist.
// The ORC object will enter an error state if the resource does not exist.
- // +optional
// +kubebuilder:validation:Format:=uuid
+ // +kubebuilder:validation:MaxLength:=36
+ // +optional
ID *string `json:"id,omitempty"`
// filter contains a resource query which is expected to return a single
@@ -68,7 +69,7 @@ type DomainSpec struct {
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
// +kubebuilder:default:=managed
// +optional
- ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`
+ ManagementPolicy *ManagementPolicy `json:"managementPolicy,omitempty"`
// managedOptions specifies options which may be applied to managed objects.
// +optional
@@ -76,7 +77,7 @@ type DomainSpec struct {
// cloudCredentialsRef points to a secret containing OpenStack credentials
// +required
- CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef"`
+ CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}
// DomainStatus defines the observed state of an ORC resource.
@@ -104,6 +105,7 @@ type DomainStatus struct {
Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`
// id is the unique identifier of the OpenStack resource.
+ // +kubebuilder:validation:MaxLength:=1024
// +optional
ID *string `json:"id,omitempty"`
@@ -115,6 +117,9 @@ type DomainStatus struct {
var _ ObjectWithConditions = &Domain{}
func (i *Domain) GetConditions() []metav1.Condition {
+ if i.Status == nil {
+ return nil
+ }
return i.Status.Conditions
}
@@ -135,12 +140,12 @@ type Domain struct {
metav1.ObjectMeta `json:"metadata,omitempty"`
// spec specifies the desired state of the resource.
- // +optional
- Spec DomainSpec `json:"spec,omitempty"`
+ // +required
+ Spec DomainSpec `json:"spec,omitzero"`
// status defines the observed state of the resource.
// +optional
- Status DomainStatus `json:"status,omitempty"`
+ Status *DomainStatus `json:"status,omitempty"`
}
// +kubebuilder:object:root=true
diff --git a/api/v1alpha1/zz_generated.flavor-resource.go b/api/v1alpha1/zz_generated.flavor-resource.go
index 977264ed2..93e2d1363 100644
--- a/api/v1alpha1/zz_generated.flavor-resource.go
+++ b/api/v1alpha1/zz_generated.flavor-resource.go
@@ -29,8 +29,9 @@ type FlavorImport struct {
// id contains the unique identifier of an existing OpenStack resource. Note
// that when specifying an import by ID, the resource MUST already exist.
// The ORC object will enter an error state if the resource does not exist.
- // +optional
// +kubebuilder:validation:Format:=uuid
+ // +kubebuilder:validation:MaxLength:=36
+ // +optional
ID *string `json:"id,omitempty"`
// filter contains a resource query which is expected to return a single
@@ -68,7 +69,7 @@ type FlavorSpec struct {
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
// +kubebuilder:default:=managed
// +optional
- ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`
+ ManagementPolicy *ManagementPolicy `json:"managementPolicy,omitempty"`
// managedOptions specifies options which may be applied to managed objects.
// +optional
@@ -76,7 +77,7 @@ type FlavorSpec struct {
// cloudCredentialsRef points to a secret containing OpenStack credentials
// +required
- CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef"`
+ CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}
// FlavorStatus defines the observed state of an ORC resource.
@@ -104,6 +105,7 @@ type FlavorStatus struct {
Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`
// id is the unique identifier of the OpenStack resource.
+ // +kubebuilder:validation:MaxLength:=1024
// +optional
ID *string `json:"id,omitempty"`
@@ -115,6 +117,9 @@ type FlavorStatus struct {
var _ ObjectWithConditions = &Flavor{}
func (i *Flavor) GetConditions() []metav1.Condition {
+ if i.Status == nil {
+ return nil
+ }
return i.Status.Conditions
}
@@ -135,12 +140,12 @@ type Flavor struct {
metav1.ObjectMeta `json:"metadata,omitempty"`
// spec specifies the desired state of the resource.
- // +optional
- Spec FlavorSpec `json:"spec,omitempty"`
+ // +required
+ Spec FlavorSpec `json:"spec,omitzero"`
// status defines the observed state of the resource.
// +optional
- Status FlavorStatus `json:"status,omitempty"`
+ Status *FlavorStatus `json:"status,omitempty"`
}
// +kubebuilder:object:root=true
diff --git a/api/v1alpha1/zz_generated.floatingip-resource.go b/api/v1alpha1/zz_generated.floatingip-resource.go
index 66993c36e..0637c2200 100644
--- a/api/v1alpha1/zz_generated.floatingip-resource.go
+++ b/api/v1alpha1/zz_generated.floatingip-resource.go
@@ -29,8 +29,9 @@ type FloatingIPImport struct {
// id contains the unique identifier of an existing OpenStack resource. Note
// that when specifying an import by ID, the resource MUST already exist.
// The ORC object will enter an error state if the resource does not exist.
- // +optional
// +kubebuilder:validation:Format:=uuid
+ // +kubebuilder:validation:MaxLength:=36
+ // +optional
ID *string `json:"id,omitempty"`
// filter contains a resource query which is expected to return a single
@@ -68,7 +69,7 @@ type FloatingIPSpec struct {
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
// +kubebuilder:default:=managed
// +optional
- ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`
+ ManagementPolicy *ManagementPolicy `json:"managementPolicy,omitempty"`
// managedOptions specifies options which may be applied to managed objects.
// +optional
@@ -76,7 +77,7 @@ type FloatingIPSpec struct {
// cloudCredentialsRef points to a secret containing OpenStack credentials
// +required
- CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef"`
+ CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}
// FloatingIPStatus defines the observed state of an ORC resource.
@@ -104,6 +105,7 @@ type FloatingIPStatus struct {
Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`
// id is the unique identifier of the OpenStack resource.
+ // +kubebuilder:validation:MaxLength:=1024
// +optional
ID *string `json:"id,omitempty"`
@@ -115,6 +117,9 @@ type FloatingIPStatus struct {
var _ ObjectWithConditions = &FloatingIP{}
func (i *FloatingIP) GetConditions() []metav1.Condition {
+ if i.Status == nil {
+ return nil
+ }
return i.Status.Conditions
}
@@ -136,12 +141,12 @@ type FloatingIP struct {
metav1.ObjectMeta `json:"metadata,omitempty"`
// spec specifies the desired state of the resource.
- // +optional
- Spec FloatingIPSpec `json:"spec,omitempty"`
+ // +required
+ Spec FloatingIPSpec `json:"spec,omitzero"`
// status defines the observed state of the resource.
// +optional
- Status FloatingIPStatus `json:"status,omitempty"`
+ Status *FloatingIPStatus `json:"status,omitempty"`
}
// +kubebuilder:object:root=true
diff --git a/api/v1alpha1/zz_generated.group-resource.go b/api/v1alpha1/zz_generated.group-resource.go
index ffee5b120..bfc0fc3e5 100644
--- a/api/v1alpha1/zz_generated.group-resource.go
+++ b/api/v1alpha1/zz_generated.group-resource.go
@@ -29,8 +29,9 @@ type GroupImport struct {
// id contains the unique identifier of an existing OpenStack resource. Note
// that when specifying an import by ID, the resource MUST already exist.
// The ORC object will enter an error state if the resource does not exist.
- // +optional
// +kubebuilder:validation:Format:=uuid
+ // +kubebuilder:validation:MaxLength:=36
+ // +optional
ID *string `json:"id,omitempty"`
// filter contains a resource query which is expected to return a single
@@ -68,7 +69,7 @@ type GroupSpec struct {
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
// +kubebuilder:default:=managed
// +optional
- ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`
+ ManagementPolicy *ManagementPolicy `json:"managementPolicy,omitempty"`
// managedOptions specifies options which may be applied to managed objects.
// +optional
@@ -76,7 +77,7 @@ type GroupSpec struct {
// cloudCredentialsRef points to a secret containing OpenStack credentials
// +required
- CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef"`
+ CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}
// GroupStatus defines the observed state of an ORC resource.
@@ -104,6 +105,7 @@ type GroupStatus struct {
Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`
// id is the unique identifier of the OpenStack resource.
+ // +kubebuilder:validation:MaxLength:=1024
// +optional
ID *string `json:"id,omitempty"`
@@ -115,6 +117,9 @@ type GroupStatus struct {
var _ ObjectWithConditions = &Group{}
func (i *Group) GetConditions() []metav1.Condition {
+ if i.Status == nil {
+ return nil
+ }
return i.Status.Conditions
}
@@ -135,12 +140,12 @@ type Group struct {
metav1.ObjectMeta `json:"metadata,omitempty"`
// spec specifies the desired state of the resource.
- // +optional
- Spec GroupSpec `json:"spec,omitempty"`
+ // +required
+ Spec GroupSpec `json:"spec,omitzero"`
// status defines the observed state of the resource.
// +optional
- Status GroupStatus `json:"status,omitempty"`
+ Status *GroupStatus `json:"status,omitempty"`
}
// +kubebuilder:object:root=true
diff --git a/api/v1alpha1/zz_generated.image-resource.go b/api/v1alpha1/zz_generated.image-resource.go
index dc5c80d4d..823f81c71 100644
--- a/api/v1alpha1/zz_generated.image-resource.go
+++ b/api/v1alpha1/zz_generated.image-resource.go
@@ -29,8 +29,9 @@ type ImageImport struct {
// id contains the unique identifier of an existing OpenStack resource. Note
// that when specifying an import by ID, the resource MUST already exist.
// The ORC object will enter an error state if the resource does not exist.
- // +optional
// +kubebuilder:validation:Format:=uuid
+ // +kubebuilder:validation:MaxLength:=36
+ // +optional
ID *string `json:"id,omitempty"`
// filter contains a resource query which is expected to return a single
@@ -69,7 +70,7 @@ type ImageSpec struct {
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
// +kubebuilder:default:=managed
// +optional
- ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`
+ ManagementPolicy *ManagementPolicy `json:"managementPolicy,omitempty"`
// managedOptions specifies options which may be applied to managed objects.
// +optional
@@ -77,7 +78,7 @@ type ImageSpec struct {
// cloudCredentialsRef points to a secret containing OpenStack credentials
// +required
- CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef"`
+ CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}
// ImageStatus defines the observed state of an ORC resource.
@@ -105,6 +106,7 @@ type ImageStatus struct {
Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`
// id is the unique identifier of the OpenStack resource.
+ // +kubebuilder:validation:MaxLength:=1024
// +optional
ID *string `json:"id,omitempty"`
@@ -118,6 +120,9 @@ type ImageStatus struct {
var _ ObjectWithConditions = &Image{}
func (i *Image) GetConditions() []metav1.Condition {
+ if i.Status == nil {
+ return nil
+ }
return i.Status.Conditions
}
@@ -138,12 +143,12 @@ type Image struct {
metav1.ObjectMeta `json:"metadata,omitempty"`
// spec specifies the desired state of the resource.
- // +optional
- Spec ImageSpec `json:"spec,omitempty"`
+ // +required
+ Spec ImageSpec `json:"spec,omitzero"`
// status defines the observed state of the resource.
// +optional
- Status ImageStatus `json:"status,omitempty"`
+ Status *ImageStatus `json:"status,omitempty"`
}
// +kubebuilder:object:root=true
diff --git a/api/v1alpha1/zz_generated.keypair-resource.go b/api/v1alpha1/zz_generated.keypair-resource.go
index 77f31369a..b625ae702 100644
--- a/api/v1alpha1/zz_generated.keypair-resource.go
+++ b/api/v1alpha1/zz_generated.keypair-resource.go
@@ -30,6 +30,7 @@ type KeyPairImport struct {
// the resource name as the unique identifier, not a UUID.
// When specifying an import by ID, the resource MUST already exist.
// The ORC object will enter an error state if the resource does not exist.
+ // +kubebuilder:validation:MaxLength:=1024
// +optional
ID *string `json:"id,omitempty"`
@@ -68,7 +69,7 @@ type KeyPairSpec struct {
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
// +kubebuilder:default:=managed
// +optional
- ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`
+ ManagementPolicy *ManagementPolicy `json:"managementPolicy,omitempty"`
// managedOptions specifies options which may be applied to managed objects.
// +optional
@@ -76,7 +77,7 @@ type KeyPairSpec struct {
// cloudCredentialsRef points to a secret containing OpenStack credentials
// +required
- CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef"`
+ CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}
// KeyPairStatus defines the observed state of an ORC resource.
@@ -104,6 +105,7 @@ type KeyPairStatus struct {
Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`
// id is the unique identifier of the OpenStack resource.
+ // +kubebuilder:validation:MaxLength:=1024
// +optional
ID *string `json:"id,omitempty"`
@@ -115,6 +117,9 @@ type KeyPairStatus struct {
var _ ObjectWithConditions = &KeyPair{}
func (i *KeyPair) GetConditions() []metav1.Condition {
+ if i.Status == nil {
+ return nil
+ }
return i.Status.Conditions
}
@@ -135,12 +140,12 @@ type KeyPair struct {
metav1.ObjectMeta `json:"metadata,omitempty"`
// spec specifies the desired state of the resource.
- // +optional
- Spec KeyPairSpec `json:"spec,omitempty"`
+ // +required
+ Spec KeyPairSpec `json:"spec,omitzero"`
// status defines the observed state of the resource.
// +optional
- Status KeyPairStatus `json:"status,omitempty"`
+ Status *KeyPairStatus `json:"status,omitempty"`
}
// +kubebuilder:object:root=true
diff --git a/api/v1alpha1/zz_generated.network-resource.go b/api/v1alpha1/zz_generated.network-resource.go
index 6d3a89d85..92dc0c8a6 100644
--- a/api/v1alpha1/zz_generated.network-resource.go
+++ b/api/v1alpha1/zz_generated.network-resource.go
@@ -29,8 +29,9 @@ type NetworkImport struct {
// id contains the unique identifier of an existing OpenStack resource. Note
// that when specifying an import by ID, the resource MUST already exist.
// The ORC object will enter an error state if the resource does not exist.
- // +optional
// +kubebuilder:validation:Format:=uuid
+ // +kubebuilder:validation:MaxLength:=36
+ // +optional
ID *string `json:"id,omitempty"`
// filter contains a resource query which is expected to return a single
@@ -68,7 +69,7 @@ type NetworkSpec struct {
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
// +kubebuilder:default:=managed
// +optional
- ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`
+ ManagementPolicy *ManagementPolicy `json:"managementPolicy,omitempty"`
// managedOptions specifies options which may be applied to managed objects.
// +optional
@@ -76,7 +77,7 @@ type NetworkSpec struct {
// cloudCredentialsRef points to a secret containing OpenStack credentials
// +required
- CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef"`
+ CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}
// NetworkStatus defines the observed state of an ORC resource.
@@ -104,6 +105,7 @@ type NetworkStatus struct {
Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`
// id is the unique identifier of the OpenStack resource.
+ // +kubebuilder:validation:MaxLength:=1024
// +optional
ID *string `json:"id,omitempty"`
@@ -115,6 +117,9 @@ type NetworkStatus struct {
var _ ObjectWithConditions = &Network{}
func (i *Network) GetConditions() []metav1.Condition {
+ if i.Status == nil {
+ return nil
+ }
return i.Status.Conditions
}
@@ -135,12 +140,12 @@ type Network struct {
metav1.ObjectMeta `json:"metadata,omitempty"`
// spec specifies the desired state of the resource.
- // +optional
- Spec NetworkSpec `json:"spec,omitempty"`
+ // +required
+ Spec NetworkSpec `json:"spec,omitzero"`
// status defines the observed state of the resource.
// +optional
- Status NetworkStatus `json:"status,omitempty"`
+ Status *NetworkStatus `json:"status,omitempty"`
}
// +kubebuilder:object:root=true
diff --git a/api/v1alpha1/zz_generated.port-resource.go b/api/v1alpha1/zz_generated.port-resource.go
index 43f9ef7e0..7fcbc6bd4 100644
--- a/api/v1alpha1/zz_generated.port-resource.go
+++ b/api/v1alpha1/zz_generated.port-resource.go
@@ -29,8 +29,9 @@ type PortImport struct {
// id contains the unique identifier of an existing OpenStack resource. Note
// that when specifying an import by ID, the resource MUST already exist.
// The ORC object will enter an error state if the resource does not exist.
- // +optional
// +kubebuilder:validation:Format:=uuid
+ // +kubebuilder:validation:MaxLength:=36
+ // +optional
ID *string `json:"id,omitempty"`
// filter contains a resource query which is expected to return a single
@@ -68,7 +69,7 @@ type PortSpec struct {
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
// +kubebuilder:default:=managed
// +optional
- ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`
+ ManagementPolicy *ManagementPolicy `json:"managementPolicy,omitempty"`
// managedOptions specifies options which may be applied to managed objects.
// +optional
@@ -76,7 +77,7 @@ type PortSpec struct {
// cloudCredentialsRef points to a secret containing OpenStack credentials
// +required
- CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef"`
+ CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}
// PortStatus defines the observed state of an ORC resource.
@@ -104,6 +105,7 @@ type PortStatus struct {
Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`
// id is the unique identifier of the OpenStack resource.
+ // +kubebuilder:validation:MaxLength:=1024
// +optional
ID *string `json:"id,omitempty"`
@@ -115,6 +117,9 @@ type PortStatus struct {
var _ ObjectWithConditions = &Port{}
func (i *Port) GetConditions() []metav1.Condition {
+ if i.Status == nil {
+ return nil
+ }
return i.Status.Conditions
}
@@ -136,12 +141,12 @@ type Port struct {
metav1.ObjectMeta `json:"metadata,omitempty"`
// spec specifies the desired state of the resource.
- // +optional
- Spec PortSpec `json:"spec,omitempty"`
+ // +required
+ Spec PortSpec `json:"spec,omitzero"`
// status defines the observed state of the resource.
// +optional
- Status PortStatus `json:"status,omitempty"`
+ Status *PortStatus `json:"status,omitempty"`
}
// +kubebuilder:object:root=true
diff --git a/api/v1alpha1/zz_generated.project-resource.go b/api/v1alpha1/zz_generated.project-resource.go
index 0845855cb..e00a389cb 100644
--- a/api/v1alpha1/zz_generated.project-resource.go
+++ b/api/v1alpha1/zz_generated.project-resource.go
@@ -29,8 +29,9 @@ type ProjectImport struct {
// id contains the unique identifier of an existing OpenStack resource. Note
// that when specifying an import by ID, the resource MUST already exist.
// The ORC object will enter an error state if the resource does not exist.
- // +optional
// +kubebuilder:validation:Format:=uuid
+ // +kubebuilder:validation:MaxLength:=36
+ // +optional
ID *string `json:"id,omitempty"`
// filter contains a resource query which is expected to return a single
@@ -68,7 +69,7 @@ type ProjectSpec struct {
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
// +kubebuilder:default:=managed
// +optional
- ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`
+ ManagementPolicy *ManagementPolicy `json:"managementPolicy,omitempty"`
// managedOptions specifies options which may be applied to managed objects.
// +optional
@@ -76,7 +77,7 @@ type ProjectSpec struct {
// cloudCredentialsRef points to a secret containing OpenStack credentials
// +required
- CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef"`
+ CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}
// ProjectStatus defines the observed state of an ORC resource.
@@ -104,6 +105,7 @@ type ProjectStatus struct {
Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`
// id is the unique identifier of the OpenStack resource.
+ // +kubebuilder:validation:MaxLength:=1024
// +optional
ID *string `json:"id,omitempty"`
@@ -115,6 +117,9 @@ type ProjectStatus struct {
var _ ObjectWithConditions = &Project{}
func (i *Project) GetConditions() []metav1.Condition {
+ if i.Status == nil {
+ return nil
+ }
return i.Status.Conditions
}
@@ -135,12 +140,12 @@ type Project struct {
metav1.ObjectMeta `json:"metadata,omitempty"`
// spec specifies the desired state of the resource.
- // +optional
- Spec ProjectSpec `json:"spec,omitempty"`
+ // +required
+ Spec ProjectSpec `json:"spec,omitzero"`
// status defines the observed state of the resource.
// +optional
- Status ProjectStatus `json:"status,omitempty"`
+ Status *ProjectStatus `json:"status,omitempty"`
}
// +kubebuilder:object:root=true
diff --git a/api/v1alpha1/zz_generated.role-resource.go b/api/v1alpha1/zz_generated.role-resource.go
index 20befafe8..bad23969c 100644
--- a/api/v1alpha1/zz_generated.role-resource.go
+++ b/api/v1alpha1/zz_generated.role-resource.go
@@ -29,8 +29,9 @@ type RoleImport struct {
// id contains the unique identifier of an existing OpenStack resource. Note
// that when specifying an import by ID, the resource MUST already exist.
// The ORC object will enter an error state if the resource does not exist.
- // +optional
// +kubebuilder:validation:Format:=uuid
+ // +kubebuilder:validation:MaxLength:=36
+ // +optional
ID *string `json:"id,omitempty"`
// filter contains a resource query which is expected to return a single
@@ -68,7 +69,7 @@ type RoleSpec struct {
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
// +kubebuilder:default:=managed
// +optional
- ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`
+ ManagementPolicy *ManagementPolicy `json:"managementPolicy,omitempty"`
// managedOptions specifies options which may be applied to managed objects.
// +optional
@@ -76,7 +77,7 @@ type RoleSpec struct {
// cloudCredentialsRef points to a secret containing OpenStack credentials
// +required
- CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef"`
+ CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}
// RoleStatus defines the observed state of an ORC resource.
@@ -104,6 +105,7 @@ type RoleStatus struct {
Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`
// id is the unique identifier of the OpenStack resource.
+ // +kubebuilder:validation:MaxLength:=1024
// +optional
ID *string `json:"id,omitempty"`
@@ -115,6 +117,9 @@ type RoleStatus struct {
var _ ObjectWithConditions = &Role{}
func (i *Role) GetConditions() []metav1.Condition {
+ if i.Status == nil {
+ return nil
+ }
return i.Status.Conditions
}
@@ -135,12 +140,12 @@ type Role struct {
metav1.ObjectMeta `json:"metadata,omitempty"`
// spec specifies the desired state of the resource.
- // +optional
- Spec RoleSpec `json:"spec,omitempty"`
+ // +required
+ Spec RoleSpec `json:"spec,omitzero"`
// status defines the observed state of the resource.
// +optional
- Status RoleStatus `json:"status,omitempty"`
+ Status *RoleStatus `json:"status,omitempty"`
}
// +kubebuilder:object:root=true
diff --git a/api/v1alpha1/zz_generated.router-resource.go b/api/v1alpha1/zz_generated.router-resource.go
index bde8905b2..74d4658ac 100644
--- a/api/v1alpha1/zz_generated.router-resource.go
+++ b/api/v1alpha1/zz_generated.router-resource.go
@@ -29,8 +29,9 @@ type RouterImport struct {
// id contains the unique identifier of an existing OpenStack resource. Note
// that when specifying an import by ID, the resource MUST already exist.
// The ORC object will enter an error state if the resource does not exist.
- // +optional
// +kubebuilder:validation:Format:=uuid
+ // +kubebuilder:validation:MaxLength:=36
+ // +optional
ID *string `json:"id,omitempty"`
// filter contains a resource query which is expected to return a single
@@ -68,7 +69,7 @@ type RouterSpec struct {
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
// +kubebuilder:default:=managed
// +optional
- ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`
+ ManagementPolicy *ManagementPolicy `json:"managementPolicy,omitempty"`
// managedOptions specifies options which may be applied to managed objects.
// +optional
@@ -76,7 +77,7 @@ type RouterSpec struct {
// cloudCredentialsRef points to a secret containing OpenStack credentials
// +required
- CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef"`
+ CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}
// RouterStatus defines the observed state of an ORC resource.
@@ -104,6 +105,7 @@ type RouterStatus struct {
Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`
// id is the unique identifier of the OpenStack resource.
+ // +kubebuilder:validation:MaxLength:=1024
// +optional
ID *string `json:"id,omitempty"`
@@ -115,6 +117,9 @@ type RouterStatus struct {
var _ ObjectWithConditions = &Router{}
func (i *Router) GetConditions() []metav1.Condition {
+ if i.Status == nil {
+ return nil
+ }
return i.Status.Conditions
}
@@ -135,12 +140,12 @@ type Router struct {
metav1.ObjectMeta `json:"metadata,omitempty"`
// spec specifies the desired state of the resource.
- // +optional
- Spec RouterSpec `json:"spec,omitempty"`
+ // +required
+ Spec RouterSpec `json:"spec,omitzero"`
// status defines the observed state of the resource.
// +optional
- Status RouterStatus `json:"status,omitempty"`
+ Status *RouterStatus `json:"status,omitempty"`
}
// +kubebuilder:object:root=true
diff --git a/api/v1alpha1/zz_generated.securitygroup-resource.go b/api/v1alpha1/zz_generated.securitygroup-resource.go
index babddf920..80e5dfb6d 100644
--- a/api/v1alpha1/zz_generated.securitygroup-resource.go
+++ b/api/v1alpha1/zz_generated.securitygroup-resource.go
@@ -29,8 +29,9 @@ type SecurityGroupImport struct {
// id contains the unique identifier of an existing OpenStack resource. Note
// that when specifying an import by ID, the resource MUST already exist.
// The ORC object will enter an error state if the resource does not exist.
- // +optional
// +kubebuilder:validation:Format:=uuid
+ // +kubebuilder:validation:MaxLength:=36
+ // +optional
ID *string `json:"id,omitempty"`
// filter contains a resource query which is expected to return a single
@@ -68,7 +69,7 @@ type SecurityGroupSpec struct {
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
// +kubebuilder:default:=managed
// +optional
- ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`
+ ManagementPolicy *ManagementPolicy `json:"managementPolicy,omitempty"`
// managedOptions specifies options which may be applied to managed objects.
// +optional
@@ -76,7 +77,7 @@ type SecurityGroupSpec struct {
// cloudCredentialsRef points to a secret containing OpenStack credentials
// +required
- CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef"`
+ CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}
// SecurityGroupStatus defines the observed state of an ORC resource.
@@ -104,6 +105,7 @@ type SecurityGroupStatus struct {
Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`
// id is the unique identifier of the OpenStack resource.
+ // +kubebuilder:validation:MaxLength:=1024
// +optional
ID *string `json:"id,omitempty"`
@@ -115,6 +117,9 @@ type SecurityGroupStatus struct {
var _ ObjectWithConditions = &SecurityGroup{}
func (i *SecurityGroup) GetConditions() []metav1.Condition {
+ if i.Status == nil {
+ return nil
+ }
return i.Status.Conditions
}
@@ -135,12 +140,12 @@ type SecurityGroup struct {
metav1.ObjectMeta `json:"metadata,omitempty"`
// spec specifies the desired state of the resource.
- // +optional
- Spec SecurityGroupSpec `json:"spec,omitempty"`
+ // +required
+ Spec SecurityGroupSpec `json:"spec,omitzero"`
// status defines the observed state of the resource.
// +optional
- Status SecurityGroupStatus `json:"status,omitempty"`
+ Status *SecurityGroupStatus `json:"status,omitempty"`
}
// +kubebuilder:object:root=true
diff --git a/api/v1alpha1/zz_generated.server-resource.go b/api/v1alpha1/zz_generated.server-resource.go
index db28929e9..e517d377c 100644
--- a/api/v1alpha1/zz_generated.server-resource.go
+++ b/api/v1alpha1/zz_generated.server-resource.go
@@ -29,8 +29,9 @@ type ServerImport struct {
// id contains the unique identifier of an existing OpenStack resource. Note
// that when specifying an import by ID, the resource MUST already exist.
// The ORC object will enter an error state if the resource does not exist.
- // +optional
// +kubebuilder:validation:Format:=uuid
+ // +kubebuilder:validation:MaxLength:=36
+ // +optional
ID *string `json:"id,omitempty"`
// filter contains a resource query which is expected to return a single
@@ -68,7 +69,7 @@ type ServerSpec struct {
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
// +kubebuilder:default:=managed
// +optional
- ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`
+ ManagementPolicy *ManagementPolicy `json:"managementPolicy,omitempty"`
// managedOptions specifies options which may be applied to managed objects.
// +optional
@@ -76,7 +77,7 @@ type ServerSpec struct {
// cloudCredentialsRef points to a secret containing OpenStack credentials
// +required
- CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef"`
+ CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}
// ServerStatus defines the observed state of an ORC resource.
@@ -104,6 +105,7 @@ type ServerStatus struct {
Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`
// id is the unique identifier of the OpenStack resource.
+ // +kubebuilder:validation:MaxLength:=1024
// +optional
ID *string `json:"id,omitempty"`
@@ -115,6 +117,9 @@ type ServerStatus struct {
var _ ObjectWithConditions = &Server{}
func (i *Server) GetConditions() []metav1.Condition {
+ if i.Status == nil {
+ return nil
+ }
return i.Status.Conditions
}
@@ -135,12 +140,12 @@ type Server struct {
metav1.ObjectMeta `json:"metadata,omitempty"`
// spec specifies the desired state of the resource.
- // +optional
- Spec ServerSpec `json:"spec,omitempty"`
+ // +required
+ Spec ServerSpec `json:"spec,omitzero"`
// status defines the observed state of the resource.
// +optional
- Status ServerStatus `json:"status,omitempty"`
+ Status *ServerStatus `json:"status,omitempty"`
}
// +kubebuilder:object:root=true
diff --git a/api/v1alpha1/zz_generated.servergroup-resource.go b/api/v1alpha1/zz_generated.servergroup-resource.go
index ddc30d8bb..bb8ea537f 100644
--- a/api/v1alpha1/zz_generated.servergroup-resource.go
+++ b/api/v1alpha1/zz_generated.servergroup-resource.go
@@ -29,8 +29,9 @@ type ServerGroupImport struct {
// id contains the unique identifier of an existing OpenStack resource. Note
// that when specifying an import by ID, the resource MUST already exist.
// The ORC object will enter an error state if the resource does not exist.
- // +optional
// +kubebuilder:validation:Format:=uuid
+ // +kubebuilder:validation:MaxLength:=36
+ // +optional
ID *string `json:"id,omitempty"`
// filter contains a resource query which is expected to return a single
@@ -68,7 +69,7 @@ type ServerGroupSpec struct {
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
// +kubebuilder:default:=managed
// +optional
- ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`
+ ManagementPolicy *ManagementPolicy `json:"managementPolicy,omitempty"`
// managedOptions specifies options which may be applied to managed objects.
// +optional
@@ -76,7 +77,7 @@ type ServerGroupSpec struct {
// cloudCredentialsRef points to a secret containing OpenStack credentials
// +required
- CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef"`
+ CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}
// ServerGroupStatus defines the observed state of an ORC resource.
@@ -104,6 +105,7 @@ type ServerGroupStatus struct {
Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`
// id is the unique identifier of the OpenStack resource.
+ // +kubebuilder:validation:MaxLength:=1024
// +optional
ID *string `json:"id,omitempty"`
@@ -115,6 +117,9 @@ type ServerGroupStatus struct {
var _ ObjectWithConditions = &ServerGroup{}
func (i *ServerGroup) GetConditions() []metav1.Condition {
+ if i.Status == nil {
+ return nil
+ }
return i.Status.Conditions
}
@@ -135,12 +140,12 @@ type ServerGroup struct {
metav1.ObjectMeta `json:"metadata,omitempty"`
// spec specifies the desired state of the resource.
- // +optional
- Spec ServerGroupSpec `json:"spec,omitempty"`
+ // +required
+ Spec ServerGroupSpec `json:"spec,omitzero"`
// status defines the observed state of the resource.
// +optional
- Status ServerGroupStatus `json:"status,omitempty"`
+ Status *ServerGroupStatus `json:"status,omitempty"`
}
// +kubebuilder:object:root=true
diff --git a/api/v1alpha1/zz_generated.service-resource.go b/api/v1alpha1/zz_generated.service-resource.go
index e4cbc2ecf..85d1183ba 100644
--- a/api/v1alpha1/zz_generated.service-resource.go
+++ b/api/v1alpha1/zz_generated.service-resource.go
@@ -29,8 +29,9 @@ type ServiceImport struct {
// id contains the unique identifier of an existing OpenStack resource. Note
// that when specifying an import by ID, the resource MUST already exist.
// The ORC object will enter an error state if the resource does not exist.
- // +optional
// +kubebuilder:validation:Format:=uuid
+ // +kubebuilder:validation:MaxLength:=36
+ // +optional
ID *string `json:"id,omitempty"`
// filter contains a resource query which is expected to return a single
@@ -68,7 +69,7 @@ type ServiceSpec struct {
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
// +kubebuilder:default:=managed
// +optional
- ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`
+ ManagementPolicy *ManagementPolicy `json:"managementPolicy,omitempty"`
// managedOptions specifies options which may be applied to managed objects.
// +optional
@@ -76,7 +77,7 @@ type ServiceSpec struct {
// cloudCredentialsRef points to a secret containing OpenStack credentials
// +required
- CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef"`
+ CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}
// ServiceStatus defines the observed state of an ORC resource.
@@ -104,6 +105,7 @@ type ServiceStatus struct {
Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`
// id is the unique identifier of the OpenStack resource.
+ // +kubebuilder:validation:MaxLength:=1024
// +optional
ID *string `json:"id,omitempty"`
@@ -115,6 +117,9 @@ type ServiceStatus struct {
var _ ObjectWithConditions = &Service{}
func (i *Service) GetConditions() []metav1.Condition {
+ if i.Status == nil {
+ return nil
+ }
return i.Status.Conditions
}
@@ -135,12 +140,12 @@ type Service struct {
metav1.ObjectMeta `json:"metadata,omitempty"`
// spec specifies the desired state of the resource.
- // +optional
- Spec ServiceSpec `json:"spec,omitempty"`
+ // +required
+ Spec ServiceSpec `json:"spec,omitzero"`
// status defines the observed state of the resource.
// +optional
- Status ServiceStatus `json:"status,omitempty"`
+ Status *ServiceStatus `json:"status,omitempty"`
}
// +kubebuilder:object:root=true
diff --git a/api/v1alpha1/zz_generated.subnet-resource.go b/api/v1alpha1/zz_generated.subnet-resource.go
index fdff17f71..871678582 100644
--- a/api/v1alpha1/zz_generated.subnet-resource.go
+++ b/api/v1alpha1/zz_generated.subnet-resource.go
@@ -29,8 +29,9 @@ type SubnetImport struct {
// id contains the unique identifier of an existing OpenStack resource. Note
// that when specifying an import by ID, the resource MUST already exist.
// The ORC object will enter an error state if the resource does not exist.
- // +optional
// +kubebuilder:validation:Format:=uuid
+ // +kubebuilder:validation:MaxLength:=36
+ // +optional
ID *string `json:"id,omitempty"`
// filter contains a resource query which is expected to return a single
@@ -68,7 +69,7 @@ type SubnetSpec struct {
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
// +kubebuilder:default:=managed
// +optional
- ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`
+ ManagementPolicy *ManagementPolicy `json:"managementPolicy,omitempty"`
// managedOptions specifies options which may be applied to managed objects.
// +optional
@@ -76,7 +77,7 @@ type SubnetSpec struct {
// cloudCredentialsRef points to a secret containing OpenStack credentials
// +required
- CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef"`
+ CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}
// SubnetStatus defines the observed state of an ORC resource.
@@ -104,6 +105,7 @@ type SubnetStatus struct {
Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`
// id is the unique identifier of the OpenStack resource.
+ // +kubebuilder:validation:MaxLength:=1024
// +optional
ID *string `json:"id,omitempty"`
@@ -115,6 +117,9 @@ type SubnetStatus struct {
var _ ObjectWithConditions = &Subnet{}
func (i *Subnet) GetConditions() []metav1.Condition {
+ if i.Status == nil {
+ return nil
+ }
return i.Status.Conditions
}
@@ -135,12 +140,12 @@ type Subnet struct {
metav1.ObjectMeta `json:"metadata,omitempty"`
// spec specifies the desired state of the resource.
- // +optional
- Spec SubnetSpec `json:"spec,omitempty"`
+ // +required
+ Spec SubnetSpec `json:"spec,omitzero"`
// status defines the observed state of the resource.
// +optional
- Status SubnetStatus `json:"status,omitempty"`
+ Status *SubnetStatus `json:"status,omitempty"`
}
// +kubebuilder:object:root=true
diff --git a/api/v1alpha1/zz_generated.volume-resource.go b/api/v1alpha1/zz_generated.volume-resource.go
index ae830727c..88069bb5c 100644
--- a/api/v1alpha1/zz_generated.volume-resource.go
+++ b/api/v1alpha1/zz_generated.volume-resource.go
@@ -29,8 +29,9 @@ type VolumeImport struct {
// id contains the unique identifier of an existing OpenStack resource. Note
// that when specifying an import by ID, the resource MUST already exist.
// The ORC object will enter an error state if the resource does not exist.
- // +optional
// +kubebuilder:validation:Format:=uuid
+ // +kubebuilder:validation:MaxLength:=36
+ // +optional
ID *string `json:"id,omitempty"`
// filter contains a resource query which is expected to return a single
@@ -68,7 +69,7 @@ type VolumeSpec struct {
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
// +kubebuilder:default:=managed
// +optional
- ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`
+ ManagementPolicy *ManagementPolicy `json:"managementPolicy,omitempty"`
// managedOptions specifies options which may be applied to managed objects.
// +optional
@@ -76,7 +77,7 @@ type VolumeSpec struct {
// cloudCredentialsRef points to a secret containing OpenStack credentials
// +required
- CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef"`
+ CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}
// VolumeStatus defines the observed state of an ORC resource.
@@ -104,6 +105,7 @@ type VolumeStatus struct {
Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`
// id is the unique identifier of the OpenStack resource.
+ // +kubebuilder:validation:MaxLength:=1024
// +optional
ID *string `json:"id,omitempty"`
@@ -115,6 +117,9 @@ type VolumeStatus struct {
var _ ObjectWithConditions = &Volume{}
func (i *Volume) GetConditions() []metav1.Condition {
+ if i.Status == nil {
+ return nil
+ }
return i.Status.Conditions
}
@@ -135,12 +140,12 @@ type Volume struct {
metav1.ObjectMeta `json:"metadata,omitempty"`
// spec specifies the desired state of the resource.
- // +optional
- Spec VolumeSpec `json:"spec,omitempty"`
+ // +required
+ Spec VolumeSpec `json:"spec,omitzero"`
// status defines the observed state of the resource.
// +optional
- Status VolumeStatus `json:"status,omitempty"`
+ Status *VolumeStatus `json:"status,omitempty"`
}
// +kubebuilder:object:root=true
diff --git a/api/v1alpha1/zz_generated.volumetype-resource.go b/api/v1alpha1/zz_generated.volumetype-resource.go
index bc06ce713..7edbc75e1 100644
--- a/api/v1alpha1/zz_generated.volumetype-resource.go
+++ b/api/v1alpha1/zz_generated.volumetype-resource.go
@@ -29,8 +29,9 @@ type VolumeTypeImport struct {
// id contains the unique identifier of an existing OpenStack resource. Note
// that when specifying an import by ID, the resource MUST already exist.
// The ORC object will enter an error state if the resource does not exist.
- // +optional
// +kubebuilder:validation:Format:=uuid
+ // +kubebuilder:validation:MaxLength:=36
+ // +optional
ID *string `json:"id,omitempty"`
// filter contains a resource query which is expected to return a single
@@ -68,7 +69,7 @@ type VolumeTypeSpec struct {
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
// +kubebuilder:default:=managed
// +optional
- ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`
+ ManagementPolicy *ManagementPolicy `json:"managementPolicy,omitempty"`
// managedOptions specifies options which may be applied to managed objects.
// +optional
@@ -76,7 +77,7 @@ type VolumeTypeSpec struct {
// cloudCredentialsRef points to a secret containing OpenStack credentials
// +required
- CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef"`
+ CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}
// VolumeTypeStatus defines the observed state of an ORC resource.
@@ -104,6 +105,7 @@ type VolumeTypeStatus struct {
Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`
// id is the unique identifier of the OpenStack resource.
+ // +kubebuilder:validation:MaxLength:=1024
// +optional
ID *string `json:"id,omitempty"`
@@ -115,6 +117,9 @@ type VolumeTypeStatus struct {
var _ ObjectWithConditions = &VolumeType{}
func (i *VolumeType) GetConditions() []metav1.Condition {
+ if i.Status == nil {
+ return nil
+ }
return i.Status.Conditions
}
@@ -135,12 +140,12 @@ type VolumeType struct {
metav1.ObjectMeta `json:"metadata,omitempty"`
// spec specifies the desired state of the resource.
- // +optional
- Spec VolumeTypeSpec `json:"spec,omitempty"`
+ // +required
+ Spec VolumeTypeSpec `json:"spec,omitzero"`
// status defines the observed state of the resource.
// +optional
- Status VolumeTypeStatus `json:"status,omitempty"`
+ Status *VolumeTypeStatus `json:"status,omitempty"`
}
// +kubebuilder:object:root=true
diff --git a/cmd/models-schema/zz_generated.openapi.go b/cmd/models-schema/zz_generated.openapi.go
index 42f004b03..3a6fe6e8d 100644
--- a/cmd/models-schema/zz_generated.openapi.go
+++ b/cmd/models-schema/zz_generated.openapi.go
@@ -714,11 +714,11 @@ func schema_openstack_resource_controller_v2_api_v1alpha1_Domain(ref common.Refe
"status": {
SchemaProps: spec.SchemaProps{
Description: "status defines the observed state of the resource.",
- Default: map[string]interface{}{},
Ref: ref("github.com/k-orc/openstack-resource-controller/v2/api/v1alpha1.DomainStatus"),
},
},
},
+ Required: []string{"spec"},
},
},
Dependencies: []string{
@@ -1379,11 +1379,11 @@ func schema_openstack_resource_controller_v2_api_v1alpha1_Flavor(ref common.Refe
"status": {
SchemaProps: spec.SchemaProps{
Description: "status defines the observed state of the resource.",
- Default: map[string]interface{}{},
Ref: ref("github.com/k-orc/openstack-resource-controller/v2/api/v1alpha1.FlavorStatus"),
},
},
},
+ Required: []string{"spec"},
},
},
Dependencies: []string{
@@ -1789,11 +1789,11 @@ func schema_openstack_resource_controller_v2_api_v1alpha1_FloatingIP(ref common.
"status": {
SchemaProps: spec.SchemaProps{
Description: "status defines the observed state of the resource.",
- Default: map[string]interface{}{},
Ref: ref("github.com/k-orc/openstack-resource-controller/v2/api/v1alpha1.FloatingIPStatus"),
},
},
},
+ Required: []string{"spec"},
},
},
Dependencies: []string{
@@ -2351,11 +2351,11 @@ func schema_openstack_resource_controller_v2_api_v1alpha1_Group(ref common.Refer
"status": {
SchemaProps: spec.SchemaProps{
Description: "status defines the observed state of the resource.",
- Default: map[string]interface{}{},
Ref: ref("github.com/k-orc/openstack-resource-controller/v2/api/v1alpha1.GroupStatus"),
},
},
},
+ Required: []string{"spec"},
},
},
Dependencies: []string{
@@ -2754,11 +2754,11 @@ func schema_openstack_resource_controller_v2_api_v1alpha1_Image(ref common.Refer
"status": {
SchemaProps: spec.SchemaProps{
Description: "status defines the observed state of the resource.",
- Default: map[string]interface{}{},
Ref: ref("github.com/k-orc/openstack-resource-controller/v2/api/v1alpha1.ImageStatus"),
},
},
},
+ Required: []string{"spec"},
},
},
Dependencies: []string{
@@ -3474,11 +3474,11 @@ func schema_openstack_resource_controller_v2_api_v1alpha1_KeyPair(ref common.Ref
"status": {
SchemaProps: spec.SchemaProps{
Description: "status defines the observed state of the resource.",
- Default: map[string]interface{}{},
Ref: ref("github.com/k-orc/openstack-resource-controller/v2/api/v1alpha1.KeyPairStatus"),
},
},
},
+ Required: []string{"spec"},
},
},
Dependencies: []string{
@@ -3818,11 +3818,11 @@ func schema_openstack_resource_controller_v2_api_v1alpha1_Network(ref common.Ref
"status": {
SchemaProps: spec.SchemaProps{
Description: "status defines the observed state of the resource.",
- Default: map[string]interface{}{},
Ref: ref("github.com/k-orc/openstack-resource-controller/v2/api/v1alpha1.NetworkStatus"),
},
},
},
+ Required: []string{"spec"},
},
},
Dependencies: []string{
@@ -4487,11 +4487,11 @@ func schema_openstack_resource_controller_v2_api_v1alpha1_Port(ref common.Refere
"status": {
SchemaProps: spec.SchemaProps{
Description: "status defines the observed state of the resource.",
- Default: map[string]interface{}{},
Ref: ref("github.com/k-orc/openstack-resource-controller/v2/api/v1alpha1.PortStatus"),
},
},
},
+ Required: []string{"spec"},
},
},
Dependencies: []string{
@@ -4523,7 +4523,6 @@ func schema_openstack_resource_controller_v2_api_v1alpha1_PortFilter(ref common.
"networkRef": {
SchemaProps: spec.SchemaProps{
Description: "networkRef is a reference to the ORC Network which this port is associated with.",
- Default: "",
Type: []string{"string"},
Format: "",
},
@@ -4752,7 +4751,6 @@ func schema_openstack_resource_controller_v2_api_v1alpha1_PortRangeStatus(ref co
"min": {
SchemaProps: spec.SchemaProps{
Description: "min is the minimum port number in the range that is matched by the security group rule. If the protocol is TCP, UDP, DCCP, SCTP or UDP-Lite this value must be less than or equal to the port_range_max attribute value. If the protocol is ICMP, this value must be an ICMP type",
- Default: 0,
Type: []string{"integer"},
Format: "int32",
},
@@ -4760,7 +4758,6 @@ func schema_openstack_resource_controller_v2_api_v1alpha1_PortRangeStatus(ref co
"max": {
SchemaProps: spec.SchemaProps{
Description: "max is the maximum port number in the range that is matched by the security group rule. If the protocol is TCP, UDP, DCCP, SCTP or UDP-Lite this value must be greater than or equal to the port_range_min attribute value. If the protocol is ICMP, this value must be an ICMP code.",
- Default: 0,
Type: []string{"integer"},
Format: "int32",
},
@@ -5267,11 +5264,11 @@ func schema_openstack_resource_controller_v2_api_v1alpha1_Project(ref common.Ref
"status": {
SchemaProps: spec.SchemaProps{
Description: "status defines the observed state of the resource.",
- Default: map[string]interface{}{},
Ref: ref("github.com/k-orc/openstack-resource-controller/v2/api/v1alpha1.ProjectStatus"),
},
},
},
+ Required: []string{"spec"},
},
},
Dependencies: []string{
@@ -5737,11 +5734,11 @@ func schema_openstack_resource_controller_v2_api_v1alpha1_Role(ref common.Refere
"status": {
SchemaProps: spec.SchemaProps{
Description: "status defines the observed state of the resource.",
- Default: map[string]interface{}{},
Ref: ref("github.com/k-orc/openstack-resource-controller/v2/api/v1alpha1.RoleStatus"),
},
},
},
+ Required: []string{"spec"},
},
},
Dependencies: []string{
@@ -6061,11 +6058,11 @@ func schema_openstack_resource_controller_v2_api_v1alpha1_Router(ref common.Refe
"status": {
SchemaProps: spec.SchemaProps{
Description: "status defines the observed state of the resource.",
- Default: map[string]interface{}{},
Ref: ref("github.com/k-orc/openstack-resource-controller/v2/api/v1alpha1.RouterStatus"),
},
},
},
+ Required: []string{"spec"},
},
},
Dependencies: []string{
@@ -6253,11 +6250,11 @@ func schema_openstack_resource_controller_v2_api_v1alpha1_RouterInterface(ref co
"status": {
SchemaProps: spec.SchemaProps{
Description: "status defines the observed state of the resource.",
- Default: map[string]interface{}{},
Ref: ref("github.com/k-orc/openstack-resource-controller/v2/api/v1alpha1.RouterInterfaceStatus"),
},
},
},
+ Required: []string{"spec"},
},
},
Dependencies: []string{
@@ -6800,11 +6797,11 @@ func schema_openstack_resource_controller_v2_api_v1alpha1_SecurityGroup(ref comm
"status": {
SchemaProps: spec.SchemaProps{
Description: "status defines the observed state of the resource.",
- Default: map[string]interface{}{},
Ref: ref("github.com/k-orc/openstack-resource-controller/v2/api/v1alpha1.SecurityGroupStatus"),
},
},
},
+ Required: []string{"spec"},
},
},
Dependencies: []string{
@@ -7452,11 +7449,11 @@ func schema_openstack_resource_controller_v2_api_v1alpha1_Server(ref common.Refe
"status": {
SchemaProps: spec.SchemaProps{
Description: "status defines the observed state of the resource.",
- Default: map[string]interface{}{},
Ref: ref("github.com/k-orc/openstack-resource-controller/v2/api/v1alpha1.ServerStatus"),
},
},
},
+ Required: []string{"spec"},
},
},
Dependencies: []string{
@@ -7609,11 +7606,11 @@ func schema_openstack_resource_controller_v2_api_v1alpha1_ServerGroup(ref common
"status": {
SchemaProps: spec.SchemaProps{
Description: "status defines the observed state of the resource.",
- Default: map[string]interface{}{},
Ref: ref("github.com/k-orc/openstack-resource-controller/v2/api/v1alpha1.ServerGroupStatus"),
},
},
},
+ Required: []string{"spec"},
},
},
Dependencies: []string{
@@ -8669,11 +8666,11 @@ func schema_openstack_resource_controller_v2_api_v1alpha1_Service(ref common.Ref
"status": {
SchemaProps: spec.SchemaProps{
Description: "status defines the observed state of the resource.",
- Default: map[string]interface{}{},
Ref: ref("github.com/k-orc/openstack-resource-controller/v2/api/v1alpha1.ServiceStatus"),
},
},
},
+ Required: []string{"spec"},
},
},
Dependencies: []string{
@@ -9008,11 +9005,11 @@ func schema_openstack_resource_controller_v2_api_v1alpha1_Subnet(ref common.Refe
"status": {
SchemaProps: spec.SchemaProps{
Description: "status defines the observed state of the resource.",
- Default: map[string]interface{}{},
Ref: ref("github.com/k-orc/openstack-resource-controller/v2/api/v1alpha1.SubnetStatus"),
},
},
},
+ Required: []string{"spec"},
},
},
Dependencies: []string{
@@ -9071,7 +9068,6 @@ func schema_openstack_resource_controller_v2_api_v1alpha1_SubnetFilter(ref commo
"networkRef": {
SchemaProps: spec.SchemaProps{
Description: "networkRef is a reference to the ORC Network which this subnet is associated with.",
- Default: "",
Type: []string{"string"},
Format: "",
},
@@ -9798,11 +9794,11 @@ func schema_openstack_resource_controller_v2_api_v1alpha1_Volume(ref common.Refe
"status": {
SchemaProps: spec.SchemaProps{
Description: "status defines the observed state of the resource.",
- Default: map[string]interface{}{},
Ref: ref("github.com/k-orc/openstack-resource-controller/v2/api/v1alpha1.VolumeStatus"),
},
},
},
+ Required: []string{"spec"},
},
},
Dependencies: []string{
@@ -9819,7 +9815,6 @@ func schema_openstack_resource_controller_v2_api_v1alpha1_VolumeAttachmentStatus
"attachmentID": {
SchemaProps: spec.SchemaProps{
Description: "attachmentID represents the attachment UUID.",
- Default: "",
Type: []string{"string"},
Format: "",
},
@@ -9827,7 +9822,6 @@ func schema_openstack_resource_controller_v2_api_v1alpha1_VolumeAttachmentStatus
"serverID": {
SchemaProps: spec.SchemaProps{
Description: "serverID is the UUID of the server to which the volume is attached.",
- Default: "",
Type: []string{"string"},
Format: "",
},
@@ -9835,7 +9829,6 @@ func schema_openstack_resource_controller_v2_api_v1alpha1_VolumeAttachmentStatus
"device": {
SchemaProps: spec.SchemaProps{
Description: "device is the name of the device in the instance.",
- Default: "",
Type: []string{"string"},
Format: "",
},
@@ -10435,11 +10428,11 @@ func schema_openstack_resource_controller_v2_api_v1alpha1_VolumeType(ref common.
"status": {
SchemaProps: spec.SchemaProps{
Description: "status defines the observed state of the resource.",
- Default: map[string]interface{}{},
Ref: ref("github.com/k-orc/openstack-resource-controller/v2/api/v1alpha1.VolumeTypeStatus"),
},
},
},
+ Required: []string{"spec"},
},
},
Dependencies: []string{
diff --git a/cmd/resource-generator/data/adapter.template b/cmd/resource-generator/data/adapter.template
index 7bec457ee..b960e022b 100644
--- a/cmd/resource-generator/data/adapter.template
+++ b/cmd/resource-generator/data/adapter.template
@@ -47,7 +47,10 @@ func (f adapterT) GetObject() orcObjectPT {
}
func (f adapterT) GetManagementPolicy() orcv1alpha1.ManagementPolicy {
- return f.Spec.ManagementPolicy
+ if f.Spec.ManagementPolicy == nil {
+ return ""
+ }
+ return *f.Spec.ManagementPolicy
}
func (f adapterT) GetManagedOptions() *orcv1alpha1.ManagedOptions {
@@ -55,6 +58,9 @@ func (f adapterT) GetManagedOptions() *orcv1alpha1.ManagedOptions {
}
func (f adapterT) GetStatusID() *string {
+ if f.Status == nil {
+ return nil
+ }
return f.Status.ID
}
diff --git a/cmd/resource-generator/data/api.template b/cmd/resource-generator/data/api.template
index 9b1655038..91419ea84 100644
--- a/cmd/resource-generator/data/api.template
+++ b/cmd/resource-generator/data/api.template
@@ -30,14 +30,16 @@ type {{ .Name }}Import struct {
// the resource name as the unique identifier, not a UUID.
// When specifying an import by ID, the resource MUST already exist.
// The ORC object will enter an error state if the resource does not exist.
+ // +kubebuilder:validation:MaxLength:=1024
// +optional
ID *string `json:"id,omitempty"`
{{- else }}
// id contains the unique identifier of an existing OpenStack resource. Note
// that when specifying an import by ID, the resource MUST already exist.
// The ORC object will enter an error state if the resource does not exist.
- // +optional
// +kubebuilder:validation:Format:=uuid
+ // +kubebuilder:validation:MaxLength:=36
+ // +optional
ID *string `json:"id,omitempty"`
{{- end }}
@@ -82,7 +84,7 @@ type {{ .Name }}Spec struct {
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
// +kubebuilder:default:=managed
// +optional
- ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`
+ ManagementPolicy *ManagementPolicy `json:"managementPolicy,omitempty"`
// managedOptions specifies options which may be applied to managed objects.
// +optional
@@ -90,7 +92,7 @@ type {{ .Name }}Spec struct {
// cloudCredentialsRef points to a secret containing OpenStack credentials
// +required
- CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef"`
+ CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}
// {{ .Name }}Status defines the observed state of an ORC resource.
@@ -118,6 +120,7 @@ type {{ .Name }}Status struct {
Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`
// id is the unique identifier of the OpenStack resource.
+ // +kubebuilder:validation:MaxLength:=1024
// +optional
ID *string `json:"id,omitempty"`
@@ -133,6 +136,9 @@ type {{ .Name }}Status struct {
var _ ObjectWithConditions = &{{ .Name }}{}
func (i *{{ .Name }}) GetConditions() []metav1.Condition {
+ if i.Status == nil {
+ return nil
+ }
return i.Status.Conditions
}
@@ -156,12 +162,12 @@ type {{ .Name }} struct {
metav1.ObjectMeta `json:"metadata,omitempty"`
// spec specifies the desired state of the resource.
- // +optional
- Spec {{ .Name }}Spec `json:"spec,omitempty"`
+ // +required
+ Spec {{ .Name }}Spec `json:"spec,omitzero"`
// status defines the observed state of the resource.
// +optional
- Status {{ .Name }}Status `json:"status,omitempty"`
+ Status *{{ .Name }}Status `json:"status,omitempty"`
}
// +kubebuilder:object:root=true
diff --git a/config/crd/bases/openstack.k-orc.cloud_domains.yaml b/config/crd/bases/openstack.k-orc.cloud_domains.yaml
index 893ff831c..a1870a5a5 100644
--- a/config/crd/bases/openstack.k-orc.cloud_domains.yaml
+++ b/config/crd/bases/openstack.k-orc.cloud_domains.yaml
@@ -108,6 +108,7 @@ spec:
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist.
format: uuid
+ maxLength: 36
type: string
type: object
managedOptions:
@@ -264,6 +265,7 @@ spec:
x-kubernetes-list-type: map
id:
description: id is the unique identifier of the OpenStack resource.
+ maxLength: 1024
type: string
resource:
description: resource contains the observed state of the OpenStack
@@ -286,6 +288,8 @@ spec:
type: string
type: object
type: object
+ required:
+ - spec
type: object
served: true
storage: true
diff --git a/config/crd/bases/openstack.k-orc.cloud_flavors.yaml b/config/crd/bases/openstack.k-orc.cloud_flavors.yaml
index d1c930aa2..833f1ea47 100644
--- a/config/crd/bases/openstack.k-orc.cloud_flavors.yaml
+++ b/config/crd/bases/openstack.k-orc.cloud_flavors.yaml
@@ -120,6 +120,7 @@ spec:
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist.
format: uuid
+ maxLength: 36
type: string
type: object
managedOptions:
@@ -322,6 +323,7 @@ spec:
x-kubernetes-list-type: map
id:
description: id is the unique identifier of the OpenStack resource.
+ maxLength: 1024
type: string
resource:
description: resource contains the observed state of the OpenStack
@@ -366,6 +368,8 @@ spec:
type: integer
type: object
type: object
+ required:
+ - spec
type: object
served: true
storage: true
diff --git a/config/crd/bases/openstack.k-orc.cloud_floatingips.yaml b/config/crd/bases/openstack.k-orc.cloud_floatingips.yaml
index 686b41c71..383366e59 100644
--- a/config/crd/bases/openstack.k-orc.cloud_floatingips.yaml
+++ b/config/crd/bases/openstack.k-orc.cloud_floatingips.yaml
@@ -192,6 +192,7 @@ spec:
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist.
format: uuid
+ maxLength: 36
type: string
type: object
managedOptions:
@@ -409,6 +410,7 @@ spec:
x-kubernetes-list-type: map
id:
description: id is the unique identifier of the OpenStack resource.
+ maxLength: 1024
type: string
resource:
description: resource contains the observed state of the OpenStack
@@ -479,6 +481,8 @@ spec:
type: string
type: object
type: object
+ required:
+ - spec
type: object
served: true
storage: true
diff --git a/config/crd/bases/openstack.k-orc.cloud_groups.yaml b/config/crd/bases/openstack.k-orc.cloud_groups.yaml
index e62f33c1c..d29e2161a 100644
--- a/config/crd/bases/openstack.k-orc.cloud_groups.yaml
+++ b/config/crd/bases/openstack.k-orc.cloud_groups.yaml
@@ -109,6 +109,7 @@ spec:
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist.
format: uuid
+ maxLength: 36
type: string
type: object
managedOptions:
@@ -269,6 +270,7 @@ spec:
x-kubernetes-list-type: map
id:
description: id is the unique identifier of the OpenStack resource.
+ maxLength: 1024
type: string
resource:
description: resource contains the observed state of the OpenStack
@@ -291,6 +293,8 @@ spec:
type: string
type: object
type: object
+ required:
+ - spec
type: object
served: true
storage: true
diff --git a/config/crd/bases/openstack.k-orc.cloud_images.yaml b/config/crd/bases/openstack.k-orc.cloud_images.yaml
index 6b5dce9b9..ff0f543a8 100644
--- a/config/crd/bases/openstack.k-orc.cloud_images.yaml
+++ b/config/crd/bases/openstack.k-orc.cloud_images.yaml
@@ -122,6 +122,7 @@ spec:
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist.
format: uuid
+ maxLength: 36
type: string
type: object
managedOptions:
@@ -644,6 +645,7 @@ spec:
type: integer
id:
description: id is the unique identifier of the OpenStack resource.
+ maxLength: 1024
type: string
resource:
description: resource contains the observed state of the OpenStack
@@ -713,6 +715,8 @@ spec:
type: string
type: object
type: object
+ required:
+ - spec
type: object
served: true
storage: true
diff --git a/config/crd/bases/openstack.k-orc.cloud_keypairs.yaml b/config/crd/bases/openstack.k-orc.cloud_keypairs.yaml
index 969748e90..df1f02cab 100644
--- a/config/crd/bases/openstack.k-orc.cloud_keypairs.yaml
+++ b/config/crd/bases/openstack.k-orc.cloud_keypairs.yaml
@@ -104,6 +104,7 @@ spec:
the resource name as the unique identifier, not a UUID.
When specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist.
+ maxLength: 1024
type: string
type: object
managedOptions:
@@ -265,6 +266,7 @@ spec:
x-kubernetes-list-type: map
id:
description: id is the unique identifier of the OpenStack resource.
+ maxLength: 1024
type: string
resource:
description: resource contains the observed state of the OpenStack
@@ -289,6 +291,8 @@ spec:
type: string
type: object
type: object
+ required:
+ - spec
type: object
served: true
storage: true
diff --git a/config/crd/bases/openstack.k-orc.cloud_networks.yaml b/config/crd/bases/openstack.k-orc.cloud_networks.yaml
index bba47e4c8..63951bb0b 100644
--- a/config/crd/bases/openstack.k-orc.cloud_networks.yaml
+++ b/config/crd/bases/openstack.k-orc.cloud_networks.yaml
@@ -178,6 +178,7 @@ spec:
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist.
format: uuid
+ maxLength: 36
type: string
type: object
managedOptions:
@@ -406,6 +407,7 @@ spec:
x-kubernetes-list-type: map
id:
description: id is the unique identifier of the OpenStack resource.
+ maxLength: 1024
type: string
resource:
description: resource contains the observed state of the OpenStack
@@ -540,6 +542,8 @@ spec:
type: string
type: object
type: object
+ required:
+ - spec
type: object
served: true
storage: true
diff --git a/config/crd/bases/openstack.k-orc.cloud_ports.yaml b/config/crd/bases/openstack.k-orc.cloud_ports.yaml
index c14173d71..9f30d72b2 100644
--- a/config/crd/bases/openstack.k-orc.cloud_ports.yaml
+++ b/config/crd/bases/openstack.k-orc.cloud_ports.yaml
@@ -192,6 +192,7 @@ spec:
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist.
format: uuid
+ maxLength: 36
type: string
type: object
managedOptions:
@@ -493,6 +494,7 @@ spec:
x-kubernetes-list-type: map
id:
description: id is the unique identifier of the OpenStack resource.
+ maxLength: 1024
type: string
resource:
description: resource contains the observed state of the OpenStack
@@ -632,6 +634,8 @@ spec:
type: string
type: object
type: object
+ required:
+ - spec
type: object
served: true
storage: true
diff --git a/config/crd/bases/openstack.k-orc.cloud_projects.yaml b/config/crd/bases/openstack.k-orc.cloud_projects.yaml
index ab550af2b..6c6804d01 100644
--- a/config/crd/bases/openstack.k-orc.cloud_projects.yaml
+++ b/config/crd/bases/openstack.k-orc.cloud_projects.yaml
@@ -148,6 +148,7 @@ spec:
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist.
format: uuid
+ maxLength: 36
type: string
type: object
managedOptions:
@@ -314,6 +315,7 @@ spec:
x-kubernetes-list-type: map
id:
description: id is the unique identifier of the OpenStack resource.
+ maxLength: 1024
type: string
resource:
description: resource contains the observed state of the OpenStack
@@ -343,6 +345,8 @@ spec:
x-kubernetes-list-type: atomic
type: object
type: object
+ required:
+ - spec
type: object
served: true
storage: true
diff --git a/config/crd/bases/openstack.k-orc.cloud_roles.yaml b/config/crd/bases/openstack.k-orc.cloud_roles.yaml
index 98cb4993d..2635b7063 100644
--- a/config/crd/bases/openstack.k-orc.cloud_roles.yaml
+++ b/config/crd/bases/openstack.k-orc.cloud_roles.yaml
@@ -109,6 +109,7 @@ spec:
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist.
format: uuid
+ maxLength: 36
type: string
type: object
managedOptions:
@@ -269,6 +270,7 @@ spec:
x-kubernetes-list-type: map
id:
description: id is the unique identifier of the OpenStack resource.
+ maxLength: 1024
type: string
resource:
description: resource contains the observed state of the OpenStack
@@ -291,6 +293,8 @@ spec:
type: string
type: object
type: object
+ required:
+ - spec
type: object
served: true
storage: true
diff --git a/config/crd/bases/openstack.k-orc.cloud_routerinterfaces.yaml b/config/crd/bases/openstack.k-orc.cloud_routerinterfaces.yaml
index 83075e0c7..2770876c0 100644
--- a/config/crd/bases/openstack.k-orc.cloud_routerinterfaces.yaml
+++ b/config/crd/bases/openstack.k-orc.cloud_routerinterfaces.yaml
@@ -162,6 +162,8 @@ spec:
maxLength: 1024
type: string
type: object
+ required:
+ - spec
type: object
served: true
storage: true
diff --git a/config/crd/bases/openstack.k-orc.cloud_routers.yaml b/config/crd/bases/openstack.k-orc.cloud_routers.yaml
index 870aee9db..dea6ac3a8 100644
--- a/config/crd/bases/openstack.k-orc.cloud_routers.yaml
+++ b/config/crd/bases/openstack.k-orc.cloud_routers.yaml
@@ -173,6 +173,7 @@ spec:
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist.
format: uuid
+ maxLength: 36
type: string
type: object
managedOptions:
@@ -396,6 +397,7 @@ spec:
x-kubernetes-list-type: map
id:
description: id is the unique identifier of the OpenStack resource.
+ maxLength: 1024
type: string
resource:
description: resource contains the observed state of the OpenStack
@@ -458,6 +460,8 @@ spec:
x-kubernetes-list-type: atomic
type: object
type: object
+ required:
+ - spec
type: object
served: true
storage: true
diff --git a/config/crd/bases/openstack.k-orc.cloud_securitygroups.yaml b/config/crd/bases/openstack.k-orc.cloud_securitygroups.yaml
index 13cef5e35..bec05f320 100644
--- a/config/crd/bases/openstack.k-orc.cloud_securitygroups.yaml
+++ b/config/crd/bases/openstack.k-orc.cloud_securitygroups.yaml
@@ -173,6 +173,7 @@ spec:
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist.
format: uuid
+ maxLength: 36
type: string
type: object
managedOptions:
@@ -471,6 +472,7 @@ spec:
x-kubernetes-list-type: map
id:
description: id is the unique identifier of the OpenStack resource.
+ maxLength: 1024
type: string
resource:
description: resource contains the observed state of the OpenStack
@@ -588,6 +590,8 @@ spec:
type: string
type: object
type: object
+ required:
+ - spec
type: object
served: true
storage: true
diff --git a/config/crd/bases/openstack.k-orc.cloud_servergroups.yaml b/config/crd/bases/openstack.k-orc.cloud_servergroups.yaml
index ad2eafd83..c44d85f12 100644
--- a/config/crd/bases/openstack.k-orc.cloud_servergroups.yaml
+++ b/config/crd/bases/openstack.k-orc.cloud_servergroups.yaml
@@ -104,6 +104,7 @@ spec:
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist.
format: uuid
+ maxLength: 36
type: string
type: object
managedOptions:
@@ -277,6 +278,7 @@ spec:
x-kubernetes-list-type: map
id:
description: id is the unique identifier of the OpenStack resource.
+ maxLength: 1024
type: string
resource:
description: resource contains the observed state of the OpenStack
@@ -311,6 +313,8 @@ spec:
type: string
type: object
type: object
+ required:
+ - spec
type: object
served: true
storage: true
diff --git a/config/crd/bases/openstack.k-orc.cloud_servers.yaml b/config/crd/bases/openstack.k-orc.cloud_servers.yaml
index 2a882bad3..8387dd81c 100644
--- a/config/crd/bases/openstack.k-orc.cloud_servers.yaml
+++ b/config/crd/bases/openstack.k-orc.cloud_servers.yaml
@@ -154,6 +154,7 @@ spec:
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist.
format: uuid
+ maxLength: 36
type: string
type: object
managedOptions:
@@ -454,6 +455,7 @@ spec:
x-kubernetes-list-type: map
id:
description: id is the unique identifier of the OpenStack resource.
+ maxLength: 1024
type: string
resource:
description: resource contains the observed state of the OpenStack
@@ -588,6 +590,8 @@ spec:
x-kubernetes-list-type: atomic
type: object
type: object
+ required:
+ - spec
type: object
served: true
storage: true
diff --git a/config/crd/bases/openstack.k-orc.cloud_services.yaml b/config/crd/bases/openstack.k-orc.cloud_services.yaml
index 9e6a16416..0c113a367 100644
--- a/config/crd/bases/openstack.k-orc.cloud_services.yaml
+++ b/config/crd/bases/openstack.k-orc.cloud_services.yaml
@@ -109,6 +109,7 @@ spec:
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist.
format: uuid
+ maxLength: 36
type: string
type: object
managedOptions:
@@ -273,6 +274,7 @@ spec:
x-kubernetes-list-type: map
id:
description: id is the unique identifier of the OpenStack resource.
+ maxLength: 1024
type: string
resource:
description: resource contains the observed state of the OpenStack
@@ -297,6 +299,8 @@ spec:
type: string
type: object
type: object
+ required:
+ - spec
type: object
served: true
storage: true
diff --git a/config/crd/bases/openstack.k-orc.cloud_subnets.yaml b/config/crd/bases/openstack.k-orc.cloud_subnets.yaml
index e0445ee80..a37539475 100644
--- a/config/crd/bases/openstack.k-orc.cloud_subnets.yaml
+++ b/config/crd/bases/openstack.k-orc.cloud_subnets.yaml
@@ -220,6 +220,7 @@ spec:
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist.
format: uuid
+ maxLength: 36
type: string
type: object
managedOptions:
@@ -562,6 +563,7 @@ spec:
x-kubernetes-list-type: map
id:
description: id is the unique identifier of the OpenStack resource.
+ maxLength: 1024
type: string
resource:
description: resource contains the observed state of the OpenStack
@@ -695,6 +697,8 @@ spec:
type: string
type: object
type: object
+ required:
+ - spec
type: object
served: true
storage: true
diff --git a/config/crd/bases/openstack.k-orc.cloud_volumes.yaml b/config/crd/bases/openstack.k-orc.cloud_volumes.yaml
index eeaf10a8b..6a9371f5c 100644
--- a/config/crd/bases/openstack.k-orc.cloud_volumes.yaml
+++ b/config/crd/bases/openstack.k-orc.cloud_volumes.yaml
@@ -119,6 +119,7 @@ spec:
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist.
format: uuid
+ maxLength: 36
type: string
type: object
managedOptions:
@@ -334,6 +335,7 @@ spec:
x-kubernetes-list-type: map
id:
description: id is the unique identifier of the OpenStack resource.
+ maxLength: 1024
type: string
resource:
description: resource contains the observed state of the OpenStack
@@ -472,6 +474,8 @@ spec:
type: string
type: object
type: object
+ required:
+ - spec
type: object
served: true
storage: true
diff --git a/config/crd/bases/openstack.k-orc.cloud_volumetypes.yaml b/config/crd/bases/openstack.k-orc.cloud_volumetypes.yaml
index c92df01fc..20f821828 100644
--- a/config/crd/bases/openstack.k-orc.cloud_volumetypes.yaml
+++ b/config/crd/bases/openstack.k-orc.cloud_volumetypes.yaml
@@ -113,6 +113,7 @@ spec:
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist.
format: uuid
+ maxLength: 36
type: string
type: object
managedOptions:
@@ -288,6 +289,7 @@ spec:
x-kubernetes-list-type: map
id:
description: id is the unique identifier of the OpenStack resource.
+ maxLength: 1024
type: string
resource:
description: resource contains the observed state of the OpenStack
@@ -325,6 +327,8 @@ spec:
type: string
type: object
type: object
+ required:
+ - spec
type: object
served: true
storage: true
diff --git a/internal/controllers/domain/zz_generated.adapter.go b/internal/controllers/domain/zz_generated.adapter.go
index 6a386af72..b38323dbb 100644
--- a/internal/controllers/domain/zz_generated.adapter.go
+++ b/internal/controllers/domain/zz_generated.adapter.go
@@ -48,7 +48,10 @@ func (f adapterT) GetObject() orcObjectPT {
}
func (f adapterT) GetManagementPolicy() orcv1alpha1.ManagementPolicy {
- return f.Spec.ManagementPolicy
+ if f.Spec.ManagementPolicy == nil {
+ return ""
+ }
+ return *f.Spec.ManagementPolicy
}
func (f adapterT) GetManagedOptions() *orcv1alpha1.ManagedOptions {
@@ -56,6 +59,9 @@ func (f adapterT) GetManagedOptions() *orcv1alpha1.ManagedOptions {
}
func (f adapterT) GetStatusID() *string {
+ if f.Status == nil {
+ return nil
+ }
return f.Status.ID
}
diff --git a/internal/controllers/flavor/actuator.go b/internal/controllers/flavor/actuator.go
index 16eb9c73b..c9320b689 100644
--- a/internal/controllers/flavor/actuator.go
+++ b/internal/controllers/flavor/actuator.go
@@ -84,8 +84,8 @@ func (actuator flavorActuator) ListOSResourcesForAdoption(ctx context.Context, o
f.RAM == int(resourceSpec.RAM) &&
f.VCPUs == int(resourceSpec.Vcpus) &&
f.Disk == int(resourceSpec.Disk) &&
- f.Swap == int(resourceSpec.Swap) &&
- f.Ephemeral == int(resourceSpec.Ephemeral)
+ f.Swap == int(ptr.Deref(resourceSpec.Swap, 0)) &&
+ f.Ephemeral == int(ptr.Deref(resourceSpec.Ephemeral, 0))
},
)
@@ -148,9 +148,9 @@ func (actuator flavorActuator) CreateResource(ctx context.Context, obj orcObject
RAM: int(resource.RAM),
VCPUs: int(resource.Vcpus),
Disk: ptr.To(int(resource.Disk)),
- Swap: ptr.To(int(resource.Swap)),
+ Swap: ptr.To(int(ptr.Deref(resource.Swap, 0))),
IsPublic: resource.IsPublic,
- Ephemeral: ptr.To(int(resource.Ephemeral)),
+ Ephemeral: ptr.To(int(ptr.Deref(resource.Ephemeral, 0))),
Description: ptr.Deref(resource.Description, ""),
}
diff --git a/internal/controllers/flavor/zz_generated.adapter.go b/internal/controllers/flavor/zz_generated.adapter.go
index 936fc6735..1a8482c03 100644
--- a/internal/controllers/flavor/zz_generated.adapter.go
+++ b/internal/controllers/flavor/zz_generated.adapter.go
@@ -48,7 +48,10 @@ func (f adapterT) GetObject() orcObjectPT {
}
func (f adapterT) GetManagementPolicy() orcv1alpha1.ManagementPolicy {
- return f.Spec.ManagementPolicy
+ if f.Spec.ManagementPolicy == nil {
+ return ""
+ }
+ return *f.Spec.ManagementPolicy
}
func (f adapterT) GetManagedOptions() *orcv1alpha1.ManagedOptions {
@@ -56,6 +59,9 @@ func (f adapterT) GetManagedOptions() *orcv1alpha1.ManagedOptions {
}
func (f adapterT) GetStatusID() *string {
+ if f.Status == nil {
+ return nil
+ }
return f.Status.ID
}
diff --git a/internal/controllers/floatingip/actuator.go b/internal/controllers/floatingip/actuator.go
index 8a99c564e..66ed50c1b 100644
--- a/internal/controllers/floatingip/actuator.go
+++ b/internal/controllers/floatingip/actuator.go
@@ -126,7 +126,7 @@ func (actuator floatingipCreateActuator) ListOSResourcesForImport(ctx context.Co
TagsAny: tags.Join(filter.TagsAny),
NotTags: tags.Join(filter.NotTags),
NotTagsAny: tags.Join(filter.NotTagsAny),
- Status: filter.Status,
+ Status: ptr.Deref(filter.Status, ""),
}
return actuator.osClient.ListFloatingIP(ctx, listOpts), nil
@@ -167,7 +167,7 @@ func (actuator floatingipCreateActuator) CreateResource(ctx context.Context, obj
reconcileStatus = reconcileStatus.WithReconcileStatus(subnetDepRS)
if subnet != nil {
subnetID = ptr.Deref(subnet.Status.ID, "")
- networkID = subnet.Status.Resource.NetworkID
+ networkID = ptr.Deref(subnet.Status.Resource.NetworkID, "")
}
}
diff --git a/internal/controllers/floatingip/zz_generated.adapter.go b/internal/controllers/floatingip/zz_generated.adapter.go
index c0ff372fb..fde473525 100644
--- a/internal/controllers/floatingip/zz_generated.adapter.go
+++ b/internal/controllers/floatingip/zz_generated.adapter.go
@@ -48,7 +48,10 @@ func (f adapterT) GetObject() orcObjectPT {
}
func (f adapterT) GetManagementPolicy() orcv1alpha1.ManagementPolicy {
- return f.Spec.ManagementPolicy
+ if f.Spec.ManagementPolicy == nil {
+ return ""
+ }
+ return *f.Spec.ManagementPolicy
}
func (f adapterT) GetManagedOptions() *orcv1alpha1.ManagedOptions {
@@ -56,6 +59,9 @@ func (f adapterT) GetManagedOptions() *orcv1alpha1.ManagedOptions {
}
func (f adapterT) GetStatusID() *string {
+ if f.Status == nil {
+ return nil
+ }
return f.Status.ID
}
diff --git a/internal/controllers/group/zz_generated.adapter.go b/internal/controllers/group/zz_generated.adapter.go
index be06e584f..78e3784c6 100644
--- a/internal/controllers/group/zz_generated.adapter.go
+++ b/internal/controllers/group/zz_generated.adapter.go
@@ -48,7 +48,10 @@ func (f adapterT) GetObject() orcObjectPT {
}
func (f adapterT) GetManagementPolicy() orcv1alpha1.ManagementPolicy {
- return f.Spec.ManagementPolicy
+ if f.Spec.ManagementPolicy == nil {
+ return ""
+ }
+ return *f.Spec.ManagementPolicy
}
func (f adapterT) GetManagedOptions() *orcv1alpha1.ManagedOptions {
@@ -56,6 +59,9 @@ func (f adapterT) GetManagedOptions() *orcv1alpha1.ManagedOptions {
}
func (f adapterT) GetStatusID() *string {
+ if f.Status == nil {
+ return nil
+ }
return f.Status.ID
}
diff --git a/internal/controllers/image/actuator.go b/internal/controllers/image/actuator.go
index fd40daaa8..d404baf9e 100644
--- a/internal/controllers/image/actuator.go
+++ b/internal/controllers/image/actuator.go
@@ -163,7 +163,7 @@ func (actuator imageActuator) CreateResource(ctx context.Context, obj *orcv1alph
Name: getResourceName(obj),
Visibility: visibility,
Tags: tags,
- ContainerFormat: string(resource.Content.ContainerFormat),
+ ContainerFormat: string(ptr.Deref(resource.Content.ContainerFormat, "")),
DiskFormat: (string)(resource.Content.DiskFormat),
MinDisk: minDisk,
MinRAM: minMemory,
@@ -358,14 +358,14 @@ func (actuator imageActuator) handleUpload(ctx context.Context, orcObject orcObj
// Newly created image, waiting for upload, or... previous upload was interrupted and has now reset
case images.ImageStatusQueued:
// Don't attempt image creation if we're not managing the image
- if orcObject.Spec.ManagementPolicy == orcv1alpha1.ManagementPolicyUnmanaged {
+ if orcObject.Spec.ManagementPolicy != nil && *orcObject.Spec.ManagementPolicy == orcv1alpha1.ManagementPolicyUnmanaged {
return progress.NewReconcileStatus().
WithProgressMessage("Waiting for glance image content to be uploaded externally").
WithRequeue(externalUpdatePollingPeriod)
}
// Initialize download status
- if orcObject.Status.DownloadAttempts == nil {
+ if orcObject.Status == nil || orcObject.Status.DownloadAttempts == nil {
err := setDownloadingStatus(ctx, false, "Starting image upload", orcv1alpha1.ConditionReasonProgressing, metav1.ConditionTrue, orcObject, actuator.k8sClient)
if err != nil {
return progress.WrapError(err)
@@ -375,7 +375,7 @@ func (actuator imageActuator) handleUpload(ctx context.Context, orcObject orcObj
WithProgressMessage("Starting image upload")
}
- if ptr.Deref(orcObject.Status.DownloadAttempts, 0) >= maxDownloadAttempts {
+ if orcObject.Status != nil && ptr.Deref(orcObject.Status.DownloadAttempts, 0) >= maxDownloadAttempts {
return progress.WrapError(
orcerrors.Terminal(orcv1alpha1.ConditionReasonInvalidConfiguration, fmt.Sprintf("Unable to download content after %d attempts", maxDownloadAttempts)))
}
diff --git a/internal/controllers/image/status.go b/internal/controllers/image/status.go
index 37270334f..6f7475865 100644
--- a/internal/controllers/image/status.go
+++ b/internal/controllers/image/status.go
@@ -59,7 +59,7 @@ func (imageStatusWriter) GetApplyConfig(name, namespace string) objectApplyPT {
func (imageStatusWriter) ResourceAvailableStatus(orcObject orcObjectPT, osResource *osResourceT) (metav1.ConditionStatus, progress.ReconcileStatus) {
if osResource == nil {
- if orcObject.Status.ID == nil {
+ if orcObject.Status == nil || orcObject.Status.ID == nil {
return metav1.ConditionFalse, nil
} else {
return metav1.ConditionUnknown, nil
@@ -95,7 +95,10 @@ func (imageStatusWriter) ApplyResourceStatus(log logr.Logger, osResource *osReso
func setDownloadingStatus(ctx context.Context, increment bool, message, reason string, downloadingStatus metav1.ConditionStatus, orcObject orcObjectPT, k8sClient client.Client) error {
status := orcapplyconfigv1alpha1.ImageStatus()
- downloadAttempts := ptr.Deref(orcObject.Status.DownloadAttempts, 0)
+ var downloadAttempts int32
+ if orcObject.Status != nil {
+ downloadAttempts = ptr.Deref(orcObject.Status.DownloadAttempts, 0)
+ }
if increment {
downloadAttempts += 1
}
diff --git a/internal/controllers/image/upload_test.go b/internal/controllers/image/upload_test.go
index cfdb2a5f5..7e26dc6e5 100644
--- a/internal/controllers/image/upload_test.go
+++ b/internal/controllers/image/upload_test.go
@@ -28,6 +28,7 @@ import (
. "github.com/onsi/gomega"
"go.uber.org/mock/gomock"
corev1 "k8s.io/api/core/v1"
+ "k8s.io/utils/ptr"
ctrl "sigs.k8s.io/controller-runtime"
orcv1alpha1 "github.com/k-orc/openstack-resource-controller/v2/api/v1alpha1"
@@ -183,7 +184,7 @@ var _ = Describe("Upload tests", Ordered, func() {
orcImage.Spec = orcv1alpha1.ImageSpec{
Resource: &orcv1alpha1.ImageResourceSpec{
Content: &orcv1alpha1.ImageContent{
- ContainerFormat: orcv1alpha1.ImageContainerFormatBare,
+ ContainerFormat: ptr.To(orcv1alpha1.ImageContainerFormatBare),
DiskFormat: orcv1alpha1.ImageDiskFormatRaw,
Download: &orcv1alpha1.ImageContentSourceDownload{
URL: "http://" + fileServeAddr + "/" + imageName,
diff --git a/internal/controllers/image/zz_generated.adapter.go b/internal/controllers/image/zz_generated.adapter.go
index fe096571b..ada2082a9 100644
--- a/internal/controllers/image/zz_generated.adapter.go
+++ b/internal/controllers/image/zz_generated.adapter.go
@@ -48,7 +48,10 @@ func (f adapterT) GetObject() orcObjectPT {
}
func (f adapterT) GetManagementPolicy() orcv1alpha1.ManagementPolicy {
- return f.Spec.ManagementPolicy
+ if f.Spec.ManagementPolicy == nil {
+ return ""
+ }
+ return *f.Spec.ManagementPolicy
}
func (f adapterT) GetManagedOptions() *orcv1alpha1.ManagedOptions {
@@ -56,6 +59,9 @@ func (f adapterT) GetManagedOptions() *orcv1alpha1.ManagedOptions {
}
func (f adapterT) GetStatusID() *string {
+ if f.Status == nil {
+ return nil
+ }
return f.Status.ID
}
diff --git a/internal/controllers/keypair/zz_generated.adapter.go b/internal/controllers/keypair/zz_generated.adapter.go
index d3b72644c..a6d42ef26 100644
--- a/internal/controllers/keypair/zz_generated.adapter.go
+++ b/internal/controllers/keypair/zz_generated.adapter.go
@@ -48,7 +48,10 @@ func (f adapterT) GetObject() orcObjectPT {
}
func (f adapterT) GetManagementPolicy() orcv1alpha1.ManagementPolicy {
- return f.Spec.ManagementPolicy
+ if f.Spec.ManagementPolicy == nil {
+ return ""
+ }
+ return *f.Spec.ManagementPolicy
}
func (f adapterT) GetManagedOptions() *orcv1alpha1.ManagedOptions {
@@ -56,6 +59,9 @@ func (f adapterT) GetManagedOptions() *orcv1alpha1.ManagedOptions {
}
func (f adapterT) GetStatusID() *string {
+ if f.Status == nil {
+ return nil
+ }
return f.Status.ID
}
diff --git a/internal/controllers/network/zz_generated.adapter.go b/internal/controllers/network/zz_generated.adapter.go
index 771518735..8133f2845 100644
--- a/internal/controllers/network/zz_generated.adapter.go
+++ b/internal/controllers/network/zz_generated.adapter.go
@@ -48,7 +48,10 @@ func (f adapterT) GetObject() orcObjectPT {
}
func (f adapterT) GetManagementPolicy() orcv1alpha1.ManagementPolicy {
- return f.Spec.ManagementPolicy
+ if f.Spec.ManagementPolicy == nil {
+ return ""
+ }
+ return *f.Spec.ManagementPolicy
}
func (f adapterT) GetManagedOptions() *orcv1alpha1.ManagedOptions {
@@ -56,6 +59,9 @@ func (f adapterT) GetManagedOptions() *orcv1alpha1.ManagedOptions {
}
func (f adapterT) GetStatusID() *string {
+ if f.Status == nil {
+ return nil
+ }
return f.Status.ID
}
diff --git a/internal/controllers/port/actuator.go b/internal/controllers/port/actuator.go
index f4890c03a..99968749a 100644
--- a/internal/controllers/port/actuator.go
+++ b/internal/controllers/port/actuator.go
@@ -90,7 +90,7 @@ func (actuator portActuator) ListOSResourcesForImport(ctx context.Context, obj o
var reconcileStatus progress.ReconcileStatus
network, rs := dependency.FetchDependency(
- ctx, actuator.k8sClient, obj.Namespace, &filter.NetworkRef, "Network",
+ ctx, actuator.k8sClient, obj.Namespace, filter.NetworkRef, "Network",
func(dep *orcv1alpha1.Network) bool {
return orcv1alpha1.IsAvailable(dep) && dep.Status.ID != nil
},
@@ -119,7 +119,7 @@ func (actuator portActuator) ListOSResourcesForImport(ctx context.Context, obj o
NotTags: tags.Join(filter.NotTags),
NotTagsAny: tags.Join(filter.NotTagsAny),
AdminStateUp: filter.AdminStateUp,
- MACAddress: filter.MACAddress,
+ MACAddress: ptr.Deref(filter.MACAddress, ""),
}
return actuator.osClient.ListPort(ctx, listOpts), nil
@@ -176,11 +176,11 @@ func (actuator portActuator) CreateResource(ctx context.Context, obj *orcv1alpha
Description: string(ptr.Deref(resource.Description, "")),
ProjectID: projectID,
AdminStateUp: resource.AdminStateUp,
- MACAddress: resource.MACAddress,
+ MACAddress: ptr.Deref(resource.MACAddress, ""),
}
if len(resource.AllowedAddressPairs) > 0 {
- if resource.PortSecurity == orcv1alpha1.PortSecurityDisabled {
+ if ptr.Deref(resource.PortSecurity, orcv1alpha1.PortSecurityInherit) == orcv1alpha1.PortSecurityDisabled {
return nil, progress.WrapError(
orcerrors.Terminal(orcv1alpha1.ConditionReasonInvalidConfiguration, "AllowedAddressPairs cannot be set when PortSecurity is disabled"))
}
@@ -214,7 +214,7 @@ func (actuator portActuator) CreateResource(ctx context.Context, obj *orcv1alpha
// We explicitly disable default security groups by passing an empty
// value whenever the user does not specifies security groups
securityGroups := make([]string, len(resource.SecurityGroupRefs))
- if len(securityGroups) > 0 && resource.PortSecurity == orcv1alpha1.PortSecurityDisabled {
+ if len(securityGroups) > 0 && ptr.Deref(resource.PortSecurity, orcv1alpha1.PortSecurityInherit) == orcv1alpha1.PortSecurityDisabled {
return nil, progress.WrapError(
orcerrors.Terminal(orcv1alpha1.ConditionReasonInvalidConfiguration, "SecurityGroupRefs cannot be set when PortSecurity is disabled"))
}
@@ -231,14 +231,14 @@ func (actuator portActuator) CreateResource(ctx context.Context, obj *orcv1alpha
portsBindingOpts := portsbinding.CreateOptsExt{
CreateOptsBuilder: createOpts,
- VNICType: resource.VNICType,
- HostID: resource.HostID,
+ VNICType: ptr.Deref(resource.VNICType, ""),
+ HostID: ptr.Deref(resource.HostID, ""),
}
portSecurityOpts := portsecurity.PortCreateOptsExt{
CreateOptsBuilder: portsBindingOpts,
}
- switch resource.PortSecurity {
+ switch ptr.Deref(resource.PortSecurity, orcv1alpha1.PortSecurityInherit) {
case orcv1alpha1.PortSecurityEnabled:
portSecurityOpts.PortSecurityEnabled = ptr.To(true)
case orcv1alpha1.PortSecurityDisabled:
@@ -247,7 +247,7 @@ func (actuator portActuator) CreateResource(ctx context.Context, obj *orcv1alpha
// do nothing
default:
return nil, progress.WrapError(
- orcerrors.Terminal(orcv1alpha1.ConditionReasonInvalidConfiguration, fmt.Sprintf("Invalid value %s", resource.PortSecurity)))
+ orcerrors.Terminal(orcv1alpha1.ConditionReasonInvalidConfiguration, fmt.Sprintf("Invalid value %s", ptr.Deref(resource.PortSecurity, ""))))
}
osResource, err := actuator.osClient.CreatePort(ctx, &portSecurityOpts)
@@ -297,11 +297,11 @@ func (actuator portActuator) checkAttachedServer(ctx context.Context, obj orcObj
server := &serverList.Items[i]
if server.Status.ID != nil && *server.Status.ID == osResource.DeviceID {
// Check if server is in BUILD status
- if server.Status.Resource != nil && server.Status.Resource.Status == "BUILD" {
+ if server.Status.Resource != nil && ptr.Deref(server.Status.Resource.Status, "") == "BUILD" {
log.V(logging.Verbose).Info("Port is attached to server in BUILD status, waiting",
"port", obj.Name,
"server", server.Name,
- "serverStatus", server.Status.Resource.Status)
+ "serverStatus", ptr.Deref(server.Status.Resource.Status, ""))
return progress.NewReconcileStatus().WaitingOnOpenStack(progress.WaitingOnReady, serverBuildPollingPeriod)
}
// Server found and not in BUILD status, continue reconciliation
@@ -475,20 +475,20 @@ func handleSecurityGroupRefsUpdate(updateOpts *ports.UpdateOpts, resource *resou
}
func handlePortBindingUpdate(updateOpts ports.UpdateOptsBuilder, resource *resourceSpecT, osResource *osResourceT) ports.UpdateOptsBuilder {
- if resource.VNICType != "" {
- if resource.VNICType != osResource.VNICType {
+ if resource.VNICType != nil && *resource.VNICType != "" {
+ if *resource.VNICType != osResource.VNICType {
updateOpts = &portsbinding.UpdateOptsExt{
UpdateOptsBuilder: updateOpts,
- VNICType: resource.VNICType,
+ VNICType: *resource.VNICType,
}
}
}
- if resource.HostID != "" {
- if resource.HostID != osResource.HostID {
+ if resource.HostID != nil && *resource.HostID != "" {
+ if *resource.HostID != osResource.HostID {
updateOpts = &portsbinding.UpdateOptsExt{
UpdateOptsBuilder: updateOpts,
- HostID: &resource.HostID,
+ HostID: resource.HostID,
}
}
}
@@ -500,7 +500,7 @@ func handlePortSecurityUpdate(updateOpts ports.UpdateOptsBuilder, resource *reso
var desiredState *bool
- switch resource.PortSecurity {
+ switch ptr.Deref(resource.PortSecurity, orcv1alpha1.PortSecurityInherit) {
case orcv1alpha1.PortSecurityInherit:
return updateOpts
case orcv1alpha1.PortSecurityEnabled:
diff --git a/internal/controllers/port/actuator_test.go b/internal/controllers/port/actuator_test.go
index 81a2a7cc6..807d2ffc4 100644
--- a/internal/controllers/port/actuator_test.go
+++ b/internal/controllers/port/actuator_test.go
@@ -227,7 +227,7 @@ func TestHandleAllowedAddressPairsUpdate(t *testing.T) {
func makeSecGroupWithID(id string) *orcv1alpha1.SecurityGroup {
return &orcv1alpha1.SecurityGroup{
- Status: orcv1alpha1.SecurityGroupStatus{
+ Status: &orcv1alpha1.SecurityGroupStatus{
ID: &id,
},
}
@@ -339,15 +339,16 @@ func TestHandleSecurityGroupRefsUpdate(t *testing.T) {
func TestHandlePortBindingUpdate(t *testing.T) {
testCases := []struct {
name string
- newValue string
+ newValue *string
existingValue string
expectChange bool
}{
- {name: "Identical", newValue: "normal", existingValue: "normal", expectChange: false},
- {name: "Different", newValue: "direct", existingValue: "normal", expectChange: true},
- {name: "Updating to empty string", newValue: "", existingValue: "normal", expectChange: false},
- {name: "Updating from empty string", newValue: "normal", existingValue: "", expectChange: true},
- {name: "Both are empty strings", newValue: "", existingValue: "", expectChange: false},
+ {name: "Identical", newValue: ptr.To("normal"), existingValue: "normal", expectChange: false},
+ {name: "Different", newValue: ptr.To("direct"), existingValue: "normal", expectChange: true},
+ {name: "Updating to empty string", newValue: ptr.To(""), existingValue: "normal", expectChange: false},
+ {name: "Updating from empty string", newValue: ptr.To("normal"), existingValue: "", expectChange: true},
+ {name: "Both are empty strings", newValue: ptr.To(""), existingValue: "", expectChange: false},
+ {name: "Nil value", newValue: nil, existingValue: "normal", expectChange: false},
}
for _, tt := range testCases {
@@ -372,21 +373,21 @@ func TestHandlePortBindingUpdate(t *testing.T) {
func TestHandlePortSecurityUpdate(t *testing.T) {
testCases := []struct {
name string
- newValue orcv1alpha1.PortSecurityState
+ newValue *orcv1alpha1.PortSecurityState
existingValue bool
expectChange bool
}{
- {name: "Enabled when already enabled", newValue: orcv1alpha1.PortSecurityEnabled, existingValue: true, expectChange: false},
- {name: "Enabled when was disabled", newValue: orcv1alpha1.PortSecurityEnabled, existingValue: false, expectChange: true},
+ {name: "Enabled when already enabled", newValue: ptr.To(orcv1alpha1.PortSecurityEnabled), existingValue: true, expectChange: false},
+ {name: "Enabled when was disabled", newValue: ptr.To(orcv1alpha1.PortSecurityEnabled), existingValue: false, expectChange: true},
- {name: "Disabled when already disabled", newValue: orcv1alpha1.PortSecurityDisabled, existingValue: false, expectChange: false},
- {name: "Disabled when was enabled", newValue: orcv1alpha1.PortSecurityDisabled, existingValue: true, expectChange: true},
+ {name: "Disabled when already disabled", newValue: ptr.To(orcv1alpha1.PortSecurityDisabled), existingValue: false, expectChange: false},
+ {name: "Disabled when was enabled", newValue: ptr.To(orcv1alpha1.PortSecurityDisabled), existingValue: true, expectChange: true},
- {name: "Inherit when was enabled", newValue: orcv1alpha1.PortSecurityInherit, existingValue: true, expectChange: false},
- {name: "Inherit when was disabled", newValue: orcv1alpha1.PortSecurityInherit, existingValue: false, expectChange: false},
+ {name: "Inherit when was enabled", newValue: ptr.To(orcv1alpha1.PortSecurityInherit), existingValue: true, expectChange: false},
+ {name: "Inherit when was disabled", newValue: ptr.To(orcv1alpha1.PortSecurityInherit), existingValue: false, expectChange: false},
- {name: "Default (empty string) when was enabled", newValue: "", existingValue: true, expectChange: false},
- {name: "Invalid string when was enabled", newValue: "foo", existingValue: true, expectChange: false},
+ {name: "Default (nil) when was enabled", newValue: nil, existingValue: true, expectChange: false},
+ {name: "Invalid string when was enabled", newValue: ptr.To(orcv1alpha1.PortSecurityState("foo")), existingValue: true, expectChange: false},
}
for _, tt := range testCases {
diff --git a/internal/controllers/port/controller.go b/internal/controllers/port/controller.go
index 6191d84b3..5858df9b1 100644
--- a/internal/controllers/port/controller.go
+++ b/internal/controllers/port/controller.go
@@ -68,10 +68,10 @@ var (
"spec.import.filter.networkRef",
func(port *orcv1alpha1.Port) []string {
resource := port.Spec.Import
- if resource == nil || resource.Filter == nil {
+ if resource == nil || resource.Filter == nil || resource.Filter.NetworkRef == nil {
return nil
}
- return []string{string(resource.Filter.NetworkRef)}
+ return []string{string(*resource.Filter.NetworkRef)}
},
)
@@ -160,8 +160,8 @@ func serverToPortMapFunc(ctx context.Context, k8sClient client.Client) handler.M
serverPortIDs := make(map[string]struct{})
for i := range serverStatus.Interfaces {
portID := serverStatus.Interfaces[i].PortID
- if portID != "" {
- serverPortIDs[portID] = struct{}{}
+ if portID != nil && *portID != "" {
+ serverPortIDs[*portID] = struct{}{}
}
}
@@ -191,7 +191,7 @@ func serverToPortMapFunc(ctx context.Context, k8sClient client.Client) handler.M
// Port ID is in server's status, but port doesn't have attachment info for this server
if _, portInServerStatus := serverPortIDs[portID]; portInServerStatus {
- if portStatus.DeviceID != serverID {
+ if ptr.Deref(portStatus.DeviceID, "") != serverID {
shouldReconcile = true
reason = "Server attached port but port status not updated"
log.V(logging.Verbose).Info("port needs reconciliation: listed in server status but deviceID not set",
@@ -202,7 +202,7 @@ func serverToPortMapFunc(ctx context.Context, k8sClient client.Client) handler.M
// Port has attachment info for this server, but server no longer lists this port
if !shouldReconcile {
- if portStatus.DeviceID == serverID {
+ if ptr.Deref(portStatus.DeviceID, "") == serverID {
// Port thinks it's attached to this server
if _, stillAttached := serverPortIDs[portID]; !stillAttached {
shouldReconcile = true
diff --git a/internal/controllers/port/zz_generated.adapter.go b/internal/controllers/port/zz_generated.adapter.go
index 1cafbd343..7eee6a2d7 100644
--- a/internal/controllers/port/zz_generated.adapter.go
+++ b/internal/controllers/port/zz_generated.adapter.go
@@ -48,7 +48,10 @@ func (f adapterT) GetObject() orcObjectPT {
}
func (f adapterT) GetManagementPolicy() orcv1alpha1.ManagementPolicy {
- return f.Spec.ManagementPolicy
+ if f.Spec.ManagementPolicy == nil {
+ return ""
+ }
+ return *f.Spec.ManagementPolicy
}
func (f adapterT) GetManagedOptions() *orcv1alpha1.ManagedOptions {
@@ -56,6 +59,9 @@ func (f adapterT) GetManagedOptions() *orcv1alpha1.ManagedOptions {
}
func (f adapterT) GetStatusID() *string {
+ if f.Status == nil {
+ return nil
+ }
return f.Status.ID
}
diff --git a/internal/controllers/project/zz_generated.adapter.go b/internal/controllers/project/zz_generated.adapter.go
index fea8a21c1..023b65a3a 100644
--- a/internal/controllers/project/zz_generated.adapter.go
+++ b/internal/controllers/project/zz_generated.adapter.go
@@ -48,7 +48,10 @@ func (f adapterT) GetObject() orcObjectPT {
}
func (f adapterT) GetManagementPolicy() orcv1alpha1.ManagementPolicy {
- return f.Spec.ManagementPolicy
+ if f.Spec.ManagementPolicy == nil {
+ return ""
+ }
+ return *f.Spec.ManagementPolicy
}
func (f adapterT) GetManagedOptions() *orcv1alpha1.ManagedOptions {
@@ -56,6 +59,9 @@ func (f adapterT) GetManagedOptions() *orcv1alpha1.ManagedOptions {
}
func (f adapterT) GetStatusID() *string {
+ if f.Status == nil {
+ return nil
+ }
return f.Status.ID
}
diff --git a/internal/controllers/role/zz_generated.adapter.go b/internal/controllers/role/zz_generated.adapter.go
index 5587b85d4..c5d2ca05c 100644
--- a/internal/controllers/role/zz_generated.adapter.go
+++ b/internal/controllers/role/zz_generated.adapter.go
@@ -48,7 +48,10 @@ func (f adapterT) GetObject() orcObjectPT {
}
func (f adapterT) GetManagementPolicy() orcv1alpha1.ManagementPolicy {
- return f.Spec.ManagementPolicy
+ if f.Spec.ManagementPolicy == nil {
+ return ""
+ }
+ return *f.Spec.ManagementPolicy
}
func (f adapterT) GetManagedOptions() *orcv1alpha1.ManagedOptions {
@@ -56,6 +59,9 @@ func (f adapterT) GetManagedOptions() *orcv1alpha1.ManagedOptions {
}
func (f adapterT) GetStatusID() *string {
+ if f.Status == nil {
+ return nil
+ }
return f.Status.ID
}
diff --git a/internal/controllers/router/zz_generated.adapter.go b/internal/controllers/router/zz_generated.adapter.go
index ccab08587..eb015175c 100644
--- a/internal/controllers/router/zz_generated.adapter.go
+++ b/internal/controllers/router/zz_generated.adapter.go
@@ -48,7 +48,10 @@ func (f adapterT) GetObject() orcObjectPT {
}
func (f adapterT) GetManagementPolicy() orcv1alpha1.ManagementPolicy {
- return f.Spec.ManagementPolicy
+ if f.Spec.ManagementPolicy == nil {
+ return ""
+ }
+ return *f.Spec.ManagementPolicy
}
func (f adapterT) GetManagedOptions() *orcv1alpha1.ManagedOptions {
@@ -56,6 +59,9 @@ func (f adapterT) GetManagedOptions() *orcv1alpha1.ManagedOptions {
}
func (f adapterT) GetStatusID() *string {
+ if f.Status == nil {
+ return nil
+ }
return f.Status.ID
}
diff --git a/internal/controllers/securitygroup/zz_generated.adapter.go b/internal/controllers/securitygroup/zz_generated.adapter.go
index 1b055740c..4843290d8 100644
--- a/internal/controllers/securitygroup/zz_generated.adapter.go
+++ b/internal/controllers/securitygroup/zz_generated.adapter.go
@@ -48,7 +48,10 @@ func (f adapterT) GetObject() orcObjectPT {
}
func (f adapterT) GetManagementPolicy() orcv1alpha1.ManagementPolicy {
- return f.Spec.ManagementPolicy
+ if f.Spec.ManagementPolicy == nil {
+ return ""
+ }
+ return *f.Spec.ManagementPolicy
}
func (f adapterT) GetManagedOptions() *orcv1alpha1.ManagedOptions {
@@ -56,6 +59,9 @@ func (f adapterT) GetManagedOptions() *orcv1alpha1.ManagedOptions {
}
func (f adapterT) GetStatusID() *string {
+ if f.Status == nil {
+ return nil
+ }
return f.Status.ID
}
diff --git a/internal/controllers/server/actuator.go b/internal/controllers/server/actuator.go
index acadd0be1..ef5210f4e 100644
--- a/internal/controllers/server/actuator.go
+++ b/internal/controllers/server/actuator.go
@@ -139,7 +139,7 @@ func (actuator serverActuator) ListOSResourcesForImport(ctx context.Context, obj
TagsAny: tags.Join(filter.TagsAny),
NotTags: tags.Join(filter.NotTags),
NotTagsAny: tags.Join(filter.NotTagsAny),
- AvailabilityZone: filter.AvailabilityZone,
+ AvailabilityZone: ptr.Deref(filter.AvailabilityZone, ""),
}
if filter.Name != nil {
@@ -262,7 +262,7 @@ func (actuator serverActuator) CreateResource(ctx context.Context, obj *orcv1alp
UserData: userData,
Tags: tags,
Metadata: metadata,
- AvailabilityZone: resource.AvailabilityZone,
+ AvailabilityZone: ptr.Deref(resource.AvailabilityZone, ""),
ConfigDrive: resource.ConfigDrive,
}
@@ -273,7 +273,7 @@ func (actuator serverActuator) CreateResource(ctx context.Context, obj *orcv1alp
if resource.KeypairRef != nil {
createOpts = keypairs.CreateOptsExt{
CreateOptsBuilder: serverCreateOpts,
- KeyName: keypair.Status.Resource.Name,
+ KeyName: ptr.Deref(keypair.Status.Resource.Name, ""),
}
}
diff --git a/internal/controllers/server/zz_generated.adapter.go b/internal/controllers/server/zz_generated.adapter.go
index 1b51cde39..44cd01d18 100644
--- a/internal/controllers/server/zz_generated.adapter.go
+++ b/internal/controllers/server/zz_generated.adapter.go
@@ -48,7 +48,10 @@ func (f adapterT) GetObject() orcObjectPT {
}
func (f adapterT) GetManagementPolicy() orcv1alpha1.ManagementPolicy {
- return f.Spec.ManagementPolicy
+ if f.Spec.ManagementPolicy == nil {
+ return ""
+ }
+ return *f.Spec.ManagementPolicy
}
func (f adapterT) GetManagedOptions() *orcv1alpha1.ManagedOptions {
@@ -56,6 +59,9 @@ func (f adapterT) GetManagedOptions() *orcv1alpha1.ManagedOptions {
}
func (f adapterT) GetStatusID() *string {
+ if f.Status == nil {
+ return nil
+ }
return f.Status.ID
}
diff --git a/internal/controllers/servergroup/actuator.go b/internal/controllers/servergroup/actuator.go
index 78ab5499f..5b0c4abb2 100644
--- a/internal/controllers/servergroup/actuator.go
+++ b/internal/controllers/servergroup/actuator.go
@@ -110,9 +110,9 @@ func (actuator servergroupActuator) CreateResource(ctx context.Context, obj orcO
}
var rules *servergroups.Rules
- if resource.Rules != nil {
+ if resource.Rules != nil && resource.Rules.MaxServerPerHost != nil {
rules = &servergroups.Rules{
- MaxServerPerHost: int(resource.Rules.MaxServerPerHost),
+ MaxServerPerHost: int(*resource.Rules.MaxServerPerHost),
}
}
diff --git a/internal/controllers/servergroup/zz_generated.adapter.go b/internal/controllers/servergroup/zz_generated.adapter.go
index dc272f462..18527eda3 100644
--- a/internal/controllers/servergroup/zz_generated.adapter.go
+++ b/internal/controllers/servergroup/zz_generated.adapter.go
@@ -48,7 +48,10 @@ func (f adapterT) GetObject() orcObjectPT {
}
func (f adapterT) GetManagementPolicy() orcv1alpha1.ManagementPolicy {
- return f.Spec.ManagementPolicy
+ if f.Spec.ManagementPolicy == nil {
+ return ""
+ }
+ return *f.Spec.ManagementPolicy
}
func (f adapterT) GetManagedOptions() *orcv1alpha1.ManagedOptions {
@@ -56,6 +59,9 @@ func (f adapterT) GetManagedOptions() *orcv1alpha1.ManagedOptions {
}
func (f adapterT) GetStatusID() *string {
+ if f.Status == nil {
+ return nil
+ }
return f.Status.ID
}
diff --git a/internal/controllers/service/zz_generated.adapter.go b/internal/controllers/service/zz_generated.adapter.go
index f70ba04d9..56cc3f3b9 100644
--- a/internal/controllers/service/zz_generated.adapter.go
+++ b/internal/controllers/service/zz_generated.adapter.go
@@ -48,7 +48,10 @@ func (f adapterT) GetObject() orcObjectPT {
}
func (f adapterT) GetManagementPolicy() orcv1alpha1.ManagementPolicy {
- return f.Spec.ManagementPolicy
+ if f.Spec.ManagementPolicy == nil {
+ return ""
+ }
+ return *f.Spec.ManagementPolicy
}
func (f adapterT) GetManagedOptions() *orcv1alpha1.ManagedOptions {
@@ -56,6 +59,9 @@ func (f adapterT) GetManagedOptions() *orcv1alpha1.ManagedOptions {
}
func (f adapterT) GetStatusID() *string {
+ if f.Status == nil {
+ return nil
+ }
return f.Status.ID
}
diff --git a/internal/controllers/subnet/actuator.go b/internal/controllers/subnet/actuator.go
index f3e0e8dd4..7fc9dc467 100644
--- a/internal/controllers/subnet/actuator.go
+++ b/internal/controllers/subnet/actuator.go
@@ -88,7 +88,7 @@ func (actuator subnetActuator) ListOSResourcesForImport(ctx context.Context, obj
var reconcileStatus progress.ReconcileStatus
network, rs := dependency.FetchDependency(
- ctx, actuator.k8sClient, obj.Namespace, &filter.NetworkRef, "Network",
+ ctx, actuator.k8sClient, obj.Namespace, filter.NetworkRef, "Network",
func(dep *orcv1alpha1.Network) bool {
return orcv1alpha1.IsAvailable(dep) && dep.Status.ID != nil
},
diff --git a/internal/controllers/subnet/controller.go b/internal/controllers/subnet/controller.go
index ea8eb33f0..745a5ff9e 100644
--- a/internal/controllers/subnet/controller.go
+++ b/internal/controllers/subnet/controller.go
@@ -70,10 +70,10 @@ var (
"spec.import.filter.networkRef",
func(subnet *orcv1alpha1.Subnet) []string {
resource := subnet.Spec.Import
- if resource == nil || resource.Filter == nil {
+ if resource == nil || resource.Filter == nil || resource.Filter.NetworkRef == nil {
return nil
}
- return []string{string(resource.Filter.NetworkRef)}
+ return []string{string(*resource.Filter.NetworkRef)}
},
)
diff --git a/internal/controllers/subnet/zz_generated.adapter.go b/internal/controllers/subnet/zz_generated.adapter.go
index 34c84d5b8..9968429ed 100644
--- a/internal/controllers/subnet/zz_generated.adapter.go
+++ b/internal/controllers/subnet/zz_generated.adapter.go
@@ -48,7 +48,10 @@ func (f adapterT) GetObject() orcObjectPT {
}
func (f adapterT) GetManagementPolicy() orcv1alpha1.ManagementPolicy {
- return f.Spec.ManagementPolicy
+ if f.Spec.ManagementPolicy == nil {
+ return ""
+ }
+ return *f.Spec.ManagementPolicy
}
func (f adapterT) GetManagedOptions() *orcv1alpha1.ManagedOptions {
@@ -56,6 +59,9 @@ func (f adapterT) GetManagedOptions() *orcv1alpha1.ManagedOptions {
}
func (f adapterT) GetStatusID() *string {
+ if f.Status == nil {
+ return nil
+ }
return f.Status.ID
}
diff --git a/internal/controllers/volume/actuator.go b/internal/controllers/volume/actuator.go
index 2fbde2b44..f1a07d197 100644
--- a/internal/controllers/volume/actuator.go
+++ b/internal/controllers/volume/actuator.go
@@ -91,9 +91,9 @@ func (actuator volumeActuator) ListOSResourcesForAdoption(ctx context.Context, o
filters = append(filters, func(f *volumes.Volume) bool {
return f.Size == int(resourceSpec.Size)
})
- if resourceSpec.AvailabilityZone != "" {
+ if resourceSpec.AvailabilityZone != nil {
filters = append(filters, func(f *volumes.Volume) bool {
- return f.AvailabilityZone == resourceSpec.AvailabilityZone
+ return f.AvailabilityZone == *resourceSpec.AvailabilityZone
})
}
@@ -125,9 +125,9 @@ func (actuator volumeActuator) ListOSResourcesForImport(ctx context.Context, obj
return f.Size == int(*filter.Size)
})
}
- if filter.AvailabilityZone != "" {
+ if filter.AvailabilityZone != nil {
filters = append(filters, func(f *volumes.Volume) bool {
- return f.AvailabilityZone == filter.AvailabilityZone
+ return f.AvailabilityZone == *filter.AvailabilityZone
})
}
@@ -192,7 +192,7 @@ func (actuator volumeActuator) CreateResource(ctx context.Context, obj orcObject
Size: int(resource.Size),
Metadata: metadata,
VolumeType: volumetypeID,
- AvailabilityZone: resource.AvailabilityZone,
+ AvailabilityZone: ptr.Deref(resource.AvailabilityZone, ""),
ImageID: imageID,
}
diff --git a/internal/controllers/volume/controller.go b/internal/controllers/volume/controller.go
index fb64c2c75..33bf6368c 100644
--- a/internal/controllers/volume/controller.go
+++ b/internal/controllers/volume/controller.go
@@ -118,8 +118,8 @@ func serverToVolumeMapFunc(ctx context.Context, k8sClient client.Client) handler
serverVolumeIDs := make(map[string]struct{})
for i := range serverStatus.Volumes {
volumeID := serverStatus.Volumes[i].ID
- if volumeID != "" {
- serverVolumeIDs[volumeID] = struct{}{}
+ if volumeID != nil && *volumeID != "" {
+ serverVolumeIDs[*volumeID] = struct{}{}
}
}
@@ -151,7 +151,7 @@ func serverToVolumeMapFunc(ctx context.Context, k8sClient client.Client) handler
if _, volumeInServerStatus := serverVolumeIDs[volumeID]; volumeInServerStatus {
hasAttachment := false
for j := range volumeStatus.Attachments {
- if volumeStatus.Attachments[j].ServerID == serverID {
+ if ptr.Deref(volumeStatus.Attachments[j].ServerID, "") == serverID {
hasAttachment = true
break
}
@@ -168,7 +168,7 @@ func serverToVolumeMapFunc(ctx context.Context, k8sClient client.Client) handler
// Volume has attachment info for this server, but server no longer lists this volume
if !shouldReconcile {
for j := range volumeStatus.Attachments {
- if volumeStatus.Attachments[j].ServerID == serverID {
+ if ptr.Deref(volumeStatus.Attachments[j].ServerID, "") == serverID {
// Volume thinks it's attached to this server
if _, stillAttached := serverVolumeIDs[volumeID]; !stillAttached {
shouldReconcile = true
diff --git a/internal/controllers/volume/zz_generated.adapter.go b/internal/controllers/volume/zz_generated.adapter.go
index 956b64693..0a6d2a5eb 100644
--- a/internal/controllers/volume/zz_generated.adapter.go
+++ b/internal/controllers/volume/zz_generated.adapter.go
@@ -48,7 +48,10 @@ func (f adapterT) GetObject() orcObjectPT {
}
func (f adapterT) GetManagementPolicy() orcv1alpha1.ManagementPolicy {
- return f.Spec.ManagementPolicy
+ if f.Spec.ManagementPolicy == nil {
+ return ""
+ }
+ return *f.Spec.ManagementPolicy
}
func (f adapterT) GetManagedOptions() *orcv1alpha1.ManagedOptions {
@@ -56,6 +59,9 @@ func (f adapterT) GetManagedOptions() *orcv1alpha1.ManagedOptions {
}
func (f adapterT) GetStatusID() *string {
+ if f.Status == nil {
+ return nil
+ }
return f.Status.ID
}
diff --git a/internal/controllers/volumetype/zz_generated.adapter.go b/internal/controllers/volumetype/zz_generated.adapter.go
index 9f19fa751..cb30a1fab 100644
--- a/internal/controllers/volumetype/zz_generated.adapter.go
+++ b/internal/controllers/volumetype/zz_generated.adapter.go
@@ -48,7 +48,10 @@ func (f adapterT) GetObject() orcObjectPT {
}
func (f adapterT) GetManagementPolicy() orcv1alpha1.ManagementPolicy {
- return f.Spec.ManagementPolicy
+ if f.Spec.ManagementPolicy == nil {
+ return ""
+ }
+ return *f.Spec.ManagementPolicy
}
func (f adapterT) GetManagedOptions() *orcv1alpha1.ManagedOptions {
@@ -56,6 +59,9 @@ func (f adapterT) GetManagedOptions() *orcv1alpha1.ManagedOptions {
}
func (f adapterT) GetStatusID() *string {
+ if f.Status == nil {
+ return nil
+ }
return f.Status.ID
}
diff --git a/pkg/clients/applyconfiguration/internal/internal.go b/pkg/clients/applyconfiguration/internal/internal.go
index dfb83d47f..1e20cc900 100644
--- a/pkg/clients/applyconfiguration/internal/internal.go
+++ b/pkg/clients/applyconfiguration/internal/internal.go
@@ -113,7 +113,6 @@ var schemaYAML = typed.YAMLObject(`types:
- name: status
type:
namedType: com.github.k-orc.openstack-resource-controller.v2.api.v1alpha1.DomainStatus
- default: {}
- name: com.github.k-orc.openstack-resource-controller.v2.api.v1alpha1.DomainFilter
map:
fields:
@@ -233,7 +232,6 @@ var schemaYAML = typed.YAMLObject(`types:
- name: status
type:
namedType: com.github.k-orc.openstack-resource-controller.v2.api.v1alpha1.FlavorStatus
- default: {}
- name: com.github.k-orc.openstack-resource-controller.v2.api.v1alpha1.FlavorFilter
map:
fields:
@@ -369,7 +367,6 @@ var schemaYAML = typed.YAMLObject(`types:
- name: status
type:
namedType: com.github.k-orc.openstack-resource-controller.v2.api.v1alpha1.FloatingIPStatus
- default: {}
- name: com.github.k-orc.openstack-resource-controller.v2.api.v1alpha1.FloatingIPFilter
map:
fields:
@@ -555,7 +552,6 @@ var schemaYAML = typed.YAMLObject(`types:
- name: status
type:
namedType: com.github.k-orc.openstack-resource-controller.v2.api.v1alpha1.GroupStatus
- default: {}
- name: com.github.k-orc.openstack-resource-controller.v2.api.v1alpha1.GroupFilter
map:
fields:
@@ -681,7 +677,6 @@ var schemaYAML = typed.YAMLObject(`types:
- name: status
type:
namedType: com.github.k-orc.openstack-resource-controller.v2.api.v1alpha1.ImageStatus
- default: {}
- name: com.github.k-orc.openstack-resource-controller.v2.api.v1alpha1.ImageContent
map:
fields:
@@ -919,7 +914,6 @@ var schemaYAML = typed.YAMLObject(`types:
- name: status
type:
namedType: com.github.k-orc.openstack-resource-controller.v2.api.v1alpha1.KeyPairStatus
- default: {}
- name: com.github.k-orc.openstack-resource-controller.v2.api.v1alpha1.KeyPairFilter
map:
fields:
@@ -1024,7 +1018,6 @@ var schemaYAML = typed.YAMLObject(`types:
- name: status
type:
namedType: com.github.k-orc.openstack-resource-controller.v2.api.v1alpha1.NetworkStatus
- default: {}
- name: com.github.k-orc.openstack-resource-controller.v2.api.v1alpha1.NetworkFilter
map:
fields:
@@ -1234,7 +1227,6 @@ var schemaYAML = typed.YAMLObject(`types:
- name: status
type:
namedType: com.github.k-orc.openstack-resource-controller.v2.api.v1alpha1.PortStatus
- default: {}
- name: com.github.k-orc.openstack-resource-controller.v2.api.v1alpha1.PortFilter
map:
fields:
@@ -1253,7 +1245,6 @@ var schemaYAML = typed.YAMLObject(`types:
- name: networkRef
type:
scalar: string
- default: ""
- name: notTags
type:
list:
@@ -1307,11 +1298,9 @@ var schemaYAML = typed.YAMLObject(`types:
- name: max
type:
scalar: numeric
- default: 0
- name: min
type:
scalar: numeric
- default: 0
- name: com.github.k-orc.openstack-resource-controller.v2.api.v1alpha1.PortResourceSpec
map:
fields:
@@ -1497,7 +1486,6 @@ var schemaYAML = typed.YAMLObject(`types:
- name: status
type:
namedType: com.github.k-orc.openstack-resource-controller.v2.api.v1alpha1.ProjectStatus
- default: {}
- name: com.github.k-orc.openstack-resource-controller.v2.api.v1alpha1.ProjectFilter
map:
fields:
@@ -1641,7 +1629,6 @@ var schemaYAML = typed.YAMLObject(`types:
- name: status
type:
namedType: com.github.k-orc.openstack-resource-controller.v2.api.v1alpha1.RoleStatus
- default: {}
- name: com.github.k-orc.openstack-resource-controller.v2.api.v1alpha1.RoleFilter
map:
fields:
@@ -1740,7 +1727,6 @@ var schemaYAML = typed.YAMLObject(`types:
- name: status
type:
namedType: com.github.k-orc.openstack-resource-controller.v2.api.v1alpha1.RouterStatus
- default: {}
- name: com.github.k-orc.openstack-resource-controller.v2.api.v1alpha1.RouterFilter
map:
fields:
@@ -1806,7 +1792,6 @@ var schemaYAML = typed.YAMLObject(`types:
- name: status
type:
namedType: com.github.k-orc.openstack-resource-controller.v2.api.v1alpha1.RouterInterfaceStatus
- default: {}
- name: com.github.k-orc.openstack-resource-controller.v2.api.v1alpha1.RouterInterfaceSpec
map:
fields:
@@ -1961,7 +1946,6 @@ var schemaYAML = typed.YAMLObject(`types:
- name: status
type:
namedType: com.github.k-orc.openstack-resource-controller.v2.api.v1alpha1.SecurityGroupStatus
- default: {}
- name: com.github.k-orc.openstack-resource-controller.v2.api.v1alpha1.SecurityGroupFilter
map:
fields:
@@ -2174,7 +2158,6 @@ var schemaYAML = typed.YAMLObject(`types:
- name: status
type:
namedType: com.github.k-orc.openstack-resource-controller.v2.api.v1alpha1.ServerStatus
- default: {}
- name: com.github.k-orc.openstack-resource-controller.v2.api.v1alpha1.ServerFilter
map:
fields:
@@ -2228,7 +2211,6 @@ var schemaYAML = typed.YAMLObject(`types:
- name: status
type:
namedType: com.github.k-orc.openstack-resource-controller.v2.api.v1alpha1.ServerGroupStatus
- default: {}
- name: com.github.k-orc.openstack-resource-controller.v2.api.v1alpha1.ServerGroupFilter
map:
fields:
@@ -2558,7 +2540,6 @@ var schemaYAML = typed.YAMLObject(`types:
- name: status
type:
namedType: com.github.k-orc.openstack-resource-controller.v2.api.v1alpha1.ServiceStatus
- default: {}
- name: com.github.k-orc.openstack-resource-controller.v2.api.v1alpha1.ServiceFilter
map:
fields:
@@ -2663,7 +2644,6 @@ var schemaYAML = typed.YAMLObject(`types:
- name: status
type:
namedType: com.github.k-orc.openstack-resource-controller.v2.api.v1alpha1.SubnetStatus
- default: {}
- name: com.github.k-orc.openstack-resource-controller.v2.api.v1alpha1.SubnetFilter
map:
fields:
@@ -2688,7 +2668,6 @@ var schemaYAML = typed.YAMLObject(`types:
- name: networkRef
type:
scalar: string
- default: ""
- name: notTags
type:
list:
@@ -2929,7 +2908,6 @@ var schemaYAML = typed.YAMLObject(`types:
- name: status
type:
namedType: com.github.k-orc.openstack-resource-controller.v2.api.v1alpha1.VolumeStatus
- default: {}
- name: com.github.k-orc.openstack-resource-controller.v2.api.v1alpha1.VolumeAttachmentStatus
map:
fields:
@@ -2939,15 +2917,12 @@ var schemaYAML = typed.YAMLObject(`types:
- name: attachmentID
type:
scalar: string
- default: ""
- name: device
type:
scalar: string
- default: ""
- name: serverID
type:
scalar: string
- default: ""
- name: com.github.k-orc.openstack-resource-controller.v2.api.v1alpha1.VolumeFilter
map:
fields:
@@ -3150,7 +3125,6 @@ var schemaYAML = typed.YAMLObject(`types:
- name: status
type:
namedType: com.github.k-orc.openstack-resource-controller.v2.api.v1alpha1.VolumeTypeStatus
- default: {}
- name: com.github.k-orc.openstack-resource-controller.v2.api.v1alpha1.VolumeTypeExtraSpec
map:
fields:
diff --git a/pkg/predicates/attachment.go b/pkg/predicates/attachment.go
index 50911416b..35418d756 100644
--- a/pkg/predicates/attachment.go
+++ b/pkg/predicates/attachment.go
@@ -101,14 +101,14 @@ func newServerResourceChanged(
// where the status.resource.volumes field changed.
func NewServerVolumesChanged(log logr.Logger) predicate.Predicate {
getVolumeIDs := func(server *orcv1alpha1.Server) []string {
- if server.Status.Resource == nil {
+ if server.Status == nil || server.Status.Resource == nil {
return nil
}
volumeIDs := make([]string, 0, len(server.Status.Resource.Volumes))
for i := range server.Status.Resource.Volumes {
volumeID := server.Status.Resource.Volumes[i].ID
- if volumeID != "" {
- volumeIDs = append(volumeIDs, volumeID)
+ if volumeID != nil && *volumeID != "" {
+ volumeIDs = append(volumeIDs, *volumeID)
}
}
return volumeIDs
@@ -121,14 +121,14 @@ func NewServerVolumesChanged(log logr.Logger) predicate.Predicate {
// where the status.resource.interfaces field changed.
func NewServerInterfacesChanged(log logr.Logger) predicate.Predicate {
getPortIDs := func(server *orcv1alpha1.Server) []string {
- if server.Status.Resource == nil {
+ if server.Status == nil || server.Status.Resource == nil {
return nil
}
portIDs := make([]string, 0, len(server.Status.Resource.Interfaces))
for i := range server.Status.Resource.Interfaces {
portID := server.Status.Resource.Interfaces[i].PortID
- if portID != "" {
- portIDs = append(portIDs, portID)
+ if portID != nil && *portID != "" {
+ portIDs = append(portIDs, *portID)
}
}
return portIDs
diff --git a/test/apivalidations/flavor_test.go b/test/apivalidations/flavor_test.go
index 322050abe..295880c57 100644
--- a/test/apivalidations/flavor_test.go
+++ b/test/apivalidations/flavor_test.go
@@ -72,7 +72,7 @@ var _ = Describe("ORC Flavor API validations", func() {
patch := baseFlavorPatch(flavor)
patch.Spec.WithResource(applyconfigv1alpha1.FlavorResourceSpec().WithRAM(1).WithVcpus(1).WithDisk(1))
Expect(applyObj(ctx, flavor, patch)).To(Succeed())
- Expect(flavor.Spec.ManagementPolicy).To(Equal(orcv1alpha1.ManagementPolicyManaged))
+ Expect(flavor.Spec.ManagementPolicy).To(HaveValue(Equal(orcv1alpha1.ManagementPolicyManaged)))
})
It("should be immutable", func(ctx context.Context) {
@@ -128,7 +128,7 @@ var _ = Describe("ORC Flavor API validations", func() {
}
Expect(k8sClient.Create(ctx, flavor)).To(Succeed())
- Expect(flavor.Spec.ManagementPolicy).To(Equal(orcv1alpha1.ManagementPolicyManaged))
+ Expect(flavor.Spec.ManagementPolicy).To(HaveValue(Equal(orcv1alpha1.ManagementPolicyManaged)))
})
It("should require import for unmanaged", func(ctx context.Context) {
@@ -229,6 +229,6 @@ var _ = Describe("ORC Flavor API validations", func() {
WithManagedOptions(applyconfigv1alpha1.ManagedOptions().
WithOnDelete(orcv1alpha1.OnDeleteDetach))
Expect(applyObj(ctx, flavor, patch)).To(Succeed())
- Expect(flavor.Spec.ManagedOptions.OnDelete).To(Equal(orcv1alpha1.OnDelete("detach")))
+ Expect(flavor.Spec.ManagedOptions.OnDelete).To(HaveValue(Equal(orcv1alpha1.OnDelete("detach"))))
})
})
diff --git a/test/apivalidations/image_test.go b/test/apivalidations/image_test.go
index e9159b580..a09bd3f24 100644
--- a/test/apivalidations/image_test.go
+++ b/test/apivalidations/image_test.go
@@ -131,7 +131,7 @@ var _ = Describe("ORC Image API validations", func() {
}
Expect(k8sClient.Create(ctx, image)).To(Succeed())
- Expect(image.Spec.ManagementPolicy).To(Equal(orcv1alpha1.ManagementPolicyManaged))
+ Expect(image.Spec.ManagementPolicy).To(HaveValue(Equal(orcv1alpha1.ManagementPolicyManaged)))
})
It("should require import for unmanaged", func(ctx context.Context) {
@@ -227,7 +227,7 @@ var _ = Describe("ORC Image API validations", func() {
WithManagedOptions(applyconfigv1alpha1.ManagedOptions().
WithOnDelete(orcv1alpha1.OnDeleteDetach))
Expect(applyObj(ctx, image, patch)).To(Succeed())
- Expect(image.Spec.ManagedOptions.OnDelete).To(Equal(orcv1alpha1.OnDelete("detach")))
+ Expect(image.Spec.ManagedOptions.OnDelete).To(HaveValue(Equal(orcv1alpha1.OnDelete("detach"))))
})
DescribeTable("should permit containerFormat",
diff --git a/test/apivalidations/network_test.go b/test/apivalidations/network_test.go
index 58cfb0ebb..050e22b7d 100644
--- a/test/apivalidations/network_test.go
+++ b/test/apivalidations/network_test.go
@@ -57,7 +57,7 @@ var _ = Describe("ORC Network API validations", func() {
patch := baseNetworkPatch(network)
patch.Spec.WithResource(applyconfigv1alpha1.NetworkResourceSpec())
Expect(applyObj(ctx, network, patch)).To(Succeed())
- Expect(network.Spec.ManagementPolicy).To(Equal(orcv1alpha1.ManagementPolicyManaged))
+ Expect(network.Spec.ManagementPolicy).To(HaveValue(Equal(orcv1alpha1.ManagementPolicyManaged)))
})
DescribeTable("should permit valid DNS domain",
diff --git a/test/apivalidations/port_test.go b/test/apivalidations/port_test.go
index 3c36dea83..2e1fbfd37 100644
--- a/test/apivalidations/port_test.go
+++ b/test/apivalidations/port_test.go
@@ -59,7 +59,7 @@ var _ = Describe("ORC Port API validations", func() {
patch := basePortPatch(port)
patch.Spec.WithResource(applyconfigv1alpha1.PortResourceSpec().WithNetworkRef(networkName))
Expect(applyObj(ctx, port, patch)).To(Succeed())
- Expect(port.Spec.ManagementPolicy).To(Equal(orcv1alpha1.ManagementPolicyManaged))
+ Expect(port.Spec.ManagementPolicy).To(HaveValue(Equal(orcv1alpha1.ManagementPolicyManaged)))
})
It("should allow to create a port with securityGroupRefs when portSecurity is enabled", func(ctx context.Context) {
@@ -71,7 +71,7 @@ var _ = Describe("ORC Port API validations", func() {
WithPortSecurity(orcv1alpha1.PortSecurityEnabled))
Expect(applyObj(ctx, port, patch)).To(Succeed())
Expect(port.Spec.Resource.SecurityGroupRefs).To(Equal([]orcv1alpha1.OpenStackName{"sg-foo"}))
- Expect(port.Spec.Resource.PortSecurity).To(Equal(orcv1alpha1.PortSecurityEnabled))
+ Expect(port.Spec.Resource.PortSecurity).To(HaveValue(Equal(orcv1alpha1.PortSecurityEnabled)))
})
It("should allow to create a port with portSecurity set to Inherit", func(ctx context.Context) {
@@ -81,7 +81,7 @@ var _ = Describe("ORC Port API validations", func() {
WithNetworkRef(networkName).
WithPortSecurity(orcv1alpha1.PortSecurityInherit))
Expect(applyObj(ctx, port, patch)).To(Succeed())
- Expect(port.Spec.Resource.PortSecurity).To(Equal(orcv1alpha1.PortSecurityInherit))
+ Expect(port.Spec.Resource.PortSecurity).To(HaveValue(Equal(orcv1alpha1.PortSecurityInherit)))
})
It("should allow to create a port with portSecurity set to Disabled", func(ctx context.Context) {
@@ -91,7 +91,7 @@ var _ = Describe("ORC Port API validations", func() {
WithNetworkRef(networkName).
WithPortSecurity(orcv1alpha1.PortSecurityDisabled))
Expect(applyObj(ctx, port, patch)).To(Succeed())
- Expect(port.Spec.Resource.PortSecurity).To(Equal(orcv1alpha1.PortSecurityDisabled))
+ Expect(port.Spec.Resource.PortSecurity).To(HaveValue(Equal(orcv1alpha1.PortSecurityDisabled)))
})
It("should not allow to create a port with securityGroupRefs when portSecurity is explicitly set to Disabled", func(ctx context.Context) {
diff --git a/test/apivalidations/securitygroup_test.go b/test/apivalidations/securitygroup_test.go
index 732c5493c..cdc4107b3 100644
--- a/test/apivalidations/securitygroup_test.go
+++ b/test/apivalidations/securitygroup_test.go
@@ -70,7 +70,7 @@ var _ = Describe("ORC SecurityGroup API validations", func() {
patch := baseSecurityGroupPatch(securityGroup)
patch.Spec.WithResource(applyconfigv1alpha1.SecurityGroupResourceSpec())
Expect(applyObj(ctx, securityGroup, patch)).To(Succeed())
- Expect(securityGroup.Spec.ManagementPolicy).To(Equal(orcv1alpha1.ManagementPolicyManaged))
+ Expect(securityGroup.Spec.ManagementPolicy).To(HaveValue(Equal(orcv1alpha1.ManagementPolicyManaged)))
})
It("should require import for unmanaged", func(ctx context.Context) {
@@ -162,7 +162,7 @@ var _ = Describe("ORC SecurityGroup API validations", func() {
WithOnDelete(orcv1alpha1.OnDeleteDetach)).WithResource(
applyconfigv1alpha1.SecurityGroupResourceSpec())
Expect(applyObj(ctx, securityGroup, patch)).To(Succeed())
- Expect(securityGroup.Spec.ManagedOptions.OnDelete).To(Equal(orcv1alpha1.OnDelete("detach")))
+ Expect(securityGroup.Spec.ManagedOptions.OnDelete).To(HaveValue(Equal(orcv1alpha1.OnDelete("detach"))))
})
It("should not permit invalid direction", func(ctx context.Context) {
diff --git a/test/apivalidations/subnet_test.go b/test/apivalidations/subnet_test.go
index 0177a8852..d6b0952ee 100644
--- a/test/apivalidations/subnet_test.go
+++ b/test/apivalidations/subnet_test.go
@@ -61,7 +61,7 @@ var _ = Describe("ORC Subnet API validations", func() {
subnet := subnetStub(namespace)
patch := baseSubnetPatch(subnet)
Expect(applyObj(ctx, subnet, patch)).To(Succeed())
- Expect(subnet.Spec.ManagementPolicy).To(Equal(orcv1alpha1.ManagementPolicyManaged))
+ Expect(subnet.Spec.ManagementPolicy).To(HaveValue(Equal(orcv1alpha1.ManagementPolicyManaged)))
})
It("should allow valid tags", func(ctx context.Context) {
subnet := subnetStub(namespace)
diff --git a/website/docs/crd-reference.md b/website/docs/crd-reference.md
index f1664a185..b65bf02fa 100644
--- a/website/docs/crd-reference.md
+++ b/website/docs/crd-reference.md
@@ -257,7 +257,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
-| `id` _string_ | id contains the unique identifier of an existing OpenStack resource. Note
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist. | | Format: uuid
|
+| `id` _string_ | id contains the unique identifier of an existing OpenStack resource. Note
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist. | | Format: uuid
MaxLength: 36
|
| `filter` _[DomainFilter](#domainfilter)_ | filter contains a resource query which is expected to return a single
result. The controller will continue to retry if filter returns no
results. If filter returns multiple results the controller will set an
error state and will not continue to retry. | | MinProperties: 1
|
@@ -331,7 +331,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
| `conditions` _[Condition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#condition-v1-meta) array_ | conditions represents the observed status of the object.
Known .status.conditions.type are: "Available", "Progressing"
Available represents the availability of the OpenStack resource. If it is
true then the resource is ready for use.
Progressing indicates whether the controller is still attempting to
reconcile the current state of the OpenStack resource to the desired
state. Progressing will be False either because the desired state has
been achieved, or because some terminal error prevents it from ever being
achieved and the controller is no longer attempting to reconcile. If
Progressing is True, an observer waiting on the resource should continue
to wait. | | MaxItems: 32
|
-| `id` _string_ | id is the unique identifier of the OpenStack resource. | | |
+| `id` _string_ | id is the unique identifier of the OpenStack resource. | | MaxLength: 1024
|
| `resource` _[DomainResourceStatus](#domainresourcestatus)_ | resource contains the observed state of the OpenStack resource. | | |
@@ -519,7 +519,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
-| `id` _string_ | id contains the unique identifier of an existing OpenStack resource. Note
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist. | | Format: uuid
|
+| `id` _string_ | id contains the unique identifier of an existing OpenStack resource. Note
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist. | | Format: uuid
MaxLength: 36
|
| `filter` _[FlavorFilter](#flavorfilter)_ | filter contains a resource query which is expected to return a single
result. The controller will continue to retry if filter returns no
results. If filter returns multiple results the controller will set an
error state and will not continue to retry. | | MinProperties: 1
|
@@ -603,7 +603,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
| `conditions` _[Condition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#condition-v1-meta) array_ | conditions represents the observed status of the object.
Known .status.conditions.type are: "Available", "Progressing"
Available represents the availability of the OpenStack resource. If it is
true then the resource is ready for use.
Progressing indicates whether the controller is still attempting to
reconcile the current state of the OpenStack resource to the desired
state. Progressing will be False either because the desired state has
been achieved, or because some terminal error prevents it from ever being
achieved and the controller is no longer attempting to reconcile. If
Progressing is True, an observer waiting on the resource should continue
to wait. | | MaxItems: 32
|
-| `id` _string_ | id is the unique identifier of the OpenStack resource. | | |
+| `id` _string_ | id is the unique identifier of the OpenStack resource. | | MaxLength: 1024
|
| `resource` _[FlavorResourceStatus](#flavorresourcestatus)_ | resource contains the observed state of the OpenStack resource. | | |
@@ -668,7 +668,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
-| `id` _string_ | id contains the unique identifier of an existing OpenStack resource. Note
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist. | | Format: uuid
|
+| `id` _string_ | id contains the unique identifier of an existing OpenStack resource. Note
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist. | | Format: uuid
MaxLength: 36
|
| `filter` _[FloatingIPFilter](#floatingipfilter)_ | filter contains a resource query which is expected to return a single
result. The controller will continue to retry if filter returns no
results. If filter returns multiple results the controller will set an
error state and will not continue to retry. | | MinProperties: 1
|
@@ -757,7 +757,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
| `conditions` _[Condition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#condition-v1-meta) array_ | conditions represents the observed status of the object.
Known .status.conditions.type are: "Available", "Progressing"
Available represents the availability of the OpenStack resource. If it is
true then the resource is ready for use.
Progressing indicates whether the controller is still attempting to
reconcile the current state of the OpenStack resource to the desired
state. Progressing will be False either because the desired state has
been achieved, or because some terminal error prevents it from ever being
achieved and the controller is no longer attempting to reconcile. If
Progressing is True, an observer waiting on the resource should continue
to wait. | | MaxItems: 32
|
-| `id` _string_ | id is the unique identifier of the OpenStack resource. | | |
+| `id` _string_ | id is the unique identifier of the OpenStack resource. | | MaxLength: 1024
|
| `resource` _[FloatingIPResourceStatus](#floatingipresourcestatus)_ | resource contains the observed state of the OpenStack resource. | | |
@@ -814,7 +814,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
-| `id` _string_ | id contains the unique identifier of an existing OpenStack resource. Note
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist. | | Format: uuid
|
+| `id` _string_ | id contains the unique identifier of an existing OpenStack resource. Note
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist. | | Format: uuid
MaxLength: 36
|
| `filter` _[GroupFilter](#groupfilter)_ | filter contains a resource query which is expected to return a single
result. The controller will continue to retry if filter returns no
results. If filter returns multiple results the controller will set an
error state and will not continue to retry. | | MinProperties: 1
|
@@ -888,7 +888,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
| `conditions` _[Condition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#condition-v1-meta) array_ | conditions represents the observed status of the object.
Known .status.conditions.type are: "Available", "Progressing"
Available represents the availability of the OpenStack resource. If it is
true then the resource is ready for use.
Progressing indicates whether the controller is still attempting to
reconcile the current state of the OpenStack resource to the desired
state. Progressing will be False either because the desired state has
been achieved, or because some terminal error prevents it from ever being
achieved and the controller is no longer attempting to reconcile. If
Progressing is True, an observer waiting on the resource should continue
to wait. | | MaxItems: 32
|
-| `id` _string_ | id is the unique identifier of the OpenStack resource. | | |
+| `id` _string_ | id is the unique identifier of the OpenStack resource. | | MaxLength: 1024
|
| `resource` _[GroupResourceStatus](#groupresourcestatus)_ | resource contains the observed state of the OpenStack resource. | | |
@@ -1225,7 +1225,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
-| `id` _string_ | id contains the unique identifier of an existing OpenStack resource. Note
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist. | | Format: uuid
|
+| `id` _string_ | id contains the unique identifier of an existing OpenStack resource. Note
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist. | | Format: uuid
MaxLength: 36
|
| `filter` _[ImageFilter](#imagefilter)_ | filter contains a resource query which is expected to return a single
result. The controller will continue to retry if filter returns no
results. If filter returns multiple results the controller will set an
error state and will not continue to retry. | | MinProperties: 1
|
@@ -1371,7 +1371,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
| `conditions` _[Condition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#condition-v1-meta) array_ | conditions represents the observed status of the object.
Known .status.conditions.type are: "Available", "Progressing"
Available represents the availability of the OpenStack resource. If it is
true then the resource is ready for use.
Progressing indicates whether the controller is still attempting to
reconcile the current state of the OpenStack resource to the desired
state. Progressing will be False either because the desired state has
been achieved, or because some terminal error prevents it from ever being
achieved and the controller is no longer attempting to reconcile. If
Progressing is True, an observer waiting on the resource should continue
to wait. | | MaxItems: 32
|
-| `id` _string_ | id is the unique identifier of the OpenStack resource. | | |
+| `id` _string_ | id is the unique identifier of the OpenStack resource. | | MaxLength: 1024
|
| `resource` _[ImageResourceStatus](#imageresourcestatus)_ | resource contains the observed state of the OpenStack resource. | | |
| `downloadAttempts` _integer_ | downloadAttempts is the number of times the controller has attempted to download the image contents | | |
@@ -1481,7 +1481,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
-| `id` _string_ | id contains the name of an existing resource. Note: This resource uses
the resource name as the unique identifier, not a UUID.
When specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist. | | |
+| `id` _string_ | id contains the name of an existing resource. Note: This resource uses
the resource name as the unique identifier, not a UUID.
When specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist. | | MaxLength: 1024
|
| `filter` _[KeyPairFilter](#keypairfilter)_ | filter contains a resource query which is expected to return a single
result. The controller will continue to retry if filter returns no
results. If filter returns multiple results the controller will set an
error state and will not continue to retry. | | MinProperties: 1
|
@@ -1556,7 +1556,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
| `conditions` _[Condition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#condition-v1-meta) array_ | conditions represents the observed status of the object.
Known .status.conditions.type are: "Available", "Progressing"
Available represents the availability of the OpenStack resource. If it is
true then the resource is ready for use.
Progressing indicates whether the controller is still attempting to
reconcile the current state of the OpenStack resource to the desired
state. Progressing will be False either because the desired state has
been achieved, or because some terminal error prevents it from ever being
achieved and the controller is no longer attempting to reconcile. If
Progressing is True, an observer waiting on the resource should continue
to wait. | | MaxItems: 32
|
-| `id` _string_ | id is the unique identifier of the OpenStack resource. | | |
+| `id` _string_ | id is the unique identifier of the OpenStack resource. | | MaxLength: 1024
|
| `resource` _[KeyPairResourceStatus](#keypairresourcestatus)_ | resource contains the observed state of the OpenStack resource. | | |
@@ -1794,7 +1794,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
-| `id` _string_ | id contains the unique identifier of an existing OpenStack resource. Note
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist. | | Format: uuid
|
+| `id` _string_ | id contains the unique identifier of an existing OpenStack resource. Note
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist. | | Format: uuid
MaxLength: 36
|
| `filter` _[NetworkFilter](#networkfilter)_ | filter contains a resource query which is expected to return a single
result. The controller will continue to retry if filter returns no
results. If filter returns multiple results the controller will set an
error state and will not continue to retry. | | MinProperties: 1
|
@@ -1890,7 +1890,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
| `conditions` _[Condition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#condition-v1-meta) array_ | conditions represents the observed status of the object.
Known .status.conditions.type are: "Available", "Progressing"
Available represents the availability of the OpenStack resource. If it is
true then the resource is ready for use.
Progressing indicates whether the controller is still attempting to
reconcile the current state of the OpenStack resource to the desired
state. Progressing will be False either because the desired state has
been achieved, or because some terminal error prevents it from ever being
achieved and the controller is no longer attempting to reconcile. If
Progressing is True, an observer waiting on the resource should continue
to wait. | | MaxItems: 32
|
-| `id` _string_ | id is the unique identifier of the OpenStack resource. | | |
+| `id` _string_ | id is the unique identifier of the OpenStack resource. | | MaxLength: 1024
|
| `resource` _[NetworkResourceStatus](#networkresourcestatus)_ | resource contains the observed state of the OpenStack resource. | | |
@@ -2093,7 +2093,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
-| `id` _string_ | id contains the unique identifier of an existing OpenStack resource. Note
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist. | | Format: uuid
|
+| `id` _string_ | id contains the unique identifier of an existing OpenStack resource. Note
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist. | | Format: uuid
MaxLength: 36
|
| `filter` _[PortFilter](#portfilter)_ | filter contains a resource query which is expected to return a single
result. The controller will continue to retry if filter returns no
results. If filter returns multiple results the controller will set an
error state and will not continue to retry. | | MinProperties: 1
|
@@ -2262,7 +2262,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
| `conditions` _[Condition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#condition-v1-meta) array_ | conditions represents the observed status of the object.
Known .status.conditions.type are: "Available", "Progressing"
Available represents the availability of the OpenStack resource. If it is
true then the resource is ready for use.
Progressing indicates whether the controller is still attempting to
reconcile the current state of the OpenStack resource to the desired
state. Progressing will be False either because the desired state has
been achieved, or because some terminal error prevents it from ever being
achieved and the controller is no longer attempting to reconcile. If
Progressing is True, an observer waiting on the resource should continue
to wait. | | MaxItems: 32
|
-| `id` _string_ | id is the unique identifier of the OpenStack resource. | | |
+| `id` _string_ | id is the unique identifier of the OpenStack resource. | | MaxLength: 1024
|
| `resource` _[PortResourceStatus](#portresourcestatus)_ | resource contains the observed state of the OpenStack resource. | | |
@@ -2322,7 +2322,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
-| `id` _string_ | id contains the unique identifier of an existing OpenStack resource. Note
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist. | | Format: uuid
|
+| `id` _string_ | id contains the unique identifier of an existing OpenStack resource. Note
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist. | | Format: uuid
MaxLength: 36
|
| `filter` _[ProjectFilter](#projectfilter)_ | filter contains a resource query which is expected to return a single
result. The controller will continue to retry if filter returns no
results. If filter returns multiple results the controller will set an
error state and will not continue to retry. | | MinProperties: 1
|
@@ -2398,7 +2398,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
| `conditions` _[Condition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#condition-v1-meta) array_ | conditions represents the observed status of the object.
Known .status.conditions.type are: "Available", "Progressing"
Available represents the availability of the OpenStack resource. If it is
true then the resource is ready for use.
Progressing indicates whether the controller is still attempting to
reconcile the current state of the OpenStack resource to the desired
state. Progressing will be False either because the desired state has
been achieved, or because some terminal error prevents it from ever being
achieved and the controller is no longer attempting to reconcile. If
Progressing is True, an observer waiting on the resource should continue
to wait. | | MaxItems: 32
|
-| `id` _string_ | id is the unique identifier of the OpenStack resource. | | |
+| `id` _string_ | id is the unique identifier of the OpenStack resource. | | MaxLength: 1024
|
| `resource` _[ProjectResourceStatus](#projectresourcestatus)_ | resource contains the observed state of the OpenStack resource. | | |
@@ -2512,7 +2512,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
-| `id` _string_ | id contains the unique identifier of an existing OpenStack resource. Note
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist. | | Format: uuid
|
+| `id` _string_ | id contains the unique identifier of an existing OpenStack resource. Note
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist. | | Format: uuid
MaxLength: 36
|
| `filter` _[RoleFilter](#rolefilter)_ | filter contains a resource query which is expected to return a single
result. The controller will continue to retry if filter returns no
results. If filter returns multiple results the controller will set an
error state and will not continue to retry. | | MinProperties: 1
|
@@ -2586,7 +2586,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
| `conditions` _[Condition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#condition-v1-meta) array_ | conditions represents the observed status of the object.
Known .status.conditions.type are: "Available", "Progressing"
Available represents the availability of the OpenStack resource. If it is
true then the resource is ready for use.
Progressing indicates whether the controller is still attempting to
reconcile the current state of the OpenStack resource to the desired
state. Progressing will be False either because the desired state has
been achieved, or because some terminal error prevents it from ever being
achieved and the controller is no longer attempting to reconcile. If
Progressing is True, an observer waiting on the resource should continue
to wait. | | MaxItems: 32
|
-| `id` _string_ | id is the unique identifier of the OpenStack resource. | | |
+| `id` _string_ | id is the unique identifier of the OpenStack resource. | | MaxLength: 1024
|
| `resource` _[RoleResourceStatus](#roleresourcestatus)_ | resource contains the observed state of the OpenStack resource. | | |
@@ -2648,7 +2648,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
-| `id` _string_ | id contains the unique identifier of an existing OpenStack resource. Note
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist. | | Format: uuid
|
+| `id` _string_ | id contains the unique identifier of an existing OpenStack resource. Note
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist. | | Format: uuid
MaxLength: 36
|
| `filter` _[RouterFilter](#routerfilter)_ | filter contains a resource query which is expected to return a single
result. The controller will continue to retry if filter returns no
results. If filter returns multiple results the controller will set an
error state and will not continue to retry. | | MinProperties: 1
|
@@ -2805,7 +2805,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
| `conditions` _[Condition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#condition-v1-meta) array_ | conditions represents the observed status of the object.
Known .status.conditions.type are: "Available", "Progressing"
Available represents the availability of the OpenStack resource. If it is
true then the resource is ready for use.
Progressing indicates whether the controller is still attempting to
reconcile the current state of the OpenStack resource to the desired
state. Progressing will be False either because the desired state has
been achieved, or because some terminal error prevents it from ever being
achieved and the controller is no longer attempting to reconcile. If
Progressing is True, an observer waiting on the resource should continue
to wait. | | MaxItems: 32
|
-| `id` _string_ | id is the unique identifier of the OpenStack resource. | | |
+| `id` _string_ | id is the unique identifier of the OpenStack resource. | | MaxLength: 1024
|
| `resource` _[RouterResourceStatus](#routerresourcestatus)_ | resource contains the observed state of the OpenStack resource. | | |
@@ -2881,7 +2881,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
-| `id` _string_ | id contains the unique identifier of an existing OpenStack resource. Note
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist. | | Format: uuid
|
+| `id` _string_ | id contains the unique identifier of an existing OpenStack resource. Note
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist. | | Format: uuid
MaxLength: 36
|
| `filter` _[SecurityGroupFilter](#securitygroupfilter)_ | filter contains a resource query which is expected to return a single
result. The controller will continue to retry if filter returns no
results. If filter returns multiple results the controller will set an
error state and will not continue to retry. | | MinProperties: 1
|
@@ -3009,7 +3009,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
| `conditions` _[Condition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#condition-v1-meta) array_ | conditions represents the observed status of the object.
Known .status.conditions.type are: "Available", "Progressing"
Available represents the availability of the OpenStack resource. If it is
true then the resource is ready for use.
Progressing indicates whether the controller is still attempting to
reconcile the current state of the OpenStack resource to the desired
state. Progressing will be False either because the desired state has
been achieved, or because some terminal error prevents it from ever being
achieved and the controller is no longer attempting to reconcile. If
Progressing is True, an observer waiting on the resource should continue
to wait. | | MaxItems: 32
|
-| `id` _string_ | id is the unique identifier of the OpenStack resource. | | |
+| `id` _string_ | id is the unique identifier of the OpenStack resource. | | MaxLength: 1024
|
| `resource` _[SecurityGroupResourceStatus](#securitygroupresourcestatus)_ | resource contains the observed state of the OpenStack resource. | | |
@@ -3106,7 +3106,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
-| `id` _string_ | id contains the unique identifier of an existing OpenStack resource. Note
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist. | | Format: uuid
|
+| `id` _string_ | id contains the unique identifier of an existing OpenStack resource. Note
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist. | | Format: uuid
MaxLength: 36
|
| `filter` _[ServerGroupFilter](#servergroupfilter)_ | filter contains a resource query which is expected to return a single
result. The controller will continue to retry if filter returns no
results. If filter returns multiple results the controller will set an
error state and will not continue to retry. | | MinProperties: 1
|
@@ -3234,7 +3234,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
| `conditions` _[Condition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#condition-v1-meta) array_ | conditions represents the observed status of the object.
Known .status.conditions.type are: "Available", "Progressing"
Available represents the availability of the OpenStack resource. If it is
true then the resource is ready for use.
Progressing indicates whether the controller is still attempting to
reconcile the current state of the OpenStack resource to the desired
state. Progressing will be False either because the desired state has
been achieved, or because some terminal error prevents it from ever being
achieved and the controller is no longer attempting to reconcile. If
Progressing is True, an observer waiting on the resource should continue
to wait. | | MaxItems: 32
|
-| `id` _string_ | id is the unique identifier of the OpenStack resource. | | |
+| `id` _string_ | id is the unique identifier of the OpenStack resource. | | MaxLength: 1024
|
| `resource` _[ServerGroupResourceStatus](#servergroupresourcestatus)_ | resource contains the observed state of the OpenStack resource. | | |
@@ -3254,7 +3254,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
-| `id` _string_ | id contains the unique identifier of an existing OpenStack resource. Note
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist. | | Format: uuid
|
+| `id` _string_ | id contains the unique identifier of an existing OpenStack resource. Note
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist. | | Format: uuid
MaxLength: 36
|
| `filter` _[ServerFilter](#serverfilter)_ | filter contains a resource query which is expected to return a single
result. The controller will continue to retry if filter returns no
results. If filter returns multiple results the controller will set an
error state and will not continue to retry. | | MinProperties: 1
|
@@ -3434,7 +3434,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
| `conditions` _[Condition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#condition-v1-meta) array_ | conditions represents the observed status of the object.
Known .status.conditions.type are: "Available", "Progressing"
Available represents the availability of the OpenStack resource. If it is
true then the resource is ready for use.
Progressing indicates whether the controller is still attempting to
reconcile the current state of the OpenStack resource to the desired
state. Progressing will be False either because the desired state has
been achieved, or because some terminal error prevents it from ever being
achieved and the controller is no longer attempting to reconcile. If
Progressing is True, an observer waiting on the resource should continue
to wait. | | MaxItems: 32
|
-| `id` _string_ | id is the unique identifier of the OpenStack resource. | | |
+| `id` _string_ | id is the unique identifier of the OpenStack resource. | | MaxLength: 1024
|
| `resource` _[ServerResourceStatus](#serverresourcestatus)_ | resource contains the observed state of the OpenStack resource. | | |
@@ -3542,7 +3542,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
-| `id` _string_ | id contains the unique identifier of an existing OpenStack resource. Note
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist. | | Format: uuid
|
+| `id` _string_ | id contains the unique identifier of an existing OpenStack resource. Note
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist. | | Format: uuid
MaxLength: 36
|
| `filter` _[ServiceFilter](#servicefilter)_ | filter contains a resource query which is expected to return a single
result. The controller will continue to retry if filter returns no
results. If filter returns multiple results the controller will set an
error state and will not continue to retry. | | MinProperties: 1
|
@@ -3618,7 +3618,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
| `conditions` _[Condition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#condition-v1-meta) array_ | conditions represents the observed status of the object.
Known .status.conditions.type are: "Available", "Progressing"
Available represents the availability of the OpenStack resource. If it is
true then the resource is ready for use.
Progressing indicates whether the controller is still attempting to
reconcile the current state of the OpenStack resource to the desired
state. Progressing will be False either because the desired state has
been achieved, or because some terminal error prevents it from ever being
achieved and the controller is no longer attempting to reconcile. If
Progressing is True, an observer waiting on the resource should continue
to wait. | | MaxItems: 32
|
-| `id` _string_ | id is the unique identifier of the OpenStack resource. | | |
+| `id` _string_ | id is the unique identifier of the OpenStack resource. | | MaxLength: 1024
|
| `resource` _[ServiceResourceStatus](#serviceresourcestatus)_ | resource contains the observed state of the OpenStack resource. | | |
@@ -3715,7 +3715,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
-| `id` _string_ | id contains the unique identifier of an existing OpenStack resource. Note
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist. | | Format: uuid
|
+| `id` _string_ | id contains the unique identifier of an existing OpenStack resource. Note
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist. | | Format: uuid
MaxLength: 36
|
| `filter` _[SubnetFilter](#subnetfilter)_ | filter contains a resource query which is expected to return a single
result. The controller will continue to retry if filter returns no
results. If filter returns multiple results the controller will set an
error state and will not continue to retry. | | MinProperties: 1
|
@@ -3817,7 +3817,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
| `conditions` _[Condition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#condition-v1-meta) array_ | conditions represents the observed status of the object.
Known .status.conditions.type are: "Available", "Progressing"
Available represents the availability of the OpenStack resource. If it is
true then the resource is ready for use.
Progressing indicates whether the controller is still attempting to
reconcile the current state of the OpenStack resource to the desired
state. Progressing will be False either because the desired state has
been achieved, or because some terminal error prevents it from ever being
achieved and the controller is no longer attempting to reconcile. If
Progressing is True, an observer waiting on the resource should continue
to wait. | | MaxItems: 32
|
-| `id` _string_ | id is the unique identifier of the OpenStack resource. | | |
+| `id` _string_ | id is the unique identifier of the OpenStack resource. | | MaxLength: 1024
|
| `resource` _[SubnetResourceStatus](#subnetresourcestatus)_ | resource contains the observed state of the OpenStack resource. | | |
@@ -3915,7 +3915,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
-| `id` _string_ | id contains the unique identifier of an existing OpenStack resource. Note
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist. | | Format: uuid
|
+| `id` _string_ | id contains the unique identifier of an existing OpenStack resource. Note
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist. | | Format: uuid
MaxLength: 36
|
| `filter` _[VolumeFilter](#volumefilter)_ | filter contains a resource query which is expected to return a single
result. The controller will continue to retry if filter returns no
results. If filter returns multiple results the controller will set an
error state and will not continue to retry. | | MinProperties: 1
|
@@ -4046,7 +4046,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
| `conditions` _[Condition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#condition-v1-meta) array_ | conditions represents the observed status of the object.
Known .status.conditions.type are: "Available", "Progressing"
Available represents the availability of the OpenStack resource. If it is
true then the resource is ready for use.
Progressing indicates whether the controller is still attempting to
reconcile the current state of the OpenStack resource to the desired
state. Progressing will be False either because the desired state has
been achieved, or because some terminal error prevents it from ever being
achieved and the controller is no longer attempting to reconcile. If
Progressing is True, an observer waiting on the resource should continue
to wait. | | MaxItems: 32
|
-| `id` _string_ | id is the unique identifier of the OpenStack resource. | | |
+| `id` _string_ | id is the unique identifier of the OpenStack resource. | | MaxLength: 1024
|
| `resource` _[VolumeResourceStatus](#volumeresourcestatus)_ | resource contains the observed state of the OpenStack resource. | | |
@@ -4138,7 +4138,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
-| `id` _string_ | id contains the unique identifier of an existing OpenStack resource. Note
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist. | | Format: uuid
|
+| `id` _string_ | id contains the unique identifier of an existing OpenStack resource. Note
that when specifying an import by ID, the resource MUST already exist.
The ORC object will enter an error state if the resource does not exist. | | Format: uuid
MaxLength: 36
|
| `filter` _[VolumeTypeFilter](#volumetypefilter)_ | filter contains a resource query which is expected to return a single
result. The controller will continue to retry if filter returns no
results. If filter returns multiple results the controller will set an
error state and will not continue to retry. | | MinProperties: 1
|
@@ -4214,7 +4214,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
| `conditions` _[Condition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#condition-v1-meta) array_ | conditions represents the observed status of the object.
Known .status.conditions.type are: "Available", "Progressing"
Available represents the availability of the OpenStack resource. If it is
true then the resource is ready for use.
Progressing indicates whether the controller is still attempting to
reconcile the current state of the OpenStack resource to the desired
state. Progressing will be False either because the desired state has
been achieved, or because some terminal error prevents it from ever being
achieved and the controller is no longer attempting to reconcile. If
Progressing is True, an observer waiting on the resource should continue
to wait. | | MaxItems: 32
|
-| `id` _string_ | id is the unique identifier of the OpenStack resource. | | |
+| `id` _string_ | id is the unique identifier of the OpenStack resource. | | MaxLength: 1024
|
| `resource` _[VolumeTypeResourceStatus](#volumetyperesourcestatus)_ | resource contains the observed state of the OpenStack resource. | | |