v1alpha1

package
v3.0.0-pre1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 14, 2026 License: Apache-2.0 Imports: 7 Imported by: 0

Documentation

Overview

Package v1alpha1 contains API Schema definitions for the openstack v1alpha1 API group +kubebuilder:object:generate=true +groupName=openstack.k-orc.cloud +k8s:openapi-gen=true

+kubebuilder:object:generate=true +groupName=openstack.k-orc.cloud +k8s:openapi-gen=true

Index

Constants

View Source
const (

	// Normal progress: continue waiting.
	ConditionReasonProgressing = "Progressing"

	// The user must fix the configuration before trying again.
	ConditionReasonInvalidConfiguration = "InvalidConfiguration"

	// An error occurred which we can't recover from. It must be addressed
	// before we can continue.
	ConditionReasonUnrecoverableError = "UnrecoverableError"

	// An error occurred which may go away eventually if we keep trying. The
	// user likely wants to know about this if it persists.
	ConditionReasonTransientError = "TransientError"

	// The resource is ready for use.
	ConditionReasonSuccess = "Success"
)
View Source
const (
	ConditionAvailable   = "Available"
	ConditionProgressing = "Progressing"
)
View Source
const (
	// CloudCredentialsConfigSecretKey is the key for the clouds configuration in the cloud credentials secret.
	CloudCredentialsConfigSecretKey = "clouds.yaml"
	// CloudCredencialsCASecretKey is the key for the CA certificate in the cloud credentials secret.
	CloudCredencialsCASecretKey = "cacert"
)
View Source
const (
	IPv6AddressModeSLAAC           = "slaac"
	IPv6AddressModeDHCPv6Stateful  = "dhcpv6-stateful"
	IPv6AddressModeDHCPv6Stateless = "dhcpv6-stateless"
)
View Source
const (
	IPv6RAModeSLAAC           = "slaac"
	IPv6RAModeDHCPv6Stateful  = "dhcpv6-stateful"
	IPv6RAModeDHCPv6Stateless = "dhcpv6-stateless"
)
View Source
const (
	SubnetGatewayTypeNone      = "None"
	SubnetGatewayTypeAutomatic = "Automatic"
	SubnetGatewayTypeIP        = "IP"
)
View Source
const GlanceTag = "glance"

GlanceTag is the name of the go field tag in properties structs used to specify the Glance property name.

View Source
const GroupName = "openstack.k-orc.cloud"

GroupName is the group name use in this package

Variables

View Source
var (
	// SchemeBuilder is used to add go types to the GroupVersionKind scheme
	SchemeBuilder = &scheme.Builder{GroupVersion: SchemeGroupVersion}

	// AddToScheme adds the types in this group-version to the given scheme.
	AddToScheme = SchemeBuilder.AddToScheme
)
View Source
var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"}

SchemeGroupVersion is group version used to register these objects

Functions

func GetTerminalError

func GetTerminalError(obj ObjectWithConditions) error

GetTerminalError returns an error containing a descriptive message if reconciliation has failed terminally, or nil otherwise.

func IsAvailable

func IsAvailable[T ObjectWithConditions](obj T) bool

func IsConditionReasonTerminal

func IsConditionReasonTerminal(reason string) bool

IsConditionReasonTerminal returns true if the given reason represents an error which should prevent further reconciliation.

func IsReconciliationComplete

func IsReconciliationComplete(obj ObjectWithConditions) bool

IsReconciliationComplete returns true if the given set of conditions indicate that reconciliation is complete, either success or failure.

func Resource

func Resource(resource string) schema.GroupResource

Resource takes an unqualified resource and returns a Group qualified GroupResource

Types

type Address

type Address struct {
	// ip contains a fixed IP address assigned to the port. It must belong
	// to the referenced subnet's CIDR. If not specified, OpenStack
	// allocates an available IP from the referenced subnet.
	// +optional
	IP *IPvAny `json:"ip,omitempty"`

	// subnetRef references the subnet from which to allocate the IP
	// address.
	// +required
	// +orc:kustomize:ref=Subnet
	SubnetRef KubernetesNameRef `json:"subnetRef,omitempty"`
}

func (*Address) DeepCopy

func (in *Address) DeepCopy() *Address

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Address.

func (*Address) DeepCopyInto

func (in *Address) DeepCopyInto(out *Address)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AddressScope

type AddressScope struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the object metadata
	// +optional
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// spec specifies the desired state of the resource.
	// +required
	Spec AddressScopeSpec `json:"spec,omitzero"`

	// status defines the observed state of the resource.
	// +optional
	Status AddressScopeStatus `json:"status,omitempty"`
}

AddressScope is the Schema for an ORC resource.

func (*AddressScope) DeepCopy

func (in *AddressScope) DeepCopy() *AddressScope

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AddressScope.

func (*AddressScope) DeepCopyInto

func (in *AddressScope) DeepCopyInto(out *AddressScope)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*AddressScope) DeepCopyObject

func (in *AddressScope) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*AddressScope) GetCloudCredentialsRef

func (i *AddressScope) GetCloudCredentialsRef() (*string, *CloudCredentialsReference)

func (*AddressScope) GetConditions

func (i *AddressScope) GetConditions() []metav1.Condition

type AddressScopeFilter

type AddressScopeFilter struct {
	// name of the existing resource
	// +optional
	Name *OpenStackName `json:"name,omitempty"`

	// projectRef is a reference to the ORC Project which this resource is associated with.
	// +optional
	// +orc:kustomize:ref=Project
	ProjectRef *KubernetesNameRef `json:"projectRef,omitempty"`

	// ipVersion is the IP protocol version.
	// +optional
	IPVersion IPVersion `json:"ipVersion,omitempty"`

	// shared indicates whether this resource is shared across all
	// projects or not. By default, only admin users can change set
	// this value.
	// +optional
	Shared *bool `json:"shared,omitempty"`
}

AddressScopeFilter defines an existing resource by its properties +kubebuilder:validation:MinProperties:=1

func (*AddressScopeFilter) DeepCopy

func (in *AddressScopeFilter) DeepCopy() *AddressScopeFilter

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AddressScopeFilter.

func (*AddressScopeFilter) DeepCopyInto

func (in *AddressScopeFilter) DeepCopyInto(out *AddressScopeFilter)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AddressScopeImport

type AddressScopeImport 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.
	// +kubebuilder:validation:Format:=uuid
	// +kubebuilder:validation:MaxLength:=36
	// +optional
	ID *string `json:"id,omitempty"` //nolint:kubeapilinter

	// 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.
	// +optional
	Filter *AddressScopeFilter `json:"filter,omitempty"`
}

AddressScopeImport specifies an existing resource which will be imported instead of creating a new one +kubebuilder:validation:MinProperties:=1 +kubebuilder:validation:MaxProperties:=1

func (*AddressScopeImport) DeepCopy

func (in *AddressScopeImport) DeepCopy() *AddressScopeImport

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AddressScopeImport.

func (*AddressScopeImport) DeepCopyInto

func (in *AddressScopeImport) DeepCopyInto(out *AddressScopeImport)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AddressScopeList

type AddressScopeList struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the list metadata
	// +optional
	metav1.ListMeta `json:"metadata,omitempty"`

	// items contains a list of AddressScope.
	// +required
	Items []AddressScope `json:"items"`
}

AddressScopeList contains a list of AddressScope.

func (*AddressScopeList) DeepCopy

func (in *AddressScopeList) DeepCopy() *AddressScopeList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AddressScopeList.

func (*AddressScopeList) DeepCopyInto

func (in *AddressScopeList) DeepCopyInto(out *AddressScopeList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*AddressScopeList) DeepCopyObject

func (in *AddressScopeList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*AddressScopeList) GetItems

func (l *AddressScopeList) GetItems() []AddressScope

type AddressScopeResourceSpec

type AddressScopeResourceSpec struct {
	// name will be the name of the created resource. If not specified, the
	// name of the ORC object will be used.
	// +optional
	Name *OpenStackName `json:"name,omitempty"`

	// projectRef is a reference to the ORC Project which this resource is associated with.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="projectRef is immutable"
	// +orc:kustomize:ref=Project
	ProjectRef *KubernetesNameRef `json:"projectRef,omitempty"`

	// ipVersion is the IP protocol version.
	// +required
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="ipVersion is immutable"
	IPVersion IPVersion `json:"ipVersion"`

	// shared indicates whether this resource is shared across all
	// projects or not. By default, only admin users can change set
	// this value. We can't unshared a shared address scope; Neutron
	// enforces this.
	// +optional
	// +kubebuilder:validation:XValidation:rule="!(oldSelf && !self)",message="shared address scope can't be unshared"
	Shared *bool `json:"shared,omitempty"`
}

AddressScopeResourceSpec contains the desired state of the resource.

func (*AddressScopeResourceSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AddressScopeResourceSpec.

func (*AddressScopeResourceSpec) DeepCopyInto

func (in *AddressScopeResourceSpec) DeepCopyInto(out *AddressScopeResourceSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AddressScopeResourceStatus

type AddressScopeResourceStatus struct {
	// name is a Human-readable name for the resource. Might not be unique.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	Name string `json:"name,omitempty"`

	// projectID is the ID of the Project to which the resource is associated.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	ProjectID string `json:"projectID,omitempty"`

	// ipVersion is the IP protocol version.
	// +optional
	IPVersion int32 `json:"ipVersion,omitempty"`

	// shared indicates whether this resource is shared across all
	// projects or not. By default, only admin users can change set
	// this value.
	// +optional
	Shared *bool `json:"shared,omitempty"`
}

AddressScopeResourceStatus represents the observed state of the resource.

func (*AddressScopeResourceStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AddressScopeResourceStatus.

func (*AddressScopeResourceStatus) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AddressScopeSpec

type AddressScopeSpec struct {
	// import refers to an existing OpenStack resource which will be imported instead of
	// creating a new one.
	// +optional
	Import *AddressScopeImport `json:"import,omitempty"`

	// resource specifies the desired state of the resource.
	//
	// resource may not be specified if the management policy is `unmanaged`.
	//
	// resource must be specified if the management policy is `managed`.
	// +optional
	Resource *AddressScopeResourceSpec `json:"resource,omitempty"`

	// managementPolicy defines how ORC will treat the object. Valid values are
	// `managed`: ORC will create, update, and delete the resource; `unmanaged`:
	// ORC will import an existing resource, and will not apply updates to it or
	// delete it.
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
	// +kubebuilder:default:=managed
	// +optional
	ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`

	// managedOptions specifies options which may be applied to managed objects.
	// +optional
	ManagedOptions *ManagedOptions `json:"managedOptions,omitempty"`

	// resyncPeriod defines how frequently the controller will re-reconcile
	// this resource even when no changes have been detected. This overrides
	// the global default resync period. The value must be a valid Go duration
	// string, e.g. "10m", "1h". Set to "0s" to disable periodic resync for
	// this resource. Very low values may cause excessive OpenStack API load.
	// +optional
	ResyncPeriod *metav1.Duration `json:"resyncPeriod,omitempty"` //nolint:kubeapilinter // metav1.Duration is appropriate for user-facing duration config

	// cloudCredentialsRef points to a secret containing OpenStack credentials
	// +required
	CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}

AddressScopeSpec defines the desired state of an ORC object. +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? has(self.resource) : true",message="resource must be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? !has(self.__import__) : true",message="import may not be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? !has(self.resource) : true",message="resource may not be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? has(self.__import__) : true",message="import must be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="has(self.managedOptions) ? self.managementPolicy == 'managed' : true",message="managedOptions may only be provided when policy is managed"

func (*AddressScopeSpec) DeepCopy

func (in *AddressScopeSpec) DeepCopy() *AddressScopeSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AddressScopeSpec.

func (*AddressScopeSpec) DeepCopyInto

func (in *AddressScopeSpec) DeepCopyInto(out *AddressScopeSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AddressScopeStatus

type AddressScopeStatus struct {
	// 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.
	//
	// +kubebuilder:validation:MaxItems:=32
	// +patchMergeKey=type
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=type
	// +optional
	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"`

	// resource contains the observed state of the OpenStack resource.
	// +optional
	Resource *AddressScopeResourceStatus `json:"resource,omitempty"`

	// lastSyncTime is the timestamp of the last successful reconciliation
	// that fetched state from OpenStack. It is updated each time the
	// controller successfully reads the resource state from the OpenStack
	// API.
	// +optional
	LastSyncTime *metav1.Time `json:"lastSyncTime,omitempty"`
}

AddressScopeStatus defines the observed state of an ORC resource.

func (*AddressScopeStatus) DeepCopy

func (in *AddressScopeStatus) DeepCopy() *AddressScopeStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AddressScopeStatus.

func (*AddressScopeStatus) DeepCopyInto

func (in *AddressScopeStatus) DeepCopyInto(out *AddressScopeStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AllocationPool

type AllocationPool struct {
	// start is the first IP address in the allocation pool.
	// +required
	Start IPvAny `json:"start,omitempty"`

	// end is the last IP address in the allocation pool.
	// +required
	End IPvAny `json:"end,omitempty"`
}

func (*AllocationPool) DeepCopy

func (in *AllocationPool) DeepCopy() *AllocationPool

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AllocationPool.

func (*AllocationPool) DeepCopyInto

func (in *AllocationPool) DeepCopyInto(out *AllocationPool)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AllocationPoolStatus

type AllocationPoolStatus struct {
	// start is the first IP address in the allocation pool.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	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"`
}

func (*AllocationPoolStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AllocationPoolStatus.

func (*AllocationPoolStatus) DeepCopyInto

func (in *AllocationPoolStatus) DeepCopyInto(out *AllocationPoolStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AllowedAddressPair

type AllowedAddressPair struct {
	// ip contains an IP address which a server connected to the port can
	// send packets with. It can be an IP Address or a CIDR (if supported
	// by the underlying extension plugin).
	// +required
	IP IPvAny `json:"ip,omitempty"`

	// mac contains a MAC address which a server connected to the port can
	// send packets with. Defaults to the MAC address of the port.
	// +optional
	MAC *MAC `json:"mac,omitempty"`
}

func (*AllowedAddressPair) DeepCopy

func (in *AllowedAddressPair) DeepCopy() *AllowedAddressPair

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AllowedAddressPair.

func (*AllowedAddressPair) DeepCopyInto

func (in *AllowedAddressPair) DeepCopyInto(out *AllowedAddressPair)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AllowedAddressPairStatus

type AllowedAddressPairStatus struct {
	// ip contains an IP address which a server connected to the port can
	// send packets with.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	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"`
}

func (*AllowedAddressPairStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AllowedAddressPairStatus.

func (*AllowedAddressPairStatus) DeepCopyInto

func (in *AllowedAddressPairStatus) DeepCopyInto(out *AllowedAddressPairStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ApplicationCredential

type ApplicationCredential struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the object metadata
	// +optional
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// spec specifies the desired state of the resource.
	// +required
	Spec ApplicationCredentialSpec `json:"spec,omitzero"`

	// status defines the observed state of the resource.
	// +optional
	Status ApplicationCredentialStatus `json:"status,omitempty"`
}

ApplicationCredential is the Schema for an ORC resource.

func (*ApplicationCredential) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationCredential.

func (*ApplicationCredential) DeepCopyInto

func (in *ApplicationCredential) DeepCopyInto(out *ApplicationCredential)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ApplicationCredential) DeepCopyObject

func (in *ApplicationCredential) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*ApplicationCredential) GetCloudCredentialsRef

func (i *ApplicationCredential) GetCloudCredentialsRef() (*string, *CloudCredentialsReference)

func (*ApplicationCredential) GetConditions

func (i *ApplicationCredential) GetConditions() []metav1.Condition

type ApplicationCredentialAccessRule

type ApplicationCredentialAccessRule struct {
	// path that the application credential is permitted to access
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	Path *string `json:"path,omitempty"`

	// method that the application credential is permitted to use for a given API endpoint
	// +optional
	Method *HTTPMethod `json:"method,omitempty"`

	// serviceRef identifier for the service that the application credential is permitted to access
	// +optional
	// +orc:kustomize:ref=Service
	ServiceRef *KubernetesNameRef `json:"serviceRef,omitempty"`
}

ApplicationCredentialAccessRule defines an access rule +kubebuilder:validation:MinProperties:=1

func (*ApplicationCredentialAccessRule) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationCredentialAccessRule.

func (*ApplicationCredentialAccessRule) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ApplicationCredentialAccessRuleStatus

type ApplicationCredentialAccessRuleStatus struct {
	// id is the ID of this access rule
	// +kubebuilder:validation:MaxLength:=1024
	// +optional
	ID *string `json:"id,omitempty"`

	// path that the application credential is permitted to access
	// +kubebuilder:validation:MaxLength:=1024
	// +optional
	Path *string `json:"path,omitempty"`

	// method that the application credential is permitted to use for a given API endpoint
	// +kubebuilder:validation:MaxLength=32
	// +optional
	Method *string `json:"method,omitempty"`

	// service type identifier for the service that the application credential is permitted to access
	// +kubebuilder:validation:MaxLength:=1024
	// +optional
	Service *string `json:"service,omitempty"`
}

func (*ApplicationCredentialAccessRuleStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationCredentialAccessRuleStatus.

func (*ApplicationCredentialAccessRuleStatus) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ApplicationCredentialFilter

type ApplicationCredentialFilter struct {
	// userRef is a reference to the ORC User which this resource is associated with.
	// Note: Due to the nature of the OpenStack API, managing application credentials for a user different than the one ORC is authenticated against can be computationally expensive. In the worst case, all application credentials of all users have to be queried.
	// +required
	// +orc:kustomize:ref=User
	UserRef KubernetesNameRef `json:"userRef,omitempty"`

	// name of the existing resource
	// +optional
	Name *OpenStackName `json:"name,omitempty"`

	// description of the existing resource
	// +kubebuilder:validation:MaxLength:=1024
	// +optional
	Description *string `json:"description,omitempty"`
}

ApplicationCredentialFilter defines an existing resource by its properties +kubebuilder:validation:MinProperties:=2

func (*ApplicationCredentialFilter) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationCredentialFilter.

func (*ApplicationCredentialFilter) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ApplicationCredentialImport

type ApplicationCredentialImport 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.
	// +kubebuilder:validation:Format:=uuid
	// +kubebuilder:validation:MaxLength:=36
	// +optional
	ID *string `json:"id,omitempty"` //nolint:kubeapilinter

	// 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.
	// +optional
	Filter *ApplicationCredentialFilter `json:"filter,omitempty"`
}

ApplicationCredentialImport specifies an existing resource which will be imported instead of creating a new one +kubebuilder:validation:MinProperties:=1 +kubebuilder:validation:MaxProperties:=1

func (*ApplicationCredentialImport) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationCredentialImport.

func (*ApplicationCredentialImport) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ApplicationCredentialList

type ApplicationCredentialList struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the list metadata
	// +optional
	metav1.ListMeta `json:"metadata,omitempty"`

	// items contains a list of ApplicationCredential.
	// +required
	Items []ApplicationCredential `json:"items"`
}

ApplicationCredentialList contains a list of ApplicationCredential.

func (*ApplicationCredentialList) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationCredentialList.

func (*ApplicationCredentialList) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ApplicationCredentialList) DeepCopyObject

func (in *ApplicationCredentialList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*ApplicationCredentialList) GetItems

type ApplicationCredentialResourceSpec

type ApplicationCredentialResourceSpec struct {
	// name will be the name of the created resource. If not specified, the
	// name of the ORC object will be used.
	// +optional
	Name *OpenStackName `json:"name,omitempty"`

	// description is a human-readable description for the resource.
	// +kubebuilder:validation:MinLength:=1
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	Description *string `json:"description,omitempty"`

	// userRef is a reference to the ORC User which this resource is associated with.
	// Note: Due to the nature of the OpenStack API, managing application credentials for a user different than the one ORC is authenticated against can be computationally expensive. In the worst case, all application credentials of all users have to be queried.
	// +required
	// +orc:kustomize:ref=User
	UserRef KubernetesNameRef `json:"userRef,omitempty"`

	// unrestricted is a flag indicating whether the application credential may be used for creation or destruction of other application credentials or trusts
	// +optional
	Unrestricted *bool `json:"unrestricted,omitempty"`

	// secretRef is a reference to a Secret containing the application credential secret
	// +required
	// +orc:kustomize:ref=Secret
	SecretRef KubernetesNameRef `json:"secretRef,omitempty"`

	// roleRefs may only contain roles that the user has assigned on the project. If not provided, the roles assigned to the application credential will be the same as the roles in the current token.
	// +kubebuilder:validation:MaxItems:=256
	// +listType=atomic
	// +optional
	// +orc:kustomize:ref=Role
	RoleRefs []KubernetesNameRef `json:"roleRefs,omitempty"`

	// accessRules is a list of fine grained access control rules
	// +kubebuilder:validation:MaxItems:=256
	// +listType=atomic
	// +optional
	AccessRules []ApplicationCredentialAccessRule `json:"accessRules,omitempty"`

	// expiresAt is the time of expiration for the application credential. If unset, the application credential does not expire.
	// +optional
	ExpiresAt *metav1.Time `json:"expiresAt,omitempty"`
}

ApplicationCredentialResourceSpec contains the desired state of the resource. +kubebuilder:validation:XValidation:rule="self == oldSelf",message="ApplicationCredentialResourceSpec is immutable"

func (*ApplicationCredentialResourceSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationCredentialResourceSpec.

func (*ApplicationCredentialResourceSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ApplicationCredentialResourceStatus

type ApplicationCredentialResourceStatus struct {
	// name is a Human-readable name for the resource. Might not be unique.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	Name string `json:"name,omitempty"`

	// description is a human-readable description for the resource.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	Description string `json:"description,omitempty"`

	// unrestricted is a flag indicating whether the application credential may be used for creation or destruction of other application credentials or trusts
	// +optional
	Unrestricted *bool `json:"unrestricted,omitempty"`

	// projectID of the project the application credential was created for and that authentication requests using this application credential will be scoped to.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	ProjectID string `json:"projectID,omitempty"`

	// roles is a list of role objects may only contain roles that the user has assigned on the project
	// +kubebuilder:validation:MaxItems:=64
	// +listType=atomic
	// +optional
	Roles []ApplicationCredentialRoleStatus `json:"roles"`

	// expiresAt is the time of expiration for the application credential. If unset, the application credential does not expire.
	// +optional
	ExpiresAt *metav1.Time `json:"expiresAt"`

	// accessRules is a list of fine grained access control rules
	// +kubebuilder:validation:MaxItems:=64
	// +listType=atomic
	// +optional
	AccessRules []ApplicationCredentialAccessRuleStatus `json:"accessRules,omitempty"`
}

ApplicationCredentialResourceStatus represents the observed state of the resource.

func (*ApplicationCredentialResourceStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationCredentialResourceStatus.

func (*ApplicationCredentialResourceStatus) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ApplicationCredentialRoleStatus

type ApplicationCredentialRoleStatus struct {
	// name of an existing role
	// +kubebuilder:validation:MaxLength:=1024
	// +optional
	Name *string `json:"name,omitempty"`

	// id is the ID of a role
	// +kubebuilder:validation:MaxLength:=1024
	// +optional
	ID *string `json:"id,omitempty"`

	// domainID of the domain of this role
	// +kubebuilder:validation:MaxLength:=1024
	// +optional
	DomainID *string `json:"domainID,omitempty"`
}

func (*ApplicationCredentialRoleStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationCredentialRoleStatus.

func (*ApplicationCredentialRoleStatus) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ApplicationCredentialSpec

type ApplicationCredentialSpec struct {
	// import refers to an existing OpenStack resource which will be imported instead of
	// creating a new one.
	// +optional
	Import *ApplicationCredentialImport `json:"import,omitempty"`

	// resource specifies the desired state of the resource.
	//
	// resource may not be specified if the management policy is `unmanaged`.
	//
	// resource must be specified if the management policy is `managed`.
	// +optional
	Resource *ApplicationCredentialResourceSpec `json:"resource,omitempty"`

	// managementPolicy defines how ORC will treat the object. Valid values are
	// `managed`: ORC will create, update, and delete the resource; `unmanaged`:
	// ORC will import an existing resource, and will not apply updates to it or
	// delete it.
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
	// +kubebuilder:default:=managed
	// +optional
	ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`

	// managedOptions specifies options which may be applied to managed objects.
	// +optional
	ManagedOptions *ManagedOptions `json:"managedOptions,omitempty"`

	// resyncPeriod defines how frequently the controller will re-reconcile
	// this resource even when no changes have been detected. This overrides
	// the global default resync period. The value must be a valid Go duration
	// string, e.g. "10m", "1h". Set to "0s" to disable periodic resync for
	// this resource. Very low values may cause excessive OpenStack API load.
	// +optional
	ResyncPeriod *metav1.Duration `json:"resyncPeriod,omitempty"` //nolint:kubeapilinter // metav1.Duration is appropriate for user-facing duration config

	// cloudCredentialsRef points to a secret containing OpenStack credentials
	// +required
	CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}

ApplicationCredentialSpec defines the desired state of an ORC object. +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? has(self.resource) : true",message="resource must be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? !has(self.__import__) : true",message="import may not be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? !has(self.resource) : true",message="resource may not be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? has(self.__import__) : true",message="import must be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="has(self.managedOptions) ? self.managementPolicy == 'managed' : true",message="managedOptions may only be provided when policy is managed"

func (*ApplicationCredentialSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationCredentialSpec.

func (*ApplicationCredentialSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ApplicationCredentialStatus

type ApplicationCredentialStatus struct {
	// 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.
	//
	// +kubebuilder:validation:MaxItems:=32
	// +patchMergeKey=type
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=type
	// +optional
	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"`

	// resource contains the observed state of the OpenStack resource.
	// +optional
	Resource *ApplicationCredentialResourceStatus `json:"resource,omitempty"`

	// lastSyncTime is the timestamp of the last successful reconciliation
	// that fetched state from OpenStack. It is updated each time the
	// controller successfully reads the resource state from the OpenStack
	// API.
	// +optional
	LastSyncTime *metav1.Time `json:"lastSyncTime,omitempty"`
}

ApplicationCredentialStatus defines the observed state of an ORC resource.

func (*ApplicationCredentialStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationCredentialStatus.

func (*ApplicationCredentialStatus) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AvailabilityZoneHint

type AvailabilityZoneHint string

+kubebuilder:validation:MinLength:=1 +kubebuilder:validation:MaxLength:=255

type CIDR

type CIDR string

+kubebuilder:validation:Format:=cidr +kubebuilder:validation:MinLength:=1 +kubebuilder:validation:MaxLength:=49

type CloudCredentialsRefProvider

type CloudCredentialsRefProvider interface {
	GetCloudCredentialsRef() (*string, *CloudCredentialsReference)
}

CloudCredentialsRefProvider is an interface for obtaining OpenStack credentials from an API object +kubebuilder:object:generate:=false

type CloudCredentialsReference

type CloudCredentialsReference struct {
	// secretName is the name of a secret in the same namespace as the resource being provisioned.
	// The secret must contain a key named `clouds.yaml` which contains an OpenStack clouds.yaml file.
	// The secret may optionally contain a key named `cacert` containing a PEM-encoded CA certificate.
	// +required
	// +kubebuilder:validation:MinLength:=1
	// +kubebuilder:validation:MaxLength:=253
	// +orc:kustomize:ref=Secret
	SecretName string `json:"secretName,omitempty"`

	// cloudName specifies the name of the entry in the clouds.yaml file to use.
	// +required
	// +kubebuilder:validation:MinLength:=1
	// +kubebuilder:validation:MaxLength:=256
	CloudName string `json:"cloudName,omitempty"`
}

CloudCredentialsReference is a reference to a secret containing OpenStack credentials.

func (*CloudCredentialsReference) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CloudCredentialsReference.

func (*CloudCredentialsReference) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DNSDomain

type DNSDomain string

+kubebuilder:validation:MinLength:=1 +kubebuilder:validation:MaxLength:=255 +kubebuilder:validation:Pattern:="^[A-Za-z0-9]{1,63}(.[A-Za-z0-9-]{1,63})*(.[A-Za-z]{2,63})*.?$"

type DNSZone

type DNSZone struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the object metadata
	// +optional
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// spec specifies the desired state of the resource.
	// +required
	Spec DNSZoneSpec `json:"spec,omitzero"`

	// status defines the observed state of the resource.
	// +optional
	Status DNSZoneStatus `json:"status,omitempty"`
}

DNSZone is the Schema for an ORC resource.

func (*DNSZone) DeepCopy

func (in *DNSZone) DeepCopy() *DNSZone

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DNSZone.

func (*DNSZone) DeepCopyInto

func (in *DNSZone) DeepCopyInto(out *DNSZone)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*DNSZone) DeepCopyObject

func (in *DNSZone) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*DNSZone) GetCloudCredentialsRef

func (i *DNSZone) GetCloudCredentialsRef() (*string, *CloudCredentialsReference)

func (*DNSZone) GetConditions

func (i *DNSZone) GetConditions() []metav1.Condition

type DNSZoneFilter

type DNSZoneFilter struct {
	// name of the existing resource
	// +optional
	Name *DesignateFQDN `json:"name,omitempty"`

	// email of the existing resource
	// +kubebuilder:validation:Format:=email
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	Email *string `json:"email,omitempty"`

	// description of the existing resource
	// +kubebuilder:validation:MinLength:=1
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	Description *string `json:"description,omitempty"`

	// type of the existing resource
	// +optional
	Type *DNSZoneType `json:"type,omitempty"`
}

DNSZoneFilter defines an existing resource by its properties +kubebuilder:validation:MinProperties:=1

func (*DNSZoneFilter) DeepCopy

func (in *DNSZoneFilter) DeepCopy() *DNSZoneFilter

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DNSZoneFilter.

func (*DNSZoneFilter) DeepCopyInto

func (in *DNSZoneFilter) DeepCopyInto(out *DNSZoneFilter)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DNSZoneImport

type DNSZoneImport 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.
	// +kubebuilder:validation:Format:=uuid
	// +kubebuilder:validation:MaxLength:=36
	// +optional
	ID *string `json:"id,omitempty"` //nolint:kubeapilinter

	// 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.
	// +optional
	Filter *DNSZoneFilter `json:"filter,omitempty"`
}

DNSZoneImport specifies an existing resource which will be imported instead of creating a new one +kubebuilder:validation:MinProperties:=1 +kubebuilder:validation:MaxProperties:=1

func (*DNSZoneImport) DeepCopy

func (in *DNSZoneImport) DeepCopy() *DNSZoneImport

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DNSZoneImport.

func (*DNSZoneImport) DeepCopyInto

func (in *DNSZoneImport) DeepCopyInto(out *DNSZoneImport)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DNSZoneList

type DNSZoneList struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the list metadata
	// +optional
	metav1.ListMeta `json:"metadata,omitempty"`

	// items contains a list of DNSZone.
	// +required
	Items []DNSZone `json:"items"`
}

DNSZoneList contains a list of DNSZone.

func (*DNSZoneList) DeepCopy

func (in *DNSZoneList) DeepCopy() *DNSZoneList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DNSZoneList.

func (*DNSZoneList) DeepCopyInto

func (in *DNSZoneList) DeepCopyInto(out *DNSZoneList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*DNSZoneList) DeepCopyObject

func (in *DNSZoneList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*DNSZoneList) GetItems

func (l *DNSZoneList) GetItems() []DNSZone

type DNSZoneResourceSpec

type DNSZoneResourceSpec struct {
	// name is the name of the zone, e.g. "example.com.". Must end with a period, per Designate's
	// own convention.
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="name is immutable"
	// +required
	Name *DesignateFQDN `json:"name,omitempty"` //nolint:kubeapilinter // always populated; pointer kept so the shared getResourceName helper compiles

	// email is the email address of the administrator for the zone. Required for PRIMARY zones,
	// not applicable to SECONDARY zones.
	// +kubebuilder:validation:Format:=email
	// +kubebuilder:validation:MinLength:=1
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	Email *string `json:"email,omitempty"`

	// description is a human-readable description for the resource.
	// +kubebuilder:validation:MinLength:=1
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	Description *string `json:"description,omitempty"`

	// ttl is the default Time To Live for the zone's recordsets, in seconds.
	// +kubebuilder:validation:Minimum:=1
	// +kubebuilder:validation:Maximum:=2147483647
	// +optional
	TTL *int32 `json:"ttl,omitempty"`

	// type is PRIMARY (this zone's data is authoritative here) or SECONDARY (replicated from
	// masters over AXFR).
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="type is immutable"
	// +kubebuilder:default:="PRIMARY"
	// +optional
	Type DNSZoneType `json:"type,omitempty"`

	// masters are the master server IPs to transfer a SECONDARY zone's records from over AXFR.
	// Required when type is SECONDARY, must not be set when type is PRIMARY.
	// +kubebuilder:validation:MaxItems:=32
	// +listType=set
	// +optional
	Masters []IPvAny `json:"masters,omitempty"`
}

DNSZoneResourceSpec contains the desired state of the resource. +kubebuilder:validation:XValidation:rule="self.type == 'PRIMARY' ? has(self.email) : true",message="email is required for PRIMARY zones" +kubebuilder:validation:XValidation:rule="self.type == 'SECONDARY' ? (has(self.masters) && self.masters.size() > 0) : true",message="masters is required for SECONDARY zones" +kubebuilder:validation:XValidation:rule="self.type == 'PRIMARY' ? !has(self.masters) : true",message="masters must not be set for PRIMARY zones" +kubebuilder:validation:XValidation:rule="self.type == 'SECONDARY' ? !has(self.email) : true",message="email must not be set for SECONDARY zones" +kubebuilder:validation:XValidation:rule="self.type == 'SECONDARY' ? !has(self.ttl) : true",message="ttl must not be set for SECONDARY zones"

func (*DNSZoneResourceSpec) DeepCopy

func (in *DNSZoneResourceSpec) DeepCopy() *DNSZoneResourceSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DNSZoneResourceSpec.

func (*DNSZoneResourceSpec) DeepCopyInto

func (in *DNSZoneResourceSpec) DeepCopyInto(out *DNSZoneResourceSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DNSZoneResourceStatus

type DNSZoneResourceStatus struct {
	// name is the name of the zone, e.g. "example.com.".
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	Name string `json:"name,omitempty"`

	// email is the email contact of the zone.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	Email string `json:"email,omitempty"`

	// description is a human-readable description for the resource.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	Description string `json:"description,omitempty"`

	// ttl is the default Time To Live for the zone's recordsets, in seconds.
	// +optional
	TTL *int32 `json:"ttl,omitempty"`

	// type is PRIMARY or SECONDARY.
	// +kubebuilder:validation:MaxLength=255
	// +optional
	Type string `json:"type,omitempty"`

	// masters are the master server IPs this SECONDARY zone transfers its records from.
	// +kubebuilder:validation:MaxItems:=32
	// +kubebuilder:validation:items:MaxLength=1024
	// +listType=set
	// +optional
	Masters []string `json:"masters,omitempty"`

	// serial is the zone's current SOA serial number.
	// +optional
	Serial *int64 `json:"serial,omitempty"`

	// transferredAt is the last time this SECONDARY zone's records were refreshed from its
	// masters. Unset for PRIMARY zones.
	// +optional
	TransferredAt *metav1.Time `json:"transferredAt,omitempty"`

	// projectID is the ID of the OpenStack project that owns this zone. Not to be confused with
	// a DNSZoneShare's targetProjectID, which grants a *different* project access without
	// changing ownership.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	ProjectID string `json:"projectID,omitempty"`
}

DNSZoneResourceStatus represents the observed state of the resource.

func (*DNSZoneResourceStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DNSZoneResourceStatus.

func (*DNSZoneResourceStatus) DeepCopyInto

func (in *DNSZoneResourceStatus) DeepCopyInto(out *DNSZoneResourceStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DNSZoneSpec

type DNSZoneSpec struct {
	// import refers to an existing OpenStack resource which will be imported instead of
	// creating a new one.
	// +optional
	Import *DNSZoneImport `json:"import,omitempty"`

	// resource specifies the desired state of the resource.
	//
	// resource may not be specified if the management policy is `unmanaged`.
	//
	// resource must be specified if the management policy is `managed`.
	// +optional
	Resource *DNSZoneResourceSpec `json:"resource,omitempty"`

	// managementPolicy defines how ORC will treat the object. Valid values are
	// `managed`: ORC will create, update, and delete the resource; `unmanaged`:
	// ORC will import an existing resource, and will not apply updates to it or
	// delete it.
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
	// +kubebuilder:default:=managed
	// +optional
	ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`

	// managedOptions specifies options which may be applied to managed objects.
	// +optional
	ManagedOptions *ManagedOptions `json:"managedOptions,omitempty"`

	// resyncPeriod defines how frequently the controller will re-reconcile
	// this resource even when no changes have been detected. This overrides
	// the global default resync period. The value must be a valid Go duration
	// string, e.g. "10m", "1h". Set to "0s" to disable periodic resync for
	// this resource. Very low values may cause excessive OpenStack API load.
	// +optional
	ResyncPeriod *metav1.Duration `json:"resyncPeriod,omitempty"` //nolint:kubeapilinter // metav1.Duration is appropriate for user-facing duration config

	// cloudCredentialsRef points to a secret containing OpenStack credentials
	// +required
	CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}

DNSZoneSpec defines the desired state of an ORC object. +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? has(self.resource) : true",message="resource must be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? !has(self.__import__) : true",message="import may not be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? !has(self.resource) : true",message="resource may not be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? has(self.__import__) : true",message="import must be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="has(self.managedOptions) ? self.managementPolicy == 'managed' : true",message="managedOptions may only be provided when policy is managed"

func (*DNSZoneSpec) DeepCopy

func (in *DNSZoneSpec) DeepCopy() *DNSZoneSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DNSZoneSpec.

func (*DNSZoneSpec) DeepCopyInto

func (in *DNSZoneSpec) DeepCopyInto(out *DNSZoneSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DNSZoneStatus

type DNSZoneStatus struct {
	// 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.
	//
	// +kubebuilder:validation:MaxItems:=32
	// +patchMergeKey=type
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=type
	// +optional
	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"`

	// resource contains the observed state of the OpenStack resource.
	// +optional
	Resource *DNSZoneResourceStatus `json:"resource,omitempty"`

	// lastSyncTime is the timestamp of the last successful reconciliation
	// that fetched state from OpenStack. It is updated each time the
	// controller successfully reads the resource state from the OpenStack
	// API.
	// +optional
	LastSyncTime *metav1.Time `json:"lastSyncTime,omitempty"`
}

DNSZoneStatus defines the observed state of an ORC resource.

func (*DNSZoneStatus) DeepCopy

func (in *DNSZoneStatus) DeepCopy() *DNSZoneStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DNSZoneStatus.

func (*DNSZoneStatus) DeepCopyInto

func (in *DNSZoneStatus) DeepCopyInto(out *DNSZoneStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DNSZoneType

type DNSZoneType string

DNSZoneType is the type of a DNS zone - whether this ORC object owns the zone's data (PRIMARY) or replicates it from external master servers over AXFR (SECONDARY). This is Designate's own DNS-protocol zone transfer concept, unrelated to project ownership - see DNSZoneShare for sharing access to a zone with another OpenStack project. +kubebuilder:validation:Enum:=PRIMARY;SECONDARY

const (
	DNSZoneTypePrimary   DNSZoneType = "PRIMARY"
	DNSZoneTypeSecondary DNSZoneType = "SECONDARY"
)

type DesignateFQDN

type DesignateFQDN string

DesignateFQDN is a fully-qualified domain name in Designate's own convention: it must end with a trailing period, e.g. "example.com.". +kubebuilder:validation:MinLength:=1 +kubebuilder:validation:MaxLength:=255 +kubebuilder:validation:XValidation:rule="self.endsWith('.')",message="must end with a period"

type Domain

type Domain struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the object metadata
	// +optional
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// spec specifies the desired state of the resource.
	// +required
	Spec DomainSpec `json:"spec,omitzero"`

	// status defines the observed state of the resource.
	// +optional
	Status DomainStatus `json:"status,omitempty"`
}

Domain is the Schema for an ORC resource.

func (*Domain) DeepCopy

func (in *Domain) DeepCopy() *Domain

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Domain.

func (*Domain) DeepCopyInto

func (in *Domain) DeepCopyInto(out *Domain)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Domain) DeepCopyObject

func (in *Domain) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*Domain) GetCloudCredentialsRef

func (i *Domain) GetCloudCredentialsRef() (*string, *CloudCredentialsReference)

func (*Domain) GetConditions

func (i *Domain) GetConditions() []metav1.Condition

type DomainFilter

type DomainFilter struct {
	// name of the existing resource
	// +optional
	Name *KeystoneName `json:"name,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).
	// +optional
	Enabled *bool `json:"enabled,omitempty"`
}

DomainFilter defines an existing resource by its properties +kubebuilder:validation:MinProperties:=1

func (*DomainFilter) DeepCopy

func (in *DomainFilter) DeepCopy() *DomainFilter

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DomainFilter.

func (*DomainFilter) DeepCopyInto

func (in *DomainFilter) DeepCopyInto(out *DomainFilter)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DomainImport

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.
	// +kubebuilder:validation:Pattern=`^[a-zA-Z0-9-]+$`
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=64
	// +optional
	ID *string `json:"id,omitempty"` //nolint:kubeapilinter

	// 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.
	// +optional
	Filter *DomainFilter `json:"filter,omitempty"`
}

DomainImport specifies an existing resource which will be imported instead of creating a new one +kubebuilder:validation:MinProperties:=1 +kubebuilder:validation:MaxProperties:=1

func (*DomainImport) DeepCopy

func (in *DomainImport) DeepCopy() *DomainImport

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DomainImport.

func (*DomainImport) DeepCopyInto

func (in *DomainImport) DeepCopyInto(out *DomainImport)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DomainList

type DomainList struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the list metadata
	// +optional
	metav1.ListMeta `json:"metadata,omitempty"`

	// items contains a list of Domain.
	// +required
	Items []Domain `json:"items"`
}

DomainList contains a list of Domain.

func (*DomainList) DeepCopy

func (in *DomainList) DeepCopy() *DomainList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DomainList.

func (*DomainList) DeepCopyInto

func (in *DomainList) DeepCopyInto(out *DomainList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*DomainList) DeepCopyObject

func (in *DomainList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*DomainList) GetItems

func (l *DomainList) GetItems() []Domain

type DomainResourceSpec

type DomainResourceSpec struct {
	// name will be the name of the created resource. If not specified, the
	// name of the ORC object will be used.
	// +optional
	Name *KeystoneName `json:"name,omitempty"`

	// description is a human-readable description for the resource.
	// +kubebuilder:validation:MinLength:=1
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	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).
	// +optional
	Enabled *bool `json:"enabled,omitempty"`
}

DomainResourceSpec contains the desired state of the resource.

func (*DomainResourceSpec) DeepCopy

func (in *DomainResourceSpec) DeepCopy() *DomainResourceSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DomainResourceSpec.

func (*DomainResourceSpec) DeepCopyInto

func (in *DomainResourceSpec) DeepCopyInto(out *DomainResourceSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DomainResourceStatus

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"`

	// description is a human-readable description for the resource.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	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).
	// +optional
	Enabled *bool `json:"enabled,omitempty"`
}

DomainResourceStatus represents the observed state of the resource.

func (*DomainResourceStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DomainResourceStatus.

func (*DomainResourceStatus) DeepCopyInto

func (in *DomainResourceStatus) DeepCopyInto(out *DomainResourceStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DomainSpec

type DomainSpec struct {
	// import refers to an existing OpenStack resource which will be imported instead of
	// creating a new one.
	// +optional
	Import *DomainImport `json:"import,omitempty"`

	// resource specifies the desired state of the resource.
	//
	// resource may not be specified if the management policy is `unmanaged`.
	//
	// resource must be specified if the management policy is `managed`.
	// +optional
	Resource *DomainResourceSpec `json:"resource,omitempty"`

	// managementPolicy defines how ORC will treat the object. Valid values are
	// `managed`: ORC will create, update, and delete the resource; `unmanaged`:
	// ORC will import an existing resource, and will not apply updates to it or
	// delete it.
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
	// +kubebuilder:default:=managed
	// +optional
	ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`

	// managedOptions specifies options which may be applied to managed objects.
	// +optional
	ManagedOptions *ManagedOptions `json:"managedOptions,omitempty"`

	// resyncPeriod defines how frequently the controller will re-reconcile
	// this resource even when no changes have been detected. This overrides
	// the global default resync period. The value must be a valid Go duration
	// string, e.g. "10m", "1h". Set to "0s" to disable periodic resync for
	// this resource. Very low values may cause excessive OpenStack API load.
	// +optional
	ResyncPeriod *metav1.Duration `json:"resyncPeriod,omitempty"` //nolint:kubeapilinter // metav1.Duration is appropriate for user-facing duration config

	// cloudCredentialsRef points to a secret containing OpenStack credentials
	// +required
	CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}

DomainSpec defines the desired state of an ORC object. +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? has(self.resource) : true",message="resource must be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? !has(self.__import__) : true",message="import may not be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? !has(self.resource) : true",message="resource may not be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? has(self.__import__) : true",message="import must be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="has(self.managedOptions) ? self.managementPolicy == 'managed' : true",message="managedOptions may only be provided when policy is managed"

func (*DomainSpec) DeepCopy

func (in *DomainSpec) DeepCopy() *DomainSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DomainSpec.

func (*DomainSpec) DeepCopyInto

func (in *DomainSpec) DeepCopyInto(out *DomainSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DomainStatus

type DomainStatus struct {
	// 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.
	//
	// +kubebuilder:validation:MaxItems:=32
	// +patchMergeKey=type
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=type
	// +optional
	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"`

	// resource contains the observed state of the OpenStack resource.
	// +optional
	Resource *DomainResourceStatus `json:"resource,omitempty"`

	// lastSyncTime is the timestamp of the last successful reconciliation
	// that fetched state from OpenStack. It is updated each time the
	// controller successfully reads the resource state from the OpenStack
	// API.
	// +optional
	LastSyncTime *metav1.Time `json:"lastSyncTime,omitempty"`
}

DomainStatus defines the observed state of an ORC resource.

func (*DomainStatus) DeepCopy

func (in *DomainStatus) DeepCopy() *DomainStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DomainStatus.

func (*DomainStatus) DeepCopyInto

func (in *DomainStatus) DeepCopyInto(out *DomainStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Endpoint

type Endpoint struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the object metadata
	// +optional
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// spec specifies the desired state of the resource.
	// +required
	Spec EndpointSpec `json:"spec,omitzero"`

	// status defines the observed state of the resource.
	// +optional
	Status EndpointStatus `json:"status,omitempty"`
}

Endpoint is the Schema for an ORC resource.

func (*Endpoint) DeepCopy

func (in *Endpoint) DeepCopy() *Endpoint

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Endpoint.

func (*Endpoint) DeepCopyInto

func (in *Endpoint) DeepCopyInto(out *Endpoint)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Endpoint) DeepCopyObject

func (in *Endpoint) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*Endpoint) GetCloudCredentialsRef

func (i *Endpoint) GetCloudCredentialsRef() (*string, *CloudCredentialsReference)

func (*Endpoint) GetConditions

func (i *Endpoint) GetConditions() []metav1.Condition

type EndpointFilter

type EndpointFilter struct {
	// interface of the existing endpoint.
	// +kubebuilder:validation:Enum:=admin;internal;public
	// +optional
	Interface string `json:"interface,omitempty"`

	// serviceRef is a reference to the ORC Service which this resource is associated with.
	// +optional
	// +orc:kustomize:ref=Service
	ServiceRef *KubernetesNameRef `json:"serviceRef,omitempty"`

	// regionRef is a reference to the ORC Region which this resource is associated with.
	// +optional
	// +orc:kustomize:ref=Region
	RegionRef *KubernetesNameRef `json:"regionRef,omitempty"`

	// url is the URL of the existing endpoint.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	URL string `json:"url,omitempty"`
}

EndpointFilter defines an existing resource by its properties +kubebuilder:validation:MinProperties:=1

func (*EndpointFilter) DeepCopy

func (in *EndpointFilter) DeepCopy() *EndpointFilter

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EndpointFilter.

func (*EndpointFilter) DeepCopyInto

func (in *EndpointFilter) DeepCopyInto(out *EndpointFilter)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type EndpointImport

type EndpointImport 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.
	// +kubebuilder:validation:Format:=uuid
	// +kubebuilder:validation:MaxLength:=36
	// +optional
	ID *string `json:"id,omitempty"` //nolint:kubeapilinter

	// 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.
	// +optional
	Filter *EndpointFilter `json:"filter,omitempty"`
}

EndpointImport specifies an existing resource which will be imported instead of creating a new one +kubebuilder:validation:MinProperties:=1 +kubebuilder:validation:MaxProperties:=1

func (*EndpointImport) DeepCopy

func (in *EndpointImport) DeepCopy() *EndpointImport

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EndpointImport.

func (*EndpointImport) DeepCopyInto

func (in *EndpointImport) DeepCopyInto(out *EndpointImport)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type EndpointList

type EndpointList struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the list metadata
	// +optional
	metav1.ListMeta `json:"metadata,omitempty"`

	// items contains a list of Endpoint.
	// +required
	Items []Endpoint `json:"items"`
}

EndpointList contains a list of Endpoint.

func (*EndpointList) DeepCopy

func (in *EndpointList) DeepCopy() *EndpointList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EndpointList.

func (*EndpointList) DeepCopyInto

func (in *EndpointList) DeepCopyInto(out *EndpointList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*EndpointList) DeepCopyObject

func (in *EndpointList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*EndpointList) GetItems

func (l *EndpointList) GetItems() []Endpoint

type EndpointResourceSpec

type EndpointResourceSpec struct {
	// description is a human-readable description for the resource.
	// +kubebuilder:validation:MinLength:=1
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="description is immutable"
	Description *string `json:"description,omitempty"`

	// enabled indicates whether the endpoint is enabled or not.
	// +optional
	Enabled *bool `json:"enabled,omitempty"`

	// interface indicates the visibility of the endpoint.
	// +kubebuilder:validation:Enum:=admin;internal;public
	// +required
	Interface string `json:"interface,omitempty"`

	// url is the endpoint URL.
	// +kubebuilder:validation:MaxLength=1024
	// +required
	URL string `json:"url"`

	// serviceRef is a reference to the ORC Service which this resource is associated with.
	// +required
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="serviceRef is immutable"
	// +orc:kustomize:ref=Service
	ServiceRef KubernetesNameRef `json:"serviceRef,omitempty"`

	// regionRef is a reference to the ORC Region which this resource is associated with.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="regionRef is immutable"
	// +orc:kustomize:ref=Region
	RegionRef *KubernetesNameRef `json:"regionRef,omitempty"`
}

EndpointResourceSpec contains the desired state of the resource.

func (*EndpointResourceSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EndpointResourceSpec.

func (*EndpointResourceSpec) DeepCopyInto

func (in *EndpointResourceSpec) DeepCopyInto(out *EndpointResourceSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type EndpointResourceStatus

type EndpointResourceStatus struct {
	// description is a human-readable description for the resource.
	// +kubebuilder:validation:MinLength:=1
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	Description string `json:"description,omitempty"`

	// enabled indicates whether the endpoint is enabled or not.
	// +optional
	Enabled *bool `json:"enabled,omitempty"`

	// interface indicates the visibility of the endpoint.
	// +kubebuilder:validation:MaxLength=128
	// +optional
	Interface string `json:"interface,omitempty"`

	// url is the endpoint URL.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	URL string `json:"url,omitempty"`

	// serviceID is the ID of the Service to which the resource is associated.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	ServiceID string `json:"serviceID,omitempty"`

	// regionID is the name and ID of the Region to which the resource is associated.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	RegionID string `json:"regionID,omitempty"`
}

EndpointResourceStatus represents the observed state of the resource.

func (*EndpointResourceStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EndpointResourceStatus.

func (*EndpointResourceStatus) DeepCopyInto

func (in *EndpointResourceStatus) DeepCopyInto(out *EndpointResourceStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type EndpointSpec

type EndpointSpec struct {
	// import refers to an existing OpenStack resource which will be imported instead of
	// creating a new one.
	// +optional
	Import *EndpointImport `json:"import,omitempty"`

	// resource specifies the desired state of the resource.
	//
	// resource may not be specified if the management policy is `unmanaged`.
	//
	// resource must be specified if the management policy is `managed`.
	// +optional
	Resource *EndpointResourceSpec `json:"resource,omitempty"`

	// managementPolicy defines how ORC will treat the object. Valid values are
	// `managed`: ORC will create, update, and delete the resource; `unmanaged`:
	// ORC will import an existing resource, and will not apply updates to it or
	// delete it.
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
	// +kubebuilder:default:=managed
	// +optional
	ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`

	// managedOptions specifies options which may be applied to managed objects.
	// +optional
	ManagedOptions *ManagedOptions `json:"managedOptions,omitempty"`

	// resyncPeriod defines how frequently the controller will re-reconcile
	// this resource even when no changes have been detected. This overrides
	// the global default resync period. The value must be a valid Go duration
	// string, e.g. "10m", "1h". Set to "0s" to disable periodic resync for
	// this resource. Very low values may cause excessive OpenStack API load.
	// +optional
	ResyncPeriod *metav1.Duration `json:"resyncPeriod,omitempty"` //nolint:kubeapilinter // metav1.Duration is appropriate for user-facing duration config

	// cloudCredentialsRef points to a secret containing OpenStack credentials
	// +required
	CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}

EndpointSpec defines the desired state of an ORC object. +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? has(self.resource) : true",message="resource must be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? !has(self.__import__) : true",message="import may not be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? !has(self.resource) : true",message="resource may not be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? has(self.__import__) : true",message="import must be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="has(self.managedOptions) ? self.managementPolicy == 'managed' : true",message="managedOptions may only be provided when policy is managed"

func (*EndpointSpec) DeepCopy

func (in *EndpointSpec) DeepCopy() *EndpointSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EndpointSpec.

func (*EndpointSpec) DeepCopyInto

func (in *EndpointSpec) DeepCopyInto(out *EndpointSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type EndpointStatus

type EndpointStatus struct {
	// 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.
	//
	// +kubebuilder:validation:MaxItems:=32
	// +patchMergeKey=type
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=type
	// +optional
	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"`

	// resource contains the observed state of the OpenStack resource.
	// +optional
	Resource *EndpointResourceStatus `json:"resource,omitempty"`

	// lastSyncTime is the timestamp of the last successful reconciliation
	// that fetched state from OpenStack. It is updated each time the
	// controller successfully reads the resource state from the OpenStack
	// API.
	// +optional
	LastSyncTime *metav1.Time `json:"lastSyncTime,omitempty"`
}

EndpointStatus defines the observed state of an ORC resource.

func (*EndpointStatus) DeepCopy

func (in *EndpointStatus) DeepCopy() *EndpointStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EndpointStatus.

func (*EndpointStatus) DeepCopyInto

func (in *EndpointStatus) DeepCopyInto(out *EndpointStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Ethertype

type Ethertype string

+kubebuilder:validation:Enum:=IPv4;IPv6

const (
	EthertypeIPv4 Ethertype = "IPv4"
	EthertypeIPv6 Ethertype = "IPv6"
)

type ExternalGateway

type ExternalGateway struct {
	// networkRef is a reference to the ORC Network which the external
	// gateway is on.
	// +required
	// +orc:kustomize:ref=Network
	NetworkRef KubernetesNameRef `json:"networkRef,omitempty"`
}

func (*ExternalGateway) DeepCopy

func (in *ExternalGateway) DeepCopy() *ExternalGateway

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalGateway.

func (*ExternalGateway) DeepCopyInto

func (in *ExternalGateway) DeepCopyInto(out *ExternalGateway)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ExternalGatewayStatus

type ExternalGatewayStatus struct {
	// networkID is the ID of the network the gateway is on.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	NetworkID string `json:"networkID,omitempty"`
}

func (*ExternalGatewayStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalGatewayStatus.

func (*ExternalGatewayStatus) DeepCopyInto

func (in *ExternalGatewayStatus) DeepCopyInto(out *ExternalGatewayStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type FilterByKeystoneTags

type FilterByKeystoneTags struct {
	// tags is a list of tags to filter by. If specified, the resource must
	// have all of the tags specified to be included in the result.
	// +listType=set
	// +optional
	// +kubebuilder:validation:MaxItems:=80
	Tags []KeystoneTag `json:"tags,omitempty"`

	// tagsAny is a list of tags to filter by. If specified, the resource
	// must have at least one of the tags specified to be included in the
	// result.
	// +listType=set
	// +optional
	// +kubebuilder:validation:MaxItems:=80
	TagsAny []KeystoneTag `json:"tagsAny,omitempty"`

	// notTags is a list of tags to filter by. If specified, resources which
	// contain all of the given tags will be excluded from the result.
	// +listType=set
	// +optional
	// +kubebuilder:validation:MaxItems:=80
	NotTags []KeystoneTag `json:"notTags,omitempty"`

	// notTagsAny is a list of tags to filter by. If specified, resources
	// which contain any of the given tags will be excluded from the result.
	// +listType=set
	// +optional
	// +kubebuilder:validation:MaxItems:=80
	NotTagsAny []KeystoneTag `json:"notTagsAny,omitempty"`
}

func (*FilterByKeystoneTags) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FilterByKeystoneTags.

func (*FilterByKeystoneTags) DeepCopyInto

func (in *FilterByKeystoneTags) DeepCopyInto(out *FilterByKeystoneTags)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type FilterByNeutronTags

type FilterByNeutronTags struct {
	// tags is a list of tags to filter by. If specified, the resource must
	// have all of the tags specified to be included in the result.
	// +listType=set
	// +optional
	// +kubebuilder:validation:MaxItems:=64
	Tags []NeutronTag `json:"tags,omitempty"`

	// tagsAny is a list of tags to filter by. If specified, the resource
	// must have at least one of the tags specified to be included in the
	// result.
	// +listType=set
	// +optional
	// +kubebuilder:validation:MaxItems:=64
	TagsAny []NeutronTag `json:"tagsAny,omitempty"`

	// notTags is a list of tags to filter by. If specified, resources which
	// contain all of the given tags will be excluded from the result.
	// +listType=set
	// +optional
	// +kubebuilder:validation:MaxItems:=64
	NotTags []NeutronTag `json:"notTags,omitempty"`

	// notTagsAny is a list of tags to filter by. If specified, resources
	// which contain any of the given tags will be excluded from the result.
	// +listType=set
	// +optional
	// +kubebuilder:validation:MaxItems:=64
	NotTagsAny []NeutronTag `json:"notTagsAny,omitempty"`
}

func (*FilterByNeutronTags) DeepCopy

func (in *FilterByNeutronTags) DeepCopy() *FilterByNeutronTags

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FilterByNeutronTags.

func (*FilterByNeutronTags) DeepCopyInto

func (in *FilterByNeutronTags) DeepCopyInto(out *FilterByNeutronTags)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type FilterByServerTags

type FilterByServerTags struct {
	// tags is a list of tags to filter by. If specified, the resource must
	// have all of the tags specified to be included in the result.
	// +listType=set
	// +optional
	// +kubebuilder:validation:MaxItems:=50
	Tags []ServerTag `json:"tags,omitempty"`

	// tagsAny is a list of tags to filter by. If specified, the resource
	// must have at least one of the tags specified to be included in the
	// result.
	// +listType=set
	// +optional
	// +kubebuilder:validation:MaxItems:=50
	TagsAny []ServerTag `json:"tagsAny,omitempty"`

	// notTags is a list of tags to filter by. If specified, resources which
	// contain all of the given tags will be excluded from the result.
	// +listType=set
	// +optional
	// +kubebuilder:validation:MaxItems:=50
	NotTags []ServerTag `json:"notTags,omitempty"`

	// notTagsAny is a list of tags to filter by. If specified, resources
	// which contain any of the given tags will be excluded from the result.
	// +listType=set
	// +optional
	// +kubebuilder:validation:MaxItems:=50
	NotTagsAny []ServerTag `json:"notTagsAny,omitempty"`
}

func (*FilterByServerTags) DeepCopy

func (in *FilterByServerTags) DeepCopy() *FilterByServerTags

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FilterByServerTags.

func (*FilterByServerTags) DeepCopyInto

func (in *FilterByServerTags) DeepCopyInto(out *FilterByServerTags)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type FixedIPStatus

type FixedIPStatus struct {
	// ip contains a fixed IP address assigned to the port.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	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"`
}

func (*FixedIPStatus) DeepCopy

func (in *FixedIPStatus) DeepCopy() *FixedIPStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FixedIPStatus.

func (*FixedIPStatus) DeepCopyInto

func (in *FixedIPStatus) DeepCopyInto(out *FixedIPStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Flavor

type Flavor struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the object metadata
	// +optional
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// spec specifies the desired state of the resource.
	// +required
	Spec FlavorSpec `json:"spec,omitzero"`

	// status defines the observed state of the resource.
	// +optional
	Status FlavorStatus `json:"status,omitempty"`
}

Flavor is the Schema for an ORC resource.

func (*Flavor) DeepCopy

func (in *Flavor) DeepCopy() *Flavor

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Flavor.

func (*Flavor) DeepCopyInto

func (in *Flavor) DeepCopyInto(out *Flavor)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Flavor) DeepCopyObject

func (in *Flavor) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*Flavor) GetCloudCredentialsRef

func (i *Flavor) GetCloudCredentialsRef() (*string, *CloudCredentialsReference)

func (*Flavor) GetConditions

func (i *Flavor) GetConditions() []metav1.Condition

type FlavorExtraSpec

type FlavorExtraSpec struct {
	// name is the name of the extraspec
	// +kubebuilder:validation:Pattern="^[a-zA-Z0-9-_:. ]+$"
	// +kubebuilder:validation:MaxLength:=255
	// +required
	Name string `json:"name"`

	// value is the value of the extraspec
	// +kubebuilder:validation:MaxLength:=255
	// +required
	Value string `json:"value"`
}

func (*FlavorExtraSpec) DeepCopy

func (in *FlavorExtraSpec) DeepCopy() *FlavorExtraSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlavorExtraSpec.

func (*FlavorExtraSpec) DeepCopyInto

func (in *FlavorExtraSpec) DeepCopyInto(out *FlavorExtraSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type FlavorExtraSpecStatus

type FlavorExtraSpecStatus struct {
	// name is the name of the extraspec
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	Name string `json:"name,omitempty"`

	// value is the value of the extraspec
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	Value string `json:"value,omitempty"`
}

func (*FlavorExtraSpecStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlavorExtraSpecStatus.

func (*FlavorExtraSpecStatus) DeepCopyInto

func (in *FlavorExtraSpecStatus) DeepCopyInto(out *FlavorExtraSpecStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type FlavorFilter

type FlavorFilter struct {
	// name of the existing resource
	// +optional
	Name *OpenStackName `json:"name,omitempty"`

	// ram is the memory of the flavor, measured in MB.
	// +kubebuilder:validation:Minimum=1
	// +optional
	RAM *int32 `json:"ram,omitempty"`

	// vcpus is the number of vcpus for the flavor.
	// +kubebuilder:validation:Minimum=1
	// +optional
	Vcpus *int32 `json:"vcpus,omitempty"`

	// disk is the size of the root disk in GiB.
	// +kubebuilder:validation:Minimum=0
	// +optional
	Disk *int32 `json:"disk,omitempty"`
}

FlavorFilter defines an existing resource by its properties +kubebuilder:validation:MinProperties:=1

func (*FlavorFilter) DeepCopy

func (in *FlavorFilter) DeepCopy() *FlavorFilter

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlavorFilter.

func (*FlavorFilter) DeepCopyInto

func (in *FlavorFilter) DeepCopyInto(out *FlavorFilter)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type FlavorImport

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.
	// +kubebuilder:validation:Pattern=`^[a-zA-Z0-9._-]([a-zA-Z0-9. _-]*[a-zA-Z0-9._-])?$`
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=255
	// +optional
	ID *string `json:"id,omitempty"` //nolint:kubeapilinter

	// 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.
	// +optional
	Filter *FlavorFilter `json:"filter,omitempty"`
}

FlavorImport specifies an existing resource which will be imported instead of creating a new one +kubebuilder:validation:MinProperties:=1 +kubebuilder:validation:MaxProperties:=1

func (*FlavorImport) DeepCopy

func (in *FlavorImport) DeepCopy() *FlavorImport

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlavorImport.

func (*FlavorImport) DeepCopyInto

func (in *FlavorImport) DeepCopyInto(out *FlavorImport)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type FlavorList

type FlavorList struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the list metadata
	// +optional
	metav1.ListMeta `json:"metadata,omitempty"`

	// items contains a list of Flavor.
	// +required
	Items []Flavor `json:"items"`
}

FlavorList contains a list of Flavor.

func (*FlavorList) DeepCopy

func (in *FlavorList) DeepCopy() *FlavorList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlavorList.

func (*FlavorList) DeepCopyInto

func (in *FlavorList) DeepCopyInto(out *FlavorList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*FlavorList) DeepCopyObject

func (in *FlavorList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*FlavorList) GetItems

func (l *FlavorList) GetItems() []Flavor

type FlavorResourceSpec

type FlavorResourceSpec struct {
	// name will be the name of the created resource. If not specified, the
	// name of the ORC object will be used.
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="name is immutable"
	// +optional
	Name *OpenStackName `json:"name,omitempty"`

	// id will be the id of the created resource. If not specified, a random
	// UUID will be generated by OpenStack.
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=255
	// +kubebuilder:validation:Pattern=^[a-zA-Z0-9._-]([a-zA-Z0-9. _-]*[a-zA-Z0-9._-])?$
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="id is immutable"
	// +optional
	ID string `json:"id,omitempty"` //nolint:kubeapilinter // intentionally allow raw ID

	// description contains a free form description of the flavor.
	// +kubebuilder:validation:MinLength:=1
	// +kubebuilder:validation:MaxLength:=65535
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="description is immutable"
	// +optional
	Description *string `json:"description,omitempty"`

	// ram is the memory of the flavor, measured in MB.
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="ram is immutable"
	// +required
	RAM int32 `json:"ram,omitempty"`

	// vcpus is the number of vcpus for the flavor.
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="vcpus is immutable"
	// +required
	Vcpus int32 `json:"vcpus,omitempty"`

	// disk is the size of the root disk that will be created in GiB. If 0
	// the root disk will be set to exactly the size of the image used to
	// deploy the instance. However, in this case the scheduler cannot
	// select the compute host based on the virtual image size. Therefore,
	// 0 should only be used for volume booted instances or for testing
	// purposes. Volume-backed instances can be enforced for flavors with
	// zero root disk via the
	// os_compute_api:servers:create:zero_disk_flavor policy rule.
	// +kubebuilder:validation:Minimum=0
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="disk is immutable"
	// +required
	Disk int32 `json:"disk"`

	// swap is the size of a dedicated swap disk that will be allocated, in
	// MiB. If 0 (the default), no dedicated swap disk will be created.
	// +kubebuilder:validation:Minimum=0
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="swap is immutable"
	// +optional
	Swap int32 `json:"swap,omitempty"`

	// extraSpecs is a list of key-value pairs that define extra specifications for the flavor.
	// +kubebuilder:validation:MaxItems:=128
	// +listType=map
	// +listMapKey=name
	// +optional
	ExtraSpecs []FlavorExtraSpec `json:"extraSpecs,omitempty"`

	// isPublic flags a flavor as being available to all projects or not.
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="isPublic is immutable"
	// +optional
	IsPublic *bool `json:"isPublic,omitempty"`

	// ephemeral is the size of the ephemeral disk that will be created, in GiB.
	// Ephemeral disks may be written over on server state changes. So should only
	// be used as a scratch space for applications that are aware of its
	// limitations. Defaults to 0.
	// +kubebuilder:validation:Minimum=0
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="ephemeral is immutable"
	// +optional
	Ephemeral int32 `json:"ephemeral,omitempty"`
}

FlavorResourceSpec contains the desired state of a flavor

func (*FlavorResourceSpec) DeepCopy

func (in *FlavorResourceSpec) DeepCopy() *FlavorResourceSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlavorResourceSpec.

func (*FlavorResourceSpec) DeepCopyInto

func (in *FlavorResourceSpec) DeepCopyInto(out *FlavorResourceSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type FlavorResourceStatus

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"`

	// description is a human-readable description for the resource.
	// +kubebuilder:validation:MaxLength:=65535
	// +optional
	Description string `json:"description,omitempty"`

	// ram is the memory of the flavor, measured in MB.
	// +optional
	RAM *int32 `json:"ram,omitempty"`

	// vcpus is the number of vcpus for the flavor.
	// +optional
	Vcpus *int32 `json:"vcpus,omitempty"`

	// disk is the size of the root disk that will be created in GiB.
	// +optional
	Disk *int32 `json:"disk,omitempty"`

	// swap is the size of a dedicated swap disk that will be allocated, in
	// MiB.
	// +optional
	Swap *int32 `json:"swap,omitempty"`

	// extraSpecs is a map of key-value pairs that define extra specifications for the flavor.
	// +kubebuilder:validation:MaxItems:=128
	// +listType=atomic
	// +optional
	ExtraSpecs []FlavorExtraSpecStatus `json:"extraSpecs"`

	// isPublic flags a flavor as being available to all projects or not.
	// +optional
	IsPublic *bool `json:"isPublic,omitempty"`

	// ephemeral is the size of the ephemeral disk, in GiB.
	// +optional
	Ephemeral *int32 `json:"ephemeral,omitempty"`
}

FlavorResourceStatus represents the observed state of the resource.

func (*FlavorResourceStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlavorResourceStatus.

func (*FlavorResourceStatus) DeepCopyInto

func (in *FlavorResourceStatus) DeepCopyInto(out *FlavorResourceStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type FlavorSpec

type FlavorSpec struct {
	// import refers to an existing OpenStack resource which will be imported instead of
	// creating a new one.
	// +optional
	Import *FlavorImport `json:"import,omitempty"`

	// resource specifies the desired state of the resource.
	//
	// resource may not be specified if the management policy is `unmanaged`.
	//
	// resource must be specified if the management policy is `managed`.
	// +optional
	Resource *FlavorResourceSpec `json:"resource,omitempty"`

	// managementPolicy defines how ORC will treat the object. Valid values are
	// `managed`: ORC will create, update, and delete the resource; `unmanaged`:
	// ORC will import an existing resource, and will not apply updates to it or
	// delete it.
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
	// +kubebuilder:default:=managed
	// +optional
	ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`

	// managedOptions specifies options which may be applied to managed objects.
	// +optional
	ManagedOptions *ManagedOptions `json:"managedOptions,omitempty"`

	// resyncPeriod defines how frequently the controller will re-reconcile
	// this resource even when no changes have been detected. This overrides
	// the global default resync period. The value must be a valid Go duration
	// string, e.g. "10m", "1h". Set to "0s" to disable periodic resync for
	// this resource. Very low values may cause excessive OpenStack API load.
	// +optional
	ResyncPeriod *metav1.Duration `json:"resyncPeriod,omitempty"` //nolint:kubeapilinter // metav1.Duration is appropriate for user-facing duration config

	// cloudCredentialsRef points to a secret containing OpenStack credentials
	// +required
	CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}

FlavorSpec defines the desired state of an ORC object. +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? has(self.resource) : true",message="resource must be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? !has(self.__import__) : true",message="import may not be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? !has(self.resource) : true",message="resource may not be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? has(self.__import__) : true",message="import must be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="has(self.managedOptions) ? self.managementPolicy == 'managed' : true",message="managedOptions may only be provided when policy is managed"

func (*FlavorSpec) DeepCopy

func (in *FlavorSpec) DeepCopy() *FlavorSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlavorSpec.

func (*FlavorSpec) DeepCopyInto

func (in *FlavorSpec) DeepCopyInto(out *FlavorSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type FlavorStatus

type FlavorStatus struct {
	// 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.
	//
	// +kubebuilder:validation:MaxItems:=32
	// +patchMergeKey=type
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=type
	// +optional
	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"`

	// resource contains the observed state of the OpenStack resource.
	// +optional
	Resource *FlavorResourceStatus `json:"resource,omitempty"`

	// lastSyncTime is the timestamp of the last successful reconciliation
	// that fetched state from OpenStack. It is updated each time the
	// controller successfully reads the resource state from the OpenStack
	// API.
	// +optional
	LastSyncTime *metav1.Time `json:"lastSyncTime,omitempty"`
}

FlavorStatus defines the observed state of an ORC resource.

func (*FlavorStatus) DeepCopy

func (in *FlavorStatus) DeepCopy() *FlavorStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlavorStatus.

func (*FlavorStatus) DeepCopyInto

func (in *FlavorStatus) DeepCopyInto(out *FlavorStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type FloatingIP

type FloatingIP struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the object metadata
	// +optional
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// spec specifies the desired state of the resource.
	// +required
	Spec FloatingIPSpec `json:"spec,omitzero"`

	// status defines the observed state of the resource.
	// +optional
	Status FloatingIPStatus `json:"status,omitempty"`
}

FloatingIP is the Schema for an ORC resource.

func (*FloatingIP) DeepCopy

func (in *FloatingIP) DeepCopy() *FloatingIP

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FloatingIP.

func (*FloatingIP) DeepCopyInto

func (in *FloatingIP) DeepCopyInto(out *FloatingIP)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*FloatingIP) DeepCopyObject

func (in *FloatingIP) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*FloatingIP) GetCloudCredentialsRef

func (i *FloatingIP) GetCloudCredentialsRef() (*string, *CloudCredentialsReference)

func (*FloatingIP) GetConditions

func (i *FloatingIP) GetConditions() []metav1.Condition

type FloatingIPFilter

type FloatingIPFilter struct {
	// floatingIP is the floatingip address.
	// +optional
	FloatingIP *IPvAny `json:"floatingIP,omitempty"`

	// description of the existing resource
	// +optional
	Description *NeutronDescription `json:"description,omitempty"`

	// floatingNetworkRef is a reference to the ORC Network which this resource is associated with.
	// +optional
	// +orc:kustomize:ref=Network
	FloatingNetworkRef *KubernetesNameRef `json:"floatingNetworkRef,omitempty"`

	// portRef is a reference to the ORC Port which this resource is associated with.
	// +optional
	// +orc:kustomize:ref=Port
	PortRef *KubernetesNameRef `json:"portRef,omitempty"`

	// projectRef is a reference to the ORC Project this resource is associated with.
	// Typically, only used by admin.
	// +optional
	// +orc:kustomize:ref=Project
	ProjectRef *KubernetesNameRef `json:"projectRef,omitempty"`

	// status is the status of the floatingip.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	Status string `json:"status,omitempty"`

	FilterByNeutronTags `json:",inline"`
}

FloatingIPFilter specifies a query to select an OpenStack floatingip. At least one property must be set. +kubebuilder:validation:MinProperties:=1

func (*FloatingIPFilter) DeepCopy

func (in *FloatingIPFilter) DeepCopy() *FloatingIPFilter

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FloatingIPFilter.

func (*FloatingIPFilter) DeepCopyInto

func (in *FloatingIPFilter) DeepCopyInto(out *FloatingIPFilter)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type FloatingIPImport

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.
	// +kubebuilder:validation:Format:=uuid
	// +kubebuilder:validation:MaxLength:=36
	// +optional
	ID *string `json:"id,omitempty"` //nolint:kubeapilinter

	// 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.
	// +optional
	Filter *FloatingIPFilter `json:"filter,omitempty"`
}

FloatingIPImport specifies an existing resource which will be imported instead of creating a new one +kubebuilder:validation:MinProperties:=1 +kubebuilder:validation:MaxProperties:=1

func (*FloatingIPImport) DeepCopy

func (in *FloatingIPImport) DeepCopy() *FloatingIPImport

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FloatingIPImport.

func (*FloatingIPImport) DeepCopyInto

func (in *FloatingIPImport) DeepCopyInto(out *FloatingIPImport)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type FloatingIPList

type FloatingIPList struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the list metadata
	// +optional
	metav1.ListMeta `json:"metadata,omitempty"`

	// items contains a list of FloatingIP.
	// +required
	Items []FloatingIP `json:"items"`
}

FloatingIPList contains a list of FloatingIP.

func (*FloatingIPList) DeepCopy

func (in *FloatingIPList) DeepCopy() *FloatingIPList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FloatingIPList.

func (*FloatingIPList) DeepCopyInto

func (in *FloatingIPList) DeepCopyInto(out *FloatingIPList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*FloatingIPList) DeepCopyObject

func (in *FloatingIPList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*FloatingIPList) GetItems

func (l *FloatingIPList) GetItems() []FloatingIP

type FloatingIPResourceSpec

type FloatingIPResourceSpec struct {
	// description is a human-readable description for the resource.
	// +optional
	Description *NeutronDescription `json:"description,omitempty"`

	// tags is a list of tags which will be applied to the floatingip.
	// +kubebuilder:validation:MaxItems:=64
	// +listType=set
	// +optional
	Tags []NeutronTag `json:"tags,omitempty"`

	// floatingNetworkRef references the network to which the floatingip is associated.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="floatingNetworkRef is immutable"
	// +orc:kustomize:ref=Network
	FloatingNetworkRef *KubernetesNameRef `json:"floatingNetworkRef,omitempty"`

	// floatingSubnetRef references the subnet to which the floatingip is associated.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="floatingSubnetRef is immutable"
	// +orc:kustomize:ref=Subnet
	FloatingSubnetRef *KubernetesNameRef `json:"floatingSubnetRef,omitempty"`

	// floatingIP is the IP that will be assigned to the floatingip. If not set, it will
	// be assigned automatically.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="floatingIP is immutable"
	FloatingIP *IPvAny `json:"floatingIP,omitempty"`

	// portRef is a reference to the ORC Port which this resource is associated with.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="portRef is immutable"
	// +orc:kustomize:ref=Port
	PortRef *KubernetesNameRef `json:"portRef,omitempty"`

	// fixedIP is the IP address of the port to which the floatingip is associated.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="fixedIP is immutable"
	FixedIP *IPvAny `json:"fixedIP,omitempty"`

	// projectRef is a reference to the ORC Project this resource is associated with.
	// Typically, only used by admin.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="projectRef is immutable"
	// +orc:kustomize:ref=Project
	ProjectRef *KubernetesNameRef `json:"projectRef,omitempty"`
}

FloatingIPResourceSpec contains the desired state of a floating IP +kubebuilder:validation:XValidation:rule="has(self.floatingNetworkRef) != has(self.floatingSubnetRef)",message="Exactly one of 'floatingNetworkRef' or 'floatingSubnetRef' must be set"

func (*FloatingIPResourceSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FloatingIPResourceSpec.

func (*FloatingIPResourceSpec) DeepCopyInto

func (in *FloatingIPResourceSpec) DeepCopyInto(out *FloatingIPResourceSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type FloatingIPResourceStatus

type FloatingIPResourceStatus struct {
	// description is a human-readable description for the resource.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	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"`

	// floatingIP is the IP address of the floatingip.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	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"`

	// fixedIP is the IP address of the port to which the floatingip is associated.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	FixedIP string `json:"fixedIP,omitempty"`

	// tenantID is the project owner of the resource.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	TenantID string `json:"tenantID,omitempty"`

	// projectID is the project owner of the resource.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	ProjectID string `json:"projectID,omitempty"`

	// status indicates the current status of the resource.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	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"`

	// tags is the list of tags on the resource.
	// +kubebuilder:validation:MaxItems:=64
	// +kubebuilder:validation:items:MaxLength=1024
	// +listType=atomic
	// +optional
	Tags []string `json:"tags,omitempty"`

	NeutronStatusMetadata `json:",inline"`
}

func (*FloatingIPResourceStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FloatingIPResourceStatus.

func (*FloatingIPResourceStatus) DeepCopyInto

func (in *FloatingIPResourceStatus) DeepCopyInto(out *FloatingIPResourceStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type FloatingIPSpec

type FloatingIPSpec struct {
	// import refers to an existing OpenStack resource which will be imported instead of
	// creating a new one.
	// +optional
	Import *FloatingIPImport `json:"import,omitempty"`

	// resource specifies the desired state of the resource.
	//
	// resource may not be specified if the management policy is `unmanaged`.
	//
	// resource must be specified if the management policy is `managed`.
	// +optional
	Resource *FloatingIPResourceSpec `json:"resource,omitempty"`

	// managementPolicy defines how ORC will treat the object. Valid values are
	// `managed`: ORC will create, update, and delete the resource; `unmanaged`:
	// ORC will import an existing resource, and will not apply updates to it or
	// delete it.
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
	// +kubebuilder:default:=managed
	// +optional
	ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`

	// managedOptions specifies options which may be applied to managed objects.
	// +optional
	ManagedOptions *ManagedOptions `json:"managedOptions,omitempty"`

	// resyncPeriod defines how frequently the controller will re-reconcile
	// this resource even when no changes have been detected. This overrides
	// the global default resync period. The value must be a valid Go duration
	// string, e.g. "10m", "1h". Set to "0s" to disable periodic resync for
	// this resource. Very low values may cause excessive OpenStack API load.
	// +optional
	ResyncPeriod *metav1.Duration `json:"resyncPeriod,omitempty"` //nolint:kubeapilinter // metav1.Duration is appropriate for user-facing duration config

	// cloudCredentialsRef points to a secret containing OpenStack credentials
	// +required
	CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}

FloatingIPSpec defines the desired state of an ORC object. +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? has(self.resource) : true",message="resource must be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? !has(self.__import__) : true",message="import may not be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? !has(self.resource) : true",message="resource may not be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? has(self.__import__) : true",message="import must be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="has(self.managedOptions) ? self.managementPolicy == 'managed' : true",message="managedOptions may only be provided when policy is managed"

func (*FloatingIPSpec) DeepCopy

func (in *FloatingIPSpec) DeepCopy() *FloatingIPSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FloatingIPSpec.

func (*FloatingIPSpec) DeepCopyInto

func (in *FloatingIPSpec) DeepCopyInto(out *FloatingIPSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type FloatingIPStatus

type FloatingIPStatus struct {
	// 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.
	//
	// +kubebuilder:validation:MaxItems:=32
	// +patchMergeKey=type
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=type
	// +optional
	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"`

	// resource contains the observed state of the OpenStack resource.
	// +optional
	Resource *FloatingIPResourceStatus `json:"resource,omitempty"`

	// lastSyncTime is the timestamp of the last successful reconciliation
	// that fetched state from OpenStack. It is updated each time the
	// controller successfully reads the resource state from the OpenStack
	// API.
	// +optional
	LastSyncTime *metav1.Time `json:"lastSyncTime,omitempty"`
}

FloatingIPStatus defines the observed state of an ORC resource.

func (*FloatingIPStatus) DeepCopy

func (in *FloatingIPStatus) DeepCopy() *FloatingIPStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FloatingIPStatus.

func (*FloatingIPStatus) DeepCopyInto

func (in *FloatingIPStatus) DeepCopyInto(out *FloatingIPStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Group

type Group struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the object metadata
	// +optional
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// spec specifies the desired state of the resource.
	// +required
	Spec GroupSpec `json:"spec,omitzero"`

	// status defines the observed state of the resource.
	// +optional
	Status GroupStatus `json:"status,omitempty"`
}

Group is the Schema for an ORC resource.

func (*Group) DeepCopy

func (in *Group) DeepCopy() *Group

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Group.

func (*Group) DeepCopyInto

func (in *Group) DeepCopyInto(out *Group)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Group) DeepCopyObject

func (in *Group) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*Group) GetCloudCredentialsRef

func (i *Group) GetCloudCredentialsRef() (*string, *CloudCredentialsReference)

func (*Group) GetConditions

func (i *Group) GetConditions() []metav1.Condition

type GroupFilter

type GroupFilter struct {
	// name of the existing resource
	// +optional
	Name *KeystoneName `json:"name,omitempty"`

	// domainRef is a reference to the ORC Domain which this resource is associated with.
	// +optional
	// +orc:kustomize:ref=Domain
	DomainRef *KubernetesNameRef `json:"domainRef,omitempty"`
}

GroupFilter defines an existing resource by its properties +kubebuilder:validation:MinProperties:=1

func (*GroupFilter) DeepCopy

func (in *GroupFilter) DeepCopy() *GroupFilter

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupFilter.

func (*GroupFilter) DeepCopyInto

func (in *GroupFilter) DeepCopyInto(out *GroupFilter)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type GroupImport

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.
	// +kubebuilder:validation:Format:=uuid
	// +kubebuilder:validation:MaxLength:=36
	// +optional
	ID *string `json:"id,omitempty"` //nolint:kubeapilinter

	// 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.
	// +optional
	Filter *GroupFilter `json:"filter,omitempty"`
}

GroupImport specifies an existing resource which will be imported instead of creating a new one +kubebuilder:validation:MinProperties:=1 +kubebuilder:validation:MaxProperties:=1

func (*GroupImport) DeepCopy

func (in *GroupImport) DeepCopy() *GroupImport

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupImport.

func (*GroupImport) DeepCopyInto

func (in *GroupImport) DeepCopyInto(out *GroupImport)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type GroupList

type GroupList struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the list metadata
	// +optional
	metav1.ListMeta `json:"metadata,omitempty"`

	// items contains a list of Group.
	// +required
	Items []Group `json:"items"`
}

GroupList contains a list of Group.

func (*GroupList) DeepCopy

func (in *GroupList) DeepCopy() *GroupList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupList.

func (*GroupList) DeepCopyInto

func (in *GroupList) DeepCopyInto(out *GroupList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*GroupList) DeepCopyObject

func (in *GroupList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*GroupList) GetItems

func (l *GroupList) GetItems() []Group

type GroupResourceSpec

type GroupResourceSpec struct {
	// name will be the name of the created resource. If not specified, the
	// name of the ORC object will be used.
	// +optional
	Name *KeystoneName `json:"name,omitempty"`

	// description is a human-readable description for the resource.
	// +kubebuilder:validation:MinLength:=1
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	Description *string `json:"description,omitempty"`

	// domainRef is a reference to the ORC Domain which this resource is associated with.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="domainRef is immutable"
	// +orc:kustomize:ref=Domain
	DomainRef *KubernetesNameRef `json:"domainRef,omitempty"`
}

GroupResourceSpec contains the desired state of the resource.

func (*GroupResourceSpec) DeepCopy

func (in *GroupResourceSpec) DeepCopy() *GroupResourceSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupResourceSpec.

func (*GroupResourceSpec) DeepCopyInto

func (in *GroupResourceSpec) DeepCopyInto(out *GroupResourceSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type GroupResourceStatus

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"`

	// description is a human-readable description for the resource.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	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"`
}

GroupResourceStatus represents the observed state of the resource.

func (*GroupResourceStatus) DeepCopy

func (in *GroupResourceStatus) DeepCopy() *GroupResourceStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupResourceStatus.

func (*GroupResourceStatus) DeepCopyInto

func (in *GroupResourceStatus) DeepCopyInto(out *GroupResourceStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type GroupSpec

type GroupSpec struct {
	// import refers to an existing OpenStack resource which will be imported instead of
	// creating a new one.
	// +optional
	Import *GroupImport `json:"import,omitempty"`

	// resource specifies the desired state of the resource.
	//
	// resource may not be specified if the management policy is `unmanaged`.
	//
	// resource must be specified if the management policy is `managed`.
	// +optional
	Resource *GroupResourceSpec `json:"resource,omitempty"`

	// managementPolicy defines how ORC will treat the object. Valid values are
	// `managed`: ORC will create, update, and delete the resource; `unmanaged`:
	// ORC will import an existing resource, and will not apply updates to it or
	// delete it.
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
	// +kubebuilder:default:=managed
	// +optional
	ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`

	// managedOptions specifies options which may be applied to managed objects.
	// +optional
	ManagedOptions *ManagedOptions `json:"managedOptions,omitempty"`

	// resyncPeriod defines how frequently the controller will re-reconcile
	// this resource even when no changes have been detected. This overrides
	// the global default resync period. The value must be a valid Go duration
	// string, e.g. "10m", "1h". Set to "0s" to disable periodic resync for
	// this resource. Very low values may cause excessive OpenStack API load.
	// +optional
	ResyncPeriod *metav1.Duration `json:"resyncPeriod,omitempty"` //nolint:kubeapilinter // metav1.Duration is appropriate for user-facing duration config

	// cloudCredentialsRef points to a secret containing OpenStack credentials
	// +required
	CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}

GroupSpec defines the desired state of an ORC object. +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? has(self.resource) : true",message="resource must be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? !has(self.__import__) : true",message="import may not be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? !has(self.resource) : true",message="resource may not be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? has(self.__import__) : true",message="import must be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="has(self.managedOptions) ? self.managementPolicy == 'managed' : true",message="managedOptions may only be provided when policy is managed"

func (*GroupSpec) DeepCopy

func (in *GroupSpec) DeepCopy() *GroupSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupSpec.

func (*GroupSpec) DeepCopyInto

func (in *GroupSpec) DeepCopyInto(out *GroupSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type GroupStatus

type GroupStatus struct {
	// 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.
	//
	// +kubebuilder:validation:MaxItems:=32
	// +patchMergeKey=type
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=type
	// +optional
	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"`

	// resource contains the observed state of the OpenStack resource.
	// +optional
	Resource *GroupResourceStatus `json:"resource,omitempty"`

	// lastSyncTime is the timestamp of the last successful reconciliation
	// that fetched state from OpenStack. It is updated each time the
	// controller successfully reads the resource state from the OpenStack
	// API.
	// +optional
	LastSyncTime *metav1.Time `json:"lastSyncTime,omitempty"`
}

GroupStatus defines the observed state of an ORC resource.

func (*GroupStatus) DeepCopy

func (in *GroupStatus) DeepCopy() *GroupStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupStatus.

func (*GroupStatus) DeepCopyInto

func (in *GroupStatus) DeepCopyInto(out *GroupStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type HTTPMethod

type HTTPMethod string

+kubebuilder:validation:Enum:=CONNECT;DELETE;GET;HEAD;OPTIONS;PATCH;POST;PUT;TRACE

const (
	HTTPMethodCONNECT HTTPMethod = "CONNECT"
	HTTPMethodDELETE  HTTPMethod = "DELETE"
	HTTPMethodGET     HTTPMethod = "GET"
	HTTPMethodHEAD    HTTPMethod = "HEAD"
	HTTPMethodOPTIONS HTTPMethod = "OPTIONS"
	HTTPMethodPATCH   HTTPMethod = "PATCH"
	HTTPMethodPOST    HTTPMethod = "POST"
	HTTPMethodPUT     HTTPMethod = "PUT"
	HTTPMethodTRACE   HTTPMethod = "TRACE"
)

type HostID

type HostID struct {
	// id is the literal host ID string to use for binding:host_id.
	// This is mutually exclusive with serverRef.
	// +kubebuilder:validation:MaxLength=36
	// +optional
	ID string `json:"id,omitempty"` //nolint:kubeapilinter // intentionally allow raw ID

	// serverRef is a reference to an ORC Server resource from which to
	// retrieve the hostID for port binding. The hostID will be read from
	// the Server's status.resource.hostID field.
	// This is mutually exclusive with id.
	// +optional
	// +orc:kustomize:ref=Server
	ServerRef KubernetesNameRef `json:"serverRef,omitempty"`
}

HostID specifies how to determine the host ID for port binding. Exactly one of the fields must be set. +kubebuilder:validation:MinProperties:=1 +kubebuilder:validation:MaxProperties:=1 +kubebuilder:validation:XValidation:rule="(has(self.id) && size(self.id) > 0) != (has(self.serverRef) && size(self.serverRef) > 0)",message="exactly one of id or serverRef must be set"

func (*HostID) DeepCopy

func (in *HostID) DeepCopy() *HostID

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HostID.

func (*HostID) DeepCopyInto

func (in *HostID) DeepCopyInto(out *HostID)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type HostRoute

type HostRoute struct {
	// destination for the additional route.
	// +required
	Destination CIDR `json:"destination,omitempty"`

	// nextHop for the additional route.
	// +required
	NextHop IPvAny `json:"nextHop,omitempty"`
}

func (*HostRoute) DeepCopy

func (in *HostRoute) DeepCopy() *HostRoute

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HostRoute.

func (*HostRoute) DeepCopyInto

func (in *HostRoute) DeepCopyInto(out *HostRoute)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type HostRouteStatus

type HostRouteStatus struct {
	// destination for the additional route.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	Destination string `json:"destination,omitempty"`

	// nextHop for the additional route.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	NextHop string `json:"nextHop,omitempty"`
}

func (*HostRouteStatus) DeepCopy

func (in *HostRouteStatus) DeepCopy() *HostRouteStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HostRouteStatus.

func (*HostRouteStatus) DeepCopyInto

func (in *HostRouteStatus) DeepCopyInto(out *HostRouteStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type IPVersion

type IPVersion int32

+kubebuilder:validation:Enum:=4;6

type IPv6AddressMode

type IPv6AddressMode string

+kubebuilder:validation:Enum:=slaac;dhcpv6-stateful;dhcpv6-stateless

type IPv6Options

type IPv6Options struct {
	// addressMode specifies mechanisms for assigning IPv6 IP addresses.
	// +optional
	AddressMode *IPv6AddressMode `json:"addressMode,omitempty"`

	// raMode specifies the IPv6 router advertisement mode. It specifies whether
	// the networking service should transmit ICMPv6 packets.
	// +optional
	RAMode *IPv6RAMode `json:"raMode,omitempty"`
}

+kubebuilder:validation:MinProperties:=1

func (*IPv6Options) DeepCopy

func (in *IPv6Options) DeepCopy() *IPv6Options

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPv6Options.

func (*IPv6Options) DeepCopyInto

func (in *IPv6Options) DeepCopyInto(out *IPv6Options)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type IPv6RAMode

type IPv6RAMode string

+kubebuilder:validation:Enum:=slaac;dhcpv6-stateful;dhcpv6-stateless

type IPvAny

type IPvAny string

+kubebuilder:validation:MinLength:=1 +kubebuilder:validation:MaxLength:=45

type Image

type Image struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the object metadata
	// +optional
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// spec specifies the desired state of the resource.
	// +required
	Spec ImageSpec `json:"spec,omitzero"`

	// status defines the observed state of the resource.
	// +optional
	Status ImageStatus `json:"status,omitempty"`
}

Image is the Schema for an ORC resource.

func (*Image) DeepCopy

func (in *Image) DeepCopy() *Image

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Image.

func (*Image) DeepCopyInto

func (in *Image) DeepCopyInto(out *Image)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Image) DeepCopyObject

func (in *Image) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*Image) GetCloudCredentialsRef

func (i *Image) GetCloudCredentialsRef() (*string, *CloudCredentialsReference)

func (*Image) GetConditions

func (i *Image) GetConditions() []metav1.Condition

type ImageCompression

type ImageCompression string

+kubebuilder:validation:Enum:=xz;gz;bz2

const (
	ImageCompressionXZ  ImageCompression = "xz"
	ImageCompressionGZ  ImageCompression = "gz"
	ImageCompressionBZ2 ImageCompression = "bz2"
)

type ImageContainerFormat

type ImageContainerFormat string

+kubebuilder:validation:Enum:=ami;ari;aki;bare;ovf;ova;docker;compressed

const (
	ImageContainerFormatAKI        ImageContainerFormat = "aki"
	ImageContainerFormatAMI        ImageContainerFormat = "ami"
	ImageContainerFormatARI        ImageContainerFormat = "ari"
	ImageContainerFormatBare       ImageContainerFormat = "bare"
	ImageContainerFormatCompressed ImageContainerFormat = "compressed"
	ImageContainerFormatDocker     ImageContainerFormat = "docker"
	ImageContainerFormatOVA        ImageContainerFormat = "ova"
	ImageContainerFormatOVF        ImageContainerFormat = "ovf"
)

type ImageContent

type ImageContent struct {
	// containerFormat is the format of the image container.
	// qcow2 and raw images do not usually have a container. This is specified as "bare", which is also the default.
	// Permitted values are ami, ari, aki, bare, compressed, ovf, ova, and docker.
	// +kubebuilder:default:=bare
	// +optional
	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.
	// +required
	DiskFormat ImageDiskFormat `json:"diskFormat,omitempty"`

	// download describes how to obtain image data by downloading it from a URL.
	// Must be set when creating a managed image.
	// +required
	Download *ImageContentSourceDownload `json:"download,omitempty"`
}

func (*ImageContent) DeepCopy

func (in *ImageContent) DeepCopy() *ImageContent

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImageContent.

func (*ImageContent) DeepCopyInto

func (in *ImageContent) DeepCopyInto(out *ImageContent)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ImageContentSourceDownload

type ImageContentSourceDownload struct {
	// url containing image data
	// +kubebuilder:validation:Format=uri
	// +kubebuilder:validation:MaxLength=2048
	// +required
	URL string `json:"url"`

	// decompress specifies that the source data must be decompressed with the
	// given compression algorithm before being stored. Specifying Decompress
	// will disable the use of Glance's web-download, as web-download cannot
	// currently deterministically decompress downloaded content.
	// +optional
	Decompress *ImageCompression `json:"decompress,omitempty"`

	// hash is a hash which will be used to verify downloaded data, i.e.
	// before any decompression. If not specified, no hash verification will be
	// performed. Specifying a Hash will disable the use of Glance's
	// web-download, as web-download cannot currently deterministically verify
	// the hash of downloaded content.
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="hash is immutable"
	// +optional
	Hash *ImageHash `json:"hash,omitempty"`
}

func (*ImageContentSourceDownload) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImageContentSourceDownload.

func (*ImageContentSourceDownload) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ImageDiskFormat

type ImageDiskFormat string

+kubebuilder:validation:Enum:=ami;ari;aki;vhd;vhdx;vmdk;raw;qcow2;vdi;ploop;iso

const (
	ImageDiskFormatAMI   ImageDiskFormat = "ami"
	ImageDiskFormatARI   ImageDiskFormat = "ari"
	ImageDiskFormatAKI   ImageDiskFormat = "aki"
	ImageDiskFormatVHD   ImageDiskFormat = "vhd"
	ImageDiskFormatVHDX  ImageDiskFormat = "vhdx"
	ImageDiskFormatVMDK  ImageDiskFormat = "vmdk"
	ImageDiskFormatRaw   ImageDiskFormat = "raw"
	ImageDiskFormatQCOW2 ImageDiskFormat = "qcow2"
	ImageDiskFormatVDI   ImageDiskFormat = "vdi"
	ImageDiskFormatPLoop ImageDiskFormat = "ploop"
	ImageDiskFormatISO   ImageDiskFormat = "iso"
)

type ImageFilter

type ImageFilter struct {
	// name specifies the name of a Glance image
	// +optional
	Name *OpenStackName `json:"name,omitempty"`

	// visibility specifies the visibility of a Glance image.
	// +optional
	Visibility *ImageVisibility `json:"visibility,omitempty"`

	// tags is the list of tags on the resource.
	// +kubebuilder:validation:MaxItems:=64
	// +listType=set
	// +optional
	Tags []ImageTag `json:"tags,omitempty"`
}

ImageFilter defines a Glance query +kubebuilder:validation:MinProperties:=1

func (*ImageFilter) DeepCopy

func (in *ImageFilter) DeepCopy() *ImageFilter

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImageFilter.

func (*ImageFilter) DeepCopyInto

func (in *ImageFilter) DeepCopyInto(out *ImageFilter)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ImageHWBus

type ImageHWBus string

ImageHWBus is a type of hardware bus.

Permitted values are scsi, virtio, uml, xen, ide, usb, and lxc. +kubebuilder:validation:Enum:=scsi;virtio;uml;xen;ide;usb;lxc

type ImageHash

type ImageHash struct {
	// algorithm is the hash algorithm used to generate value.
	// +required
	Algorithm ImageHashAlgorithm `json:"algorithm,omitempty"`

	// value is the hash of the image data using Algorithm. It must be hex encoded using lowercase letters.
	// +kubebuilder:validation:MinLength:=1
	// +kubebuilder:validation:MaxLength:=1024
	// +kubebuilder:validation:Pattern:=`^[0-9a-f]+$`
	// +required
	Value string `json:"value,omitempty"`
}

func (*ImageHash) DeepCopy

func (in *ImageHash) DeepCopy() *ImageHash

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImageHash.

func (*ImageHash) DeepCopyInto

func (in *ImageHash) DeepCopyInto(out *ImageHash)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ImageHashAlgorithm

type ImageHashAlgorithm string

+kubebuilder:validation:Enum:=md5;sha1;sha256;sha512

const (
	ImageHashAlgorithmMD5    ImageHashAlgorithm = "md5"
	ImageHashAlgorithmSHA1   ImageHashAlgorithm = "sha1"
	ImageHashAlgorithmSHA256 ImageHashAlgorithm = "sha256"
	ImageHashAlgorithmSHA512 ImageHashAlgorithm = "sha512"
)

type ImageImport

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.
	// +kubebuilder:validation:Format:=uuid
	// +kubebuilder:validation:MaxLength:=36
	// +optional
	ID *string `json:"id,omitempty"` //nolint:kubeapilinter

	// 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.
	// +optional
	Filter *ImageFilter `json:"filter,omitempty"`
}

ImageImport specifies an existing resource which will be imported instead of creating a new one +kubebuilder:validation:MinProperties:=1 +kubebuilder:validation:MaxProperties:=1

func (*ImageImport) DeepCopy

func (in *ImageImport) DeepCopy() *ImageImport

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImageImport.

func (*ImageImport) DeepCopyInto

func (in *ImageImport) DeepCopyInto(out *ImageImport)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ImageList

type ImageList struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the list metadata
	// +optional
	metav1.ListMeta `json:"metadata,omitempty"`

	// items contains a list of Image.
	// +required
	Items []Image `json:"items"`
}

ImageList contains a list of Image.

func (*ImageList) DeepCopy

func (in *ImageList) DeepCopy() *ImageList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImageList.

func (*ImageList) DeepCopyInto

func (in *ImageList) DeepCopyInto(out *ImageList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ImageList) DeepCopyObject

func (in *ImageList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*ImageList) GetItems

func (l *ImageList) GetItems() []Image

type ImageProperties

type ImageProperties struct {
	// architecture is the CPU architecture that must be supported by the hypervisor.
	// +kubebuilder:validation:Enum:=aarch64;alpha;armv7l;cris;i686;ia64;lm32;m68k;microblaze;microblazeel;mips;mipsel;mips64;mips64el;openrisc;parisc;parisc64;ppc;ppc64;ppcemb;s390;s390x;sh4;sh4eb;sparc;sparc64;unicore32;x86_64;xtensa;xtensaeb
	// +optional
	Architecture *string `json:"architecture,omitempty" glance:"architecture"`

	// hypervisorType is the hypervisor type
	// +kubebuilder:validation:Enum:=hyperv;ironic;lxc;qemu;uml;vmware;xen
	// +optional
	HypervisorType *string `json:"hypervisorType,omitempty" glance:"hypervisor_type"`

	// minDiskGB is the minimum amount of disk space in GB that is required to boot the image
	// +kubebuilder:validation:Minimum:=1
	// +optional
	MinDiskGB *int32 `json:"minDiskGB,omitempty"`

	// minMemoryMB is the minimum amount of RAM in MB that is required to boot the image.
	// +kubebuilder:validation:Minimum:=1
	// +optional
	MinMemoryMB *int32 `json:"minMemoryMB,omitempty"`

	// hardware is a set of properties which control the virtual hardware
	// created by Nova.
	// +optional
	Hardware *ImagePropertiesHardware `json:"hardware,omitempty"`

	// operatingSystem is a set of properties that specify and influence the behavior
	// of the operating system within the virtual machine.
	// +optional
	OperatingSystem *ImagePropertiesOperatingSystem `json:"operatingSystem,omitempty"`
}

func (*ImageProperties) DeepCopy

func (in *ImageProperties) DeepCopy() *ImageProperties

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImageProperties.

func (*ImageProperties) DeepCopyInto

func (in *ImageProperties) DeepCopyInto(out *ImageProperties)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ImagePropertiesHardware

type ImagePropertiesHardware struct {
	// cpuSockets is the preferred number of sockets to expose to the guest
	// +kubebuilder:validation:Minimum:=1
	// +optional
	CPUSockets *int32 `json:"cpuSockets,omitempty" glance:"hw_cpu_sockets"`

	// cpuCores is the preferred number of cores to expose to the guest
	// +kubebuilder:validation:Minimum:=1
	// +optional
	CPUCores *int32 `json:"cpuCores,omitempty" glance:"hw_cpu_cores"`

	// cpuThreads is the preferred number of threads to expose to the guest
	// +kubebuilder:validation:Minimum:=1
	// +optional
	CPUThreads *int32 `json:"cpuThreads,omitempty" glance:"hw_cpu_threads"`

	// cpuPolicy is used to pin the virtual CPUs (vCPUs) of instances to the
	// host's physical CPU cores (pCPUs). Host aggregates should be used to
	// separate these pinned instances from unpinned instances as the latter
	// will not respect the resourcing requirements of the former.
	//
	// Permitted values are shared (the default), and dedicated.
	//
	// shared: The guest vCPUs will be allowed to freely float across host
	// pCPUs, albeit potentially constrained by NUMA policy.
	//
	// dedicated: The guest vCPUs will be strictly pinned to a set of host
	// pCPUs. In the absence of an explicit vCPU topology request, the
	// drivers typically expose all vCPUs as sockets with one core and one
	// thread. When strict CPU pinning is in effect the guest CPU topology
	// will be setup to match the topology of the CPUs to which it is
	// pinned. This option implies an overcommit ratio of 1.0. For example,
	// if a two vCPU guest is pinned to a single host core with two threads,
	// then the guest will get a topology of one socket, one core, two
	// threads.
	// +kubebuilder:validation:Enum:=shared;dedicated
	// +optional
	CPUPolicy *string `json:"cpuPolicy,omitempty" glance:"hw_cpu_policy"`

	// cpuThreadPolicy further refines a CPUPolicy of 'dedicated' by stating
	// how hardware CPU threads in a simultaneous multithreading-based (SMT)
	// architecture be used. SMT-based architectures include Intel
	// processors with Hyper-Threading technology. In these architectures,
	// processor cores share a number of components with one or more other
	// cores. Cores in such architectures are commonly referred to as
	// hardware threads, while the cores that a given core share components
	// with are known as thread siblings.
	//
	// Permitted values are prefer (the default), isolate, and require.
	//
	// prefer: The host may or may not have an SMT architecture. Where an
	// SMT architecture is present, thread siblings are preferred.
	//
	// isolate: The host must not have an SMT architecture or must emulate a
	// non-SMT architecture. If the host does not have an SMT architecture,
	// each vCPU is placed on a different core as expected. If the host does
	// have an SMT architecture - that is, one or more cores have thread
	// siblings - then each vCPU is placed on a different physical core. No
	// vCPUs from other guests are placed on the same core. All but one
	// thread sibling on each utilized core is therefore guaranteed to be
	// unusable.
	//
	// require: The host must have an SMT architecture. Each vCPU is
	// allocated on thread siblings. If the host does not have an SMT
	// architecture, then it is not used. If the host has an SMT
	// architecture, but not enough cores with free thread siblings are
	// available, then scheduling fails.
	// +kubebuilder:validation:Enum:=prefer;isolate;require
	// +optional
	CPUThreadPolicy *string `json:"cpuThreadPolicy,omitempty" glance:"hw_cpu_thread_policy"`

	// cdromBus specifies the type of disk controller to attach CD-ROM devices to.
	// +optional
	CDROMBus *ImageHWBus `json:"cdromBus,omitempty" glance:"hw_cdrom_bus"`

	// diskBus specifies the type of disk controller to attach disk devices to.
	// +optional
	DiskBus *ImageHWBus `json:"diskBus,omitempty" glance:"hw_disk_bus"`

	// firmwareType specifies the type of firmware used to boot the guest.
	// Images built for UEFI only will not boot without it.
	// +kubebuilder:validation:Enum:=bios;uefi
	// +optional
	FirmwareType *string `json:"firmwareType,omitempty" glance:"hw_firmware_type"`

	// scsiModel enables the use of VirtIO SCSI (virtio-scsi) to provide
	// block device access for compute instances; by default, instances use
	// VirtIO Block (virtio-blk). VirtIO SCSI is a para-virtualized SCSI
	// controller device that provides improved scalability and performance,
	// and supports advanced SCSI hardware.
	//
	// The only permitted value is virtio-scsi.
	// +kubebuilder:validation:Enum:=virtio-scsi
	// +optional
	SCSIModel *string `json:"scsiModel,omitempty" glance:"hw_scsi_model"`

	// vifModel specifies the model of virtual network interface device to use.
	//
	// Permitted values are e1000, e1000e, ne2k_pci, pcnet, rtl8139, virtio,
	// and vmxnet3.
	// +kubebuilder:validation:Enum:=e1000;e1000e;ne2k_pci;pcnet;rtl8139;virtio;vmxnet3
	// +optional
	VIFModel *string `json:"vifModel,omitempty" glance:"hw_vif_model"`

	// rngModel adds a random-number generator device to the image’s instances.
	// This image property by itself does not guarantee that a hardware RNG will be used;
	// it expresses a preference that may or may not be satisfied depending upon Nova configuration.
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	RngModel *string `json:"rngModel,omitempty" glance:"hw_rng_model"`

	// qemuGuestAgent enables QEMU guest agent.
	// +optional
	QemuGuestAgent *bool `json:"qemuGuestAgent,omitempty" glance:"hw_qemu_guest_agent"`
}

func (*ImagePropertiesHardware) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImagePropertiesHardware.

func (*ImagePropertiesHardware) DeepCopyInto

func (in *ImagePropertiesHardware) DeepCopyInto(out *ImagePropertiesHardware)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ImagePropertiesOperatingSystem

type ImagePropertiesOperatingSystem struct {
	// distro is the common name of the operating system distribution in lowercase.
	// +kubebuilder:validation:Enum:=arch;centos;debian;fedora;freebsd;gentoo;mandrake;mandriva;mes;msdos;netbsd;netware;openbsd;opensolaris;opensuse;rocky;rhel;sled;ubuntu;windows
	// +optional
	Distro *string `json:"distro,omitempty" glance:"os_distro"`
	// version is the operating system version as specified by the distributor.
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	Version *string `json:"version,omitempty" glance:"os_version"`
}

func (*ImagePropertiesOperatingSystem) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImagePropertiesOperatingSystem.

func (*ImagePropertiesOperatingSystem) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ImageResourceSpec

type ImageResourceSpec struct {
	// name will be the name of the created Glance image. If not specified, the
	// name of the Image object will be used.
	// +optional
	Name *OpenStackName `json:"name,omitempty"`

	// protected specifies that the image is protected from deletion.
	// If not specified, the default is false.
	// +optional
	Protected *bool `json:"protected,omitempty"`

	// tags is a list of tags which will be applied to the image. A tag has a maximum length of 255 characters.
	// +kubebuilder:validation:MaxItems:=64
	// +listType=set
	// +optional
	Tags []ImageTag `json:"tags,omitempty"`

	// visibility of the image
	// +optional
	Visibility *ImageVisibility `json:"visibility,omitempty"`

	// properties is metadata available to consumers of the image
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="properties is immutable"
	// +optional
	Properties *ImageProperties `json:"properties,omitempty"`

	// content specifies how to obtain the image content.
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="content is immutable"
	// +optional
	Content *ImageContent `json:"content,omitempty"`
}

ImageResourceSpec contains the desired state of a Glance image

func (*ImageResourceSpec) DeepCopy

func (in *ImageResourceSpec) DeepCopy() *ImageResourceSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImageResourceSpec.

func (*ImageResourceSpec) DeepCopyInto

func (in *ImageResourceSpec) DeepCopyInto(out *ImageResourceSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ImageResourceStatus

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"`

	// status is the image status as reported by Glance
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	Status string `json:"status,omitempty"`

	// protected specifies that the image is protected from deletion.
	// +optional
	Protected *bool `json:"protected,omitempty"`

	// visibility of the image
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	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
	// decompressed and potentially format converted depending on server-side
	// configuration which is not visible to clients. It is expected that this
	// hash will usually differ from the download hash.
	// +optional
	Hash *ImageHash `json:"hash,omitempty"`

	// sizeB is the size of the image data, in bytes
	// +optional
	SizeB *int64 `json:"sizeB,omitempty"`

	// virtualSizeB is the size of the disk the image data represents, in bytes
	// +optional
	VirtualSizeB *int64 `json:"virtualSizeB,omitempty"`

	// tags is the list of tags on the resource.
	// +kubebuilder:validation:MaxItems:=64
	// +kubebuilder:validation:items:MaxLength=1024
	// +listType=atomic
	// +optional
	Tags []string `json:"tags,omitempty"`
}

ImageResourceStatus represents the observed state of a Glance image

func (*ImageResourceStatus) DeepCopy

func (in *ImageResourceStatus) DeepCopy() *ImageResourceStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImageResourceStatus.

func (*ImageResourceStatus) DeepCopyInto

func (in *ImageResourceStatus) DeepCopyInto(out *ImageResourceStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ImageSpec

type ImageSpec struct {
	// import refers to an existing OpenStack resource which will be imported instead of
	// creating a new one.
	// +optional
	Import *ImageImport `json:"import,omitempty"`

	// resource specifies the desired state of the resource.
	//
	// resource may not be specified if the management policy is `unmanaged`.
	//
	// resource must be specified if the management policy is `managed`.
	// +optional
	Resource *ImageResourceSpec `json:"resource,omitempty"`

	// managementPolicy defines how ORC will treat the object. Valid values are
	// `managed`: ORC will create, update, and delete the resource; `unmanaged`:
	// ORC will import an existing resource, and will not apply updates to it or
	// delete it.
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
	// +kubebuilder:default:=managed
	// +optional
	ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`

	// managedOptions specifies options which may be applied to managed objects.
	// +optional
	ManagedOptions *ManagedOptions `json:"managedOptions,omitempty"`

	// resyncPeriod defines how frequently the controller will re-reconcile
	// this resource even when no changes have been detected. This overrides
	// the global default resync period. The value must be a valid Go duration
	// string, e.g. "10m", "1h". Set to "0s" to disable periodic resync for
	// this resource. Very low values may cause excessive OpenStack API load.
	// +optional
	ResyncPeriod *metav1.Duration `json:"resyncPeriod,omitempty"` //nolint:kubeapilinter // metav1.Duration is appropriate for user-facing duration config

	// cloudCredentialsRef points to a secret containing OpenStack credentials
	// +required
	CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}

ImageSpec defines the desired state of an ORC object. +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? has(self.resource) : true",message="resource must be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? !has(self.__import__) : true",message="import may not be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? !has(self.resource) : true",message="resource may not be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? has(self.__import__) : true",message="import must be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="has(self.managedOptions) ? self.managementPolicy == 'managed' : true",message="managedOptions may only be provided when policy is managed" +kubebuilder:validation:XValidation:rule="!has(self.__import__) ? has(self.resource.content) : true",message="resource content must be specified when not importing"

func (*ImageSpec) DeepCopy

func (in *ImageSpec) DeepCopy() *ImageSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImageSpec.

func (*ImageSpec) DeepCopyInto

func (in *ImageSpec) DeepCopyInto(out *ImageSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ImageStatus

type ImageStatus struct {
	// 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.
	//
	// +kubebuilder:validation:MaxItems:=32
	// +patchMergeKey=type
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=type
	// +optional
	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"`

	// resource contains the observed state of the OpenStack resource.
	// +optional
	Resource *ImageResourceStatus `json:"resource,omitempty"`

	// lastSyncTime is the timestamp of the last successful reconciliation
	// that fetched state from OpenStack. It is updated each time the
	// controller successfully reads the resource state from the OpenStack
	// API.
	// +optional
	LastSyncTime *metav1.Time `json:"lastSyncTime,omitempty"`

	ImageStatusExtra `json:",inline"`
}

ImageStatus defines the observed state of an ORC resource.

func (*ImageStatus) DeepCopy

func (in *ImageStatus) DeepCopy() *ImageStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImageStatus.

func (*ImageStatus) DeepCopyInto

func (in *ImageStatus) DeepCopyInto(out *ImageStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ImageStatusExtra

type ImageStatusExtra struct {
	// downloadAttempts is the number of times the controller has attempted to download the image contents
	// +optional
	DownloadAttempts *int32 `json:"downloadAttempts,omitempty"`
}

func (*ImageStatusExtra) DeepCopy

func (in *ImageStatusExtra) DeepCopy() *ImageStatusExtra

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImageStatusExtra.

func (*ImageStatusExtra) DeepCopyInto

func (in *ImageStatusExtra) DeepCopyInto(out *ImageStatusExtra)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ImageTag

type ImageTag string

+kubebuilder:validation:MinLength:=1 +kubebuilder:validation:MaxLength:=255

type ImageVisibility

type ImageVisibility string

+kubebuilder:validation:Enum:=public;private;shared;community

const (
	ImageVisibilityPublic    ImageVisibility = "public"
	ImageVisibilityPrivate   ImageVisibility = "private"
	ImageVisibilityShared    ImageVisibility = "shared"
	ImageVisibilityCommunity ImageVisibility = "community"
)

type KeyPair

type KeyPair struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the object metadata
	// +optional
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// spec specifies the desired state of the resource.
	// +required
	Spec KeyPairSpec `json:"spec,omitzero"`

	// status defines the observed state of the resource.
	// +optional
	Status KeyPairStatus `json:"status,omitempty"`
}

KeyPair is the Schema for an ORC resource.

func (*KeyPair) DeepCopy

func (in *KeyPair) DeepCopy() *KeyPair

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KeyPair.

func (*KeyPair) DeepCopyInto

func (in *KeyPair) DeepCopyInto(out *KeyPair)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*KeyPair) DeepCopyObject

func (in *KeyPair) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*KeyPair) GetCloudCredentialsRef

func (i *KeyPair) GetCloudCredentialsRef() (*string, *CloudCredentialsReference)

func (*KeyPair) GetConditions

func (i *KeyPair) GetConditions() []metav1.Condition

type KeyPairFilter

type KeyPairFilter struct {
	// name of the existing Keypair
	// +optional
	Name *OpenStackName `json:"name,omitempty"`
}

KeyPairFilter defines an existing resource by its properties +kubebuilder:validation:MinProperties:=1

func (*KeyPairFilter) DeepCopy

func (in *KeyPairFilter) DeepCopy() *KeyPairFilter

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KeyPairFilter.

func (*KeyPairFilter) DeepCopyInto

func (in *KeyPairFilter) DeepCopyInto(out *KeyPairFilter)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type KeyPairImport

type KeyPairImport struct {
	// 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.
	// +kubebuilder:validation:MaxLength:=1024
	// +optional
	ID *string `json:"id,omitempty"` //nolint:kubeapilinter

	// 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.
	// +optional
	Filter *KeyPairFilter `json:"filter,omitempty"`
}

KeyPairImport specifies an existing resource which will be imported instead of creating a new one +kubebuilder:validation:MinProperties:=1 +kubebuilder:validation:MaxProperties:=1

func (*KeyPairImport) DeepCopy

func (in *KeyPairImport) DeepCopy() *KeyPairImport

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KeyPairImport.

func (*KeyPairImport) DeepCopyInto

func (in *KeyPairImport) DeepCopyInto(out *KeyPairImport)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type KeyPairList

type KeyPairList struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the list metadata
	// +optional
	metav1.ListMeta `json:"metadata,omitempty"`

	// items contains a list of KeyPair.
	// +required
	Items []KeyPair `json:"items"`
}

KeyPairList contains a list of KeyPair.

func (*KeyPairList) DeepCopy

func (in *KeyPairList) DeepCopy() *KeyPairList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KeyPairList.

func (*KeyPairList) DeepCopyInto

func (in *KeyPairList) DeepCopyInto(out *KeyPairList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*KeyPairList) DeepCopyObject

func (in *KeyPairList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*KeyPairList) GetItems

func (l *KeyPairList) GetItems() []KeyPair

type KeyPairResourceSpec

type KeyPairResourceSpec struct {
	// name will be the name of the created resource. If not specified, the
	// name of the ORC object will be used.
	// +optional
	Name *OpenStackName `json:"name,omitempty"`

	// type specifies the type of the Keypair. Allowed values are ssh or x509.
	// If not specified, defaults to ssh.
	// +kubebuilder:validation:Enum=ssh;x509
	// +optional
	Type *string `json:"type,omitempty"`

	// publicKey is the public key to import.
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=16384
	// +required
	PublicKey string `json:"publicKey,omitempty"`
}

KeyPairResourceSpec contains the desired state of the resource.

func (*KeyPairResourceSpec) DeepCopy

func (in *KeyPairResourceSpec) DeepCopy() *KeyPairResourceSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KeyPairResourceSpec.

func (*KeyPairResourceSpec) DeepCopyInto

func (in *KeyPairResourceSpec) DeepCopyInto(out *KeyPairResourceSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type KeyPairResourceStatus

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"`

	// fingerprint is the fingerprint of the public key
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	Fingerprint string `json:"fingerprint,omitempty"`

	// publicKey is the public key of the Keypair
	// +kubebuilder:validation:MaxLength=16384
	// +optional
	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"`
}

KeyPairResourceStatus represents the observed state of the resource.

func (*KeyPairResourceStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KeyPairResourceStatus.

func (*KeyPairResourceStatus) DeepCopyInto

func (in *KeyPairResourceStatus) DeepCopyInto(out *KeyPairResourceStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type KeyPairSpec

type KeyPairSpec struct {
	// import refers to an existing OpenStack resource which will be imported instead of
	// creating a new one.
	// +optional
	Import *KeyPairImport `json:"import,omitempty"`

	// resource specifies the desired state of the resource.
	//
	// resource may not be specified if the management policy is `unmanaged`.
	//
	// resource must be specified if the management policy is `managed`.
	// +optional
	Resource *KeyPairResourceSpec `json:"resource,omitempty"`

	// managementPolicy defines how ORC will treat the object. Valid values are
	// `managed`: ORC will create, update, and delete the resource; `unmanaged`:
	// ORC will import an existing resource, and will not apply updates to it or
	// delete it.
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
	// +kubebuilder:default:=managed
	// +optional
	ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`

	// managedOptions specifies options which may be applied to managed objects.
	// +optional
	ManagedOptions *ManagedOptions `json:"managedOptions,omitempty"`

	// resyncPeriod defines how frequently the controller will re-reconcile
	// this resource even when no changes have been detected. This overrides
	// the global default resync period. The value must be a valid Go duration
	// string, e.g. "10m", "1h". Set to "0s" to disable periodic resync for
	// this resource. Very low values may cause excessive OpenStack API load.
	// +optional
	ResyncPeriod *metav1.Duration `json:"resyncPeriod,omitempty"` //nolint:kubeapilinter // metav1.Duration is appropriate for user-facing duration config

	// cloudCredentialsRef points to a secret containing OpenStack credentials
	// +required
	CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}

KeyPairSpec defines the desired state of an ORC object. +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? has(self.resource) : true",message="resource must be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? !has(self.__import__) : true",message="import may not be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? !has(self.resource) : true",message="resource may not be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? has(self.__import__) : true",message="import must be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="has(self.managedOptions) ? self.managementPolicy == 'managed' : true",message="managedOptions may only be provided when policy is managed"

func (*KeyPairSpec) DeepCopy

func (in *KeyPairSpec) DeepCopy() *KeyPairSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KeyPairSpec.

func (*KeyPairSpec) DeepCopyInto

func (in *KeyPairSpec) DeepCopyInto(out *KeyPairSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type KeyPairStatus

type KeyPairStatus struct {
	// 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.
	//
	// +kubebuilder:validation:MaxItems:=32
	// +patchMergeKey=type
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=type
	// +optional
	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"`

	// resource contains the observed state of the OpenStack resource.
	// +optional
	Resource *KeyPairResourceStatus `json:"resource,omitempty"`

	// lastSyncTime is the timestamp of the last successful reconciliation
	// that fetched state from OpenStack. It is updated each time the
	// controller successfully reads the resource state from the OpenStack
	// API.
	// +optional
	LastSyncTime *metav1.Time `json:"lastSyncTime,omitempty"`
}

KeyPairStatus defines the observed state of an ORC resource.

func (*KeyPairStatus) DeepCopy

func (in *KeyPairStatus) DeepCopy() *KeyPairStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KeyPairStatus.

func (*KeyPairStatus) DeepCopyInto

func (in *KeyPairStatus) DeepCopyInto(out *KeyPairStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type KeystoneName

type KeystoneName string

+kubebuilder:validation:MinLength:=1 +kubebuilder:validation:MaxLength:=64

type KeystoneTag

type KeystoneTag string

+kubebuilder:validation:MinLength:=1 +kubebuilder:validation:MaxLength:=255

type KubernetesNameRef

type KubernetesNameRef string

+kubebuilder:validation:MinLength:=1 +kubebuilder:validation:MaxLength:=253

type Limit

type Limit struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the object metadata
	// +optional
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// spec specifies the desired state of the resource.
	// +required
	Spec LimitSpec `json:"spec,omitzero"`

	// status defines the observed state of the resource.
	// +optional
	Status LimitStatus `json:"status,omitempty"`
}

Limit is the Schema for an ORC resource.

func (*Limit) DeepCopy

func (in *Limit) DeepCopy() *Limit

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Limit.

func (*Limit) DeepCopyInto

func (in *Limit) DeepCopyInto(out *Limit)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Limit) DeepCopyObject

func (in *Limit) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*Limit) GetCloudCredentialsRef

func (i *Limit) GetCloudCredentialsRef() (*string, *CloudCredentialsReference)

func (*Limit) GetConditions

func (i *Limit) GetConditions() []metav1.Condition

type LimitFilter

type LimitFilter struct {
	// description of the existing resource
	// +kubebuilder:validation:MinLength:=1
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	Description *string `json:"description,omitempty"`

	// serviceRef is a reference to the ORC Service which this resource is associated with.
	// +optional
	// +orc:kustomize:ref=Service
	ServiceRef *KubernetesNameRef `json:"serviceRef,omitempty"`

	// projectRef is a reference to the ORC Project which this resource is associated with.
	// +optional
	// +orc:kustomize:ref=Project
	ProjectRef *KubernetesNameRef `json:"projectRef,omitempty"`

	// domainRef is a reference to the ORC Domain which this resource is associated with.
	// +optional
	// +orc:kustomize:ref=Domain
	DomainRef *KubernetesNameRef `json:"domainRef,omitempty"`

	// resourceName is the name of the resource this limit is associated with.
	// +kubebuilder:validation:MinLength:=1
	// +kubebuilder:validation:MaxLength:=255
	// +kubebuilder:validation:Pattern=`^[\S]+$`
	// +optional
	ResourceName string `json:"resourceName,omitempty"`

	// regionRef is a reference to the ORC Region which this resource is associated with.
	// +optional
	// +orc:kustomize:ref=Region
	RegionRef *KubernetesNameRef `json:"regionRef,omitempty"`
}

LimitFilter defines an existing resource by its properties +kubebuilder:validation:MinProperties:=1

func (*LimitFilter) DeepCopy

func (in *LimitFilter) DeepCopy() *LimitFilter

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LimitFilter.

func (*LimitFilter) DeepCopyInto

func (in *LimitFilter) DeepCopyInto(out *LimitFilter)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type LimitImport

type LimitImport 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.
	// +kubebuilder:validation:Format:=uuid
	// +kubebuilder:validation:MaxLength:=36
	// +optional
	ID *string `json:"id,omitempty"` //nolint:kubeapilinter

	// 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.
	// +optional
	Filter *LimitFilter `json:"filter,omitempty"`
}

LimitImport specifies an existing resource which will be imported instead of creating a new one +kubebuilder:validation:MinProperties:=1 +kubebuilder:validation:MaxProperties:=1

func (*LimitImport) DeepCopy

func (in *LimitImport) DeepCopy() *LimitImport

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LimitImport.

func (*LimitImport) DeepCopyInto

func (in *LimitImport) DeepCopyInto(out *LimitImport)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type LimitList

type LimitList struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the list metadata
	// +optional
	metav1.ListMeta `json:"metadata,omitempty"`

	// items contains a list of Limit.
	// +required
	Items []Limit `json:"items"`
}

LimitList contains a list of Limit.

func (*LimitList) DeepCopy

func (in *LimitList) DeepCopy() *LimitList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LimitList.

func (*LimitList) DeepCopyInto

func (in *LimitList) DeepCopyInto(out *LimitList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*LimitList) DeepCopyObject

func (in *LimitList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*LimitList) GetItems

func (l *LimitList) GetItems() []Limit

type LimitResourceSpec

type LimitResourceSpec struct {
	// description is a human-readable description for the resource.
	// Note, currently, there is an issue with keystone that it fails to clear the description field
	// when Description is updated to empty.
	// +kubebuilder:validation:MinLength:=1
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	Description *string `json:"description,omitempty"`

	// serviceRef is a reference to the ORC Service which this resource is associated with.
	// +required
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="serviceRef is immutable"
	// +orc:kustomize:ref=Service
	ServiceRef KubernetesNameRef `json:"serviceRef,omitempty"`

	// projectRef is a reference to the ORC Project which this resource is associated with.
	// Either Domain ID or Project ID must be provided.
	// https://opendev.org/openstack/keystone/src/commit/30ef2ffa65a3486ef882f00538e20f2253c57d4c/keystone/limit/schema.py#L323-L340
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="projectRef is immutable"
	// +orc:kustomize:ref=Project
	ProjectRef *KubernetesNameRef `json:"projectRef,omitempty"`

	// domainRef is a reference to the ORC Domain which this resource is associated with.
	// Either Domain ID or Project ID must be provided.
	// https://opendev.org/openstack/keystone/src/commit/30ef2ffa65a3486ef882f00538e20f2253c57d4c/keystone/limit/schema.py#L323-L340
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="domainRef is immutable"
	// +orc:kustomize:ref=Domain
	DomainRef *KubernetesNameRef `json:"domainRef,omitempty"`

	// resourceName is the name of the resource this limit is associated with.
	// +kubebuilder:validation:MinLength:=1
	// +kubebuilder:validation:MaxLength:=255
	// +kubebuilder:validation:Pattern=`^[\S]+$`
	// +required
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="resourceName is immutable"
	ResourceName string `json:"resourceName,omitempty"`

	// resourceLimit is the override value of the limit.
	// Note, currently, there is an issue with keystone that it fails to set the resourceLimit field to zero
	// when ResourceLimit is updated to zero.
	// +kubebuilder:validation:Minimum=-1
	// +required
	ResourceLimit int32 `json:"resourceLimit"`

	// regionRef is a reference to the ORC Region which this resource is associated with.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="regionRef is immutable"
	// +orc:kustomize:ref=Region
	RegionRef *KubernetesNameRef `json:"regionRef,omitempty"`
}

LimitResourceSpec contains the desired state of the resource. +kubebuilder:validation:XValidation:rule="has(self.projectRef) || has(self.domainRef)",message="either projectRef or domainRef must be specified" +kubebuilder:validation:XValidation:rule="!(has(self.projectRef) && has(self.domainRef))",message="projectRef and domainRef are mutually exclusive"

func (*LimitResourceSpec) DeepCopy

func (in *LimitResourceSpec) DeepCopy() *LimitResourceSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LimitResourceSpec.

func (*LimitResourceSpec) DeepCopyInto

func (in *LimitResourceSpec) DeepCopyInto(out *LimitResourceSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type LimitResourceStatus

type LimitResourceStatus struct {
	// description is a human-readable description for the resource.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	Description string `json:"description,omitempty"`

	// serviceID is the ID of the Service to which the resource is associated.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	ServiceID string `json:"serviceID,omitempty"`

	// projectID is the ID of the Project to which the resource is associated.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	ProjectID string `json:"projectID,omitempty"`

	// domainID is the ID of the Domain to which the resource is associated.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	DomainID string `json:"domainID,omitempty"`

	// resourceLimit is the override value of the limit.
	// +optional
	ResourceLimit *int32 `json:"resourceLimit,omitempty"`

	// resourceName is the name of the resource this limit is associated with.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	ResourceName string `json:"resourceName,omitempty"`

	// regionID is the ID of the Region to which the resource is associated.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	RegionID string `json:"regionID,omitempty"`
}

LimitResourceStatus represents the observed state of the resource.

func (*LimitResourceStatus) DeepCopy

func (in *LimitResourceStatus) DeepCopy() *LimitResourceStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LimitResourceStatus.

func (*LimitResourceStatus) DeepCopyInto

func (in *LimitResourceStatus) DeepCopyInto(out *LimitResourceStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type LimitSpec

type LimitSpec struct {
	// import refers to an existing OpenStack resource which will be imported instead of
	// creating a new one.
	// +optional
	Import *LimitImport `json:"import,omitempty"`

	// resource specifies the desired state of the resource.
	//
	// resource may not be specified if the management policy is `unmanaged`.
	//
	// resource must be specified if the management policy is `managed`.
	// +optional
	Resource *LimitResourceSpec `json:"resource,omitempty"`

	// managementPolicy defines how ORC will treat the object. Valid values are
	// `managed`: ORC will create, update, and delete the resource; `unmanaged`:
	// ORC will import an existing resource, and will not apply updates to it or
	// delete it.
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
	// +kubebuilder:default:=managed
	// +optional
	ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`

	// managedOptions specifies options which may be applied to managed objects.
	// +optional
	ManagedOptions *ManagedOptions `json:"managedOptions,omitempty"`

	// resyncPeriod defines how frequently the controller will re-reconcile
	// this resource even when no changes have been detected. This overrides
	// the global default resync period. The value must be a valid Go duration
	// string, e.g. "10m", "1h". Set to "0s" to disable periodic resync for
	// this resource. Very low values may cause excessive OpenStack API load.
	// +optional
	ResyncPeriod *metav1.Duration `json:"resyncPeriod,omitempty"` //nolint:kubeapilinter // metav1.Duration is appropriate for user-facing duration config

	// cloudCredentialsRef points to a secret containing OpenStack credentials
	// +required
	CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}

LimitSpec defines the desired state of an ORC object. +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? has(self.resource) : true",message="resource must be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? !has(self.__import__) : true",message="import may not be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? !has(self.resource) : true",message="resource may not be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? has(self.__import__) : true",message="import must be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="has(self.managedOptions) ? self.managementPolicy == 'managed' : true",message="managedOptions may only be provided when policy is managed"

func (*LimitSpec) DeepCopy

func (in *LimitSpec) DeepCopy() *LimitSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LimitSpec.

func (*LimitSpec) DeepCopyInto

func (in *LimitSpec) DeepCopyInto(out *LimitSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type LimitStatus

type LimitStatus struct {
	// 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.
	//
	// +kubebuilder:validation:MaxItems:=32
	// +patchMergeKey=type
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=type
	// +optional
	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"`

	// resource contains the observed state of the OpenStack resource.
	// +optional
	Resource *LimitResourceStatus `json:"resource,omitempty"`

	// lastSyncTime is the timestamp of the last successful reconciliation
	// that fetched state from OpenStack. It is updated each time the
	// controller successfully reads the resource state from the OpenStack
	// API.
	// +optional
	LastSyncTime *metav1.Time `json:"lastSyncTime,omitempty"`
}

LimitStatus defines the observed state of an ORC resource.

func (*LimitStatus) DeepCopy

func (in *LimitStatus) DeepCopy() *LimitStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LimitStatus.

func (*LimitStatus) DeepCopyInto

func (in *LimitStatus) DeepCopyInto(out *LimitStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MAC

type MAC string

+kubebuilder:validation:MinLength:=1 +kubebuilder:validation:MaxLength:=17

type MTU

type MTU int32

+kubebuilder:validation:Minimum:=68 +kubebuilder:validation:Maximum:=9216

type ManagedOptions

type ManagedOptions struct {
	// onDelete specifies the behaviour of the controller when the ORC
	// object is deleted. Options are `delete` - delete the OpenStack resource;
	// `detach` - do not delete the OpenStack resource. If not specified, the
	// default is `delete`.
	// +kubebuilder:default:=delete
	// +optional
	OnDelete OnDelete `json:"onDelete,omitempty"`
}

func (*ManagedOptions) DeepCopy

func (in *ManagedOptions) DeepCopy() *ManagedOptions

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedOptions.

func (*ManagedOptions) DeepCopyInto

func (in *ManagedOptions) DeepCopyInto(out *ManagedOptions)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ManagedOptions) GetOnDelete

func (o *ManagedOptions) GetOnDelete() OnDelete

GetOnDelete returns the delete behaviour from ManagedOptions. If called on a nil receiver it safely returns the default.

type ManagementPolicy

type ManagementPolicy string

+kubebuilder:validation:Enum:=managed;unmanaged

const (
	// ManagementPolicyManaged specifies that the controller will reconcile the
	// state of the referenced OpenStack resource with the state of the ORC
	// object.
	ManagementPolicyManaged ManagementPolicy = "managed"

	// ManagementPolicyUnmanaged specifies that the controller will expect the
	// resource to either exist already or to be created externally. The
	// controller will not make any changes to the referenced OpenStack
	// resource.
	ManagementPolicyUnmanaged ManagementPolicy = "unmanaged"
)

type Network

type Network struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the object metadata
	// +optional
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// spec specifies the desired state of the resource.
	// +required
	Spec NetworkSpec `json:"spec,omitzero"`

	// status defines the observed state of the resource.
	// +optional
	Status NetworkStatus `json:"status,omitempty"`
}

Network is the Schema for an ORC resource.

func (*Network) DeepCopy

func (in *Network) DeepCopy() *Network

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Network.

func (*Network) DeepCopyInto

func (in *Network) DeepCopyInto(out *Network)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Network) DeepCopyObject

func (in *Network) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*Network) GetCloudCredentialsRef

func (i *Network) GetCloudCredentialsRef() (*string, *CloudCredentialsReference)

func (*Network) GetConditions

func (i *Network) GetConditions() []metav1.Condition

type NetworkFilter

type NetworkFilter struct {
	// name of the existing resource
	// +optional
	Name *OpenStackName `json:"name,omitempty"`

	// description of the existing resource
	// +optional
	Description *NeutronDescription `json:"description,omitempty"`

	// external indicates whether the network has an external routing
	// facility that’s not managed by the networking service.
	// +optional
	External *bool `json:"external,omitempty"`

	// projectRef is a reference to the ORC Project this resource is associated with.
	// Typically, only used by admin.
	// +optional
	// +orc:kustomize:ref=Project
	ProjectRef *KubernetesNameRef `json:"projectRef,omitempty"`

	FilterByNeutronTags `json:",inline"`
}

NetworkFilter defines an existing resource by its properties +kubebuilder:validation:MinProperties:=1

func (*NetworkFilter) DeepCopy

func (in *NetworkFilter) DeepCopy() *NetworkFilter

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkFilter.

func (*NetworkFilter) DeepCopyInto

func (in *NetworkFilter) DeepCopyInto(out *NetworkFilter)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type NetworkImport

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.
	// +kubebuilder:validation:Format:=uuid
	// +kubebuilder:validation:MaxLength:=36
	// +optional
	ID *string `json:"id,omitempty"` //nolint:kubeapilinter

	// 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.
	// +optional
	Filter *NetworkFilter `json:"filter,omitempty"`
}

NetworkImport specifies an existing resource which will be imported instead of creating a new one +kubebuilder:validation:MinProperties:=1 +kubebuilder:validation:MaxProperties:=1

func (*NetworkImport) DeepCopy

func (in *NetworkImport) DeepCopy() *NetworkImport

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkImport.

func (*NetworkImport) DeepCopyInto

func (in *NetworkImport) DeepCopyInto(out *NetworkImport)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type NetworkList

type NetworkList struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the list metadata
	// +optional
	metav1.ListMeta `json:"metadata,omitempty"`

	// items contains a list of Network.
	// +required
	Items []Network `json:"items"`
}

NetworkList contains a list of Network.

func (*NetworkList) DeepCopy

func (in *NetworkList) DeepCopy() *NetworkList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkList.

func (*NetworkList) DeepCopyInto

func (in *NetworkList) DeepCopyInto(out *NetworkList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*NetworkList) DeepCopyObject

func (in *NetworkList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*NetworkList) GetItems

func (l *NetworkList) GetItems() []Network

type NetworkResourceSpec

type NetworkResourceSpec struct {
	// name will be the name of the created resource. If not specified, the
	// name of the ORC object will be used.
	// +optional
	Name *OpenStackName `json:"name,omitempty"`

	// description is a human-readable description for the resource.
	// +optional
	Description *NeutronDescription `json:"description,omitempty"`

	// tags is a list of tags which will be applied to the network.
	// +kubebuilder:validation:MaxItems:=64
	// +listType=set
	// +optional
	Tags []NeutronTag `json:"tags,omitempty"`

	// adminStateUp is the administrative state of the network, which is up (true) or down (false)
	// +optional
	AdminStateUp *bool `json:"adminStateUp,omitempty"`

	// dnsDomain is the DNS domain of the network
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="dnsDomain is immutable"
	DNSDomain *DNSDomain `json:"dnsDomain,omitempty"`

	// mtu is the the maximum transmission unit value to address
	// fragmentation. Minimum value is 68 for IPv4, and 1280 for IPv6.
	// Defaults to 1500.
	// +optional
	MTU *MTU `json:"mtu,omitempty"`

	// portSecurityEnabled is the port security status of the network.
	// Valid values are enabled (true) and disabled (false). This value is
	// used as the default value of port_security_enabled field of a newly
	// created port.
	// +optional
	PortSecurityEnabled *bool `json:"portSecurityEnabled,omitempty"`

	// external indicates whether the network has an external routing
	// facility that’s not managed by the networking service.
	// +optional
	External *bool `json:"external,omitempty"`

	// shared indicates whether this resource is shared across all
	// projects. By default, only administrative users can change this
	// value.
	// +optional
	Shared *bool `json:"shared,omitempty"`

	// availabilityZoneHints is the availability zone candidate for the network.
	// +kubebuilder:validation:MaxItems:=64
	// +listType=set
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="availabilityZoneHints is immutable"
	AvailabilityZoneHints []AvailabilityZoneHint `json:"availabilityZoneHints,omitempty"`

	// projectRef is a reference to the ORC Project this resource is associated with.
	// Typically, only used by admin.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="projectRef is immutable"
	// +orc:kustomize:ref=Project
	ProjectRef *KubernetesNameRef `json:"projectRef,omitempty"`

	// segments is a list of provider segment objects.
	// +kubebuilder:validation:MaxItems:=256
	// +listType=atomic
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="segments is immutable"
	Segments []ProviderSegmentSpec `json:"segments,omitempty"`
}

NetworkResourceSpec contains the desired state of a network

func (*NetworkResourceSpec) DeepCopy

func (in *NetworkResourceSpec) DeepCopy() *NetworkResourceSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkResourceSpec.

func (*NetworkResourceSpec) DeepCopyInto

func (in *NetworkResourceSpec) DeepCopyInto(out *NetworkResourceSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type NetworkResourceStatus

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"`

	// description is a human-readable description for the resource.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	Description string `json:"description,omitempty"`

	// projectID is the project owner of the network.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	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"`

	// tags is the list of tags on the resource.
	// +kubebuilder:validation:MaxItems=64
	// +kubebuilder:validation:items:MaxLength=1024
	// +listType=atomic
	// +optional
	Tags []string `json:"tags,omitempty"`

	NeutronStatusMetadata `json:",inline"`

	// adminStateUp is the administrative state of the network,
	// which is up (true) or down (false).
	// +optional
	AdminStateUp *bool `json:"adminStateUp"`

	// availabilityZoneHints is the availability zone candidate for the
	// network.
	// +kubebuilder:validation:MaxItems=64
	// +kubebuilder:validation:items:MaxLength=1024
	// +listType=atomic
	// +optional
	AvailabilityZoneHints []string `json:"availabilityZoneHints,omitempty"`

	// dnsDomain is the DNS domain of the network
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	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.
	// +optional
	MTU *int32 `json:"mtu,omitempty"`

	// portSecurityEnabled is the port security status of the network.
	// Valid values are enabled (true) and disabled (false). This value is
	// used as the default value of port_security_enabled field of a newly
	// created port.
	// +optional
	PortSecurityEnabled *bool `json:"portSecurityEnabled,omitempty"`

	// external defines whether the network may be used for creation of
	// floating IPs. Only networks with this flag may be an external
	// gateway for routers. The network must have an external routing
	// facility that is not managed by the networking service. If the
	// network is updated from external to internal the unused floating IPs
	// of this network are automatically deleted when extension
	// floatingip-autodelete-internal is present.
	// +optional
	External *bool `json:"external,omitempty"`

	// shared specifies whether the network resource can be accessed by any
	// tenant.
	// +optional
	Shared *bool `json:"shared,omitempty"`

	// subnets associated with this network.
	// +kubebuilder:validation:MaxItems=256
	// +kubebuilder:validation:items:MaxLength=1024
	// +listType=atomic
	// +optional
	Subnets []string `json:"subnets,omitempty"`

	// segments is a list of provider segment objects.
	// +kubebuilder:validation:MaxItems=256
	// +listType=atomic
	// +optional
	Segments []ProviderPropertiesStatus `json:"segments,omitempty"`
}

NetworkResourceStatus represents the observed state of the resource.

func (*NetworkResourceStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkResourceStatus.

func (*NetworkResourceStatus) DeepCopyInto

func (in *NetworkResourceStatus) DeepCopyInto(out *NetworkResourceStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type NetworkSpec

type NetworkSpec struct {
	// import refers to an existing OpenStack resource which will be imported instead of
	// creating a new one.
	// +optional
	Import *NetworkImport `json:"import,omitempty"`

	// resource specifies the desired state of the resource.
	//
	// resource may not be specified if the management policy is `unmanaged`.
	//
	// resource must be specified if the management policy is `managed`.
	// +optional
	Resource *NetworkResourceSpec `json:"resource,omitempty"`

	// managementPolicy defines how ORC will treat the object. Valid values are
	// `managed`: ORC will create, update, and delete the resource; `unmanaged`:
	// ORC will import an existing resource, and will not apply updates to it or
	// delete it.
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
	// +kubebuilder:default:=managed
	// +optional
	ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`

	// managedOptions specifies options which may be applied to managed objects.
	// +optional
	ManagedOptions *ManagedOptions `json:"managedOptions,omitempty"`

	// resyncPeriod defines how frequently the controller will re-reconcile
	// this resource even when no changes have been detected. This overrides
	// the global default resync period. The value must be a valid Go duration
	// string, e.g. "10m", "1h". Set to "0s" to disable periodic resync for
	// this resource. Very low values may cause excessive OpenStack API load.
	// +optional
	ResyncPeriod *metav1.Duration `json:"resyncPeriod,omitempty"` //nolint:kubeapilinter // metav1.Duration is appropriate for user-facing duration config

	// cloudCredentialsRef points to a secret containing OpenStack credentials
	// +required
	CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}

NetworkSpec defines the desired state of an ORC object. +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? has(self.resource) : true",message="resource must be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? !has(self.__import__) : true",message="import may not be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? !has(self.resource) : true",message="resource may not be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? has(self.__import__) : true",message="import must be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="has(self.managedOptions) ? self.managementPolicy == 'managed' : true",message="managedOptions may only be provided when policy is managed"

func (*NetworkSpec) DeepCopy

func (in *NetworkSpec) DeepCopy() *NetworkSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkSpec.

func (*NetworkSpec) DeepCopyInto

func (in *NetworkSpec) DeepCopyInto(out *NetworkSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type NetworkStatus

type NetworkStatus struct {
	// 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.
	//
	// +kubebuilder:validation:MaxItems:=32
	// +patchMergeKey=type
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=type
	// +optional
	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"`

	// resource contains the observed state of the OpenStack resource.
	// +optional
	Resource *NetworkResourceStatus `json:"resource,omitempty"`

	// lastSyncTime is the timestamp of the last successful reconciliation
	// that fetched state from OpenStack. It is updated each time the
	// controller successfully reads the resource state from the OpenStack
	// API.
	// +optional
	LastSyncTime *metav1.Time `json:"lastSyncTime,omitempty"`
}

NetworkStatus defines the observed state of an ORC resource.

func (*NetworkStatus) DeepCopy

func (in *NetworkStatus) DeepCopy() *NetworkStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkStatus.

func (*NetworkStatus) DeepCopyInto

func (in *NetworkStatus) DeepCopyInto(out *NetworkStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type NeutronDescription

type NeutronDescription string

+kubebuilder:validation:MinLength:=1 +kubebuilder:validation:MaxLength:=255

type NeutronStatusMetadata

type NeutronStatusMetadata struct {
	// createdAt shows the date and time when the resource was created. The date and time stamp format is ISO 8601
	// +optional
	CreatedAt *metav1.Time `json:"createdAt,omitempty"`
	// updatedAt shows the date and time when the resource was updated. The date and time stamp format is ISO 8601
	// +optional
	UpdatedAt *metav1.Time `json:"updatedAt,omitempty"`

	// revisionNumber optionally set via extensions/standard-attr-revisions
	// +optional
	RevisionNumber *int64 `json:"revisionNumber,omitempty"`
}

func (*NeutronStatusMetadata) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NeutronStatusMetadata.

func (*NeutronStatusMetadata) DeepCopyInto

func (in *NeutronStatusMetadata) DeepCopyInto(out *NeutronStatusMetadata)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type NeutronTag

type NeutronTag string

NeutronTag represents a tag on a Neutron resource. It may not be empty and may not contain commas. +kubebuilder:validation:MinLength:=1 +kubebuilder:validation:MaxLength:=255

type ObjectWithConditions

type ObjectWithConditions interface {
	metav1.Object
	GetConditions() []metav1.Condition
}

ObjectWithConditions is a metav1.Object which also stores conditions in its status. +kubebuilder:object:generate:=false

type OnDelete

type OnDelete string

+kubebuilder:validation:Enum:=delete;detach

const (
	// OnDeleteDelete specifies that the OpenStack resource will be deleted
	// when the managed ORC object is deleted.
	OnDeleteDelete OnDelete = "delete"

	// OnDeleteDetach specifies that the OpenStack resource will not be
	// deleted when the managed ORC object is deleted.
	OnDeleteDetach OnDelete = "detach"
)

type OpenStackName

type OpenStackName string

+kubebuilder:validation:MinLength:=1 +kubebuilder:validation:MaxLength:=255 +kubebuilder:validation:Pattern:="^[^,]+$"

type Port

type Port struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the object metadata
	// +optional
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// spec specifies the desired state of the resource.
	// +required
	Spec PortSpec `json:"spec,omitzero"`

	// status defines the observed state of the resource.
	// +optional
	Status PortStatus `json:"status,omitempty"`
}

Port is the Schema for an ORC resource.

func (*Port) DeepCopy

func (in *Port) DeepCopy() *Port

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Port.

func (*Port) DeepCopyInto

func (in *Port) DeepCopyInto(out *Port)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Port) DeepCopyObject

func (in *Port) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*Port) GetCloudCredentialsRef

func (i *Port) GetCloudCredentialsRef() (*string, *CloudCredentialsReference)

func (*Port) GetConditions

func (i *Port) GetConditions() []metav1.Condition

type PortFilter

type PortFilter struct {
	// name of the existing resource
	// +optional
	Name *OpenStackName `json:"name,omitempty"`

	// description of the existing resource
	// +optional
	Description *NeutronDescription `json:"description,omitempty"`

	// networkRef is a reference to the ORC Network which this port is associated with.
	// +optional
	// +orc:kustomize:ref=Network
	NetworkRef KubernetesNameRef `json:"networkRef"`

	// projectRef is a reference to the ORC Project this resource is associated with.
	// Typically, only used by admin.
	// +optional
	// +orc:kustomize:ref=Project
	ProjectRef *KubernetesNameRef `json:"projectRef,omitempty"`

	// adminStateUp is the administrative state of the port,
	// which is up (true) or down (false).
	// +optional
	AdminStateUp *bool `json:"adminStateUp,omitempty"`

	// macAddress is the MAC address of the port.
	// +kubebuilder:validation:MaxLength=32
	// +optional
	MACAddress string `json:"macAddress,omitempty"`

	FilterByNeutronTags `json:",inline"`
}

PortFilter specifies a filter to select a port. At least one parameter must be specified. +kubebuilder:validation:MinProperties:=1

func (*PortFilter) DeepCopy

func (in *PortFilter) DeepCopy() *PortFilter

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortFilter.

func (*PortFilter) DeepCopyInto

func (in *PortFilter) DeepCopyInto(out *PortFilter)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PortImport

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.
	// +kubebuilder:validation:Format:=uuid
	// +kubebuilder:validation:MaxLength:=36
	// +optional
	ID *string `json:"id,omitempty"` //nolint:kubeapilinter

	// 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.
	// +optional
	Filter *PortFilter `json:"filter,omitempty"`
}

PortImport specifies an existing resource which will be imported instead of creating a new one +kubebuilder:validation:MinProperties:=1 +kubebuilder:validation:MaxProperties:=1

func (*PortImport) DeepCopy

func (in *PortImport) DeepCopy() *PortImport

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortImport.

func (*PortImport) DeepCopyInto

func (in *PortImport) DeepCopyInto(out *PortImport)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PortList

type PortList struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the list metadata
	// +optional
	metav1.ListMeta `json:"metadata,omitempty"`

	// items contains a list of Port.
	// +required
	Items []Port `json:"items"`
}

PortList contains a list of Port.

func (*PortList) DeepCopy

func (in *PortList) DeepCopy() *PortList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortList.

func (*PortList) DeepCopyInto

func (in *PortList) DeepCopyInto(out *PortList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*PortList) DeepCopyObject

func (in *PortList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*PortList) GetItems

func (l *PortList) GetItems() []Port

type PortNumber

type PortNumber int32

+kubebuilder:validation:Minimum:=0 +kubebuilder:validation:Maximum:=65535

type PortRangeSpec

type PortRangeSpec struct {
	// 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
	// +required
	Min PortNumber `json:"min"`
	// 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.
	// +required
	Max PortNumber `json:"max"`
}

func (*PortRangeSpec) DeepCopy

func (in *PortRangeSpec) DeepCopy() *PortRangeSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortRangeSpec.

func (*PortRangeSpec) DeepCopyInto

func (in *PortRangeSpec) DeepCopyInto(out *PortRangeSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PortRangeStatus

type PortRangeStatus struct {
	// 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
	// +optional
	Min int32 `json:"min"`
	// 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"`
}

func (*PortRangeStatus) DeepCopy

func (in *PortRangeStatus) DeepCopy() *PortRangeStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortRangeStatus.

func (*PortRangeStatus) DeepCopyInto

func (in *PortRangeStatus) DeepCopyInto(out *PortRangeStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PortResourceSpec

type PortResourceSpec struct {
	// name is a human-readable name of the port. If not set, the object's name will be used.
	// +optional
	Name *OpenStackName `json:"name,omitempty"`

	// description is a human-readable description for the resource.
	// +optional
	Description *NeutronDescription `json:"description,omitempty"`

	// networkRef is a reference to the ORC Network which this port is associated with.
	// +required
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="networkRef is immutable"
	// +orc:kustomize:ref=Network
	NetworkRef KubernetesNameRef `json:"networkRef,omitempty"`

	// tags is a list of tags which will be applied to the port.
	// +kubebuilder:validation:MaxItems:=64
	// +listType=set
	// +optional
	Tags []NeutronTag `json:"tags,omitempty"`

	// allowedAddressPairs are allowed addresses associated with this port.
	// +kubebuilder:validation:MaxItems:=128
	// +listType=atomic
	// +optional
	AllowedAddressPairs []AllowedAddressPair `json:"allowedAddressPairs,omitempty"`

	// addresses are the IP addresses for the port.
	// +kubebuilder:validation:MaxItems:=128
	// +listType=atomic
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="addresses is immutable"
	Addresses []Address `json:"addresses,omitempty"`

	// adminStateUp is the administrative state of the port,
	// which is up (true) or down (false). The default value is true.
	// +kubebuilder:default:=true
	// +optional
	AdminStateUp *bool `json:"adminStateUp,omitempty"`

	// securityGroupRefs are references to the security groups associated
	// with this port.
	// +kubebuilder:validation:MaxItems:=64
	// +listType=set
	// +optional
	// +orc:kustomize:ref=SecurityGroup
	SecurityGroupRefs []KubernetesNameRef `json:"securityGroupRefs,omitempty"`

	// vnicType specifies the type of vNIC which this port should be
	// attached to. This is used to determine which mechanism driver(s) to
	// be used to bind the port. The valid values are normal, macvtap,
	// direct, baremetal, direct-physical, virtio-forwarder, smart-nic and
	// remote-managed, although these values will not be validated in this
	// API to ensure compatibility with future neutron changes or custom
	// implementations. What type of vNIC is actually available depends on
	// deployments. If not specified, the Neutron default value is used.
	// +kubebuilder:validation:MaxLength:=64
	// +optional
	VNICType string `json:"vnicType,omitempty"`

	// portSecurity controls port security for this port.
	// When set to Enabled, port security is enabled.
	// When set to Disabled, port security is disabled and SecurityGroupRefs must be empty.
	// When set to Inherit (default), it takes the value from the network level.
	// +kubebuilder:default=Inherit
	// +optional
	// +kubebuilder:validation:XValidation:rule="!(oldSelf != 'Inherit' && self == 'Inherit')",message="portSecurity cannot be changed to Inherit"
	PortSecurity PortSecurityState `json:"portSecurity,omitempty"`

	// projectRef is a reference to the ORC Project this resource is associated with.
	// Typically, only used by admin.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="projectRef is immutable"
	// +orc:kustomize:ref=Project
	ProjectRef *KubernetesNameRef `json:"projectRef,omitempty"`

	// macAddress is the MAC address of the port.
	// +kubebuilder:validation:MaxLength=32
	// +optional
	MACAddress string `json:"macAddress,omitempty"`

	// hostID specifies the host where the port will be bound.
	// Note that when the port is attached to a server, OpenStack may
	// rebind the port to the server's actual compute host, which may
	// differ from the specified hostID if no matching scheduler hint
	// is used. In this case the port's status will reflect the actual
	// binding host, not the value specified here.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="hostID is immutable"
	HostID *HostID `json:"hostID,omitempty"` //nolint:kubeapilinter // HostID provides both raw ID and ServerRef options

	// trustedVIF indicates whether the VF for the port will become
	// trusted by physical function to perform some privileged
	// operations. Only admin users can create ports with this field.
	// +optional
	TrustedVIF *bool `json:"trustedVIF,omitempty"`

	// valueSpecs are extra parameters to include in the API request
	// with OpenStack. This is an extension point for the API, so what
	// they do and if they are supported, depends on the specific
	// OpenStack implementation. This was meant to work similar to the
	// property on Heat port resource. Since this depends on the
	// underlying implementation, we can't predict its fields, and
	// therefore, we don't know how to reconcile them in advance. Use
	// this field wisely and be aware of the expected behavior.
	// +kubebuilder:validation:MaxItems:=128
	// +listType=map
	// +listMapKey=key
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="valueSpecs is immutable"
	ValueSpecs []PortValueSpec `json:"valueSpecs,omitempty"`

	// propagateUplinkStatus represents the uplink status propagation of
	// the port.
	// The field is now immutable due to a limitation on
	// Dalmatian (2024.2) release, we should address this later.
	// https://github.com/k-orc/openstack-resource-controller/pull/641#discussion_r2694783787
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="propagateUplinkStatus is immutable"
	PropagateUplinkStatus *bool `json:"propagateUplinkStatus,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" +kubebuilder:validation:XValidation:rule="has(self.portSecurity) && self.portSecurity == 'Disabled' ? !has(self.allowedAddressPairs) : true",message="allowedAddressPairs must be empty when portSecurity is set to Disabled"

func (*PortResourceSpec) DeepCopy

func (in *PortResourceSpec) DeepCopy() *PortResourceSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortResourceSpec.

func (*PortResourceSpec) DeepCopyInto

func (in *PortResourceSpec) DeepCopyInto(out *PortResourceSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PortResourceStatus

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"`

	// description is a human-readable description for the resource.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	Description string `json:"description,omitempty"`

	// networkID is the ID of the attached network.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	NetworkID string `json:"networkID,omitempty"`

	// projectID is the project owner of the resource.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	ProjectID string `json:"projectID,omitempty"`

	// status indicates the current status of the resource.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	Status string `json:"status,omitempty"`

	// tags is the list of tags on the resource.
	// +kubebuilder:validation:MaxItems=64
	// +kubebuilder:validation:items:MaxLength=1024
	// +listType=atomic
	// +optional
	Tags []string `json:"tags,omitempty"`

	// adminStateUp is the administrative state of the port,
	// which is up (true) or down (false).
	// +optional
	AdminStateUp *bool `json:"adminStateUp,omitempty"`

	// macAddress is the MAC address of the port.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	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"`

	// deviceOwner is the entity type that uses this port.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	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
	// MAC address.
	// +kubebuilder:validation:MaxItems=128
	// +listType=atomic
	// +optional
	AllowedAddressPairs []AllowedAddressPairStatus `json:"allowedAddressPairs,omitempty"`

	// fixedIPs is a set of zero or more fixed IP objects each where fixed
	// IP object contains an IP address and subnet ID from which the IP
	// address is assigned.
	// +kubebuilder:validation:MaxItems=128
	// +listType=atomic
	// +optional
	FixedIPs []FixedIPStatus `json:"fixedIPs,omitempty"`

	// securityGroups contains the IDs of security groups applied to the port.
	// +kubebuilder:validation:MaxItems=64
	// +kubebuilder:validation:items:MaxLength=1024
	// +listType=atomic
	// +optional
	SecurityGroups []string `json:"securityGroups,omitempty"`

	// propagateUplinkStatus represents the uplink status propagation of
	// the port.
	// +optional
	PropagateUplinkStatus *bool `json:"propagateUplinkStatus,omitempty"`

	// vnicType is the type of vNIC which this port is attached to.
	// +kubebuilder:validation:MaxLength:=64
	// +optional
	VNICType string `json:"vnicType,omitempty"`

	// portSecurityEnabled indicates whether port security is enabled or not.
	// +optional
	PortSecurityEnabled *bool `json:"portSecurityEnabled,omitempty"`

	// hostID is the ID of host where the port resides.
	// +kubebuilder:validation:MaxLength=128
	// +optional
	HostID string `json:"hostID,omitempty"`

	// trustedVIF indicates whether the VF for the port will become
	// trusted by physical function to perform some privileged
	// operations.
	// +optional
	TrustedVIF *bool `json:"trustedVIF,omitempty"`

	NeutronStatusMetadata `json:",inline"`
}

func (*PortResourceStatus) DeepCopy

func (in *PortResourceStatus) DeepCopy() *PortResourceStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortResourceStatus.

func (*PortResourceStatus) DeepCopyInto

func (in *PortResourceStatus) DeepCopyInto(out *PortResourceStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PortSecurityState

type PortSecurityState string

PortSecurityState represents the security state of a port +kubebuilder:validation:Enum=Enabled;Disabled;Inherit

const (
	// PortSecurityEnabled means port security is enabled
	PortSecurityEnabled PortSecurityState = "Enabled"
	// PortSecurityDisabled means port security is disabled
	PortSecurityDisabled PortSecurityState = "Disabled"
	// PortSecurityInherit means port security settings are inherited from the network
	PortSecurityInherit PortSecurityState = "Inherit"
)

type PortSpec

type PortSpec struct {
	// import refers to an existing OpenStack resource which will be imported instead of
	// creating a new one.
	// +optional
	Import *PortImport `json:"import,omitempty"`

	// resource specifies the desired state of the resource.
	//
	// resource may not be specified if the management policy is `unmanaged`.
	//
	// resource must be specified if the management policy is `managed`.
	// +optional
	Resource *PortResourceSpec `json:"resource,omitempty"`

	// managementPolicy defines how ORC will treat the object. Valid values are
	// `managed`: ORC will create, update, and delete the resource; `unmanaged`:
	// ORC will import an existing resource, and will not apply updates to it or
	// delete it.
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
	// +kubebuilder:default:=managed
	// +optional
	ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`

	// managedOptions specifies options which may be applied to managed objects.
	// +optional
	ManagedOptions *ManagedOptions `json:"managedOptions,omitempty"`

	// resyncPeriod defines how frequently the controller will re-reconcile
	// this resource even when no changes have been detected. This overrides
	// the global default resync period. The value must be a valid Go duration
	// string, e.g. "10m", "1h". Set to "0s" to disable periodic resync for
	// this resource. Very low values may cause excessive OpenStack API load.
	// +optional
	ResyncPeriod *metav1.Duration `json:"resyncPeriod,omitempty"` //nolint:kubeapilinter // metav1.Duration is appropriate for user-facing duration config

	// cloudCredentialsRef points to a secret containing OpenStack credentials
	// +required
	CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}

PortSpec defines the desired state of an ORC object. +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? has(self.resource) : true",message="resource must be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? !has(self.__import__) : true",message="import may not be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? !has(self.resource) : true",message="resource may not be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? has(self.__import__) : true",message="import must be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="has(self.managedOptions) ? self.managementPolicy == 'managed' : true",message="managedOptions may only be provided when policy is managed"

func (*PortSpec) DeepCopy

func (in *PortSpec) DeepCopy() *PortSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortSpec.

func (*PortSpec) DeepCopyInto

func (in *PortSpec) DeepCopyInto(out *PortSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PortStatus

type PortStatus struct {
	// 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.
	//
	// +kubebuilder:validation:MaxItems:=32
	// +patchMergeKey=type
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=type
	// +optional
	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"`

	// resource contains the observed state of the OpenStack resource.
	// +optional
	Resource *PortResourceStatus `json:"resource,omitempty"`

	// lastSyncTime is the timestamp of the last successful reconciliation
	// that fetched state from OpenStack. It is updated each time the
	// controller successfully reads the resource state from the OpenStack
	// API.
	// +optional
	LastSyncTime *metav1.Time `json:"lastSyncTime,omitempty"`
}

PortStatus defines the observed state of an ORC resource.

func (*PortStatus) DeepCopy

func (in *PortStatus) DeepCopy() *PortStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortStatus.

func (*PortStatus) DeepCopyInto

func (in *PortStatus) DeepCopyInto(out *PortStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PortValueSpec

type PortValueSpec struct {
	// key is the name of the Neutron API extension parameter.
	// +kubebuilder:validation:MinLength:=1
	// +kubebuilder:validation:MaxLength:=255
	// +required
	Key string `json:"key,omitempty"`

	// value is the value of the Neutron API extension parameter.
	// +kubebuilder:validation:MaxLength:=255
	// +required
	Value *string `json:"value,omitempty"`
}

func (*PortValueSpec) DeepCopy

func (in *PortValueSpec) DeepCopy() *PortValueSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortValueSpec.

func (*PortValueSpec) DeepCopyInto

func (in *PortValueSpec) DeepCopyInto(out *PortValueSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Project

type Project struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the object metadata
	// +optional
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// spec specifies the desired state of the resource.
	// +required
	Spec ProjectSpec `json:"spec,omitzero"`

	// status defines the observed state of the resource.
	// +optional
	Status ProjectStatus `json:"status,omitempty"`
}

Project is the Schema for an ORC resource.

func (*Project) DeepCopy

func (in *Project) DeepCopy() *Project

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Project.

func (*Project) DeepCopyInto

func (in *Project) DeepCopyInto(out *Project)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Project) DeepCopyObject

func (in *Project) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*Project) GetCloudCredentialsRef

func (i *Project) GetCloudCredentialsRef() (*string, *CloudCredentialsReference)

func (*Project) GetConditions

func (i *Project) GetConditions() []metav1.Condition

type ProjectFilter

type ProjectFilter struct {
	// name of the existing resource
	// +optional
	Name *KeystoneName `json:"name,omitempty"`

	// domainRef is a reference to the ORC Domain which this resource is associated with.
	// +optional
	// +orc:kustomize:ref=Domain
	DomainRef *KubernetesNameRef `json:"domainRef,omitempty"`

	FilterByKeystoneTags `json:",inline"`
}

ProjectFilter defines an existing resource by its properties +kubebuilder:validation:MinProperties:=1

func (*ProjectFilter) DeepCopy

func (in *ProjectFilter) DeepCopy() *ProjectFilter

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProjectFilter.

func (*ProjectFilter) DeepCopyInto

func (in *ProjectFilter) DeepCopyInto(out *ProjectFilter)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ProjectImport

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.
	// +kubebuilder:validation:Format:=uuid
	// +kubebuilder:validation:MaxLength:=36
	// +optional
	ID *string `json:"id,omitempty"` //nolint:kubeapilinter

	// 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.
	// +optional
	Filter *ProjectFilter `json:"filter,omitempty"`
}

ProjectImport specifies an existing resource which will be imported instead of creating a new one +kubebuilder:validation:MinProperties:=1 +kubebuilder:validation:MaxProperties:=1

func (*ProjectImport) DeepCopy

func (in *ProjectImport) DeepCopy() *ProjectImport

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProjectImport.

func (*ProjectImport) DeepCopyInto

func (in *ProjectImport) DeepCopyInto(out *ProjectImport)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ProjectList

type ProjectList struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the list metadata
	// +optional
	metav1.ListMeta `json:"metadata,omitempty"`

	// items contains a list of Project.
	// +required
	Items []Project `json:"items"`
}

ProjectList contains a list of Project.

func (*ProjectList) DeepCopy

func (in *ProjectList) DeepCopy() *ProjectList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProjectList.

func (*ProjectList) DeepCopyInto

func (in *ProjectList) DeepCopyInto(out *ProjectList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ProjectList) DeepCopyObject

func (in *ProjectList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*ProjectList) GetItems

func (l *ProjectList) GetItems() []Project

type ProjectResourceSpec

type ProjectResourceSpec struct {
	// name will be the name of the created resource. If not specified, the
	// name of the ORC object will be used.
	// +optional
	Name *KeystoneName `json:"name,omitempty"`

	// description contains a free form description of the project.
	// +kubebuilder:validation:MinLength:=1
	// +kubebuilder:validation:MaxLength:=65535
	// +optional
	Description *string `json:"description,omitempty"`

	// domainRef is a reference to the ORC Domain which this resource is associated with.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="domainRef is immutable"
	// +orc:kustomize:ref=Domain
	DomainRef *KubernetesNameRef `json:"domainRef,omitempty"`

	// enabled defines whether a project is enabled or not. Default is true.
	// +optional
	Enabled *bool `json:"enabled,omitempty"`

	// tags is list of simple strings assigned to a project.
	// Tags can be used to classify projects into groups.
	// +kubebuilder:validation:MaxItems:=80
	// +listType=set
	// +optional
	Tags []KeystoneTag `json:"tags,omitempty"`
}

ProjectResourceSpec contains the desired state of a project

func (*ProjectResourceSpec) DeepCopy

func (in *ProjectResourceSpec) DeepCopy() *ProjectResourceSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProjectResourceSpec.

func (*ProjectResourceSpec) DeepCopyInto

func (in *ProjectResourceSpec) DeepCopyInto(out *ProjectResourceSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ProjectResourceStatus

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"`

	// description is a human-readable description for the resource.
	// +kubebuilder:validation:MaxLength:=65535
	// +optional
	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"`

	// enabled represents whether a project is enabled or not.
	// +optional
	Enabled *bool `json:"enabled,omitempty"`

	// tags is the list of tags on the resource.
	// +kubebuilder:validation:MaxItems=80
	// +kubebuilder:validation:items:MaxLength=1024
	// +listType=atomic
	// +optional
	Tags []string `json:"tags,omitempty"`
}

ProjectResourceStatus represents the observed state of the resource.

func (*ProjectResourceStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProjectResourceStatus.

func (*ProjectResourceStatus) DeepCopyInto

func (in *ProjectResourceStatus) DeepCopyInto(out *ProjectResourceStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ProjectSpec

type ProjectSpec struct {
	// import refers to an existing OpenStack resource which will be imported instead of
	// creating a new one.
	// +optional
	Import *ProjectImport `json:"import,omitempty"`

	// resource specifies the desired state of the resource.
	//
	// resource may not be specified if the management policy is `unmanaged`.
	//
	// resource must be specified if the management policy is `managed`.
	// +optional
	Resource *ProjectResourceSpec `json:"resource,omitempty"`

	// managementPolicy defines how ORC will treat the object. Valid values are
	// `managed`: ORC will create, update, and delete the resource; `unmanaged`:
	// ORC will import an existing resource, and will not apply updates to it or
	// delete it.
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
	// +kubebuilder:default:=managed
	// +optional
	ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`

	// managedOptions specifies options which may be applied to managed objects.
	// +optional
	ManagedOptions *ManagedOptions `json:"managedOptions,omitempty"`

	// resyncPeriod defines how frequently the controller will re-reconcile
	// this resource even when no changes have been detected. This overrides
	// the global default resync period. The value must be a valid Go duration
	// string, e.g. "10m", "1h". Set to "0s" to disable periodic resync for
	// this resource. Very low values may cause excessive OpenStack API load.
	// +optional
	ResyncPeriod *metav1.Duration `json:"resyncPeriod,omitempty"` //nolint:kubeapilinter // metav1.Duration is appropriate for user-facing duration config

	// cloudCredentialsRef points to a secret containing OpenStack credentials
	// +required
	CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}

ProjectSpec defines the desired state of an ORC object. +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? has(self.resource) : true",message="resource must be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? !has(self.__import__) : true",message="import may not be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? !has(self.resource) : true",message="resource may not be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? has(self.__import__) : true",message="import must be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="has(self.managedOptions) ? self.managementPolicy == 'managed' : true",message="managedOptions may only be provided when policy is managed"

func (*ProjectSpec) DeepCopy

func (in *ProjectSpec) DeepCopy() *ProjectSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProjectSpec.

func (*ProjectSpec) DeepCopyInto

func (in *ProjectSpec) DeepCopyInto(out *ProjectSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ProjectStatus

type ProjectStatus struct {
	// 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.
	//
	// +kubebuilder:validation:MaxItems:=32
	// +patchMergeKey=type
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=type
	// +optional
	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"`

	// resource contains the observed state of the OpenStack resource.
	// +optional
	Resource *ProjectResourceStatus `json:"resource,omitempty"`

	// lastSyncTime is the timestamp of the last successful reconciliation
	// that fetched state from OpenStack. It is updated each time the
	// controller successfully reads the resource state from the OpenStack
	// API.
	// +optional
	LastSyncTime *metav1.Time `json:"lastSyncTime,omitempty"`
}

ProjectStatus defines the observed state of an ORC resource.

func (*ProjectStatus) DeepCopy

func (in *ProjectStatus) DeepCopy() *ProjectStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProjectStatus.

func (*ProjectStatus) DeepCopyInto

func (in *ProjectStatus) DeepCopyInto(out *ProjectStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Protocol

type Protocol string

+kubebuilder:validation:Enum:=ah;dccp;egp;esp;gre;icmp;icmpv6;igmp;ipip;ipv6-encap;ipv6-frag;ipv6-icmp;ipv6-nonxt;ipv6-opts;ipv6-route;ospf;pgm;rsvp;sctp;tcp;udp;udplite;vrrp

const (
	ProtocolAH        Protocol = "ah"
	ProtocolDCCP      Protocol = "dccp"
	ProtocolEGP       Protocol = "egp"
	ProtocolESP       Protocol = "esp"
	ProtocolGRE       Protocol = "gre"
	ProtocolICMP      Protocol = "icmp"
	ProtocolICMPV6    Protocol = "icmpv6"
	ProtocolIGMP      Protocol = "igmp"
	ProtocolIPIP      Protocol = "ipip"
	ProtocolIPV6ENCAP Protocol = "ipv6-encap"
	ProtocolIPV6FRAG  Protocol = "ipv6-frag"
	ProtocolIPV6ICMP  Protocol = "ipv6-icmp"
	ProtocolIPV6NONXT Protocol = "ipv6-nonxt"
	ProtocolIPV6OPTS  Protocol = "ipv6-opts"
	ProtocolIPV6ROUTE Protocol = "ipv6-route"
	ProtocolOSPF      Protocol = "ospf"
	ProtocolPGM       Protocol = "pgm"
	ProtocolRSVP      Protocol = "rsvp"
	ProtocolSCTP      Protocol = "sctp"
	ProtocolTCP       Protocol = "tcp"
	ProtocolUDP       Protocol = "udp"
	ProtocolUDPLITE   Protocol = "udplite"
	ProtocolVRRP      Protocol = "vrrp"
)

type ProviderNetworkType

type ProviderNetworkType string

+kubebuilder:validation:Enum:=local;flat;vlan;vxlan;gre

const (
	ProviderNetworkTypeLocal ProviderNetworkType = "local"
	ProviderNetworkTypeFlat  ProviderNetworkType = "flat"
	ProviderNetworkTypeVlan  ProviderNetworkType = "vlan"
	ProviderNetworkTypeVxlan ProviderNetworkType = "vxlan"
	ProviderNetworkTypeGre   ProviderNetworkType = "gre"
)

type ProviderPropertiesStatus

type ProviderPropertiesStatus struct {
	// networkType is the type of physical network that this
	// network should be mapped to. Supported values are flat, vlan, vxlan, and gre.
	// Valid values depend on the networking back-end.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	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
	// way to list available physical networks. For example, the Open
	// vSwitch plug-in configuration file defines a symbolic name that maps
	// to specific bridges on each compute host.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	PhysicalNetwork string `json:"physicalNetwork,omitempty"`

	// segmentationID is the ID of the isolated segment on the
	// physical network. The network_type attribute defines the
	// segmentation model. For example, if the network_type value is vlan,
	// this ID is a vlan identifier. If the network_type value is gre, this
	// ID is a gre key.
	// +optional
	SegmentationID *int32 `json:"segmentationID,omitempty"`
}

func (*ProviderPropertiesStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProviderPropertiesStatus.

func (*ProviderPropertiesStatus) DeepCopyInto

func (in *ProviderPropertiesStatus) DeepCopyInto(out *ProviderPropertiesStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ProviderSegmentSpec

type ProviderSegmentSpec struct {
	// networkType is the type of physical network that this
	// network should be mapped to. Supported values are local, flat, vlan, vxlan, and gre.
	// +required
	NetworkType ProviderNetworkType `json:"networkType,omitempty"`

	// physicalNetwork is the physical network where this network
	// should be implemented. The Networking API v2.0 does not provide a
	// way to list available physical networks. For example, the Open
	// vSwitch plug-in configuration file defines a symbolic name that maps
	// to specific bridges on each compute host.
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=64
	// +optional
	PhysicalNetwork string `json:"physicalNetwork,omitempty"`

	// segmentationID is the ID of the isolated segment on the
	// physical network. The network_type attribute defines the
	// segmentation model. For example, if the network_type value is vlan,
	// this ID is a vlan identifier. If the network_type value is gre, this
	// ID is a gre key.
	// +kubebuilder:validation:Minimum:=0
	// +optional
	SegmentationID *int32 `json:"segmentationID,omitempty"`
}

func (*ProviderSegmentSpec) DeepCopy

func (in *ProviderSegmentSpec) DeepCopy() *ProviderSegmentSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProviderSegmentSpec.

func (*ProviderSegmentSpec) DeepCopyInto

func (in *ProviderSegmentSpec) DeepCopyInto(out *ProviderSegmentSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Region

type Region struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the object metadata
	// +optional
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// spec specifies the desired state of the resource.
	// +required
	Spec RegionSpec `json:"spec,omitzero"`

	// status defines the observed state of the resource.
	// +optional
	Status RegionStatus `json:"status,omitempty"`
}

Region is the Schema for an ORC resource.

func (*Region) DeepCopy

func (in *Region) DeepCopy() *Region

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Region.

func (*Region) DeepCopyInto

func (in *Region) DeepCopyInto(out *Region)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Region) DeepCopyObject

func (in *Region) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*Region) GetCloudCredentialsRef

func (i *Region) GetCloudCredentialsRef() (*string, *CloudCredentialsReference)

func (*Region) GetConditions

func (i *Region) GetConditions() []metav1.Condition

type RegionFilter

type RegionFilter struct {
	// name of the existing resource
	// +optional
	Name *OpenStackName `json:"name,omitempty"`

	// description of the existing resource
	// +kubebuilder:validation:MinLength:=1
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	Description *string `json:"description,omitempty"`
}

RegionFilter defines an existing resource by its properties +kubebuilder:validation:MinProperties:=1

func (*RegionFilter) DeepCopy

func (in *RegionFilter) DeepCopy() *RegionFilter

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RegionFilter.

func (*RegionFilter) DeepCopyInto

func (in *RegionFilter) DeepCopyInto(out *RegionFilter)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RegionImport

type RegionImport struct {
	// 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.
	// +kubebuilder:validation:MaxLength:=1024
	// +optional
	ID *string `json:"id,omitempty"` //nolint:kubeapilinter

	// 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.
	// +optional
	Filter *RegionFilter `json:"filter,omitempty"`
}

RegionImport specifies an existing resource which will be imported instead of creating a new one +kubebuilder:validation:MinProperties:=1 +kubebuilder:validation:MaxProperties:=1

func (*RegionImport) DeepCopy

func (in *RegionImport) DeepCopy() *RegionImport

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RegionImport.

func (*RegionImport) DeepCopyInto

func (in *RegionImport) DeepCopyInto(out *RegionImport)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RegionList

type RegionList struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the list metadata
	// +optional
	metav1.ListMeta `json:"metadata,omitempty"`

	// items contains a list of Region.
	// +required
	Items []Region `json:"items"`
}

RegionList contains a list of Region.

func (*RegionList) DeepCopy

func (in *RegionList) DeepCopy() *RegionList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RegionList.

func (*RegionList) DeepCopyInto

func (in *RegionList) DeepCopyInto(out *RegionList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*RegionList) DeepCopyObject

func (in *RegionList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*RegionList) GetItems

func (l *RegionList) GetItems() []Region

type RegionResourceSpec

type RegionResourceSpec struct {
	// name is the name of the Region resource. This field will be passed as the region ID in the Keystone API.
	// Since this field will be used as the ID of the region, we use the OpenStackName type instead of KeystoneName which
	// matches the upstream validator.
	// If not specified, the name of the ORC object will be used.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="name is immutable"
	Name *OpenStackName `json:"name,omitempty"`

	// description is a human-readable description for the resource.
	// +kubebuilder:validation:MinLength:=1
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	Description *string `json:"description,omitempty"`
}

RegionResourceSpec contains the desired state of the resource.

func (*RegionResourceSpec) DeepCopy

func (in *RegionResourceSpec) DeepCopy() *RegionResourceSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RegionResourceSpec.

func (*RegionResourceSpec) DeepCopyInto

func (in *RegionResourceSpec) DeepCopyInto(out *RegionResourceSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RegionResourceStatus

type RegionResourceStatus struct {
	// name is the name of the Region resource. This field will be passed as the region ID in the Keystone API.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	Name string `json:"name,omitempty"`

	// description is a human-readable description for the resource.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	Description string `json:"description,omitempty"`
}

RegionResourceStatus represents the observed state of the resource.

func (*RegionResourceStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RegionResourceStatus.

func (*RegionResourceStatus) DeepCopyInto

func (in *RegionResourceStatus) DeepCopyInto(out *RegionResourceStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RegionSpec

type RegionSpec struct {
	// import refers to an existing OpenStack resource which will be imported instead of
	// creating a new one.
	// +optional
	Import *RegionImport `json:"import,omitempty"`

	// resource specifies the desired state of the resource.
	//
	// resource may not be specified if the management policy is `unmanaged`.
	//
	// resource must be specified if the management policy is `managed`.
	// +optional
	Resource *RegionResourceSpec `json:"resource,omitempty"`

	// managementPolicy defines how ORC will treat the object. Valid values are
	// `managed`: ORC will create, update, and delete the resource; `unmanaged`:
	// ORC will import an existing resource, and will not apply updates to it or
	// delete it.
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
	// +kubebuilder:default:=managed
	// +optional
	ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`

	// managedOptions specifies options which may be applied to managed objects.
	// +optional
	ManagedOptions *ManagedOptions `json:"managedOptions,omitempty"`

	// resyncPeriod defines how frequently the controller will re-reconcile
	// this resource even when no changes have been detected. This overrides
	// the global default resync period. The value must be a valid Go duration
	// string, e.g. "10m", "1h". Set to "0s" to disable periodic resync for
	// this resource. Very low values may cause excessive OpenStack API load.
	// +optional
	ResyncPeriod *metav1.Duration `json:"resyncPeriod,omitempty"` //nolint:kubeapilinter // metav1.Duration is appropriate for user-facing duration config

	// cloudCredentialsRef points to a secret containing OpenStack credentials
	// +required
	CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}

RegionSpec defines the desired state of an ORC object. +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? has(self.resource) : true",message="resource must be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? !has(self.__import__) : true",message="import may not be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? !has(self.resource) : true",message="resource may not be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? has(self.__import__) : true",message="import must be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="has(self.managedOptions) ? self.managementPolicy == 'managed' : true",message="managedOptions may only be provided when policy is managed"

func (*RegionSpec) DeepCopy

func (in *RegionSpec) DeepCopy() *RegionSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RegionSpec.

func (*RegionSpec) DeepCopyInto

func (in *RegionSpec) DeepCopyInto(out *RegionSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RegionStatus

type RegionStatus struct {
	// 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.
	//
	// +kubebuilder:validation:MaxItems:=32
	// +patchMergeKey=type
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=type
	// +optional
	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"`

	// resource contains the observed state of the OpenStack resource.
	// +optional
	Resource *RegionResourceStatus `json:"resource,omitempty"`

	// lastSyncTime is the timestamp of the last successful reconciliation
	// that fetched state from OpenStack. It is updated each time the
	// controller successfully reads the resource state from the OpenStack
	// API.
	// +optional
	LastSyncTime *metav1.Time `json:"lastSyncTime,omitempty"`
}

RegionStatus defines the observed state of an ORC resource.

func (*RegionStatus) DeepCopy

func (in *RegionStatus) DeepCopy() *RegionStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RegionStatus.

func (*RegionStatus) DeepCopyInto

func (in *RegionStatus) DeepCopyInto(out *RegionStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RegisteredLimit

type RegisteredLimit struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the object metadata
	// +optional
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// spec specifies the desired state of the resource.
	// +required
	Spec RegisteredLimitSpec `json:"spec,omitzero"`

	// status defines the observed state of the resource.
	// +optional
	Status RegisteredLimitStatus `json:"status,omitempty"`
}

RegisteredLimit is the Schema for an ORC resource.

func (*RegisteredLimit) DeepCopy

func (in *RegisteredLimit) DeepCopy() *RegisteredLimit

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RegisteredLimit.

func (*RegisteredLimit) DeepCopyInto

func (in *RegisteredLimit) DeepCopyInto(out *RegisteredLimit)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*RegisteredLimit) DeepCopyObject

func (in *RegisteredLimit) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*RegisteredLimit) GetCloudCredentialsRef

func (i *RegisteredLimit) GetCloudCredentialsRef() (*string, *CloudCredentialsReference)

func (*RegisteredLimit) GetConditions

func (i *RegisteredLimit) GetConditions() []metav1.Condition

type RegisteredLimitFilter

type RegisteredLimitFilter struct {
	// description of the existing resource
	// +kubebuilder:validation:MinLength:=1
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	Description *string `json:"description,omitempty"`

	// serviceRef is a reference to the ORC Service which this resource is associated with.
	// +optional
	// +orc:kustomize:ref=Service
	ServiceRef *KubernetesNameRef `json:"serviceRef,omitempty"`

	// resourceName is name of the resource to be limited.
	// +kubebuilder:validation:MinLength:=1
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	ResourceName *string `json:"resourceName,omitempty"`

	// regionRef is a reference to the ORC Region which this resource is associated with.
	// +optional
	// +orc:kustomize:ref=Region
	RegionRef *KubernetesNameRef `json:"regionRef,omitempty"`
}

RegisteredLimitFilter defines an existing resource by its properties +kubebuilder:validation:MinProperties:=1

func (*RegisteredLimitFilter) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RegisteredLimitFilter.

func (*RegisteredLimitFilter) DeepCopyInto

func (in *RegisteredLimitFilter) DeepCopyInto(out *RegisteredLimitFilter)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RegisteredLimitImport

type RegisteredLimitImport 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.
	// +kubebuilder:validation:Format:=uuid
	// +kubebuilder:validation:MaxLength:=36
	// +optional
	ID *string `json:"id,omitempty"` //nolint:kubeapilinter

	// 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.
	// +optional
	Filter *RegisteredLimitFilter `json:"filter,omitempty"`
}

RegisteredLimitImport specifies an existing resource which will be imported instead of creating a new one +kubebuilder:validation:MinProperties:=1 +kubebuilder:validation:MaxProperties:=1

func (*RegisteredLimitImport) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RegisteredLimitImport.

func (*RegisteredLimitImport) DeepCopyInto

func (in *RegisteredLimitImport) DeepCopyInto(out *RegisteredLimitImport)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RegisteredLimitList

type RegisteredLimitList struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the list metadata
	// +optional
	metav1.ListMeta `json:"metadata,omitempty"`

	// items contains a list of RegisteredLimit.
	// +required
	Items []RegisteredLimit `json:"items"`
}

RegisteredLimitList contains a list of RegisteredLimit.

func (*RegisteredLimitList) DeepCopy

func (in *RegisteredLimitList) DeepCopy() *RegisteredLimitList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RegisteredLimitList.

func (*RegisteredLimitList) DeepCopyInto

func (in *RegisteredLimitList) DeepCopyInto(out *RegisteredLimitList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*RegisteredLimitList) DeepCopyObject

func (in *RegisteredLimitList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*RegisteredLimitList) GetItems

func (l *RegisteredLimitList) GetItems() []RegisteredLimit

type RegisteredLimitResourceSpec

type RegisteredLimitResourceSpec struct {
	// description is a human-readable description for the resource.
	// +kubebuilder:validation:MinLength:=1
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	Description *string `json:"description,omitempty"`

	// serviceRef is a reference to the ORC Service which this resource is associated with.
	// +required
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="serviceRef is immutable"
	// +orc:kustomize:ref=Service
	ServiceRef KubernetesNameRef `json:"serviceRef,omitempty"`

	// resourceName is name of the resource to be limited.
	// +kubebuilder:validation:MinLength:=1
	// +kubebuilder:validation:MaxLength:=255
	// +required
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="resourceName is immutable"
	// +kubebuilder:validation:Pattern:=`^[\S]+$`
	ResourceName string `json:"resourceName,omitempty"`

	// defaultLimit is limit of the specified resource in the given context.
	// Using -1 will allow unlimited use of the resource. Using 0 will prevent usage of that resource entirely.
	// Note: Due to a bug in gophercloud, you can not currently set this to 0 when creating a RegisteredLimit.
	// https://github.com/gophercloud/gophercloud/issues/3866
	// +kubebuilder:validation:Minimum=-1
	// +kubebuilder:validation:Maximum=2147483647
	// +required
	DefaultLimit *int32 `json:"defaultLimit,omitempty"`

	// regionRef is a reference to the ORC Region which this resource is associated with.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="regionRef is immutable"
	// +orc:kustomize:ref=Region
	RegionRef *KubernetesNameRef `json:"regionRef,omitempty"`
}

RegisteredLimitResourceSpec contains the desired state of the resource.

func (*RegisteredLimitResourceSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RegisteredLimitResourceSpec.

func (*RegisteredLimitResourceSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RegisteredLimitResourceStatus

type RegisteredLimitResourceStatus struct {
	// description is a human-readable description for the resource.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	Description string `json:"description,omitempty"`

	// resourceName is name of the resource to be limited.
	// +kubebuilder:validation:MinLength:=1
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	ResourceName string `json:"resourceName,omitempty"`

	// regionID is the ID of the region that contains the service endpoint.
	// +kubebuilder:validation:MaxLength:=1024
	// +optional
	RegionID string `json:"regionID,omitempty"`

	// serviceID is the UUID of the service to which the registered limit belongs.
	// +kubebuilder:validation:MaxLength:=1024
	// +optional
	ServiceID string `json:"serviceID,omitempty"`

	// defaultLimit is limit of the specified resource in the given context.
	// +optional
	DefaultLimit *int32 `json:"defaultLimit,omitempty"`
}

RegisteredLimitResourceStatus represents the observed state of the resource.

func (*RegisteredLimitResourceStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RegisteredLimitResourceStatus.

func (*RegisteredLimitResourceStatus) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RegisteredLimitSpec

type RegisteredLimitSpec struct {
	// import refers to an existing OpenStack resource which will be imported instead of
	// creating a new one.
	// +optional
	Import *RegisteredLimitImport `json:"import,omitempty"`

	// resource specifies the desired state of the resource.
	//
	// resource may not be specified if the management policy is `unmanaged`.
	//
	// resource must be specified if the management policy is `managed`.
	// +optional
	Resource *RegisteredLimitResourceSpec `json:"resource,omitempty"`

	// managementPolicy defines how ORC will treat the object. Valid values are
	// `managed`: ORC will create, update, and delete the resource; `unmanaged`:
	// ORC will import an existing resource, and will not apply updates to it or
	// delete it.
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
	// +kubebuilder:default:=managed
	// +optional
	ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`

	// managedOptions specifies options which may be applied to managed objects.
	// +optional
	ManagedOptions *ManagedOptions `json:"managedOptions,omitempty"`

	// resyncPeriod defines how frequently the controller will re-reconcile
	// this resource even when no changes have been detected. This overrides
	// the global default resync period. The value must be a valid Go duration
	// string, e.g. "10m", "1h". Set to "0s" to disable periodic resync for
	// this resource. Very low values may cause excessive OpenStack API load.
	// +optional
	ResyncPeriod *metav1.Duration `json:"resyncPeriod,omitempty"` //nolint:kubeapilinter // metav1.Duration is appropriate for user-facing duration config

	// cloudCredentialsRef points to a secret containing OpenStack credentials
	// +required
	CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}

RegisteredLimitSpec defines the desired state of an ORC object. +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? has(self.resource) : true",message="resource must be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? !has(self.__import__) : true",message="import may not be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? !has(self.resource) : true",message="resource may not be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? has(self.__import__) : true",message="import must be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="has(self.managedOptions) ? self.managementPolicy == 'managed' : true",message="managedOptions may only be provided when policy is managed"

func (*RegisteredLimitSpec) DeepCopy

func (in *RegisteredLimitSpec) DeepCopy() *RegisteredLimitSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RegisteredLimitSpec.

func (*RegisteredLimitSpec) DeepCopyInto

func (in *RegisteredLimitSpec) DeepCopyInto(out *RegisteredLimitSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RegisteredLimitStatus

type RegisteredLimitStatus struct {
	// 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.
	//
	// +kubebuilder:validation:MaxItems:=32
	// +patchMergeKey=type
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=type
	// +optional
	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"`

	// resource contains the observed state of the OpenStack resource.
	// +optional
	Resource *RegisteredLimitResourceStatus `json:"resource,omitempty"`

	// lastSyncTime is the timestamp of the last successful reconciliation
	// that fetched state from OpenStack. It is updated each time the
	// controller successfully reads the resource state from the OpenStack
	// API.
	// +optional
	LastSyncTime *metav1.Time `json:"lastSyncTime,omitempty"`
}

RegisteredLimitStatus defines the observed state of an ORC resource.

func (*RegisteredLimitStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RegisteredLimitStatus.

func (*RegisteredLimitStatus) DeepCopyInto

func (in *RegisteredLimitStatus) DeepCopyInto(out *RegisteredLimitStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Role

type Role struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the object metadata
	// +optional
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// spec specifies the desired state of the resource.
	// +required
	Spec RoleSpec `json:"spec,omitzero"`

	// status defines the observed state of the resource.
	// +optional
	Status RoleStatus `json:"status,omitempty"`
}

Role is the Schema for an ORC resource.

func (*Role) DeepCopy

func (in *Role) DeepCopy() *Role

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Role.

func (*Role) DeepCopyInto

func (in *Role) DeepCopyInto(out *Role)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Role) DeepCopyObject

func (in *Role) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*Role) GetCloudCredentialsRef

func (i *Role) GetCloudCredentialsRef() (*string, *CloudCredentialsReference)

func (*Role) GetConditions

func (i *Role) GetConditions() []metav1.Condition

type RoleAssignment

type RoleAssignment struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the object metadata
	// +optional
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// spec specifies the desired state of the resource.
	// +required
	Spec RoleAssignmentSpec `json:"spec,omitzero"`

	// status defines the observed state of the resource.
	// +optional
	Status RoleAssignmentStatus `json:"status,omitempty"`
}

RoleAssignment is the Schema for an ORC resource.

func (*RoleAssignment) DeepCopy

func (in *RoleAssignment) DeepCopy() *RoleAssignment

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleAssignment.

func (*RoleAssignment) DeepCopyInto

func (in *RoleAssignment) DeepCopyInto(out *RoleAssignment)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*RoleAssignment) DeepCopyObject

func (in *RoleAssignment) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*RoleAssignment) GetCloudCredentialsRef

func (i *RoleAssignment) GetCloudCredentialsRef() (*string, *CloudCredentialsReference)

func (*RoleAssignment) GetConditions

func (i *RoleAssignment) GetConditions() []metav1.Condition

type RoleAssignmentFilter

type RoleAssignmentFilter struct {
	// roleRef filters by the referenced Role.
	// +optional
	// +orc:kustomize:ref=Role
	RoleRef *KubernetesNameRef `json:"roleRef,omitempty"`

	// userRef filters by the referenced User.
	// +optional
	// +orc:kustomize:ref=User
	UserRef *KubernetesNameRef `json:"userRef,omitempty"`

	// groupRef filters by the referenced Group.
	// +optional
	// +orc:kustomize:ref=Group
	GroupRef *KubernetesNameRef `json:"groupRef,omitempty"`

	// projectRef filters by the referenced Project scope.
	// +optional
	// +orc:kustomize:ref=Project
	ProjectRef *KubernetesNameRef `json:"projectRef,omitempty"`

	// domainRef filters by the referenced Domain scope.
	// +optional
	// +orc:kustomize:ref=Domain
	DomainRef *KubernetesNameRef `json:"domainRef,omitempty"`
}

RoleAssignmentFilter defines import filter criteria for existing role assignments. +kubebuilder:validation:MinProperties:=1

func (*RoleAssignmentFilter) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleAssignmentFilter.

func (*RoleAssignmentFilter) DeepCopyInto

func (in *RoleAssignmentFilter) DeepCopyInto(out *RoleAssignmentFilter)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RoleAssignmentImport

type RoleAssignmentImport struct {

	// 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.
	// +optional
	Filter *RoleAssignmentFilter `json:"filter,omitempty"`
}

RoleAssignmentImport specifies an existing resource which will be imported instead of creating a new one +kubebuilder:validation:MinProperties:=1

func (*RoleAssignmentImport) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleAssignmentImport.

func (*RoleAssignmentImport) DeepCopyInto

func (in *RoleAssignmentImport) DeepCopyInto(out *RoleAssignmentImport)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RoleAssignmentList

type RoleAssignmentList struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the list metadata
	// +optional
	metav1.ListMeta `json:"metadata,omitempty"`

	// items contains a list of RoleAssignment.
	// +required
	Items []RoleAssignment `json:"items"`
}

RoleAssignmentList contains a list of RoleAssignment.

func (*RoleAssignmentList) DeepCopy

func (in *RoleAssignmentList) DeepCopy() *RoleAssignmentList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleAssignmentList.

func (*RoleAssignmentList) DeepCopyInto

func (in *RoleAssignmentList) DeepCopyInto(out *RoleAssignmentList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*RoleAssignmentList) DeepCopyObject

func (in *RoleAssignmentList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*RoleAssignmentList) GetItems

func (l *RoleAssignmentList) GetItems() []RoleAssignment

type RoleAssignmentResourceSpec

type RoleAssignmentResourceSpec struct {
	// roleRef references the Role being assigned.
	// +required
	// +orc:kustomize:ref=Role
	RoleRef KubernetesNameRef `json:"roleRef,omitempty"`

	// userRef references the User receiving the role assignment.
	// Exactly one of userRef or groupRef must be specified.
	// +optional
	// +orc:kustomize:ref=User
	UserRef *KubernetesNameRef `json:"userRef,omitempty"`

	// groupRef references the Group receiving the role assignment.
	// Exactly one of userRef or groupRef must be specified.
	// +optional
	// +orc:kustomize:ref=Group
	GroupRef *KubernetesNameRef `json:"groupRef,omitempty"`

	// projectRef references the Project scope for the assignment.
	// Exactly one of projectRef or domainRef must be specified.
	// +optional
	// +orc:kustomize:ref=Project
	ProjectRef *KubernetesNameRef `json:"projectRef,omitempty"`

	// domainRef references the Domain scope for the assignment.
	// Exactly one of projectRef or domainRef must be specified.
	// +optional
	// +orc:kustomize:ref=Domain
	DomainRef *KubernetesNameRef `json:"domainRef,omitempty"`
}

RoleAssignmentResourceSpec defines the desired role assignment. A role assignment grants a role to a user or group on a project or domain. Role assignments are immutable once created and identified by the combination of (role, actor, scope) rather than a separate ID. +kubebuilder:validation:XValidation:rule="(has(self.userRef) && !has(self.groupRef)) || (!has(self.userRef) && has(self.groupRef))",message="exactly one of userRef or groupRef is required" +kubebuilder:validation:XValidation:rule="(has(self.projectRef) && !has(self.domainRef)) || (!has(self.projectRef) && has(self.domainRef))",message="exactly one of projectRef or domainRef is required" +kubebuilder:validation:XValidation:rule="self == oldSelf",message="RoleAssignmentResourceSpec is immutable"

func (*RoleAssignmentResourceSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleAssignmentResourceSpec.

func (*RoleAssignmentResourceSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RoleAssignmentResourceStatus

type RoleAssignmentResourceStatus struct {
	// roleID is the OpenStack ID of the assigned role.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	RoleID string `json:"roleID,omitempty"`

	// userID is the OpenStack ID of the user (if actorType is User).
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	UserID string `json:"userID,omitempty"`

	// groupID is the OpenStack ID of the group (if actorType is Group).
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	GroupID string `json:"groupID,omitempty"`

	// projectID is the OpenStack ID of the project scope (if scopeType is Project).
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	ProjectID string `json:"projectID,omitempty"`

	// domainID is the OpenStack ID of the domain scope (if scopeType is Domain).
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	DomainID string `json:"domainID,omitempty"`
}

RoleAssignmentResourceStatus represents the observed state of the role assignment. Note: Role assignments do not have a unique ID in OpenStack - they are identified by the combination of role, actor (user/group), and scope (project/domain).

func (*RoleAssignmentResourceStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleAssignmentResourceStatus.

func (*RoleAssignmentResourceStatus) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RoleAssignmentSpec

type RoleAssignmentSpec struct {
	// import refers to an existing OpenStack resource which will be imported instead of
	// creating a new one.
	// +optional
	Import *RoleAssignmentImport `json:"import,omitempty"`

	// resource specifies the desired state of the resource.
	//
	// resource may not be specified if the management policy is `unmanaged`.
	//
	// resource must be specified if the management policy is `managed`.
	// +optional
	Resource *RoleAssignmentResourceSpec `json:"resource,omitempty"`

	// managementPolicy defines how ORC will treat the object. Valid values are
	// `managed`: ORC will create, update, and delete the resource; `unmanaged`:
	// ORC will import an existing resource, and will not apply updates to it or
	// delete it.
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
	// +kubebuilder:default:=managed
	// +optional
	ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`

	// managedOptions specifies options which may be applied to managed objects.
	// +optional
	ManagedOptions *ManagedOptions `json:"managedOptions,omitempty"`

	// resyncPeriod defines how frequently the controller will re-reconcile
	// this resource even when no changes have been detected. This overrides
	// the global default resync period. The value must be a valid Go duration
	// string, e.g. "10m", "1h". Set to "0s" to disable periodic resync for
	// this resource. Very low values may cause excessive OpenStack API load.
	// +optional
	ResyncPeriod *metav1.Duration `json:"resyncPeriod,omitempty"` //nolint:kubeapilinter // metav1.Duration is appropriate for user-facing duration config

	// cloudCredentialsRef points to a secret containing OpenStack credentials
	// +required
	CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}

RoleAssignmentSpec defines the desired state of an ORC object. +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? has(self.resource) : true",message="resource must be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? !has(self.__import__) : true",message="import may not be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? !has(self.resource) : true",message="resource may not be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? has(self.__import__) : true",message="import must be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="has(self.managedOptions) ? self.managementPolicy == 'managed' : true",message="managedOptions may only be provided when policy is managed"

func (*RoleAssignmentSpec) DeepCopy

func (in *RoleAssignmentSpec) DeepCopy() *RoleAssignmentSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleAssignmentSpec.

func (*RoleAssignmentSpec) DeepCopyInto

func (in *RoleAssignmentSpec) DeepCopyInto(out *RoleAssignmentSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RoleAssignmentStatus

type RoleAssignmentStatus struct {
	// 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.
	//
	// +kubebuilder:validation:MaxItems:=32
	// +patchMergeKey=type
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=type
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`

	// resource contains the observed state of the OpenStack resource.
	// +optional
	Resource *RoleAssignmentResourceStatus `json:"resource,omitempty"`

	// lastSyncTime is the timestamp of the last successful reconciliation
	// that fetched state from OpenStack. It is updated each time the
	// controller successfully reads the resource state from the OpenStack
	// API.
	// +optional
	LastSyncTime *metav1.Time `json:"lastSyncTime,omitempty"`
}

RoleAssignmentStatus defines the observed state of an ORC resource.

func (*RoleAssignmentStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleAssignmentStatus.

func (*RoleAssignmentStatus) DeepCopyInto

func (in *RoleAssignmentStatus) DeepCopyInto(out *RoleAssignmentStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RoleFilter

type RoleFilter struct {
	// name of the existing resource
	// +optional
	Name *KeystoneName `json:"name,omitempty"`

	// domainRef is a reference to the ORC Domain which this resource is associated with.
	// +optional
	// +orc:kustomize:ref=Domain
	DomainRef *KubernetesNameRef `json:"domainRef,omitempty"`
}

RoleFilter defines an existing resource by its properties +kubebuilder:validation:MinProperties:=1

func (*RoleFilter) DeepCopy

func (in *RoleFilter) DeepCopy() *RoleFilter

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleFilter.

func (*RoleFilter) DeepCopyInto

func (in *RoleFilter) DeepCopyInto(out *RoleFilter)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RoleImport

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.
	// +kubebuilder:validation:Format:=uuid
	// +kubebuilder:validation:MaxLength:=36
	// +optional
	ID *string `json:"id,omitempty"` //nolint:kubeapilinter

	// 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.
	// +optional
	Filter *RoleFilter `json:"filter,omitempty"`
}

RoleImport specifies an existing resource which will be imported instead of creating a new one +kubebuilder:validation:MinProperties:=1 +kubebuilder:validation:MaxProperties:=1

func (*RoleImport) DeepCopy

func (in *RoleImport) DeepCopy() *RoleImport

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleImport.

func (*RoleImport) DeepCopyInto

func (in *RoleImport) DeepCopyInto(out *RoleImport)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RoleList

type RoleList struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the list metadata
	// +optional
	metav1.ListMeta `json:"metadata,omitempty"`

	// items contains a list of Role.
	// +required
	Items []Role `json:"items"`
}

RoleList contains a list of Role.

func (*RoleList) DeepCopy

func (in *RoleList) DeepCopy() *RoleList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleList.

func (*RoleList) DeepCopyInto

func (in *RoleList) DeepCopyInto(out *RoleList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*RoleList) DeepCopyObject

func (in *RoleList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*RoleList) GetItems

func (l *RoleList) GetItems() []Role

type RoleResourceSpec

type RoleResourceSpec struct {
	// name will be the name of the created resource. If not specified, the
	// name of the ORC object will be used.
	// +optional
	Name *KeystoneName `json:"name,omitempty"`

	// description is a human-readable description for the resource.
	// +kubebuilder:validation:MinLength:=1
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	Description *string `json:"description,omitempty"`

	// domainRef is a reference to the ORC Domain which this resource is associated with.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="domainRef is immutable"
	// +orc:kustomize:ref=Domain
	DomainRef *KubernetesNameRef `json:"domainRef,omitempty"`
}

RoleResourceSpec contains the desired state of the resource.

func (*RoleResourceSpec) DeepCopy

func (in *RoleResourceSpec) DeepCopy() *RoleResourceSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleResourceSpec.

func (*RoleResourceSpec) DeepCopyInto

func (in *RoleResourceSpec) DeepCopyInto(out *RoleResourceSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RoleResourceStatus

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"`

	// description is a human-readable description for the resource.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	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"`
}

RoleResourceStatus represents the observed state of the resource.

func (*RoleResourceStatus) DeepCopy

func (in *RoleResourceStatus) DeepCopy() *RoleResourceStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleResourceStatus.

func (*RoleResourceStatus) DeepCopyInto

func (in *RoleResourceStatus) DeepCopyInto(out *RoleResourceStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RoleSpec

type RoleSpec struct {
	// import refers to an existing OpenStack resource which will be imported instead of
	// creating a new one.
	// +optional
	Import *RoleImport `json:"import,omitempty"`

	// resource specifies the desired state of the resource.
	//
	// resource may not be specified if the management policy is `unmanaged`.
	//
	// resource must be specified if the management policy is `managed`.
	// +optional
	Resource *RoleResourceSpec `json:"resource,omitempty"`

	// managementPolicy defines how ORC will treat the object. Valid values are
	// `managed`: ORC will create, update, and delete the resource; `unmanaged`:
	// ORC will import an existing resource, and will not apply updates to it or
	// delete it.
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
	// +kubebuilder:default:=managed
	// +optional
	ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`

	// managedOptions specifies options which may be applied to managed objects.
	// +optional
	ManagedOptions *ManagedOptions `json:"managedOptions,omitempty"`

	// resyncPeriod defines how frequently the controller will re-reconcile
	// this resource even when no changes have been detected. This overrides
	// the global default resync period. The value must be a valid Go duration
	// string, e.g. "10m", "1h". Set to "0s" to disable periodic resync for
	// this resource. Very low values may cause excessive OpenStack API load.
	// +optional
	ResyncPeriod *metav1.Duration `json:"resyncPeriod,omitempty"` //nolint:kubeapilinter // metav1.Duration is appropriate for user-facing duration config

	// cloudCredentialsRef points to a secret containing OpenStack credentials
	// +required
	CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}

RoleSpec defines the desired state of an ORC object. +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? has(self.resource) : true",message="resource must be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? !has(self.__import__) : true",message="import may not be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? !has(self.resource) : true",message="resource may not be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? has(self.__import__) : true",message="import must be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="has(self.managedOptions) ? self.managementPolicy == 'managed' : true",message="managedOptions may only be provided when policy is managed"

func (*RoleSpec) DeepCopy

func (in *RoleSpec) DeepCopy() *RoleSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleSpec.

func (*RoleSpec) DeepCopyInto

func (in *RoleSpec) DeepCopyInto(out *RoleSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RoleStatus

type RoleStatus struct {
	// 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.
	//
	// +kubebuilder:validation:MaxItems:=32
	// +patchMergeKey=type
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=type
	// +optional
	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"`

	// resource contains the observed state of the OpenStack resource.
	// +optional
	Resource *RoleResourceStatus `json:"resource,omitempty"`

	// lastSyncTime is the timestamp of the last successful reconciliation
	// that fetched state from OpenStack. It is updated each time the
	// controller successfully reads the resource state from the OpenStack
	// API.
	// +optional
	LastSyncTime *metav1.Time `json:"lastSyncTime,omitempty"`
}

RoleStatus defines the observed state of an ORC resource.

func (*RoleStatus) DeepCopy

func (in *RoleStatus) DeepCopy() *RoleStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleStatus.

func (*RoleStatus) DeepCopyInto

func (in *RoleStatus) DeepCopyInto(out *RoleStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Router

type Router struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the object metadata
	// +optional
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// spec specifies the desired state of the resource.
	// +required
	Spec RouterSpec `json:"spec,omitzero"`

	// status defines the observed state of the resource.
	// +optional
	Status RouterStatus `json:"status,omitempty"`
}

Router is the Schema for an ORC resource.

func (*Router) DeepCopy

func (in *Router) DeepCopy() *Router

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Router.

func (*Router) DeepCopyInto

func (in *Router) DeepCopyInto(out *Router)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Router) DeepCopyObject

func (in *Router) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*Router) GetCloudCredentialsRef

func (i *Router) GetCloudCredentialsRef() (*string, *CloudCredentialsReference)

func (*Router) GetConditions

func (i *Router) GetConditions() []metav1.Condition

type RouterFilter

type RouterFilter struct {
	// name of the existing resource
	// +optional
	Name *OpenStackName `json:"name,omitempty"`

	// description of the existing resource
	// +optional
	Description *NeutronDescription `json:"description,omitempty"`

	// projectRef is a reference to the ORC Project this resource is associated with.
	// Typically, only used by admin.
	// +optional
	// +orc:kustomize:ref=Project
	ProjectRef *KubernetesNameRef `json:"projectRef,omitempty"`

	FilterByNeutronTags `json:",inline"`
}

RouterFilter specifies a query to select an OpenStack router. At least one property must be set. +kubebuilder:validation:MinProperties:=1

func (*RouterFilter) DeepCopy

func (in *RouterFilter) DeepCopy() *RouterFilter

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RouterFilter.

func (*RouterFilter) DeepCopyInto

func (in *RouterFilter) DeepCopyInto(out *RouterFilter)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RouterImport

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.
	// +kubebuilder:validation:Format:=uuid
	// +kubebuilder:validation:MaxLength:=36
	// +optional
	ID *string `json:"id,omitempty"` //nolint:kubeapilinter

	// 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.
	// +optional
	Filter *RouterFilter `json:"filter,omitempty"`
}

RouterImport specifies an existing resource which will be imported instead of creating a new one +kubebuilder:validation:MinProperties:=1 +kubebuilder:validation:MaxProperties:=1

func (*RouterImport) DeepCopy

func (in *RouterImport) DeepCopy() *RouterImport

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RouterImport.

func (*RouterImport) DeepCopyInto

func (in *RouterImport) DeepCopyInto(out *RouterImport)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RouterInterface

type RouterInterface struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the object metadata.
	// +optional
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// spec specifies the desired state of the resource.
	// +required
	Spec RouterInterfaceSpec `json:"spec,omitzero"`

	// status defines the observed state of the resource.
	// +optional
	Status RouterInterfaceStatus `json:"status,omitempty"`
}

RouterInterface is the Schema for an ORC resource.

func (*RouterInterface) DeepCopy

func (in *RouterInterface) DeepCopy() *RouterInterface

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RouterInterface.

func (*RouterInterface) DeepCopyInto

func (in *RouterInterface) DeepCopyInto(out *RouterInterface)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*RouterInterface) DeepCopyObject

func (in *RouterInterface) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*RouterInterface) GetConditions

func (i *RouterInterface) GetConditions() []metav1.Condition

type RouterInterfaceList

type RouterInterfaceList struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the list metadata.
	// +optional
	metav1.ListMeta `json:"metadata,omitempty"`

	// items contains a list of RouterInterface.
	// +kubebuilder:validation:MaxItems:=64
	// +required
	Items []RouterInterface `json:"items"`
}

RouterInterfaceList contains a list of RouterInterface.

func (*RouterInterfaceList) DeepCopy

func (in *RouterInterfaceList) DeepCopy() *RouterInterfaceList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RouterInterfaceList.

func (*RouterInterfaceList) DeepCopyInto

func (in *RouterInterfaceList) DeepCopyInto(out *RouterInterfaceList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*RouterInterfaceList) DeepCopyObject

func (in *RouterInterfaceList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*RouterInterfaceList) GetItems

func (l *RouterInterfaceList) GetItems() []RouterInterface

type RouterInterfaceSpec

type RouterInterfaceSpec struct {
	// type specifies the type of the router interface.
	// +required
	// +unionDiscriminator
	Type RouterInterfaceType `json:"type,omitempty"`

	// routerRef references the router to which this interface belongs.
	// +required
	// +orc:kustomize:ref=Router
	RouterRef KubernetesNameRef `json:"routerRef,omitempty"`

	// subnetRef references the subnet the router interface is created on.
	// +unionMember
	// +optional
	// +orc:kustomize:ref=Subnet
	SubnetRef *KubernetesNameRef `json:"subnetRef,omitempty"`

	// portRef references the port the router interface is created on.
	// +unionMember
	// +optional
	// +orc:kustomize:ref=Port
	PortRef *KubernetesNameRef `json:"portRef,omitempty"`

	// resyncPeriod defines how frequently the controller will re-reconcile
	// this resource even when no changes have been detected. This overrides
	// the global default resync period. The value must be a valid Go duration
	// string, e.g. "10m", "1h". Set to "0s" to disable periodic resync for
	// this resource. Very low values may cause excessive OpenStack API load.
	// +optional
	ResyncPeriod *metav1.Duration `json:"resyncPeriod,omitempty"` //nolint:kubeapilinter // metav1.Duration is appropriate for user-facing duration config
}

+kubebuilder:validation:XValidation:rule="self.type == 'Subnet' ? has(self.subnetRef) : !has(self.subnetRef)",message="subnetRef is required when type is 'Subnet' and not permitted otherwise" +kubebuilder:validation:XValidation:rule="self.type == oldSelf.type",message="type is immutable" +kubebuilder:validation:XValidation:rule="self.routerRef == oldSelf.routerRef",message="routerRef is immutable" +kubebuilder:validation:XValidation:rule="has(self.subnetRef) == has(oldSelf.subnetRef) && (!has(self.subnetRef) || self.subnetRef == oldSelf.subnetRef)",message="subnetRef is immutable" +kubebuilder:validation:XValidation:rule="self.type == 'Port' ? has(self.portRef) : !has(self.portRef)",message="portRef is required when type is 'Port' and not permitted otherwise" +kubebuilder:validation:XValidation:rule="has(self.portRef) == has(oldSelf.portRef) && (!has(self.portRef) || self.portRef == oldSelf.portRef)",message="portRef is immutable"

func (*RouterInterfaceSpec) DeepCopy

func (in *RouterInterfaceSpec) DeepCopy() *RouterInterfaceSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RouterInterfaceSpec.

func (*RouterInterfaceSpec) DeepCopyInto

func (in *RouterInterfaceSpec) DeepCopyInto(out *RouterInterfaceSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RouterInterfaceStatus

type RouterInterfaceStatus struct {
	// 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.
	//
	// +kubebuilder:validation:MaxItems:=32
	// +patchMergeKey=type
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=type
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`

	// id is the unique identifier of the port created for the router interface
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	ID *string `json:"id,omitempty"`

	// lastSyncTime is the timestamp of the last successful reconciliation
	// of the resource.
	// +optional
	LastSyncTime *metav1.Time `json:"lastSyncTime,omitempty"`
}

func (*RouterInterfaceStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RouterInterfaceStatus.

func (*RouterInterfaceStatus) DeepCopyInto

func (in *RouterInterfaceStatus) DeepCopyInto(out *RouterInterfaceStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RouterInterfaceType

type RouterInterfaceType string

+kubebuilder:validation:Enum:=Subnet;Port +kubebuilder:validation:MinLength:=1 +kubebuilder:validation:MaxLength:=8

const (
	RouterInterfaceTypeSubnet RouterInterfaceType = "Subnet"
	RouterInterfaceTypePort   RouterInterfaceType = "Port"
)

type RouterList

type RouterList struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the list metadata
	// +optional
	metav1.ListMeta `json:"metadata,omitempty"`

	// items contains a list of Router.
	// +required
	Items []Router `json:"items"`
}

RouterList contains a list of Router.

func (*RouterList) DeepCopy

func (in *RouterList) DeepCopy() *RouterList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RouterList.

func (*RouterList) DeepCopyInto

func (in *RouterList) DeepCopyInto(out *RouterList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*RouterList) DeepCopyObject

func (in *RouterList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*RouterList) GetItems

func (l *RouterList) GetItems() []Router

type RouterResourceSpec

type RouterResourceSpec struct {
	// name is a human-readable name of the router. If not set, the
	// object's name will be used.
	// +optional
	Name *OpenStackName `json:"name,omitempty"`

	// description is a human-readable description for the resource.
	// +optional
	Description *NeutronDescription `json:"description,omitempty"`

	// tags is a list of tags which will be applied to the router.
	// +kubebuilder:validation:MaxItems:=64
	// +listType=set
	// +optional
	Tags []NeutronTag `json:"tags,omitempty"`

	// adminStateUp represents the administrative state of the resource,
	// which is up (true) or down (false). Default is true.
	// +optional
	AdminStateUp *bool `json:"adminStateUp,omitempty"`

	// externalGateways is a list of external gateways for the router.
	// Multiple gateways are not currently supported by ORC.
	// +kubebuilder:validation:MaxItems:=1
	// +listType=atomic
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="externalGateways is immutable"
	ExternalGateways []ExternalGateway `json:"externalGateways,omitempty"`

	// distributed indicates whether the router is distributed or not. It
	// is available when dvr extension is enabled.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="distributed is immutable"
	Distributed *bool `json:"distributed,omitempty"`

	// availabilityZoneHints is the availability zone candidate for the router.
	// +kubebuilder:validation:MaxItems:=64
	// +listType=set
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="availabilityZoneHints is immutable"
	AvailabilityZoneHints []AvailabilityZoneHint `json:"availabilityZoneHints,omitempty"`

	// projectRef is a reference to the ORC Project this resource is associated with.
	// Typically, only used by admin.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="projectRef is immutable"
	// +orc:kustomize:ref=Project
	ProjectRef *KubernetesNameRef `json:"projectRef,omitempty"`

	// routes is a list of static routes hosted by this router.
	// +kubebuilder:validation:MaxItems:=64
	// +listType=map
	// +listMapKey=destination
	// +optional
	Routes []RouterRoute `json:"routes,omitempty"`
}

func (*RouterResourceSpec) DeepCopy

func (in *RouterResourceSpec) DeepCopy() *RouterResourceSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RouterResourceSpec.

func (*RouterResourceSpec) DeepCopyInto

func (in *RouterResourceSpec) DeepCopyInto(out *RouterResourceSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RouterResourceStatus

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"`

	// description is a human-readable description for the resource.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	Description string `json:"description,omitempty"`

	// projectID is the project owner of the resource.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	ProjectID string `json:"projectID,omitempty"`

	// status indicates the current status of the resource.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	Status string `json:"status,omitempty"`

	// tags is the list of tags on the resource.
	// +kubebuilder:validation:MaxItems:=64
	// +kubebuilder:validation:items:MaxLength=1024
	// +listType=atomic
	// +optional
	Tags []string `json:"tags,omitempty"`

	// adminStateUp is the administrative state of the router,
	// which is up (true) or down (false).
	// +optional
	AdminStateUp *bool `json:"adminStateUp"`

	// externalGateways is a list of external gateways for the router.
	// +kubebuilder:validation:MaxItems:=32
	// +listType=atomic
	// +optional
	ExternalGateways []ExternalGatewayStatus `json:"externalGateways,omitempty"`

	// availabilityZoneHints is the availability zone candidate for the
	// router.
	// +kubebuilder:validation:MaxItems:=64
	// +kubebuilder:validation:items:MaxLength=1024
	// +listType=atomic
	// +optional
	AvailabilityZoneHints []string `json:"availabilityZoneHints,omitempty"`

	// routes reports the static routes currently hosted by this router.
	// +kubebuilder:validation:MaxItems:=64
	// +listType=atomic
	// +optional
	Routes []RouterRouteStatus `json:"routes,omitempty"`
}

func (*RouterResourceStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RouterResourceStatus.

func (*RouterResourceStatus) DeepCopyInto

func (in *RouterResourceStatus) DeepCopyInto(out *RouterResourceStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RouterRoute

type RouterRoute struct {
	// destination is the destination CIDR of this route.
	// +required
	Destination CIDR `json:"destination,omitempty"`

	// nextHop is the IP address of the next hop for this route.
	// +required
	NextHop IPvAny `json:"nextHop,omitempty"`
}

RouterRoute is a static route hosted by a router.

func (*RouterRoute) DeepCopy

func (in *RouterRoute) DeepCopy() *RouterRoute

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RouterRoute.

func (*RouterRoute) DeepCopyInto

func (in *RouterRoute) DeepCopyInto(out *RouterRoute)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RouterRouteStatus

type RouterRouteStatus struct {
	// destination is the destination CIDR of this route.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	Destination string `json:"destination,omitempty"`

	// nextHop is the IP address of the next hop for this route.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	NextHop string `json:"nextHop,omitempty"`
}

func (*RouterRouteStatus) DeepCopy

func (in *RouterRouteStatus) DeepCopy() *RouterRouteStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RouterRouteStatus.

func (*RouterRouteStatus) DeepCopyInto

func (in *RouterRouteStatus) DeepCopyInto(out *RouterRouteStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RouterSpec

type RouterSpec struct {
	// import refers to an existing OpenStack resource which will be imported instead of
	// creating a new one.
	// +optional
	Import *RouterImport `json:"import,omitempty"`

	// resource specifies the desired state of the resource.
	//
	// resource may not be specified if the management policy is `unmanaged`.
	//
	// resource must be specified if the management policy is `managed`.
	// +optional
	Resource *RouterResourceSpec `json:"resource,omitempty"`

	// managementPolicy defines how ORC will treat the object. Valid values are
	// `managed`: ORC will create, update, and delete the resource; `unmanaged`:
	// ORC will import an existing resource, and will not apply updates to it or
	// delete it.
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
	// +kubebuilder:default:=managed
	// +optional
	ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`

	// managedOptions specifies options which may be applied to managed objects.
	// +optional
	ManagedOptions *ManagedOptions `json:"managedOptions,omitempty"`

	// resyncPeriod defines how frequently the controller will re-reconcile
	// this resource even when no changes have been detected. This overrides
	// the global default resync period. The value must be a valid Go duration
	// string, e.g. "10m", "1h". Set to "0s" to disable periodic resync for
	// this resource. Very low values may cause excessive OpenStack API load.
	// +optional
	ResyncPeriod *metav1.Duration `json:"resyncPeriod,omitempty"` //nolint:kubeapilinter // metav1.Duration is appropriate for user-facing duration config

	// cloudCredentialsRef points to a secret containing OpenStack credentials
	// +required
	CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}

RouterSpec defines the desired state of an ORC object. +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? has(self.resource) : true",message="resource must be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? !has(self.__import__) : true",message="import may not be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? !has(self.resource) : true",message="resource may not be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? has(self.__import__) : true",message="import must be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="has(self.managedOptions) ? self.managementPolicy == 'managed' : true",message="managedOptions may only be provided when policy is managed"

func (*RouterSpec) DeepCopy

func (in *RouterSpec) DeepCopy() *RouterSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RouterSpec.

func (*RouterSpec) DeepCopyInto

func (in *RouterSpec) DeepCopyInto(out *RouterSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RouterStatus

type RouterStatus struct {
	// 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.
	//
	// +kubebuilder:validation:MaxItems:=32
	// +patchMergeKey=type
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=type
	// +optional
	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"`

	// resource contains the observed state of the OpenStack resource.
	// +optional
	Resource *RouterResourceStatus `json:"resource,omitempty"`

	// lastSyncTime is the timestamp of the last successful reconciliation
	// that fetched state from OpenStack. It is updated each time the
	// controller successfully reads the resource state from the OpenStack
	// API.
	// +optional
	LastSyncTime *metav1.Time `json:"lastSyncTime,omitempty"`
}

RouterStatus defines the observed state of an ORC resource.

func (*RouterStatus) DeepCopy

func (in *RouterStatus) DeepCopy() *RouterStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RouterStatus.

func (*RouterStatus) DeepCopyInto

func (in *RouterStatus) DeepCopyInto(out *RouterStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RuleDirection

type RuleDirection string

+kubebuilder:validation:Enum:=ingress;egress

type SecurityGroup

type SecurityGroup struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the object metadata
	// +optional
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// spec specifies the desired state of the resource.
	// +required
	Spec SecurityGroupSpec `json:"spec,omitzero"`

	// status defines the observed state of the resource.
	// +optional
	Status SecurityGroupStatus `json:"status,omitempty"`
}

SecurityGroup is the Schema for an ORC resource.

func (*SecurityGroup) DeepCopy

func (in *SecurityGroup) DeepCopy() *SecurityGroup

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecurityGroup.

func (*SecurityGroup) DeepCopyInto

func (in *SecurityGroup) DeepCopyInto(out *SecurityGroup)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*SecurityGroup) DeepCopyObject

func (in *SecurityGroup) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*SecurityGroup) GetCloudCredentialsRef

func (i *SecurityGroup) GetCloudCredentialsRef() (*string, *CloudCredentialsReference)

func (*SecurityGroup) GetConditions

func (i *SecurityGroup) GetConditions() []metav1.Condition

type SecurityGroupFilter

type SecurityGroupFilter struct {
	// name of the existing resource
	// +optional
	Name *OpenStackName `json:"name,omitempty"`

	// description of the existing resource
	// +optional
	Description *NeutronDescription `json:"description,omitempty"`

	// projectRef is a reference to the ORC Project this resource is associated with.
	// Typically, only used by admin.
	// +optional
	// +orc:kustomize:ref=Project
	ProjectRef *KubernetesNameRef `json:"projectRef,omitempty"`

	FilterByNeutronTags `json:",inline"`
}

SecurityGroupFilter defines an existing resource by its properties +kubebuilder:validation:MinProperties:=1

func (*SecurityGroupFilter) DeepCopy

func (in *SecurityGroupFilter) DeepCopy() *SecurityGroupFilter

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecurityGroupFilter.

func (*SecurityGroupFilter) DeepCopyInto

func (in *SecurityGroupFilter) DeepCopyInto(out *SecurityGroupFilter)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SecurityGroupImport

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.
	// +kubebuilder:validation:Format:=uuid
	// +kubebuilder:validation:MaxLength:=36
	// +optional
	ID *string `json:"id,omitempty"` //nolint:kubeapilinter

	// 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.
	// +optional
	Filter *SecurityGroupFilter `json:"filter,omitempty"`
}

SecurityGroupImport specifies an existing resource which will be imported instead of creating a new one +kubebuilder:validation:MinProperties:=1 +kubebuilder:validation:MaxProperties:=1

func (*SecurityGroupImport) DeepCopy

func (in *SecurityGroupImport) DeepCopy() *SecurityGroupImport

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecurityGroupImport.

func (*SecurityGroupImport) DeepCopyInto

func (in *SecurityGroupImport) DeepCopyInto(out *SecurityGroupImport)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SecurityGroupList

type SecurityGroupList struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the list metadata
	// +optional
	metav1.ListMeta `json:"metadata,omitempty"`

	// items contains a list of SecurityGroup.
	// +required
	Items []SecurityGroup `json:"items"`
}

SecurityGroupList contains a list of SecurityGroup.

func (*SecurityGroupList) DeepCopy

func (in *SecurityGroupList) DeepCopy() *SecurityGroupList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecurityGroupList.

func (*SecurityGroupList) DeepCopyInto

func (in *SecurityGroupList) DeepCopyInto(out *SecurityGroupList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*SecurityGroupList) DeepCopyObject

func (in *SecurityGroupList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*SecurityGroupList) GetItems

func (l *SecurityGroupList) GetItems() []SecurityGroup

type SecurityGroupResourceSpec

type SecurityGroupResourceSpec struct {
	// name will be the name of the created resource. If not specified, the
	// name of the ORC object will be used.
	// +optional
	Name *OpenStackName `json:"name,omitempty"`

	// description is a human-readable description for the resource.
	// +optional
	Description *NeutronDescription `json:"description,omitempty"`

	// tags is a list of tags which will be applied to the security group.
	// +kubebuilder:validation:MaxItems:=64
	// +listType=set
	// +optional
	Tags []NeutronTag `json:"tags,omitempty"`

	// stateful indicates if the security group is stateful or stateless.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="stateful is immutable"
	Stateful *bool `json:"stateful,omitempty"`

	// rules is a list of security group rules belonging to this SG.
	// +kubebuilder:validation:MaxItems:=256
	// +listType=atomic
	// +optional
	Rules []SecurityGroupRule `json:"rules,omitempty"`

	// projectRef is a reference to the ORC Project this resource is associated with.
	// Typically, only used by admin.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="projectRef is immutable"
	// +orc:kustomize:ref=Project
	ProjectRef *KubernetesNameRef `json:"projectRef,omitempty"`
}

SecurityGroupResourceSpec contains the desired state of a security group

func (*SecurityGroupResourceSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecurityGroupResourceSpec.

func (*SecurityGroupResourceSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SecurityGroupResourceStatus

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"`

	// description is a human-readable description for the resource.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	Description string `json:"description,omitempty"`

	// projectID is the project owner of the security group.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	ProjectID string `json:"projectID,omitempty"`

	// tags is the list of tags on the resource.
	// +kubebuilder:validation:MaxItems:=64
	// +kubebuilder:validation:items:MaxLength=1024
	// +listType=atomic
	// +optional
	Tags []string `json:"tags,omitempty"`

	// stateful indicates if the security group is stateful or stateless.
	// +optional
	Stateful *bool `json:"stateful,omitempty"`

	// rules is a list of security group rules belonging to this SG.
	// +kubebuilder:validation:MaxItems:=256
	// +listType=atomic
	// +optional
	Rules []SecurityGroupRuleStatus `json:"rules,omitempty"`

	NeutronStatusMetadata `json:",inline"`
}

SecurityGroupResourceStatus represents the observed state of the resource.

func (*SecurityGroupResourceStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecurityGroupResourceStatus.

func (*SecurityGroupResourceStatus) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SecurityGroupRule

type SecurityGroupRule struct {
	// description is a human-readable description for the resource.
	// +optional
	Description *NeutronDescription `json:"description,omitempty"`

	// direction represents the direction in which the security group rule
	// is applied. Can be ingress or egress.
	// +optional
	Direction *RuleDirection `json:"direction,omitempty"`

	// remoteIPPrefix is an IP address block. Should match the Ethertype (IPv4 or IPv6)
	// +optional
	RemoteIPPrefix *CIDR `json:"remoteIPPrefix,omitempty"`

	// protocol is the IP protocol is represented by a string
	// +optional
	Protocol *Protocol `json:"protocol,omitempty"`

	// ethertype must be IPv4 or IPv6, and addresses represented in CIDR
	// must match the ingress or egress rules.
	// +required
	Ethertype Ethertype `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
	// or equal to the PortRange.Max attribute value.
	// If the protocol is ICMP, this PortRamge.Min must be an ICMP code and PortRange.Max
	// should be an ICMP type
	// +optional
	PortRange *PortRangeSpec `json:"portRange,omitempty"`
}

SecurityGroupRule defines a Security Group rule +kubebuilder:validation:MinProperties:=1 +kubebuilder:validation:XValidation:rule="(!has(self.portRange)|| !(self.protocol == 'tcp'|| self.protocol == 'udp' || self.protocol == 'dccp' || self.protocol == 'sctp' || self.protocol == 'udplite') || (self.portRange.min <= self.portRange.max))",message="portRangeMax should be equal or greater than portRange.min" +kubebuilder:validation:XValidation:rule="!(self.protocol == 'icmp' || self.protocol == 'icmpv6') || !has(self.portRange)|| (self.portRange.min >= 0 && self.portRange.min <= 255)",message="When protocol is ICMP or ICMPv6 portRange.min should be between 0 and 255" +kubebuilder:validation:XValidation:rule="!(self.protocol == 'icmp' || self.protocol == 'icmpv6') || !has(self.portRange)|| (self.portRange.max >= 0 && self.portRange.max <= 255)",message="When protocol is ICMP or ICMPv6 portRange.max should be between 0 and 255"

func (*SecurityGroupRule) DeepCopy

func (in *SecurityGroupRule) DeepCopy() *SecurityGroupRule

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecurityGroupRule.

func (*SecurityGroupRule) DeepCopyInto

func (in *SecurityGroupRule) DeepCopyInto(out *SecurityGroupRule)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SecurityGroupRuleStatus

type SecurityGroupRuleStatus struct {
	// id is the ID of the security group rule.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	ID string `json:"id,omitempty"`

	// description is a human-readable description for the resource.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	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"`

	// remoteGroupID is the remote group UUID to associate with this security group rule
	// RemoteGroupID
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	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"`

	// 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"`

	// 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"`

	// 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
	// or equal to the PortRange.Max attribute value.
	// If the protocol is ICMP, this PortRamge.Min must be an ICMP code and PortRange.Max
	// should be an ICMP type
	// +optional
	PortRange *PortRangeStatus `json:"portRange,omitempty"`
}

func (*SecurityGroupRuleStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecurityGroupRuleStatus.

func (*SecurityGroupRuleStatus) DeepCopyInto

func (in *SecurityGroupRuleStatus) DeepCopyInto(out *SecurityGroupRuleStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SecurityGroupSpec

type SecurityGroupSpec struct {
	// import refers to an existing OpenStack resource which will be imported instead of
	// creating a new one.
	// +optional
	Import *SecurityGroupImport `json:"import,omitempty"`

	// resource specifies the desired state of the resource.
	//
	// resource may not be specified if the management policy is `unmanaged`.
	//
	// resource must be specified if the management policy is `managed`.
	// +optional
	Resource *SecurityGroupResourceSpec `json:"resource,omitempty"`

	// managementPolicy defines how ORC will treat the object. Valid values are
	// `managed`: ORC will create, update, and delete the resource; `unmanaged`:
	// ORC will import an existing resource, and will not apply updates to it or
	// delete it.
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
	// +kubebuilder:default:=managed
	// +optional
	ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`

	// managedOptions specifies options which may be applied to managed objects.
	// +optional
	ManagedOptions *ManagedOptions `json:"managedOptions,omitempty"`

	// resyncPeriod defines how frequently the controller will re-reconcile
	// this resource even when no changes have been detected. This overrides
	// the global default resync period. The value must be a valid Go duration
	// string, e.g. "10m", "1h". Set to "0s" to disable periodic resync for
	// this resource. Very low values may cause excessive OpenStack API load.
	// +optional
	ResyncPeriod *metav1.Duration `json:"resyncPeriod,omitempty"` //nolint:kubeapilinter // metav1.Duration is appropriate for user-facing duration config

	// cloudCredentialsRef points to a secret containing OpenStack credentials
	// +required
	CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}

SecurityGroupSpec defines the desired state of an ORC object. +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? has(self.resource) : true",message="resource must be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? !has(self.__import__) : true",message="import may not be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? !has(self.resource) : true",message="resource may not be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? has(self.__import__) : true",message="import must be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="has(self.managedOptions) ? self.managementPolicy == 'managed' : true",message="managedOptions may only be provided when policy is managed"

func (*SecurityGroupSpec) DeepCopy

func (in *SecurityGroupSpec) DeepCopy() *SecurityGroupSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecurityGroupSpec.

func (*SecurityGroupSpec) DeepCopyInto

func (in *SecurityGroupSpec) DeepCopyInto(out *SecurityGroupSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SecurityGroupStatus

type SecurityGroupStatus struct {
	// 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.
	//
	// +kubebuilder:validation:MaxItems:=32
	// +patchMergeKey=type
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=type
	// +optional
	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"`

	// resource contains the observed state of the OpenStack resource.
	// +optional
	Resource *SecurityGroupResourceStatus `json:"resource,omitempty"`

	// lastSyncTime is the timestamp of the last successful reconciliation
	// that fetched state from OpenStack. It is updated each time the
	// controller successfully reads the resource state from the OpenStack
	// API.
	// +optional
	LastSyncTime *metav1.Time `json:"lastSyncTime,omitempty"`
}

SecurityGroupStatus defines the observed state of an ORC resource.

func (*SecurityGroupStatus) DeepCopy

func (in *SecurityGroupStatus) DeepCopy() *SecurityGroupStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecurityGroupStatus.

func (*SecurityGroupStatus) DeepCopyInto

func (in *SecurityGroupStatus) DeepCopyInto(out *SecurityGroupStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Server

type Server struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the object metadata
	// +optional
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// spec specifies the desired state of the resource.
	// +required
	Spec ServerSpec `json:"spec,omitzero"`

	// status defines the observed state of the resource.
	// +optional
	Status ServerStatus `json:"status,omitempty"`
}

Server is the Schema for an ORC resource.

func (*Server) DeepCopy

func (in *Server) DeepCopy() *Server

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Server.

func (*Server) DeepCopyInto

func (in *Server) DeepCopyInto(out *Server)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Server) DeepCopyObject

func (in *Server) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*Server) GetCloudCredentialsRef

func (i *Server) GetCloudCredentialsRef() (*string, *CloudCredentialsReference)

func (*Server) GetConditions

func (i *Server) GetConditions() []metav1.Condition

type ServerBootVolumeSpec

type ServerBootVolumeSpec struct {
	// volumeRef is a reference to a Volume object. The volume must be
	// bootable (created from an image) and available before server creation.
	// +required
	// +orc:kustomize:ref=Volume
	VolumeRef KubernetesNameRef `json:"volumeRef,omitempty"`

	// tag is the device tag applied to the volume.
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	Tag *string `json:"tag,omitempty"`
}

ServerBootVolumeSpec defines the boot volume for boot-from-volume server creation. When specified, the server boots from this volume instead of an image.

func (*ServerBootVolumeSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerBootVolumeSpec.

func (*ServerBootVolumeSpec) DeepCopyInto

func (in *ServerBootVolumeSpec) DeepCopyInto(out *ServerBootVolumeSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServerFilter

type ServerFilter struct {
	// name of the existing resource
	// +optional
	Name *OpenStackName `json:"name,omitempty"`

	// availabilityZone is the availability zone of the existing resource
	// +kubebuilder:validation:MaxLength=255
	// +optional
	AvailabilityZone string `json:"availabilityZone,omitempty"`

	FilterByServerTags `json:",inline"`
}

ServerFilter defines an existing resource by its properties +kubebuilder:validation:MinProperties:=1

func (*ServerFilter) DeepCopy

func (in *ServerFilter) DeepCopy() *ServerFilter

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerFilter.

func (*ServerFilter) DeepCopyInto

func (in *ServerFilter) DeepCopyInto(out *ServerFilter)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServerGroup

type ServerGroup struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the object metadata
	// +optional
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// spec specifies the desired state of the resource.
	// +required
	Spec ServerGroupSpec `json:"spec,omitzero"`

	// status defines the observed state of the resource.
	// +optional
	Status ServerGroupStatus `json:"status,omitempty"`
}

ServerGroup is the Schema for an ORC resource.

func (*ServerGroup) DeepCopy

func (in *ServerGroup) DeepCopy() *ServerGroup

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerGroup.

func (*ServerGroup) DeepCopyInto

func (in *ServerGroup) DeepCopyInto(out *ServerGroup)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ServerGroup) DeepCopyObject

func (in *ServerGroup) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*ServerGroup) GetCloudCredentialsRef

func (i *ServerGroup) GetCloudCredentialsRef() (*string, *CloudCredentialsReference)

func (*ServerGroup) GetConditions

func (i *ServerGroup) GetConditions() []metav1.Condition

type ServerGroupFilter

type ServerGroupFilter struct {
	// name of the existing resource
	// +optional
	Name *OpenStackName `json:"name,omitempty"`
}

ServerGroupFilter defines an existing resource by its properties +kubebuilder:validation:MinProperties:=1

func (*ServerGroupFilter) DeepCopy

func (in *ServerGroupFilter) DeepCopy() *ServerGroupFilter

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerGroupFilter.

func (*ServerGroupFilter) DeepCopyInto

func (in *ServerGroupFilter) DeepCopyInto(out *ServerGroupFilter)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServerGroupImport

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.
	// +kubebuilder:validation:Format:=uuid
	// +kubebuilder:validation:MaxLength:=36
	// +optional
	ID *string `json:"id,omitempty"` //nolint:kubeapilinter

	// 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.
	// +optional
	Filter *ServerGroupFilter `json:"filter,omitempty"`
}

ServerGroupImport specifies an existing resource which will be imported instead of creating a new one +kubebuilder:validation:MinProperties:=1 +kubebuilder:validation:MaxProperties:=1

func (*ServerGroupImport) DeepCopy

func (in *ServerGroupImport) DeepCopy() *ServerGroupImport

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerGroupImport.

func (*ServerGroupImport) DeepCopyInto

func (in *ServerGroupImport) DeepCopyInto(out *ServerGroupImport)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServerGroupList

type ServerGroupList struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the list metadata
	// +optional
	metav1.ListMeta `json:"metadata,omitempty"`

	// items contains a list of ServerGroup.
	// +required
	Items []ServerGroup `json:"items"`
}

ServerGroupList contains a list of ServerGroup.

func (*ServerGroupList) DeepCopy

func (in *ServerGroupList) DeepCopy() *ServerGroupList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerGroupList.

func (*ServerGroupList) DeepCopyInto

func (in *ServerGroupList) DeepCopyInto(out *ServerGroupList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ServerGroupList) DeepCopyObject

func (in *ServerGroupList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*ServerGroupList) GetItems

func (l *ServerGroupList) GetItems() []ServerGroup

type ServerGroupPolicy

type ServerGroupPolicy string

+kubebuilder:validation:Enum:=affinity;anti-affinity;soft-affinity;soft-anti-affinity

const (
	// ServerGroupPolicyAffinity is a server group policy that restricts instances belonging to the server group to the same host.
	ServerGroupPolicyAffinity ServerGroupPolicy = "affinity"
	// ServerGroupPolicyAntiAffinity is a server group policy that restricts instances belonging to the server group to separate hosts.
	ServerGroupPolicyAntiAffinity ServerGroupPolicy = "anti-affinity"
	// ServerGroupPolicySoftAffinity is a server group policy that attempts to restrict instances belonging to the server group to the same host.
	// Where it is not possible to schedule all instances on one host, they will be scheduled together on as few hosts as possible.
	ServerGroupPolicySoftAffinity ServerGroupPolicy = "soft-affinity"
	// ServerGroupPolicySoftAntiAffinity is a server group policy that attempts to restrict instances belonging to the server group to separate hosts.
	//  Where it is not possible to schedule all instances to separate hosts, they will be scheduled on as many separate hosts as possible.
	ServerGroupPolicySoftAntiAffinity ServerGroupPolicy = "soft-anti-affinity"
)

type ServerGroupResourceSpec

type ServerGroupResourceSpec struct {
	// name will be the name of the created resource. If not specified, the
	// name of the ORC object will be used.
	// +optional
	Name *OpenStackName `json:"name,omitempty"`

	// policy is the policy to use for the server group.
	// +required
	Policy ServerGroupPolicy `json:"policy,omitempty"`

	// rules is the rules to use for the server group.
	// +optional
	Rules *ServerGroupRules `json:"rules,omitempty"`
}

ServerGroupResourceSpec contains the desired state of a servergroup +kubebuilder:validation:XValidation:rule="self == oldSelf",message="ServerGroupResourceSpec is immutable" +kubebuilder:validation:XValidation:rule="has(self.rules) && self.rules.maxServerPerHost > 0 ? self.policy == 'anti-affinity' : true",message="maxServerPerHost can only be used with the anti-affinity policy"

func (*ServerGroupResourceSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerGroupResourceSpec.

func (*ServerGroupResourceSpec) DeepCopyInto

func (in *ServerGroupResourceSpec) DeepCopyInto(out *ServerGroupResourceSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServerGroupResourceStatus

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"`

	// policy is the policy of the servergroup.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	Policy string `json:"policy,omitempty"`

	// projectID is the project owner of the resource.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	ProjectID string `json:"projectID,omitempty"`

	// userID of the server group.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	UserID string `json:"userID,omitempty"`

	// rules is the rules of the server group.
	// +optional
	Rules *ServerGroupRulesStatus `json:"rules,omitempty"`
}

ServerGroupResourceStatus represents the observed state of the resource.

func (*ServerGroupResourceStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerGroupResourceStatus.

func (*ServerGroupResourceStatus) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServerGroupRules

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"`
}

func (*ServerGroupRules) DeepCopy

func (in *ServerGroupRules) DeepCopy() *ServerGroupRules

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerGroupRules.

func (*ServerGroupRules) DeepCopyInto

func (in *ServerGroupRules) DeepCopyInto(out *ServerGroupRules)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServerGroupRulesStatus

type ServerGroupRulesStatus 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"`
}

func (*ServerGroupRulesStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerGroupRulesStatus.

func (*ServerGroupRulesStatus) DeepCopyInto

func (in *ServerGroupRulesStatus) DeepCopyInto(out *ServerGroupRulesStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServerGroupSpec

type ServerGroupSpec struct {
	// import refers to an existing OpenStack resource which will be imported instead of
	// creating a new one.
	// +optional
	Import *ServerGroupImport `json:"import,omitempty"`

	// resource specifies the desired state of the resource.
	//
	// resource may not be specified if the management policy is `unmanaged`.
	//
	// resource must be specified if the management policy is `managed`.
	// +optional
	Resource *ServerGroupResourceSpec `json:"resource,omitempty"`

	// managementPolicy defines how ORC will treat the object. Valid values are
	// `managed`: ORC will create, update, and delete the resource; `unmanaged`:
	// ORC will import an existing resource, and will not apply updates to it or
	// delete it.
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
	// +kubebuilder:default:=managed
	// +optional
	ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`

	// managedOptions specifies options which may be applied to managed objects.
	// +optional
	ManagedOptions *ManagedOptions `json:"managedOptions,omitempty"`

	// resyncPeriod defines how frequently the controller will re-reconcile
	// this resource even when no changes have been detected. This overrides
	// the global default resync period. The value must be a valid Go duration
	// string, e.g. "10m", "1h". Set to "0s" to disable periodic resync for
	// this resource. Very low values may cause excessive OpenStack API load.
	// +optional
	ResyncPeriod *metav1.Duration `json:"resyncPeriod,omitempty"` //nolint:kubeapilinter // metav1.Duration is appropriate for user-facing duration config

	// cloudCredentialsRef points to a secret containing OpenStack credentials
	// +required
	CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}

ServerGroupSpec defines the desired state of an ORC object. +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? has(self.resource) : true",message="resource must be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? !has(self.__import__) : true",message="import may not be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? !has(self.resource) : true",message="resource may not be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? has(self.__import__) : true",message="import must be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="has(self.managedOptions) ? self.managementPolicy == 'managed' : true",message="managedOptions may only be provided when policy is managed"

func (*ServerGroupSpec) DeepCopy

func (in *ServerGroupSpec) DeepCopy() *ServerGroupSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerGroupSpec.

func (*ServerGroupSpec) DeepCopyInto

func (in *ServerGroupSpec) DeepCopyInto(out *ServerGroupSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServerGroupStatus

type ServerGroupStatus struct {
	// 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.
	//
	// +kubebuilder:validation:MaxItems:=32
	// +patchMergeKey=type
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=type
	// +optional
	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"`

	// resource contains the observed state of the OpenStack resource.
	// +optional
	Resource *ServerGroupResourceStatus `json:"resource,omitempty"`

	// lastSyncTime is the timestamp of the last successful reconciliation
	// that fetched state from OpenStack. It is updated each time the
	// controller successfully reads the resource state from the OpenStack
	// API.
	// +optional
	LastSyncTime *metav1.Time `json:"lastSyncTime,omitempty"`
}

ServerGroupStatus defines the observed state of an ORC resource.

func (*ServerGroupStatus) DeepCopy

func (in *ServerGroupStatus) DeepCopy() *ServerGroupStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerGroupStatus.

func (*ServerGroupStatus) DeepCopyInto

func (in *ServerGroupStatus) DeepCopyInto(out *ServerGroupStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServerImport

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.
	// +kubebuilder:validation:Format:=uuid
	// +kubebuilder:validation:MaxLength:=36
	// +optional
	ID *string `json:"id,omitempty"` //nolint:kubeapilinter

	// 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.
	// +optional
	Filter *ServerFilter `json:"filter,omitempty"`
}

ServerImport specifies an existing resource which will be imported instead of creating a new one +kubebuilder:validation:MinProperties:=1 +kubebuilder:validation:MaxProperties:=1

func (*ServerImport) DeepCopy

func (in *ServerImport) DeepCopy() *ServerImport

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerImport.

func (*ServerImport) DeepCopyInto

func (in *ServerImport) DeepCopyInto(out *ServerImport)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServerInterfaceFixedIP

type ServerInterfaceFixedIP struct {
	// ipAddress is the IP address assigned to the port.
	// +kubebuilder:validation:MaxLength:=1024
	// +optional
	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"`
}

func (*ServerInterfaceFixedIP) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerInterfaceFixedIP.

func (*ServerInterfaceFixedIP) DeepCopyInto

func (in *ServerInterfaceFixedIP) DeepCopyInto(out *ServerInterfaceFixedIP)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServerInterfaceStatus

type ServerInterfaceStatus struct {
	// portID is the ID of a port attached to the server.
	// +kubebuilder:validation:MaxLength:=1024
	// +optional
	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"`

	// macAddr is the MAC address of the interface.
	// +kubebuilder:validation:MaxLength:=1024
	// +optional
	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"`

	// fixedIPs is the list of fixed IP addresses assigned to the interface.
	// +kubebuilder:validation:MaxItems:=32
	// +listType=atomic
	// +optional
	FixedIPs []ServerInterfaceFixedIP `json:"fixedIPs,omitempty"`
}

func (*ServerInterfaceStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerInterfaceStatus.

func (*ServerInterfaceStatus) DeepCopyInto

func (in *ServerInterfaceStatus) DeepCopyInto(out *ServerInterfaceStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServerList

type ServerList struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the list metadata
	// +optional
	metav1.ListMeta `json:"metadata,omitempty"`

	// items contains a list of Server.
	// +required
	Items []Server `json:"items"`
}

ServerList contains a list of Server.

func (*ServerList) DeepCopy

func (in *ServerList) DeepCopy() *ServerList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerList.

func (*ServerList) DeepCopyInto

func (in *ServerList) DeepCopyInto(out *ServerList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ServerList) DeepCopyObject

func (in *ServerList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*ServerList) GetItems

func (l *ServerList) GetItems() []Server

type ServerMetadata

type ServerMetadata struct {
	// key is the metadata key.
	// +kubebuilder:validation:MinLength:=1
	// +kubebuilder:validation:MaxLength:=255
	// +required
	Key string `json:"key,omitempty"`

	// value is the metadata value.
	// +kubebuilder:validation:MaxLength:=255
	// +kubebuilder:validation:MinLength:=1
	// +required
	Value string `json:"value,omitempty"`
}

ServerMetadata represents a key-value pair for server metadata.

func (*ServerMetadata) DeepCopy

func (in *ServerMetadata) DeepCopy() *ServerMetadata

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerMetadata.

func (*ServerMetadata) DeepCopyInto

func (in *ServerMetadata) DeepCopyInto(out *ServerMetadata)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServerMetadataStatus

type ServerMetadataStatus struct {
	// key is the metadata key.
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	Key string `json:"key,omitempty"`

	// value is the metadata value.
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	Value string `json:"value,omitempty"`
}

ServerMetadataStatus represents a key-value pair for server metadata in status.

func (*ServerMetadataStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerMetadataStatus.

func (*ServerMetadataStatus) DeepCopyInto

func (in *ServerMetadataStatus) DeepCopyInto(out *ServerMetadataStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServerPortSpec

type ServerPortSpec struct {
	// portRef is a reference to a Port object. Server creation will wait for
	// this port to be created and available.
	// +optional
	// +orc:kustomize:ref=Port
	PortRef *KubernetesNameRef `json:"portRef,omitempty"`
}

+kubebuilder:validation:MinProperties:=1 +kubebuilder:validation:MaxProperties:=1

func (*ServerPortSpec) DeepCopy

func (in *ServerPortSpec) DeepCopy() *ServerPortSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerPortSpec.

func (*ServerPortSpec) DeepCopyInto

func (in *ServerPortSpec) DeepCopyInto(out *ServerPortSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServerResourceSpec

type ServerResourceSpec struct {
	// name will be the name of the created resource. If not specified, the
	// name of the ORC object will be used.
	// +optional
	Name *OpenStackName `json:"name,omitempty"`

	// imageRef references the image to use for the server instance.
	// This field is required unless bootVolume is specified for boot-from-volume.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="imageRef is immutable"
	// +orc:kustomize:ref=Image
	ImageRef *KubernetesNameRef `json:"imageRef,omitempty"`

	// flavorRef references the flavor to use for the server instance.
	// +required
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="flavorRef is immutable"
	// +orc:kustomize:ref=Flavor
	FlavorRef KubernetesNameRef `json:"flavorRef,omitempty"`

	// bootVolume specifies a volume to boot from instead of an image.
	// When specified, imageRef must be omitted. The volume must be
	// bootable (created from an image using imageRef in the Volume spec).
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="bootVolume is immutable"
	BootVolume *ServerBootVolumeSpec `json:"bootVolume,omitempty"`

	// userData specifies data which will be made available to the server at
	// boot time, either via the metadata service or a config drive. It is
	// typically read by a configuration service such as cloud-init or ignition.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="userData is immutable"
	UserData *UserDataSpec `json:"userData,omitempty"`

	// ports defines a list of ports which will be attached to the server.
	// +kubebuilder:validation:MaxItems:=64
	// +listType=atomic
	// +required
	Ports []ServerPortSpec `json:"ports,omitempty"`

	// volumes is a list of volumes attached to the server.
	// +kubebuilder:validation:MaxItems:=64
	// +listType=atomic
	// +optional
	Volumes []ServerVolumeSpec `json:"volumes,omitempty"`

	// availabilityZone is the availability zone in which to create the server.
	// +kubebuilder:validation:MaxLength=255
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="availabilityZone is immutable"
	AvailabilityZone string `json:"availabilityZone,omitempty"`

	// keypairRef is a reference to a KeyPair object. The server will be
	// created with this keypair for SSH access.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="keypairRef is immutable"
	// +orc:kustomize:ref=KeyPair
	KeypairRef *KubernetesNameRef `json:"keypairRef,omitempty"`

	// tags is a list of tags which will be applied to the server.
	// +kubebuilder:validation:MaxItems:=50
	// +listType=set
	// +optional
	Tags []ServerTag `json:"tags,omitempty"`

	// metadata is a list of metadata key-value pairs which will be set on the server.
	// +kubebuilder:validation:MaxItems:=128
	// +listType=atomic
	// +optional
	Metadata []ServerMetadata `json:"metadata,omitempty"`

	// configDrive specifies whether to attach a config drive to the server.
	// When true, configuration data will be available via a special drive
	// instead of the metadata service.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="configDrive is immutable"
	ConfigDrive *bool `json:"configDrive,omitempty"`

	// schedulerHints provides hints to the Nova scheduler for server placement.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="schedulerHints is immutable"
	SchedulerHints *ServerSchedulerHints `json:"schedulerHints,omitempty"`
}

ServerResourceSpec contains the desired state of a server +kubebuilder:validation:XValidation:rule="has(self.imageRef) || has(self.bootVolume)",message="either imageRef or bootVolume must be specified" +kubebuilder:validation:XValidation:rule="!(has(self.imageRef) && has(self.bootVolume))",message="imageRef and bootVolume are mutually exclusive"

func (*ServerResourceSpec) DeepCopy

func (in *ServerResourceSpec) DeepCopy() *ServerResourceSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerResourceSpec.

func (*ServerResourceSpec) DeepCopyInto

func (in *ServerResourceSpec) DeepCopyInto(out *ServerResourceSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServerResourceStatus

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"`

	// hostID is the host where the server is located in the cloud.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	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"`

	// imageID indicates the OS image used to deploy the server.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	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"`

	// serverGroups is a slice of strings containing the UUIDs of the
	// server groups to which the server belongs. Currently this can
	// contain at most one entry.
	// +kubebuilder:validation:MaxItems:=32
	// +kubebuilder:validation:items:MaxLength=1024
	// +listType=atomic
	// +optional
	ServerGroups []string `json:"serverGroups,omitempty"`

	// volumes contains the volumes attached to the server.
	// +kubebuilder:validation:MaxItems:=64
	// +listType=atomic
	// +optional
	Volumes []ServerVolumeStatus `json:"volumes,omitempty"`

	// interfaces contains the list of interfaces attached to the server.
	// +kubebuilder:validation:MaxItems:=64
	// +listType=atomic
	// +optional
	Interfaces []ServerInterfaceStatus `json:"interfaces,omitempty"`

	// tags is the list of tags on the resource.
	// +kubebuilder:validation:MaxItems:=50
	// +kubebuilder:validation:items:MaxLength=1024
	// +listType=atomic
	// +optional
	Tags []string `json:"tags,omitempty"`

	// metadata is the list of metadata key-value pairs on the resource.
	// +kubebuilder:validation:MaxItems:=128
	// +listType=atomic
	// +optional
	Metadata []ServerMetadataStatus `json:"metadata,omitempty"`

	// configDrive indicates whether the server was booted with a config drive.
	// +optional
	ConfigDrive *bool `json:"configDrive,omitempty"`
}

ServerResourceStatus represents the observed state of the resource.

func (*ServerResourceStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerResourceStatus.

func (*ServerResourceStatus) DeepCopyInto

func (in *ServerResourceStatus) DeepCopyInto(out *ServerResourceStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServerSchedulerHints

type ServerSchedulerHints struct {
	// serverGroupRef is a reference to a ServerGroup object. The server will be
	// scheduled on a host in the specified server group.
	// +optional
	// +orc:kustomize:ref=ServerGroup
	ServerGroupRef *KubernetesNameRef `json:"serverGroupRef,omitempty"`

	// differentHostServerRefs is a list of references to Server objects.
	// The server will be scheduled on a different host than all specified servers.
	// +listType=set
	// +kubebuilder:validation:MaxItems:=64
	// +optional
	// +orc:kustomize:ref=Server
	DifferentHostServerRefs []KubernetesNameRef `json:"differentHostServerRefs,omitempty"`

	// sameHostServerRefs is a list of references to Server objects.
	// The server will be scheduled on the same host as all specified servers.
	// +listType=set
	// +kubebuilder:validation:MaxItems:=64
	// +optional
	// +orc:kustomize:ref=Server
	SameHostServerRefs []KubernetesNameRef `json:"sameHostServerRefs,omitempty"`

	// query is a conditional statement that results in compute nodes
	// able to host the server.
	// +kubebuilder:validation:MaxLength:=1024
	// +optional
	Query string `json:"query,omitempty"`

	// targetCell is a cell name where the server will be placed.
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	TargetCell string `json:"targetCell,omitempty"`

	// differentCell is a list of cell names where the server should not
	// be placed.
	// +listType=set
	// +kubebuilder:validation:MaxItems:=64
	// +kubebuilder:validation:items:MaxLength=1024
	// +optional
	DifferentCell []string `json:"differentCell,omitempty"`

	// buildNearHostIP specifies a subnet of compute nodes to host the server.
	// The host IP should be provided in an CIDR format like 10.10.10.10/24.
	// +optional
	BuildNearHostIP *CIDR `json:"buildNearHostIP,omitempty"`

	// additionalProperties is a map of arbitrary key/value pairs that are
	// not validated by Nova.
	// +optional
	AdditionalProperties map[string]string `json:"additionalProperties,omitempty"`
}

ServerSchedulerHints provides hints to the Nova scheduler for server placement.

func (*ServerSchedulerHints) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerSchedulerHints.

func (*ServerSchedulerHints) DeepCopyInto

func (in *ServerSchedulerHints) DeepCopyInto(out *ServerSchedulerHints)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServerSpec

type ServerSpec struct {
	// import refers to an existing OpenStack resource which will be imported instead of
	// creating a new one.
	// +optional
	Import *ServerImport `json:"import,omitempty"`

	// resource specifies the desired state of the resource.
	//
	// resource may not be specified if the management policy is `unmanaged`.
	//
	// resource must be specified if the management policy is `managed`.
	// +optional
	Resource *ServerResourceSpec `json:"resource,omitempty"`

	// managementPolicy defines how ORC will treat the object. Valid values are
	// `managed`: ORC will create, update, and delete the resource; `unmanaged`:
	// ORC will import an existing resource, and will not apply updates to it or
	// delete it.
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
	// +kubebuilder:default:=managed
	// +optional
	ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`

	// managedOptions specifies options which may be applied to managed objects.
	// +optional
	ManagedOptions *ManagedOptions `json:"managedOptions,omitempty"`

	// resyncPeriod defines how frequently the controller will re-reconcile
	// this resource even when no changes have been detected. This overrides
	// the global default resync period. The value must be a valid Go duration
	// string, e.g. "10m", "1h". Set to "0s" to disable periodic resync for
	// this resource. Very low values may cause excessive OpenStack API load.
	// +optional
	ResyncPeriod *metav1.Duration `json:"resyncPeriod,omitempty"` //nolint:kubeapilinter // metav1.Duration is appropriate for user-facing duration config

	// cloudCredentialsRef points to a secret containing OpenStack credentials
	// +required
	CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}

ServerSpec defines the desired state of an ORC object. +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? has(self.resource) : true",message="resource must be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? !has(self.__import__) : true",message="import may not be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? !has(self.resource) : true",message="resource may not be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? has(self.__import__) : true",message="import must be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="has(self.managedOptions) ? self.managementPolicy == 'managed' : true",message="managedOptions may only be provided when policy is managed"

func (*ServerSpec) DeepCopy

func (in *ServerSpec) DeepCopy() *ServerSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerSpec.

func (*ServerSpec) DeepCopyInto

func (in *ServerSpec) DeepCopyInto(out *ServerSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServerStatus

type ServerStatus struct {
	// 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.
	//
	// +kubebuilder:validation:MaxItems:=32
	// +patchMergeKey=type
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=type
	// +optional
	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"`

	// resource contains the observed state of the OpenStack resource.
	// +optional
	Resource *ServerResourceStatus `json:"resource,omitempty"`

	// lastSyncTime is the timestamp of the last successful reconciliation
	// that fetched state from OpenStack. It is updated each time the
	// controller successfully reads the resource state from the OpenStack
	// API.
	// +optional
	LastSyncTime *metav1.Time `json:"lastSyncTime,omitempty"`
}

ServerStatus defines the observed state of an ORC resource.

func (*ServerStatus) DeepCopy

func (in *ServerStatus) DeepCopy() *ServerStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerStatus.

func (*ServerStatus) DeepCopyInto

func (in *ServerStatus) DeepCopyInto(out *ServerStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServerTag

type ServerTag string

+kubebuilder:validation:MinLength:=1 +kubebuilder:validation:MaxLength:=80

type ServerVolumeSpec

type ServerVolumeSpec struct {
	// volumeRef is a reference to a Volume object. Server creation will wait for
	// this volume to be created and available.
	// +required
	// +orc:kustomize:ref=Volume
	VolumeRef KubernetesNameRef `json:"volumeRef,omitempty"`

	// device is the name of the device, such as `/dev/vdb`.
	// Omit for auto-assignment
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	Device *string `json:"device,omitempty"`
}

+kubebuilder:validation:MinProperties:=1

func (*ServerVolumeSpec) DeepCopy

func (in *ServerVolumeSpec) DeepCopy() *ServerVolumeSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerVolumeSpec.

func (*ServerVolumeSpec) DeepCopyInto

func (in *ServerVolumeSpec) DeepCopyInto(out *ServerVolumeSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServerVolumeStatus

type ServerVolumeStatus struct {
	// id is the ID of a volume attached to the server.
	// +kubebuilder:validation:MaxLength:=1024
	// +optional
	ID string `json:"id,omitempty"`
}

func (*ServerVolumeStatus) DeepCopy

func (in *ServerVolumeStatus) DeepCopy() *ServerVolumeStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerVolumeStatus.

func (*ServerVolumeStatus) DeepCopyInto

func (in *ServerVolumeStatus) DeepCopyInto(out *ServerVolumeStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Service

type Service struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the object metadata
	// +optional
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// spec specifies the desired state of the resource.
	// +required
	Spec ServiceSpec `json:"spec,omitzero"`

	// status defines the observed state of the resource.
	// +optional
	Status ServiceStatus `json:"status,omitempty"`
}

Service is the Schema for an ORC resource.

func (*Service) DeepCopy

func (in *Service) DeepCopy() *Service

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Service.

func (*Service) DeepCopyInto

func (in *Service) DeepCopyInto(out *Service)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Service) DeepCopyObject

func (in *Service) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*Service) GetCloudCredentialsRef

func (i *Service) GetCloudCredentialsRef() (*string, *CloudCredentialsReference)

func (*Service) GetConditions

func (i *Service) GetConditions() []metav1.Condition

type ServiceFilter

type ServiceFilter struct {
	// name of the existing resource
	// +optional
	Name *OpenStackName `json:"name,omitempty"`

	// type of the existing resource
	// +kubebuilder:validation:MinLength:=1
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	Type *string `json:"type,omitempty"`
}

ServiceFilter defines an existing resource by its properties +kubebuilder:validation:MinProperties:=1

func (*ServiceFilter) DeepCopy

func (in *ServiceFilter) DeepCopy() *ServiceFilter

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceFilter.

func (*ServiceFilter) DeepCopyInto

func (in *ServiceFilter) DeepCopyInto(out *ServiceFilter)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServiceImport

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.
	// +kubebuilder:validation:Format:=uuid
	// +kubebuilder:validation:MaxLength:=36
	// +optional
	ID *string `json:"id,omitempty"` //nolint:kubeapilinter

	// 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.
	// +optional
	Filter *ServiceFilter `json:"filter,omitempty"`
}

ServiceImport specifies an existing resource which will be imported instead of creating a new one +kubebuilder:validation:MinProperties:=1 +kubebuilder:validation:MaxProperties:=1

func (*ServiceImport) DeepCopy

func (in *ServiceImport) DeepCopy() *ServiceImport

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceImport.

func (*ServiceImport) DeepCopyInto

func (in *ServiceImport) DeepCopyInto(out *ServiceImport)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServiceList

type ServiceList struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the list metadata
	// +optional
	metav1.ListMeta `json:"metadata,omitempty"`

	// items contains a list of Service.
	// +required
	Items []Service `json:"items"`
}

ServiceList contains a list of Service.

func (*ServiceList) DeepCopy

func (in *ServiceList) DeepCopy() *ServiceList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceList.

func (*ServiceList) DeepCopyInto

func (in *ServiceList) DeepCopyInto(out *ServiceList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ServiceList) DeepCopyObject

func (in *ServiceList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*ServiceList) GetItems

func (l *ServiceList) GetItems() []Service

type ServiceResourceSpec

type ServiceResourceSpec struct {
	// name indicates the name of service. If not specified, the name of the ORC
	// resource will be used.
	// +optional
	Name *OpenStackName `json:"name,omitempty"`

	// description indicates the description of service.
	// +kubebuilder:validation:MinLength:=1
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	Description *string `json:"description,omitempty"`

	// type indicates which resource the service is responsible for.
	// +kubebuilder:validation:MinLength:=1
	// +kubebuilder:validation:MaxLength:=255
	// +required
	Type string `json:"type,omitempty"`

	// enabled indicates whether the service is enabled or not.
	// +kubebuilder:default=true
	// +optional
	Enabled *bool `json:"enabled,omitempty"`
}

ServiceResourceSpec contains the desired state of the resource.

func (*ServiceResourceSpec) DeepCopy

func (in *ServiceResourceSpec) DeepCopy() *ServiceResourceSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceResourceSpec.

func (*ServiceResourceSpec) DeepCopyInto

func (in *ServiceResourceSpec) DeepCopyInto(out *ServiceResourceSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServiceResourceStatus

type ServiceResourceStatus struct {
	// name indicates the name of service.
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	Name string `json:"name,omitempty"`

	// description indicates the description of service.
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	Description string `json:"description,omitempty"`

	// type indicates which resource the service is responsible for.
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	Type string `json:"type,omitempty"`

	// enabled indicates whether the service is enabled or not.
	// +optional
	Enabled *bool `json:"enabled,omitempty"`
}

ServiceResourceStatus represents the observed state of the resource.

func (*ServiceResourceStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceResourceStatus.

func (*ServiceResourceStatus) DeepCopyInto

func (in *ServiceResourceStatus) DeepCopyInto(out *ServiceResourceStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServiceSpec

type ServiceSpec struct {
	// import refers to an existing OpenStack resource which will be imported instead of
	// creating a new one.
	// +optional
	Import *ServiceImport `json:"import,omitempty"`

	// resource specifies the desired state of the resource.
	//
	// resource may not be specified if the management policy is `unmanaged`.
	//
	// resource must be specified if the management policy is `managed`.
	// +optional
	Resource *ServiceResourceSpec `json:"resource,omitempty"`

	// managementPolicy defines how ORC will treat the object. Valid values are
	// `managed`: ORC will create, update, and delete the resource; `unmanaged`:
	// ORC will import an existing resource, and will not apply updates to it or
	// delete it.
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
	// +kubebuilder:default:=managed
	// +optional
	ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`

	// managedOptions specifies options which may be applied to managed objects.
	// +optional
	ManagedOptions *ManagedOptions `json:"managedOptions,omitempty"`

	// resyncPeriod defines how frequently the controller will re-reconcile
	// this resource even when no changes have been detected. This overrides
	// the global default resync period. The value must be a valid Go duration
	// string, e.g. "10m", "1h". Set to "0s" to disable periodic resync for
	// this resource. Very low values may cause excessive OpenStack API load.
	// +optional
	ResyncPeriod *metav1.Duration `json:"resyncPeriod,omitempty"` //nolint:kubeapilinter // metav1.Duration is appropriate for user-facing duration config

	// cloudCredentialsRef points to a secret containing OpenStack credentials
	// +required
	CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}

ServiceSpec defines the desired state of an ORC object. +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? has(self.resource) : true",message="resource must be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? !has(self.__import__) : true",message="import may not be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? !has(self.resource) : true",message="resource may not be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? has(self.__import__) : true",message="import must be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="has(self.managedOptions) ? self.managementPolicy == 'managed' : true",message="managedOptions may only be provided when policy is managed"

func (*ServiceSpec) DeepCopy

func (in *ServiceSpec) DeepCopy() *ServiceSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceSpec.

func (*ServiceSpec) DeepCopyInto

func (in *ServiceSpec) DeepCopyInto(out *ServiceSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServiceStatus

type ServiceStatus struct {
	// 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.
	//
	// +kubebuilder:validation:MaxItems:=32
	// +patchMergeKey=type
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=type
	// +optional
	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"`

	// resource contains the observed state of the OpenStack resource.
	// +optional
	Resource *ServiceResourceStatus `json:"resource,omitempty"`

	// lastSyncTime is the timestamp of the last successful reconciliation
	// that fetched state from OpenStack. It is updated each time the
	// controller successfully reads the resource state from the OpenStack
	// API.
	// +optional
	LastSyncTime *metav1.Time `json:"lastSyncTime,omitempty"`
}

ServiceStatus defines the observed state of an ORC resource.

func (*ServiceStatus) DeepCopy

func (in *ServiceStatus) DeepCopy() *ServiceStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceStatus.

func (*ServiceStatus) DeepCopyInto

func (in *ServiceStatus) DeepCopyInto(out *ServiceStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ShareNetwork

type ShareNetwork struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the object metadata
	// +optional
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// spec specifies the desired state of the resource.
	// +required
	Spec ShareNetworkSpec `json:"spec,omitzero"`

	// status defines the observed state of the resource.
	// +optional
	Status ShareNetworkStatus `json:"status,omitempty"`
}

ShareNetwork is the Schema for an ORC resource.

func (*ShareNetwork) DeepCopy

func (in *ShareNetwork) DeepCopy() *ShareNetwork

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShareNetwork.

func (*ShareNetwork) DeepCopyInto

func (in *ShareNetwork) DeepCopyInto(out *ShareNetwork)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ShareNetwork) DeepCopyObject

func (in *ShareNetwork) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*ShareNetwork) GetCloudCredentialsRef

func (i *ShareNetwork) GetCloudCredentialsRef() (*string, *CloudCredentialsReference)

func (*ShareNetwork) GetConditions

func (i *ShareNetwork) GetConditions() []metav1.Condition

type ShareNetworkFilter

type ShareNetworkFilter struct {
	// name of the existing resource
	// +optional
	Name *OpenStackName `json:"name,omitempty"`

	// description of the existing resource
	// +kubebuilder:validation:MinLength:=1
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	Description *string `json:"description,omitempty"`
}

ShareNetworkFilter defines an existing resource by its properties +kubebuilder:validation:MinProperties:=1

func (*ShareNetworkFilter) DeepCopy

func (in *ShareNetworkFilter) DeepCopy() *ShareNetworkFilter

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShareNetworkFilter.

func (*ShareNetworkFilter) DeepCopyInto

func (in *ShareNetworkFilter) DeepCopyInto(out *ShareNetworkFilter)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ShareNetworkImport

type ShareNetworkImport 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.
	// +kubebuilder:validation:Format:=uuid
	// +kubebuilder:validation:MaxLength:=36
	// +optional
	ID *string `json:"id,omitempty"` //nolint:kubeapilinter

	// 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.
	// +optional
	Filter *ShareNetworkFilter `json:"filter,omitempty"`
}

ShareNetworkImport specifies an existing resource which will be imported instead of creating a new one +kubebuilder:validation:MinProperties:=1 +kubebuilder:validation:MaxProperties:=1

func (*ShareNetworkImport) DeepCopy

func (in *ShareNetworkImport) DeepCopy() *ShareNetworkImport

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShareNetworkImport.

func (*ShareNetworkImport) DeepCopyInto

func (in *ShareNetworkImport) DeepCopyInto(out *ShareNetworkImport)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ShareNetworkList

type ShareNetworkList struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the list metadata
	// +optional
	metav1.ListMeta `json:"metadata,omitempty"`

	// items contains a list of ShareNetwork.
	// +required
	Items []ShareNetwork `json:"items"`
}

ShareNetworkList contains a list of ShareNetwork.

func (*ShareNetworkList) DeepCopy

func (in *ShareNetworkList) DeepCopy() *ShareNetworkList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShareNetworkList.

func (*ShareNetworkList) DeepCopyInto

func (in *ShareNetworkList) DeepCopyInto(out *ShareNetworkList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ShareNetworkList) DeepCopyObject

func (in *ShareNetworkList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*ShareNetworkList) GetItems

func (l *ShareNetworkList) GetItems() []ShareNetwork

type ShareNetworkResourceSpec

type ShareNetworkResourceSpec struct {
	// name will be the name of the created resource. If not specified, the
	// name of the ORC object will be used.
	// +optional
	Name *OpenStackName `json:"name,omitempty"`

	// description is a human-readable description for the resource.
	// +kubebuilder:validation:MinLength:=1
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	Description *string `json:"description,omitempty"`

	// networkRef is a reference to the ORC Network which this resource is associated with.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="networkRef is immutable"
	// +orc:kustomize:ref=Network
	NetworkRef *KubernetesNameRef `json:"networkRef,omitempty"`

	// subnetRef is a reference to the ORC Subnet which this resource is associated with.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="subnetRef is immutable"
	// +orc:kustomize:ref=Subnet
	SubnetRef *KubernetesNameRef `json:"subnetRef,omitempty"`
}

ShareNetworkResourceSpec contains the desired state of the resource. +kubebuilder:validation:XValidation:rule="has(self.networkRef) == has(self.subnetRef)",message="networkRef and subnetRef must be specified together"

func (*ShareNetworkResourceSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShareNetworkResourceSpec.

func (*ShareNetworkResourceSpec) DeepCopyInto

func (in *ShareNetworkResourceSpec) DeepCopyInto(out *ShareNetworkResourceSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ShareNetworkResourceStatus

type ShareNetworkResourceStatus struct {
	// name is a Human-readable name for the resource.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	Name string `json:"name,omitempty"`

	// description is a human-readable description for the resource.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	Description string `json:"description,omitempty"`

	// neutronNetID is the Neutron network ID.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	NeutronNetID string `json:"neutronNetID,omitempty"`

	// neutronSubnetID is the Neutron subnet ID.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	NeutronSubnetID string `json:"neutronSubnetID,omitempty"`

	// networkType is the network type (e.g., vlan, vxlan, flat).
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	NetworkType string `json:"networkType,omitempty"`

	// segmentationID is the segmentation ID of the network.
	// +optional
	SegmentationID *int32 `json:"segmentationID,omitempty"`

	// cidr is the CIDR of the subnet.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	CIDR string `json:"cidr"`

	// ipVersion is the IP version (4 or 6).
	// +optional
	IPVersion *int32 `json:"ipVersion,omitempty"`

	// projectID is the ID of the project that owns the share network.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	ProjectID string `json:"projectID,omitempty"`

	// createdAt shows the date and time when the resource was created.
	// +optional
	CreatedAt *metav1.Time `json:"createdAt,omitempty"`

	// updatedAt shows the date and time when the resource was updated.
	// +optional
	UpdatedAt *metav1.Time `json:"updatedAt,omitempty"`
}

ShareNetworkResourceStatus represents the observed state of the resource.

func (*ShareNetworkResourceStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShareNetworkResourceStatus.

func (*ShareNetworkResourceStatus) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ShareNetworkSpec

type ShareNetworkSpec struct {
	// import refers to an existing OpenStack resource which will be imported instead of
	// creating a new one.
	// +optional
	Import *ShareNetworkImport `json:"import,omitempty"`

	// resource specifies the desired state of the resource.
	//
	// resource may not be specified if the management policy is `unmanaged`.
	//
	// resource must be specified if the management policy is `managed`.
	// +optional
	Resource *ShareNetworkResourceSpec `json:"resource,omitempty"`

	// managementPolicy defines how ORC will treat the object. Valid values are
	// `managed`: ORC will create, update, and delete the resource; `unmanaged`:
	// ORC will import an existing resource, and will not apply updates to it or
	// delete it.
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
	// +kubebuilder:default:=managed
	// +optional
	ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`

	// managedOptions specifies options which may be applied to managed objects.
	// +optional
	ManagedOptions *ManagedOptions `json:"managedOptions,omitempty"`

	// resyncPeriod defines how frequently the controller will re-reconcile
	// this resource even when no changes have been detected. This overrides
	// the global default resync period. The value must be a valid Go duration
	// string, e.g. "10m", "1h". Set to "0s" to disable periodic resync for
	// this resource. Very low values may cause excessive OpenStack API load.
	// +optional
	ResyncPeriod *metav1.Duration `json:"resyncPeriod,omitempty"` //nolint:kubeapilinter // metav1.Duration is appropriate for user-facing duration config

	// cloudCredentialsRef points to a secret containing OpenStack credentials
	// +required
	CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}

ShareNetworkSpec defines the desired state of an ORC object. +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? has(self.resource) : true",message="resource must be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? !has(self.__import__) : true",message="import may not be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? !has(self.resource) : true",message="resource may not be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? has(self.__import__) : true",message="import must be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="has(self.managedOptions) ? self.managementPolicy == 'managed' : true",message="managedOptions may only be provided when policy is managed"

func (*ShareNetworkSpec) DeepCopy

func (in *ShareNetworkSpec) DeepCopy() *ShareNetworkSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShareNetworkSpec.

func (*ShareNetworkSpec) DeepCopyInto

func (in *ShareNetworkSpec) DeepCopyInto(out *ShareNetworkSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ShareNetworkStatus

type ShareNetworkStatus struct {
	// 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.
	//
	// +kubebuilder:validation:MaxItems:=32
	// +patchMergeKey=type
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=type
	// +optional
	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"`

	// resource contains the observed state of the OpenStack resource.
	// +optional
	Resource *ShareNetworkResourceStatus `json:"resource,omitempty"`

	// lastSyncTime is the timestamp of the last successful reconciliation
	// that fetched state from OpenStack. It is updated each time the
	// controller successfully reads the resource state from the OpenStack
	// API.
	// +optional
	LastSyncTime *metav1.Time `json:"lastSyncTime,omitempty"`
}

ShareNetworkStatus defines the observed state of an ORC resource.

func (*ShareNetworkStatus) DeepCopy

func (in *ShareNetworkStatus) DeepCopy() *ShareNetworkStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShareNetworkStatus.

func (*ShareNetworkStatus) DeepCopyInto

func (in *ShareNetworkStatus) DeepCopyInto(out *ShareNetworkStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Subnet

type Subnet struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the object metadata
	// +optional
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// spec specifies the desired state of the resource.
	// +required
	Spec SubnetSpec `json:"spec,omitzero"`

	// status defines the observed state of the resource.
	// +optional
	Status SubnetStatus `json:"status,omitempty"`
}

Subnet is the Schema for an ORC resource.

func (*Subnet) DeepCopy

func (in *Subnet) DeepCopy() *Subnet

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Subnet.

func (*Subnet) DeepCopyInto

func (in *Subnet) DeepCopyInto(out *Subnet)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Subnet) DeepCopyObject

func (in *Subnet) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*Subnet) GetCloudCredentialsRef

func (i *Subnet) GetCloudCredentialsRef() (*string, *CloudCredentialsReference)

func (*Subnet) GetConditions

func (i *Subnet) GetConditions() []metav1.Condition

type SubnetFilter

type SubnetFilter struct {
	// name of the existing resource
	// +optional
	Name *OpenStackName `json:"name,omitempty"`

	// description of the existing resource
	// +optional
	Description *NeutronDescription `json:"description,omitempty"`

	// ipVersion of the existing resource
	// +optional
	IPVersion *IPVersion `json:"ipVersion,omitempty"`

	// gatewayIP is the IP address of the gateway of the existing resource
	// +optional
	GatewayIP *IPvAny `json:"gatewayIP,omitempty"`

	// cidr of the existing resource
	// +optional
	CIDR *CIDR `json:"cidr,omitempty"`

	// ipv6 options of the existing resource
	// +optional
	IPv6 *IPv6Options `json:"ipv6,omitempty"`

	// networkRef is a reference to the ORC Network which this subnet is associated with.
	// +optional
	// +orc:kustomize:ref=Network
	NetworkRef KubernetesNameRef `json:"networkRef"`

	// projectRef is a reference to the ORC Project this resource is associated with.
	// Typically, only used by admin.
	// +optional
	// +orc:kustomize:ref=Project
	ProjectRef *KubernetesNameRef `json:"projectRef,omitempty"`

	FilterByNeutronTags `json:",inline"`
}

SubnetFilter specifies a filter to select a subnet. At least one parameter must be specified. +kubebuilder:validation:MinProperties:=1

func (*SubnetFilter) DeepCopy

func (in *SubnetFilter) DeepCopy() *SubnetFilter

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SubnetFilter.

func (*SubnetFilter) DeepCopyInto

func (in *SubnetFilter) DeepCopyInto(out *SubnetFilter)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SubnetGateway

type SubnetGateway struct {
	// type specifies how the default gateway will be created. `Automatic`
	// specifies that neutron will automatically add a default gateway. This is
	// also the default if no Gateway is specified. `None` specifies that the
	// subnet will not have a default gateway. `IP` specifies that the subnet
	// will use a specific address as the default gateway, which must be
	// specified in `IP`.
	// +kubebuilder:validation:Enum:=None;Automatic;IP
	// +required
	Type SubnetGatewayType `json:"type,omitempty"`

	// ip is the IP address of the default gateway, which must be specified if
	// Type is `IP`. It must be a valid IP address, either IPv4 or IPv6,
	// matching the IPVersion in SubnetResourceSpec.
	// +optional
	IP *IPvAny `json:"ip,omitempty"`
}

func (*SubnetGateway) DeepCopy

func (in *SubnetGateway) DeepCopy() *SubnetGateway

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SubnetGateway.

func (*SubnetGateway) DeepCopyInto

func (in *SubnetGateway) DeepCopyInto(out *SubnetGateway)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SubnetGatewayType

type SubnetGatewayType string

type SubnetImport

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.
	// +kubebuilder:validation:Format:=uuid
	// +kubebuilder:validation:MaxLength:=36
	// +optional
	ID *string `json:"id,omitempty"` //nolint:kubeapilinter

	// 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.
	// +optional
	Filter *SubnetFilter `json:"filter,omitempty"`
}

SubnetImport specifies an existing resource which will be imported instead of creating a new one +kubebuilder:validation:MinProperties:=1 +kubebuilder:validation:MaxProperties:=1

func (*SubnetImport) DeepCopy

func (in *SubnetImport) DeepCopy() *SubnetImport

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SubnetImport.

func (*SubnetImport) DeepCopyInto

func (in *SubnetImport) DeepCopyInto(out *SubnetImport)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SubnetList

type SubnetList struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the list metadata
	// +optional
	metav1.ListMeta `json:"metadata,omitempty"`

	// items contains a list of Subnet.
	// +required
	Items []Subnet `json:"items"`
}

SubnetList contains a list of Subnet.

func (*SubnetList) DeepCopy

func (in *SubnetList) DeepCopy() *SubnetList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SubnetList.

func (*SubnetList) DeepCopyInto

func (in *SubnetList) DeepCopyInto(out *SubnetList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*SubnetList) DeepCopyObject

func (in *SubnetList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*SubnetList) GetItems

func (l *SubnetList) GetItems() []Subnet

type SubnetPool

type SubnetPool struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the object metadata
	// +optional
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// spec specifies the desired state of the resource.
	// +required
	Spec SubnetPoolSpec `json:"spec,omitzero"`

	// status defines the observed state of the resource.
	// +optional
	Status SubnetPoolStatus `json:"status,omitempty"`
}

SubnetPool is the Schema for an ORC resource.

func (*SubnetPool) DeepCopy

func (in *SubnetPool) DeepCopy() *SubnetPool

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SubnetPool.

func (*SubnetPool) DeepCopyInto

func (in *SubnetPool) DeepCopyInto(out *SubnetPool)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*SubnetPool) DeepCopyObject

func (in *SubnetPool) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*SubnetPool) GetCloudCredentialsRef

func (i *SubnetPool) GetCloudCredentialsRef() (*string, *CloudCredentialsReference)

func (*SubnetPool) GetConditions

func (i *SubnetPool) GetConditions() []metav1.Condition

type SubnetPoolFilter

type SubnetPoolFilter struct {
	// name of the existing resource
	// +optional
	Name *OpenStackName `json:"name,omitempty"`

	// description of the existing resource
	// +optional
	Description *NeutronDescription `json:"description,omitempty"`

	// projectRef is a reference to the ORC Project which this resource is associated with.
	// +optional
	// +orc:kustomize:ref=Project
	ProjectRef *KubernetesNameRef `json:"projectRef,omitempty"`

	// addressScopeRef is a reference to the ORC AddressScope which this resource is associated with.
	// +optional
	// +orc:kustomize:ref=AddressScope
	AddressScopeRef *KubernetesNameRef `json:"addressScopeRef,omitempty"`

	// minPrefixLength allows filtering the subnet pool list result by
	// the smallest prefix that can be allocated from a subnet pool.
	// +optional
	MinPrefixLength int32 `json:"minPrefixLength,omitempty"`

	// maxPrefixLength allows filtering the subnet pool list result by
	// the maximum prefix size that can be allocated from the subnet
	// pool.
	// +optional
	MaxPrefixLength int32 `json:"maxPrefixLength,omitempty"`

	// ipVersion is the IP protocol version. It can be either 4 or 6
	// +optional
	IPVersion *IPVersion `json:"ipVersion,omitempty"`

	// shared allows filtering the list result based on whether the
	// resource is shared across all projects. This field is
	// admin-only.
	// +optional
	Shared *bool `json:"shared,omitempty"`

	// defaultPrefixLength allows filtering the subnet pool list
	// result by the size of the prefix to allocate when the cidr or
	// prefixlen attributes are omitted when you create the subnet.
	// +optional
	DefaultPrefixLength int32 `json:"defaultPrefixLength,omitempty"`

	// isDefault allows filtering the subnet pool list result based on
	// whether it is a default pool or not.
	// +optional
	IsDefault *bool `json:"isDefault,omitempty"`

	FilterByNeutronTags `json:",inline"`
}

SubnetPoolFilter defines an existing resource by its properties +kubebuilder:validation:MinProperties:=1

func (*SubnetPoolFilter) DeepCopy

func (in *SubnetPoolFilter) DeepCopy() *SubnetPoolFilter

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SubnetPoolFilter.

func (*SubnetPoolFilter) DeepCopyInto

func (in *SubnetPoolFilter) DeepCopyInto(out *SubnetPoolFilter)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SubnetPoolImport

type SubnetPoolImport 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.
	// +kubebuilder:validation:Format:=uuid
	// +kubebuilder:validation:MaxLength:=36
	// +optional
	ID *string `json:"id,omitempty"` //nolint:kubeapilinter

	// 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.
	// +optional
	Filter *SubnetPoolFilter `json:"filter,omitempty"`
}

SubnetPoolImport specifies an existing resource which will be imported instead of creating a new one +kubebuilder:validation:MinProperties:=1 +kubebuilder:validation:MaxProperties:=1

func (*SubnetPoolImport) DeepCopy

func (in *SubnetPoolImport) DeepCopy() *SubnetPoolImport

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SubnetPoolImport.

func (*SubnetPoolImport) DeepCopyInto

func (in *SubnetPoolImport) DeepCopyInto(out *SubnetPoolImport)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SubnetPoolList

type SubnetPoolList struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the list metadata
	// +optional
	metav1.ListMeta `json:"metadata,omitempty"`

	// items contains a list of SubnetPool.
	// +required
	Items []SubnetPool `json:"items"`
}

SubnetPoolList contains a list of SubnetPool.

func (*SubnetPoolList) DeepCopy

func (in *SubnetPoolList) DeepCopy() *SubnetPoolList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SubnetPoolList.

func (*SubnetPoolList) DeepCopyInto

func (in *SubnetPoolList) DeepCopyInto(out *SubnetPoolList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*SubnetPoolList) DeepCopyObject

func (in *SubnetPoolList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*SubnetPoolList) GetItems

func (l *SubnetPoolList) GetItems() []SubnetPool

type SubnetPoolResourceSpec

type SubnetPoolResourceSpec struct {
	// name will be the name of the created resource. If not specified, the
	// name of the ORC object will be used.
	// +optional
	Name *OpenStackName `json:"name,omitempty"`

	// description is a human-readable description for the resource.
	// +optional
	Description *NeutronDescription `json:"description,omitempty"`

	// projectRef is a reference to the ORC Project which this resource is associated with.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="projectRef is immutable"
	// +orc:kustomize:ref=Project
	ProjectRef *KubernetesNameRef `json:"projectRef,omitempty"`

	// addressScopeRef is a reference to the ORC AddressScope which this resource is associated with.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="addressScopeRef is immutable"
	// +orc:kustomize:ref=AddressScope
	AddressScopeRef *KubernetesNameRef `json:"addressScopeRef,omitempty"`

	// prefixes is the list of subnet prefixes to assign to the subnet
	// pool. The API merges adjacent prefixes and treats them as a
	// single prefix. Each subnet prefix must be unique across all
	// subnet pools associated with the address scope.
	// +kubebuilder:validation:MinItems:=1
	// +kubebuilder:validation:MaxItems:=64
	// +listType=set
	// +required
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="prefixes is immutable"
	Prefixes []CIDR `json:"prefixes,omitempty"`

	// minPrefixLength is the smallest prefix that can be allocated
	// from a subnet pool. For IPv4 subnet pools, default is 8. For
	// IPv6 subnet pools, default is 64. Must be less than or equal to
	// maxPrefixLength.
	// +kubebuilder:validation:Minimum=1
	// +required
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="minPrefixLength is immutable"
	MinPrefixLength int32 `json:"minPrefixLength,omitempty"`

	// maxPrefixLength is the maximum prefix size that can be
	// allocated from the subnet pool. For IPv4 subnet pools, default
	// is 32. For IPv6 subnet pools, default is 128. Must be greater
	// than or equal to minPrefixLength.
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:Maximum=128
	// +required
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="maxPrefixLength is immutable"
	MaxPrefixLength int32 `json:"maxPrefixLength,omitempty"`

	// shared indicates whether this resource is shared across all projects.
	// By default, it is false, and only administrative users can
	// change this value.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="shared is immutable"
	Shared *bool `json:"shared,omitempty"`

	// defaultPrefixLength is the size of the prefix to allocate when
	// the CIDR or prefixlen attributes are omitted when you create
	// the subnet. Default is minPrefixLength. Must be between
	// minPrefixLength and maxPrefixLength, inclusive.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="defaultPrefixLength is immutable"
	DefaultPrefixLength int32 `json:"defaultPrefixLength,omitempty"`

	// isDefault defines whether the subnet pool is the default pool
	// or not.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="isDefault is immutable"
	IsDefault *bool `json:"isDefault,omitempty"`

	// tags is a list of tags which will be applied to the subnet pool.
	// +kubebuilder:validation:MaxItems:=64
	// +listType=set
	// +optional
	Tags []NeutronTag `json:"tags,omitempty"`
}

SubnetPoolResourceSpec contains the desired state of the resource.

+kubebuilder:validation:XValidation:rule="self.minPrefixLength <= self.maxPrefixLength",message="minPrefixLength must be less than or equal to maxPrefixLength" +kubebuilder:validation:XValidation:rule="!has(self.defaultPrefixLength) || (self.defaultPrefixLength >= self.minPrefixLength && self.defaultPrefixLength <= self.maxPrefixLength)",message="defaultPrefixLength must be between minPrefixLength and maxPrefixLength"

func (*SubnetPoolResourceSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SubnetPoolResourceSpec.

func (*SubnetPoolResourceSpec) DeepCopyInto

func (in *SubnetPoolResourceSpec) DeepCopyInto(out *SubnetPoolResourceSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SubnetPoolResourceStatus

type SubnetPoolResourceStatus struct {
	// name is a Human-readable name for the resource. Might not be unique.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	Name string `json:"name,omitempty"`

	// description is a human-readable description for the resource.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	Description string `json:"description,omitempty"`

	// projectID is the ID of the Project to which the resource is associated.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	ProjectID string `json:"projectID,omitempty"`

	// addressScopeID is the ID of the AddressScope to which the resource is associated.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	AddressScopeID string `json:"addressScopeID,omitempty"`

	// prefixes is a list of prefixes assigned to the SubnetPool.
	// +listType=atomic
	// +kubebuilder:validation:MaxItems:=64
	// +kubebuilder:validation:items:MaxLength:=64
	// +optional
	Prefixes []string `json:"prefixes,omitempty"`

	// minPrefixLength is the smallest prefix that can be allocated
	// from the subnet pool.
	// +optional
	MinPrefixLength int32 `json:"minPrefixLength,omitempty"`

	// maxPrefixLength is the maximum prefix size that can be
	// allocated from the subnet pool.
	// +optional
	MaxPrefixLength int32 `json:"maxPrefixLength,omitempty"`

	// defaultPrefixLength is the size of the prefix to allocate when
	// the cidr or prefixlen attributes are omitted when you create
	// the subnet.
	// +optional
	DefaultPrefixLength int32 `json:"defaultPrefixLength,omitempty"`

	// isDefault indicates whether the SubnetPool is the default pool
	// when creating subnets.
	// +optional
	IsDefault *bool `json:"isDefault,omitempty"`

	// shared indicates whether the SubnetPool is shared across all projects.
	// +optional
	Shared *bool `json:"shared,omitempty"`

	// ipVersion is the IP protocol version. It can be either 4 or 6
	// +optional
	IPVersion int32 `json:"ipVersion,omitempty"`

	// tags is the list of tags on the resource.
	// +kubebuilder:validation:MaxItems=64
	// +kubebuilder:validation:items:MaxLength=1024
	// +listType=atomic
	// +optional
	Tags []string `json:"tags,omitempty"`

	NeutronStatusMetadata `json:",inline"`
}

SubnetPoolResourceStatus represents the observed state of the resource.

func (*SubnetPoolResourceStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SubnetPoolResourceStatus.

func (*SubnetPoolResourceStatus) DeepCopyInto

func (in *SubnetPoolResourceStatus) DeepCopyInto(out *SubnetPoolResourceStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SubnetPoolSpec

type SubnetPoolSpec struct {
	// import refers to an existing OpenStack resource which will be imported instead of
	// creating a new one.
	// +optional
	Import *SubnetPoolImport `json:"import,omitempty"`

	// resource specifies the desired state of the resource.
	//
	// resource may not be specified if the management policy is `unmanaged`.
	//
	// resource must be specified if the management policy is `managed`.
	// +optional
	Resource *SubnetPoolResourceSpec `json:"resource,omitempty"`

	// managementPolicy defines how ORC will treat the object. Valid values are
	// `managed`: ORC will create, update, and delete the resource; `unmanaged`:
	// ORC will import an existing resource, and will not apply updates to it or
	// delete it.
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
	// +kubebuilder:default:=managed
	// +optional
	ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`

	// managedOptions specifies options which may be applied to managed objects.
	// +optional
	ManagedOptions *ManagedOptions `json:"managedOptions,omitempty"`

	// resyncPeriod defines how frequently the controller will re-reconcile
	// this resource even when no changes have been detected. This overrides
	// the global default resync period. The value must be a valid Go duration
	// string, e.g. "10m", "1h". Set to "0s" to disable periodic resync for
	// this resource. Very low values may cause excessive OpenStack API load.
	// +optional
	ResyncPeriod *metav1.Duration `json:"resyncPeriod,omitempty"` //nolint:kubeapilinter // metav1.Duration is appropriate for user-facing duration config

	// cloudCredentialsRef points to a secret containing OpenStack credentials
	// +required
	CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}

SubnetPoolSpec defines the desired state of an ORC object. +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? has(self.resource) : true",message="resource must be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? !has(self.__import__) : true",message="import may not be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? !has(self.resource) : true",message="resource may not be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? has(self.__import__) : true",message="import must be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="has(self.managedOptions) ? self.managementPolicy == 'managed' : true",message="managedOptions may only be provided when policy is managed"

func (*SubnetPoolSpec) DeepCopy

func (in *SubnetPoolSpec) DeepCopy() *SubnetPoolSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SubnetPoolSpec.

func (*SubnetPoolSpec) DeepCopyInto

func (in *SubnetPoolSpec) DeepCopyInto(out *SubnetPoolSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SubnetPoolStatus

type SubnetPoolStatus struct {
	// 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.
	//
	// +kubebuilder:validation:MaxItems:=32
	// +patchMergeKey=type
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=type
	// +optional
	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"`

	// resource contains the observed state of the OpenStack resource.
	// +optional
	Resource *SubnetPoolResourceStatus `json:"resource,omitempty"`

	// lastSyncTime is the timestamp of the last successful reconciliation
	// that fetched state from OpenStack. It is updated each time the
	// controller successfully reads the resource state from the OpenStack
	// API.
	// +optional
	LastSyncTime *metav1.Time `json:"lastSyncTime,omitempty"`
}

SubnetPoolStatus defines the observed state of an ORC resource.

func (*SubnetPoolStatus) DeepCopy

func (in *SubnetPoolStatus) DeepCopy() *SubnetPoolStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SubnetPoolStatus.

func (*SubnetPoolStatus) DeepCopyInto

func (in *SubnetPoolStatus) DeepCopyInto(out *SubnetPoolStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SubnetResourceSpec

type SubnetResourceSpec struct {
	// name is a human-readable name of the subnet. If not set, the object's name will be used.
	// +optional
	Name *OpenStackName `json:"name,omitempty"`

	// description is a human-readable description for the resource.
	// +optional
	Description *NeutronDescription `json:"description,omitempty"`

	// networkRef is a reference to the ORC Network which this subnet is associated with.
	// +required
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="networkRef is immutable"
	// +orc:kustomize:ref=Network
	NetworkRef KubernetesNameRef `json:"networkRef,omitempty"`

	// tags is a list of tags which will be applied to the subnet.
	// +kubebuilder:validation:MaxItems:=64
	// +listType=set
	// +optional
	Tags []NeutronTag `json:"tags,omitempty"`

	// ipVersion is the IP version for the subnet.
	// +required
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="ipVersion is immutable"
	IPVersion IPVersion `json:"ipVersion"`

	// cidr is the address CIDR of the subnet. It must match the IP version specified in IPVersion.
	// +required
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="cidr is immutable"
	CIDR CIDR `json:"cidr,omitempty"`

	// allocationPools are IP Address pools that will be available for DHCP. IP
	// addresses must be in CIDR.
	// +kubebuilder:validation:MaxItems:=32
	// +listType=atomic
	// +optional
	AllocationPools []AllocationPool `json:"allocationPools,omitempty"`

	// gateway specifies the default gateway of the subnet. If not specified,
	// neutron will add one automatically. To disable this behaviour, specify a
	// gateway with a type of None.
	// +optional
	Gateway *SubnetGateway `json:"gateway,omitempty"`

	// enableDHCP will either enable to disable the DHCP service.
	// +optional
	EnableDHCP *bool `json:"enableDHCP,omitempty"`

	// dnsNameservers are the nameservers to be set via DHCP.
	// +kubebuilder:validation:MaxItems:=16
	// +listType=set
	// +optional
	DNSNameservers []IPvAny `json:"dnsNameservers,omitempty"`

	// dnsPublishFixedIP will either enable or disable the publication of
	// fixed IPs to the DNS. Defaults to false.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="dnsPublishFixedIP is immutable"
	DNSPublishFixedIP *bool `json:"dnsPublishFixedIP,omitempty"`

	// hostRoutes are any static host routes to be set via DHCP.
	// +kubebuilder:validation:MaxItems:=256
	// +listType=atomic
	// +optional
	HostRoutes []HostRoute `json:"hostRoutes,omitempty"`

	// ipv6 contains IPv6-specific options. It may only be set if IPVersion is 6.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="ipv6 is immutable"
	IPv6 *IPv6Options `json:"ipv6,omitempty"`

	// routerRef specifies a router to attach the subnet to
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="routerRef is immutable"
	// +orc:kustomize:ref=Router
	RouterRef *KubernetesNameRef `json:"routerRef,omitempty"`

	// projectRef is a reference to the ORC Project this resource is associated with.
	// Typically, only used by admin.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="projectRef is immutable"
	// +orc:kustomize:ref=Project
	ProjectRef *KubernetesNameRef `json:"projectRef,omitempty"`
}

func (*SubnetResourceSpec) DeepCopy

func (in *SubnetResourceSpec) DeepCopy() *SubnetResourceSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SubnetResourceSpec.

func (*SubnetResourceSpec) DeepCopyInto

func (in *SubnetResourceSpec) DeepCopyInto(out *SubnetResourceSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SubnetResourceStatus

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"`

	// description is a human-readable description for the resource.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	Description string `json:"description,omitempty"`

	// ipVersion specifies IP version, either `4' or `6'.
	// +optional
	IPVersion *int32 `json:"ipVersion,omitempty"`

	// cidr representing IP range for this subnet, based on IP version.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	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"`

	// dnsNameservers is a list of name servers used by hosts in this subnet.
	// +kubebuilder:validation:MaxItems:=16
	// +kubebuilder:validation:items:MaxLength=1024
	// +listType=atomic
	// +optional
	DNSNameservers []string `json:"dnsNameservers,omitempty"`

	// dnsPublishFixedIP specifies whether the fixed IP addresses are published to the DNS.
	// +optional
	DNSPublishFixedIP *bool `json:"dnsPublishFixedIP,omitempty"`

	// allocationPools is a list of sub-ranges within CIDR available for dynamic
	// allocation to ports.
	// +kubebuilder:validation:MaxItems:=32
	// +listType=atomic
	// +optional
	AllocationPools []AllocationPoolStatus `json:"allocationPools,omitempty"`

	// hostRoutes is a list of routes that should be used by devices with IPs
	// from this subnet (not including local subnet route).
	// +kubebuilder:validation:MaxItems:=256
	// +listType=atomic
	// +optional
	HostRoutes []HostRouteStatus `json:"hostRoutes,omitempty"`

	// enableDHCP specifies whether DHCP is enabled for this subnet or not.
	// +optional
	EnableDHCP *bool `json:"enableDHCP,omitempty"`

	// networkID is the ID of the network to which the subnet belongs.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	NetworkID string `json:"networkID,omitempty"`

	// projectID is the project owner of the subnet.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	ProjectID string `json:"projectID,omitempty"`

	// ipv6AddressMode specifies mechanisms for assigning IPv6 IP addresses.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	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"`

	// subnetPoolID is the id of the subnet pool associated with the subnet.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	SubnetPoolID string `json:"subnetPoolID,omitempty"`

	// tags optionally set via extensions/attributestags
	// +kubebuilder:validation:MaxItems:=64
	// +kubebuilder:validation:items:MaxLength=1024
	// +listType=atomic
	// +optional
	Tags []string `json:"tags,omitempty"`

	NeutronStatusMetadata `json:",inline"`
}

func (*SubnetResourceStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SubnetResourceStatus.

func (*SubnetResourceStatus) DeepCopyInto

func (in *SubnetResourceStatus) DeepCopyInto(out *SubnetResourceStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SubnetSpec

type SubnetSpec struct {
	// import refers to an existing OpenStack resource which will be imported instead of
	// creating a new one.
	// +optional
	Import *SubnetImport `json:"import,omitempty"`

	// resource specifies the desired state of the resource.
	//
	// resource may not be specified if the management policy is `unmanaged`.
	//
	// resource must be specified if the management policy is `managed`.
	// +optional
	Resource *SubnetResourceSpec `json:"resource,omitempty"`

	// managementPolicy defines how ORC will treat the object. Valid values are
	// `managed`: ORC will create, update, and delete the resource; `unmanaged`:
	// ORC will import an existing resource, and will not apply updates to it or
	// delete it.
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
	// +kubebuilder:default:=managed
	// +optional
	ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`

	// managedOptions specifies options which may be applied to managed objects.
	// +optional
	ManagedOptions *ManagedOptions `json:"managedOptions,omitempty"`

	// resyncPeriod defines how frequently the controller will re-reconcile
	// this resource even when no changes have been detected. This overrides
	// the global default resync period. The value must be a valid Go duration
	// string, e.g. "10m", "1h". Set to "0s" to disable periodic resync for
	// this resource. Very low values may cause excessive OpenStack API load.
	// +optional
	ResyncPeriod *metav1.Duration `json:"resyncPeriod,omitempty"` //nolint:kubeapilinter // metav1.Duration is appropriate for user-facing duration config

	// cloudCredentialsRef points to a secret containing OpenStack credentials
	// +required
	CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}

SubnetSpec defines the desired state of an ORC object. +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? has(self.resource) : true",message="resource must be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? !has(self.__import__) : true",message="import may not be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? !has(self.resource) : true",message="resource may not be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? has(self.__import__) : true",message="import must be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="has(self.managedOptions) ? self.managementPolicy == 'managed' : true",message="managedOptions may only be provided when policy is managed"

func (*SubnetSpec) DeepCopy

func (in *SubnetSpec) DeepCopy() *SubnetSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SubnetSpec.

func (*SubnetSpec) DeepCopyInto

func (in *SubnetSpec) DeepCopyInto(out *SubnetSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SubnetStatus

type SubnetStatus struct {
	// 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.
	//
	// +kubebuilder:validation:MaxItems:=32
	// +patchMergeKey=type
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=type
	// +optional
	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"`

	// resource contains the observed state of the OpenStack resource.
	// +optional
	Resource *SubnetResourceStatus `json:"resource,omitempty"`

	// lastSyncTime is the timestamp of the last successful reconciliation
	// that fetched state from OpenStack. It is updated each time the
	// controller successfully reads the resource state from the OpenStack
	// API.
	// +optional
	LastSyncTime *metav1.Time `json:"lastSyncTime,omitempty"`
}

SubnetStatus defines the observed state of an ORC resource.

func (*SubnetStatus) DeepCopy

func (in *SubnetStatus) DeepCopy() *SubnetStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SubnetStatus.

func (*SubnetStatus) DeepCopyInto

func (in *SubnetStatus) DeepCopyInto(out *SubnetStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Trunk

type Trunk struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the object metadata
	// +optional
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// spec specifies the desired state of the resource.
	// +required
	Spec TrunkSpec `json:"spec,omitzero"`

	// status defines the observed state of the resource.
	// +optional
	Status TrunkStatus `json:"status,omitempty"`
}

Trunk is the Schema for an ORC resource.

func (*Trunk) DeepCopy

func (in *Trunk) DeepCopy() *Trunk

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Trunk.

func (*Trunk) DeepCopyInto

func (in *Trunk) DeepCopyInto(out *Trunk)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Trunk) DeepCopyObject

func (in *Trunk) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*Trunk) GetCloudCredentialsRef

func (i *Trunk) GetCloudCredentialsRef() (*string, *CloudCredentialsReference)

func (*Trunk) GetConditions

func (i *Trunk) GetConditions() []metav1.Condition

type TrunkFilter

type TrunkFilter struct {
	// name of the existing resource
	// +optional
	Name *OpenStackName `json:"name,omitempty"`

	// description of the existing resource
	// +optional
	Description *NeutronDescription `json:"description,omitempty"`

	// portRef is a reference to the ORC Port which this resource is associated with.
	// +optional
	// +orc:kustomize:ref=Port
	PortRef *KubernetesNameRef `json:"portRef,omitempty"`

	// projectRef is a reference to the ORC Project which this resource is associated with.
	// +optional
	// +orc:kustomize:ref=Project
	ProjectRef *KubernetesNameRef `json:"projectRef,omitempty"`

	// adminStateUp is the administrative state of the trunk.
	// +optional
	AdminStateUp *bool `json:"adminStateUp,omitempty"`

	FilterByNeutronTags `json:",inline"`
}

TrunkFilter defines an existing resource by its properties +kubebuilder:validation:MinProperties:=1

func (*TrunkFilter) DeepCopy

func (in *TrunkFilter) DeepCopy() *TrunkFilter

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TrunkFilter.

func (*TrunkFilter) DeepCopyInto

func (in *TrunkFilter) DeepCopyInto(out *TrunkFilter)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type TrunkImport

type TrunkImport 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.
	// +kubebuilder:validation:Format:=uuid
	// +kubebuilder:validation:MaxLength:=36
	// +optional
	ID *string `json:"id,omitempty"` //nolint:kubeapilinter

	// 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.
	// +optional
	Filter *TrunkFilter `json:"filter,omitempty"`
}

TrunkImport specifies an existing resource which will be imported instead of creating a new one +kubebuilder:validation:MinProperties:=1 +kubebuilder:validation:MaxProperties:=1

func (*TrunkImport) DeepCopy

func (in *TrunkImport) DeepCopy() *TrunkImport

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TrunkImport.

func (*TrunkImport) DeepCopyInto

func (in *TrunkImport) DeepCopyInto(out *TrunkImport)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type TrunkList

type TrunkList struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the list metadata
	// +optional
	metav1.ListMeta `json:"metadata,omitempty"`

	// items contains a list of Trunk.
	// +required
	Items []Trunk `json:"items"`
}

TrunkList contains a list of Trunk.

func (*TrunkList) DeepCopy

func (in *TrunkList) DeepCopy() *TrunkList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TrunkList.

func (*TrunkList) DeepCopyInto

func (in *TrunkList) DeepCopyInto(out *TrunkList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*TrunkList) DeepCopyObject

func (in *TrunkList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*TrunkList) GetItems

func (l *TrunkList) GetItems() []Trunk

type TrunkResourceSpec

type TrunkResourceSpec struct {
	// name will be the name of the created resource. If not specified, the
	// name of the ORC object will be used.
	// +optional
	Name *OpenStackName `json:"name,omitempty"`

	// description is a human-readable description for the resource.
	// +optional
	Description *NeutronDescription `json:"description,omitempty"`

	// portRef is a reference to the ORC Port which this resource is associated with.
	// +required
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="portRef is immutable"
	// +orc:kustomize:ref=Port
	PortRef KubernetesNameRef `json:"portRef,omitempty"`

	// projectRef is a reference to the ORC Project which this resource is associated with.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="projectRef is immutable"
	// +orc:kustomize:ref=Project
	ProjectRef *KubernetesNameRef `json:"projectRef,omitempty"`

	// adminStateUp is the administrative state of the trunk. If false (down),
	// the trunk does not forward packets.
	// +optional
	AdminStateUp *bool `json:"adminStateUp,omitempty"`

	// subports is the list of ports to attach to the trunk.
	// +optional
	// +kubebuilder:validation:MaxItems:=1024
	// +listType=atomic
	Subports []TrunkSubportSpec `json:"subports,omitempty"`

	// tags is a list of Neutron tags to apply to the trunk.
	// +kubebuilder:validation:MaxItems:=64
	// +listType=set
	// +optional
	Tags []NeutronTag `json:"tags,omitempty"`
}

TrunkResourceSpec contains the desired state of the resource.

func (*TrunkResourceSpec) DeepCopy

func (in *TrunkResourceSpec) DeepCopy() *TrunkResourceSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TrunkResourceSpec.

func (*TrunkResourceSpec) DeepCopyInto

func (in *TrunkResourceSpec) DeepCopyInto(out *TrunkResourceSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type TrunkResourceStatus

type TrunkResourceStatus struct {
	// name is a Human-readable name for the resource. Might not be unique.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	Name string `json:"name,omitempty"`

	// description is a human-readable description for the resource.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	Description string `json:"description,omitempty"`

	// portID is the ID of the Port to which the resource is associated.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	PortID string `json:"portID,omitempty"`

	// projectID is the ID of the Project to which the resource is associated.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	ProjectID string `json:"projectID,omitempty"`

	// tenantID is the project owner of the trunk (alias of projectID in some deployments).
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	TenantID string `json:"tenantID,omitempty"`

	// status indicates whether the trunk is currently operational.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	Status string `json:"status,omitempty"`

	// tags is the list of tags on the resource.
	// +kubebuilder:validation:MaxItems=64
	// +kubebuilder:validation:items:MaxLength=1024
	// +listType=atomic
	// +optional
	Tags []string `json:"tags,omitempty"`

	NeutronStatusMetadata `json:",inline"`

	// adminStateUp is the administrative state of the trunk.
	// +optional
	AdminStateUp *bool `json:"adminStateUp,omitempty"`

	// subports is a list of ports associated with the trunk.
	// +kubebuilder:validation:MaxItems=1024
	// +listType=atomic
	// +optional
	Subports []TrunkSubportStatus `json:"subports,omitempty"`
}

TrunkResourceStatus represents the observed state of the resource.

func (*TrunkResourceStatus) DeepCopy

func (in *TrunkResourceStatus) DeepCopy() *TrunkResourceStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TrunkResourceStatus.

func (*TrunkResourceStatus) DeepCopyInto

func (in *TrunkResourceStatus) DeepCopyInto(out *TrunkResourceStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type TrunkSpec

type TrunkSpec struct {
	// import refers to an existing OpenStack resource which will be imported instead of
	// creating a new one.
	// +optional
	Import *TrunkImport `json:"import,omitempty"`

	// resource specifies the desired state of the resource.
	//
	// resource may not be specified if the management policy is `unmanaged`.
	//
	// resource must be specified if the management policy is `managed`.
	// +optional
	Resource *TrunkResourceSpec `json:"resource,omitempty"`

	// managementPolicy defines how ORC will treat the object. Valid values are
	// `managed`: ORC will create, update, and delete the resource; `unmanaged`:
	// ORC will import an existing resource, and will not apply updates to it or
	// delete it.
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
	// +kubebuilder:default:=managed
	// +optional
	ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`

	// managedOptions specifies options which may be applied to managed objects.
	// +optional
	ManagedOptions *ManagedOptions `json:"managedOptions,omitempty"`

	// resyncPeriod defines how frequently the controller will re-reconcile
	// this resource even when no changes have been detected. This overrides
	// the global default resync period. The value must be a valid Go duration
	// string, e.g. "10m", "1h". Set to "0s" to disable periodic resync for
	// this resource. Very low values may cause excessive OpenStack API load.
	// +optional
	ResyncPeriod *metav1.Duration `json:"resyncPeriod,omitempty"` //nolint:kubeapilinter // metav1.Duration is appropriate for user-facing duration config

	// cloudCredentialsRef points to a secret containing OpenStack credentials
	// +required
	CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}

TrunkSpec defines the desired state of an ORC object. +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? has(self.resource) : true",message="resource must be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? !has(self.__import__) : true",message="import may not be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? !has(self.resource) : true",message="resource may not be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? has(self.__import__) : true",message="import must be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="has(self.managedOptions) ? self.managementPolicy == 'managed' : true",message="managedOptions may only be provided when policy is managed"

func (*TrunkSpec) DeepCopy

func (in *TrunkSpec) DeepCopy() *TrunkSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TrunkSpec.

func (*TrunkSpec) DeepCopyInto

func (in *TrunkSpec) DeepCopyInto(out *TrunkSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type TrunkStatus

type TrunkStatus struct {
	// 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.
	//
	// +kubebuilder:validation:MaxItems:=32
	// +patchMergeKey=type
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=type
	// +optional
	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"`

	// resource contains the observed state of the OpenStack resource.
	// +optional
	Resource *TrunkResourceStatus `json:"resource,omitempty"`

	// lastSyncTime is the timestamp of the last successful reconciliation
	// that fetched state from OpenStack. It is updated each time the
	// controller successfully reads the resource state from the OpenStack
	// API.
	// +optional
	LastSyncTime *metav1.Time `json:"lastSyncTime,omitempty"`
}

TrunkStatus defines the observed state of an ORC resource.

func (*TrunkStatus) DeepCopy

func (in *TrunkStatus) DeepCopy() *TrunkStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TrunkStatus.

func (*TrunkStatus) DeepCopyInto

func (in *TrunkStatus) DeepCopyInto(out *TrunkStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type TrunkSubportSpec

type TrunkSubportSpec struct {
	// portRef is a reference to the ORC Port that will be attached as a subport.
	// +required
	// +orc:kustomize:ref=Port
	PortRef KubernetesNameRef `json:"portRef,omitempty"`

	// segmentationID is the segmentation ID for the subport (e.g. VLAN ID).
	// +required
	// +kubebuilder:validation:Minimum:=1
	// +kubebuilder:validation:Maximum:=4094
	SegmentationID int32 `json:"segmentationID,omitempty"`

	// segmentationType is the segmentation type for the subport (e.g. vlan).
	// +required
	// +kubebuilder:validation:MinLength:=1
	// +kubebuilder:validation:MaxLength:=32
	// +kubebuilder:validation:Enum:=inherit;vlan
	SegmentationType string `json:"segmentationType,omitempty"`
}

TrunkSubportSpec represents a subport to attach to a trunk. It maps to gophercloud's trunks.Subport.

func (*TrunkSubportSpec) DeepCopy

func (in *TrunkSubportSpec) DeepCopy() *TrunkSubportSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TrunkSubportSpec.

func (*TrunkSubportSpec) DeepCopyInto

func (in *TrunkSubportSpec) DeepCopyInto(out *TrunkSubportSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type TrunkSubportStatus

type TrunkSubportStatus struct {
	// portID is the OpenStack ID of the Port attached as a subport.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	PortID string `json:"portID,omitempty"`

	// segmentationID is the segmentation ID for the subport (e.g. VLAN ID).
	// +optional
	SegmentationID int32 `json:"segmentationID,omitempty"`

	// segmentationType is the segmentation type for the subport (e.g. vlan).
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	SegmentationType string `json:"segmentationType,omitempty"`
}

TrunkSubportStatus represents an attached subport on a trunk. It maps to gophercloud's trunks.Subport.

func (*TrunkSubportStatus) DeepCopy

func (in *TrunkSubportStatus) DeepCopy() *TrunkSubportStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TrunkSubportStatus.

func (*TrunkSubportStatus) DeepCopyInto

func (in *TrunkSubportStatus) DeepCopyInto(out *TrunkSubportStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type UUID

type UUID string

+kubebuilder:validation:Format:=uuid +kubebuilder:validation:MaxLength:=36

type User

type User struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the object metadata
	// +optional
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// spec specifies the desired state of the resource.
	// +required
	Spec UserSpec `json:"spec,omitzero"`

	// status defines the observed state of the resource.
	// +optional
	Status UserStatus `json:"status,omitempty"`
}

User is the Schema for an ORC resource.

func (*User) DeepCopy

func (in *User) DeepCopy() *User

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new User.

func (*User) DeepCopyInto

func (in *User) DeepCopyInto(out *User)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*User) DeepCopyObject

func (in *User) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*User) GetCloudCredentialsRef

func (i *User) GetCloudCredentialsRef() (*string, *CloudCredentialsReference)

func (*User) GetConditions

func (i *User) GetConditions() []metav1.Condition

type UserDataSpec

type UserDataSpec struct {
	// secretRef is a reference to a Secret containing the user data for this server.
	// +optional
	// +orc:kustomize:ref=Secret
	SecretRef *KubernetesNameRef `json:"secretRef,omitempty"`
}

+kubebuilder:validation:MaxProperties:=1 +kubebuilder:validation:MinProperties:=1

func (*UserDataSpec) DeepCopy

func (in *UserDataSpec) DeepCopy() *UserDataSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserDataSpec.

func (*UserDataSpec) DeepCopyInto

func (in *UserDataSpec) DeepCopyInto(out *UserDataSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type UserFilter

type UserFilter struct {
	// name of the existing resource
	// +optional
	Name *OpenStackName `json:"name,omitempty"`

	// domainRef is a reference to the ORC Domain which this resource is associated with.
	// +optional
	// +orc:kustomize:ref=Domain
	DomainRef *KubernetesNameRef `json:"domainRef,omitempty"`
}

UserFilter defines an existing resource by its properties +kubebuilder:validation:MinProperties:=1

func (*UserFilter) DeepCopy

func (in *UserFilter) DeepCopy() *UserFilter

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserFilter.

func (*UserFilter) DeepCopyInto

func (in *UserFilter) DeepCopyInto(out *UserFilter)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type UserImport

type UserImport 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.
	// +kubebuilder:validation:Format:=uuid
	// +kubebuilder:validation:MaxLength:=36
	// +optional
	ID *string `json:"id,omitempty"` //nolint:kubeapilinter

	// 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.
	// +optional
	Filter *UserFilter `json:"filter,omitempty"`
}

UserImport specifies an existing resource which will be imported instead of creating a new one +kubebuilder:validation:MinProperties:=1 +kubebuilder:validation:MaxProperties:=1

func (*UserImport) DeepCopy

func (in *UserImport) DeepCopy() *UserImport

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserImport.

func (*UserImport) DeepCopyInto

func (in *UserImport) DeepCopyInto(out *UserImport)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type UserList

type UserList struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the list metadata
	// +optional
	metav1.ListMeta `json:"metadata,omitempty"`

	// items contains a list of User.
	// +required
	Items []User `json:"items"`
}

UserList contains a list of User.

func (*UserList) DeepCopy

func (in *UserList) DeepCopy() *UserList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserList.

func (*UserList) DeepCopyInto

func (in *UserList) DeepCopyInto(out *UserList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*UserList) DeepCopyObject

func (in *UserList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*UserList) GetItems

func (l *UserList) GetItems() []User

type UserResourceSpec

type UserResourceSpec struct {
	// name will be the name of the created resource. If not specified, the
	// name of the ORC object will be used.
	// +optional
	Name *OpenStackName `json:"name,omitempty"`

	// description is a human-readable description for the resource.
	// +kubebuilder:validation:MinLength:=1
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	Description *string `json:"description,omitempty"`

	// domainRef is a reference to the ORC Domain which this resource is associated with.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="domainRef is immutable"
	// +orc:kustomize:ref=Domain
	DomainRef *KubernetesNameRef `json:"domainRef,omitempty"`

	// defaultProjectRef is a reference to the Default Project which this resource is associated with.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="defaultProjectRef is immutable"
	// +orc:kustomize:ref=Project
	DefaultProjectRef *KubernetesNameRef `json:"defaultProjectRef,omitempty"`

	// enabled defines whether a user is enabled or disabled
	// +optional
	Enabled *bool `json:"enabled,omitempty"`

	// passwordRef is a reference to a Secret containing the password
	// for this user. The Secret must contain a key named "password".
	// If not specified, the user is created without a password.
	// +optional
	// +orc:kustomize:ref=Secret
	PasswordRef *KubernetesNameRef `json:"passwordRef,omitempty"`
}

UserResourceSpec contains the desired state of the resource. +kubebuilder:validation:XValidation:rule="!has(oldSelf.passwordRef) || has(self.passwordRef)",message="passwordRef may not be removed once set"

func (*UserResourceSpec) DeepCopy

func (in *UserResourceSpec) DeepCopy() *UserResourceSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserResourceSpec.

func (*UserResourceSpec) DeepCopyInto

func (in *UserResourceSpec) DeepCopyInto(out *UserResourceSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type UserResourceStatus

type UserResourceStatus struct {
	// name is a Human-readable name for the resource. Might not be unique.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	Name string `json:"name,omitempty"`

	// description is a human-readable description for the resource.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	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"`

	// defaultProjectID is the ID of the Default Project to which the user is associated with.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	DefaultProjectID string `json:"defaultProjectID,omitempty"`

	// enabled defines whether a user is enabled or disabled
	// +optional
	Enabled *bool `json:"enabled,omitempty"`

	// passwordExpiresAt is the timestamp at which the user's password expires.
	// +kubebuilder:validation:MaxLength:=1024
	// +optional
	PasswordExpiresAt string `json:"passwordExpiresAt,omitempty"`

	// appliedPasswordRef is the name of the Secret containing the
	// password that was last applied to the OpenStack resource.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	AppliedPasswordRef string `json:"appliedPasswordRef,omitempty"`
}

UserResourceStatus represents the observed state of the resource.

func (*UserResourceStatus) DeepCopy

func (in *UserResourceStatus) DeepCopy() *UserResourceStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserResourceStatus.

func (*UserResourceStatus) DeepCopyInto

func (in *UserResourceStatus) DeepCopyInto(out *UserResourceStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type UserSpec

type UserSpec struct {
	// import refers to an existing OpenStack resource which will be imported instead of
	// creating a new one.
	// +optional
	Import *UserImport `json:"import,omitempty"`

	// resource specifies the desired state of the resource.
	//
	// resource may not be specified if the management policy is `unmanaged`.
	//
	// resource must be specified if the management policy is `managed`.
	// +optional
	Resource *UserResourceSpec `json:"resource,omitempty"`

	// managementPolicy defines how ORC will treat the object. Valid values are
	// `managed`: ORC will create, update, and delete the resource; `unmanaged`:
	// ORC will import an existing resource, and will not apply updates to it or
	// delete it.
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
	// +kubebuilder:default:=managed
	// +optional
	ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`

	// managedOptions specifies options which may be applied to managed objects.
	// +optional
	ManagedOptions *ManagedOptions `json:"managedOptions,omitempty"`

	// resyncPeriod defines how frequently the controller will re-reconcile
	// this resource even when no changes have been detected. This overrides
	// the global default resync period. The value must be a valid Go duration
	// string, e.g. "10m", "1h". Set to "0s" to disable periodic resync for
	// this resource. Very low values may cause excessive OpenStack API load.
	// +optional
	ResyncPeriod *metav1.Duration `json:"resyncPeriod,omitempty"` //nolint:kubeapilinter // metav1.Duration is appropriate for user-facing duration config

	// cloudCredentialsRef points to a secret containing OpenStack credentials
	// +required
	CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}

UserSpec defines the desired state of an ORC object. +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? has(self.resource) : true",message="resource must be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? !has(self.__import__) : true",message="import may not be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? !has(self.resource) : true",message="resource may not be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? has(self.__import__) : true",message="import must be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="has(self.managedOptions) ? self.managementPolicy == 'managed' : true",message="managedOptions may only be provided when policy is managed"

func (*UserSpec) DeepCopy

func (in *UserSpec) DeepCopy() *UserSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserSpec.

func (*UserSpec) DeepCopyInto

func (in *UserSpec) DeepCopyInto(out *UserSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type UserStatus

type UserStatus struct {
	// 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.
	//
	// +kubebuilder:validation:MaxItems:=32
	// +patchMergeKey=type
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=type
	// +optional
	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"`

	// resource contains the observed state of the OpenStack resource.
	// +optional
	Resource *UserResourceStatus `json:"resource,omitempty"`

	// lastSyncTime is the timestamp of the last successful reconciliation
	// that fetched state from OpenStack. It is updated each time the
	// controller successfully reads the resource state from the OpenStack
	// API.
	// +optional
	LastSyncTime *metav1.Time `json:"lastSyncTime,omitempty"`
}

UserStatus defines the observed state of an ORC resource.

func (*UserStatus) DeepCopy

func (in *UserStatus) DeepCopy() *UserStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserStatus.

func (*UserStatus) DeepCopyInto

func (in *UserStatus) DeepCopyInto(out *UserStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Volume

type Volume struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the object metadata
	// +optional
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// spec specifies the desired state of the resource.
	// +required
	Spec VolumeSpec `json:"spec,omitzero"`

	// status defines the observed state of the resource.
	// +optional
	Status VolumeStatus `json:"status,omitempty"`
}

Volume is the Schema for an ORC resource.

func (*Volume) DeepCopy

func (in *Volume) DeepCopy() *Volume

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Volume.

func (*Volume) DeepCopyInto

func (in *Volume) DeepCopyInto(out *Volume)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Volume) DeepCopyObject

func (in *Volume) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*Volume) GetCloudCredentialsRef

func (i *Volume) GetCloudCredentialsRef() (*string, *CloudCredentialsReference)

func (*Volume) GetConditions

func (i *Volume) GetConditions() []metav1.Condition

type VolumeAttachmentStatus

type VolumeAttachmentStatus struct {
	// attachmentID represents the attachment UUID.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	AttachmentID string `json:"attachmentID"`

	// serverID is the UUID of the server to which the volume is attached.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	ServerID string `json:"serverID"`

	// device is the name of the device in the instance.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	Device string `json:"device"`

	// 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"`
}

func (*VolumeAttachmentStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeAttachmentStatus.

func (*VolumeAttachmentStatus) DeepCopyInto

func (in *VolumeAttachmentStatus) DeepCopyInto(out *VolumeAttachmentStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type VolumeFilter

type VolumeFilter struct {
	// name of the existing resource
	// +optional
	Name *OpenStackName `json:"name,omitempty"`

	// description of the existing resource
	// +kubebuilder:validation:MinLength:=1
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	Description *string `json:"description,omitempty"`

	// size is the size of the volume in GiB.
	// +kubebuilder:validation:Minimum=1
	// +optional
	Size *int32 `json:"size,omitempty"`

	// availabilityZone is the availability zone of the existing resource
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	AvailabilityZone string `json:"availabilityZone,omitempty"`
}

VolumeFilter defines an existing resource by its properties +kubebuilder:validation:MinProperties:=1

func (*VolumeFilter) DeepCopy

func (in *VolumeFilter) DeepCopy() *VolumeFilter

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeFilter.

func (*VolumeFilter) DeepCopyInto

func (in *VolumeFilter) DeepCopyInto(out *VolumeFilter)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type VolumeImport

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.
	// +kubebuilder:validation:Format:=uuid
	// +kubebuilder:validation:MaxLength:=36
	// +optional
	ID *string `json:"id,omitempty"` //nolint:kubeapilinter

	// 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.
	// +optional
	Filter *VolumeFilter `json:"filter,omitempty"`
}

VolumeImport specifies an existing resource which will be imported instead of creating a new one +kubebuilder:validation:MinProperties:=1 +kubebuilder:validation:MaxProperties:=1

func (*VolumeImport) DeepCopy

func (in *VolumeImport) DeepCopy() *VolumeImport

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeImport.

func (*VolumeImport) DeepCopyInto

func (in *VolumeImport) DeepCopyInto(out *VolumeImport)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type VolumeList

type VolumeList struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the list metadata
	// +optional
	metav1.ListMeta `json:"metadata,omitempty"`

	// items contains a list of Volume.
	// +required
	Items []Volume `json:"items"`
}

VolumeList contains a list of Volume.

func (*VolumeList) DeepCopy

func (in *VolumeList) DeepCopy() *VolumeList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeList.

func (*VolumeList) DeepCopyInto

func (in *VolumeList) DeepCopyInto(out *VolumeList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*VolumeList) DeepCopyObject

func (in *VolumeList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*VolumeList) GetItems

func (l *VolumeList) GetItems() []Volume

type VolumeMetadata

type VolumeMetadata struct {
	// name is the name of the metadata
	// +kubebuilder:validation:MaxLength:=255
	// +required
	Name string `json:"name"`

	// value is the value of the metadata
	// +kubebuilder:validation:MaxLength:=255
	// +required
	Value string `json:"value"`
}

func (*VolumeMetadata) DeepCopy

func (in *VolumeMetadata) DeepCopy() *VolumeMetadata

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeMetadata.

func (*VolumeMetadata) DeepCopyInto

func (in *VolumeMetadata) DeepCopyInto(out *VolumeMetadata)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type VolumeMetadataStatus

type VolumeMetadataStatus struct {
	// name is the name of the metadata
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	Name string `json:"name,omitempty"`

	// value is the value of the metadata
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	Value string `json:"value,omitempty"`
}

func (*VolumeMetadataStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeMetadataStatus.

func (*VolumeMetadataStatus) DeepCopyInto

func (in *VolumeMetadataStatus) DeepCopyInto(out *VolumeMetadataStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type VolumeResourceSpec

type VolumeResourceSpec struct {
	// name will be the name of the created resource. If not specified, the
	// name of the ORC object will be used.
	// +optional
	Name *OpenStackName `json:"name,omitempty"`

	// description is a human-readable description for the resource.
	// +kubebuilder:validation:MinLength:=1
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	Description *string `json:"description,omitempty"`

	// size is the size of the volume, in gibibytes (GiB).
	// +kubebuilder:validation:Minimum=1
	// +required
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="size is immutable"
	Size int32 `json:"size,omitempty"`

	// volumeTypeRef is a reference to the ORC VolumeType which this resource is associated with.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="volumeTypeRef is immutable"
	// +orc:kustomize:ref=VolumeType
	VolumeTypeRef *KubernetesNameRef `json:"volumeTypeRef,omitempty"`

	// availabilityZone is the availability zone in which to create the volume.
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="availabilityZone is immutable"
	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
	// mutability for metadata as we might end up in a state that is not reconciliable
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="metadata is immutable"
	// +kubebuilder:validation:MaxItems:=64
	// +listType=atomic
	// +optional
	Metadata []VolumeMetadata `json:"metadata,omitempty"`

	// imageRef is a reference to an ORC Image. If specified, creates a
	// bootable volume from this image. The volume size must be >= the
	// image's min_disk requirement.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="imageRef is immutable"
	// +orc:kustomize:ref=Image
	ImageRef *KubernetesNameRef `json:"imageRef,omitempty"`
}

VolumeResourceSpec contains the desired state of the resource.

func (*VolumeResourceSpec) DeepCopy

func (in *VolumeResourceSpec) DeepCopy() *VolumeResourceSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeResourceSpec.

func (*VolumeResourceSpec) DeepCopyInto

func (in *VolumeResourceSpec) DeepCopyInto(out *VolumeResourceSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type VolumeResourceStatus

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"`

	// description is a human-readable description for the resource.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	Description string `json:"description,omitempty"`

	// size is the size of the volume in GiB.
	// +optional
	Size *int32 `json:"size,omitempty"`

	// status represents the current status of the volume.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	Status string `json:"status,omitempty"`

	// availabilityZone is which availability zone the volume is in.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	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"`

	// volumeType is the name of associated the volume type.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	VolumeType string `json:"volumeType,omitempty"`

	// snapshotID is the ID of the snapshot from which the volume was created
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	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"`

	// backupID is the ID of the backup from which the volume was restored
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	BackupID string `json:"backupID,omitempty"`

	// metadata key and value pairs to be associated with the volume.
	// +kubebuilder:validation:MaxItems:=64
	// +listType=atomic
	// +optional
	Metadata []VolumeMetadataStatus `json:"metadata,omitempty"`

	// userID is the ID of the user who created the volume.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	UserID string `json:"userID,omitempty"`

	// bootable indicates whether this is a bootable volume.
	// +optional
	Bootable *bool `json:"bootable,omitempty"`

	// imageID is the ID of the image this volume was created from, if any.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	ImageID string `json:"imageID,omitempty"`

	// encrypted denotes if the volume is encrypted.
	// +optional
	Encrypted *bool `json:"encrypted,omitempty"`

	// replicationStatus is the status of replication.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	ReplicationStatus string `json:"replicationStatus,omitempty"`

	// consistencyGroupID is the consistency group ID.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	ConsistencyGroupID string `json:"consistencyGroupID,omitempty"`

	// multiattach denotes if the volume is multi-attach capable.
	// +optional
	Multiattach *bool `json:"multiattach,omitempty"`

	// host is the identifier of the host holding the volume.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	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"`

	// createdAt shows the date and time when the resource was created. The date and time stamp format is ISO 8601
	// +optional
	CreatedAt *metav1.Time `json:"createdAt,omitempty"`

	// updatedAt shows the date and time when the resource was updated. The date and time stamp format is ISO 8601
	// +optional
	UpdatedAt *metav1.Time `json:"updatedAt,omitempty"`
}

VolumeResourceStatus represents the observed state of the resource.

func (*VolumeResourceStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeResourceStatus.

func (*VolumeResourceStatus) DeepCopyInto

func (in *VolumeResourceStatus) DeepCopyInto(out *VolumeResourceStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type VolumeSpec

type VolumeSpec struct {
	// import refers to an existing OpenStack resource which will be imported instead of
	// creating a new one.
	// +optional
	Import *VolumeImport `json:"import,omitempty"`

	// resource specifies the desired state of the resource.
	//
	// resource may not be specified if the management policy is `unmanaged`.
	//
	// resource must be specified if the management policy is `managed`.
	// +optional
	Resource *VolumeResourceSpec `json:"resource,omitempty"`

	// managementPolicy defines how ORC will treat the object. Valid values are
	// `managed`: ORC will create, update, and delete the resource; `unmanaged`:
	// ORC will import an existing resource, and will not apply updates to it or
	// delete it.
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
	// +kubebuilder:default:=managed
	// +optional
	ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`

	// managedOptions specifies options which may be applied to managed objects.
	// +optional
	ManagedOptions *ManagedOptions `json:"managedOptions,omitempty"`

	// resyncPeriod defines how frequently the controller will re-reconcile
	// this resource even when no changes have been detected. This overrides
	// the global default resync period. The value must be a valid Go duration
	// string, e.g. "10m", "1h". Set to "0s" to disable periodic resync for
	// this resource. Very low values may cause excessive OpenStack API load.
	// +optional
	ResyncPeriod *metav1.Duration `json:"resyncPeriod,omitempty"` //nolint:kubeapilinter // metav1.Duration is appropriate for user-facing duration config

	// cloudCredentialsRef points to a secret containing OpenStack credentials
	// +required
	CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}

VolumeSpec defines the desired state of an ORC object. +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? has(self.resource) : true",message="resource must be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? !has(self.__import__) : true",message="import may not be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? !has(self.resource) : true",message="resource may not be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? has(self.__import__) : true",message="import must be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="has(self.managedOptions) ? self.managementPolicy == 'managed' : true",message="managedOptions may only be provided when policy is managed"

func (*VolumeSpec) DeepCopy

func (in *VolumeSpec) DeepCopy() *VolumeSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeSpec.

func (*VolumeSpec) DeepCopyInto

func (in *VolumeSpec) DeepCopyInto(out *VolumeSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type VolumeStatus

type VolumeStatus struct {
	// 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.
	//
	// +kubebuilder:validation:MaxItems:=32
	// +patchMergeKey=type
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=type
	// +optional
	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"`

	// resource contains the observed state of the OpenStack resource.
	// +optional
	Resource *VolumeResourceStatus `json:"resource,omitempty"`

	// lastSyncTime is the timestamp of the last successful reconciliation
	// that fetched state from OpenStack. It is updated each time the
	// controller successfully reads the resource state from the OpenStack
	// API.
	// +optional
	LastSyncTime *metav1.Time `json:"lastSyncTime,omitempty"`
}

VolumeStatus defines the observed state of an ORC resource.

func (*VolumeStatus) DeepCopy

func (in *VolumeStatus) DeepCopy() *VolumeStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeStatus.

func (*VolumeStatus) DeepCopyInto

func (in *VolumeStatus) DeepCopyInto(out *VolumeStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type VolumeType

type VolumeType struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the object metadata
	// +optional
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// spec specifies the desired state of the resource.
	// +required
	Spec VolumeTypeSpec `json:"spec,omitzero"`

	// status defines the observed state of the resource.
	// +optional
	Status VolumeTypeStatus `json:"status,omitempty"`
}

VolumeType is the Schema for an ORC resource.

func (*VolumeType) DeepCopy

func (in *VolumeType) DeepCopy() *VolumeType

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeType.

func (*VolumeType) DeepCopyInto

func (in *VolumeType) DeepCopyInto(out *VolumeType)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*VolumeType) DeepCopyObject

func (in *VolumeType) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*VolumeType) GetCloudCredentialsRef

func (i *VolumeType) GetCloudCredentialsRef() (*string, *CloudCredentialsReference)

func (*VolumeType) GetConditions

func (i *VolumeType) GetConditions() []metav1.Condition

type VolumeTypeExtraSpec

type VolumeTypeExtraSpec struct {
	// name is the name of the extraspec
	// +kubebuilder:validation:MaxLength:=255
	// +required
	Name string `json:"name"`

	// value is the value of the extraspec
	// +kubebuilder:validation:MaxLength:=255
	// +required
	Value string `json:"value"`
}

func (*VolumeTypeExtraSpec) DeepCopy

func (in *VolumeTypeExtraSpec) DeepCopy() *VolumeTypeExtraSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeTypeExtraSpec.

func (*VolumeTypeExtraSpec) DeepCopyInto

func (in *VolumeTypeExtraSpec) DeepCopyInto(out *VolumeTypeExtraSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type VolumeTypeExtraSpecStatus

type VolumeTypeExtraSpecStatus struct {
	// name is the name of the extraspec
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	Name string `json:"name,omitempty"`

	// value is the value of the extraspec
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	Value string `json:"value,omitempty"`
}

func (*VolumeTypeExtraSpecStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeTypeExtraSpecStatus.

func (*VolumeTypeExtraSpecStatus) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type VolumeTypeFilter

type VolumeTypeFilter struct {
	// name of the existing resource
	// +optional
	Name *OpenStackName `json:"name,omitempty"`

	// description of the existing resource
	// +kubebuilder:validation:MinLength:=1
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	Description *string `json:"description,omitempty"`

	// isPublic indicates whether the VolumeType is public.
	// +optional
	IsPublic *bool `json:"isPublic,omitempty"`
}

VolumeTypeFilter defines an existing resource by its properties +kubebuilder:validation:MinProperties:=1

func (*VolumeTypeFilter) DeepCopy

func (in *VolumeTypeFilter) DeepCopy() *VolumeTypeFilter

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeTypeFilter.

func (*VolumeTypeFilter) DeepCopyInto

func (in *VolumeTypeFilter) DeepCopyInto(out *VolumeTypeFilter)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type VolumeTypeImport

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.
	// +kubebuilder:validation:Format:=uuid
	// +kubebuilder:validation:MaxLength:=36
	// +optional
	ID *string `json:"id,omitempty"` //nolint:kubeapilinter

	// 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.
	// +optional
	Filter *VolumeTypeFilter `json:"filter,omitempty"`
}

VolumeTypeImport specifies an existing resource which will be imported instead of creating a new one +kubebuilder:validation:MinProperties:=1 +kubebuilder:validation:MaxProperties:=1

func (*VolumeTypeImport) DeepCopy

func (in *VolumeTypeImport) DeepCopy() *VolumeTypeImport

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeTypeImport.

func (*VolumeTypeImport) DeepCopyInto

func (in *VolumeTypeImport) DeepCopyInto(out *VolumeTypeImport)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type VolumeTypeList

type VolumeTypeList struct {
	metav1.TypeMeta `json:",inline"`

	// metadata contains the list metadata
	// +optional
	metav1.ListMeta `json:"metadata,omitempty"`

	// items contains a list of VolumeType.
	// +required
	Items []VolumeType `json:"items"`
}

VolumeTypeList contains a list of VolumeType.

func (*VolumeTypeList) DeepCopy

func (in *VolumeTypeList) DeepCopy() *VolumeTypeList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeTypeList.

func (*VolumeTypeList) DeepCopyInto

func (in *VolumeTypeList) DeepCopyInto(out *VolumeTypeList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*VolumeTypeList) DeepCopyObject

func (in *VolumeTypeList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*VolumeTypeList) GetItems

func (l *VolumeTypeList) GetItems() []VolumeType

type VolumeTypeResourceSpec

type VolumeTypeResourceSpec struct {
	// name will be the name of the created resource. If not specified, the
	// name of the ORC object will be used.
	// +optional
	Name *OpenStackName `json:"name,omitempty"`

	// description is a human-readable description for the resource.
	// +kubebuilder:validation:MinLength:=1
	// +kubebuilder:validation:MaxLength:=255
	// +optional
	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 []VolumeTypeExtraSpec `json:"extraSpecs,omitempty"`

	// isPublic indicates whether the volume type is public.
	// +optional
	IsPublic *bool `json:"isPublic,omitempty"`
}

VolumeTypeResourceSpec contains the desired state of the resource.

func (*VolumeTypeResourceSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeTypeResourceSpec.

func (*VolumeTypeResourceSpec) DeepCopyInto

func (in *VolumeTypeResourceSpec) DeepCopyInto(out *VolumeTypeResourceSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type VolumeTypeResourceStatus

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"`

	// description is a human-readable description for the resource.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	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"`

	// isPublic indicates whether the VolumeType is public.
	// +optional
	IsPublic *bool `json:"isPublic"`
}

VolumeTypeResourceStatus represents the observed state of the resource.

func (*VolumeTypeResourceStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeTypeResourceStatus.

func (*VolumeTypeResourceStatus) DeepCopyInto

func (in *VolumeTypeResourceStatus) DeepCopyInto(out *VolumeTypeResourceStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type VolumeTypeSpec

type VolumeTypeSpec struct {
	// import refers to an existing OpenStack resource which will be imported instead of
	// creating a new one.
	// +optional
	Import *VolumeTypeImport `json:"import,omitempty"`

	// resource specifies the desired state of the resource.
	//
	// resource may not be specified if the management policy is `unmanaged`.
	//
	// resource must be specified if the management policy is `managed`.
	// +optional
	Resource *VolumeTypeResourceSpec `json:"resource,omitempty"`

	// managementPolicy defines how ORC will treat the object. Valid values are
	// `managed`: ORC will create, update, and delete the resource; `unmanaged`:
	// ORC will import an existing resource, and will not apply updates to it or
	// delete it.
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
	// +kubebuilder:default:=managed
	// +optional
	ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`

	// managedOptions specifies options which may be applied to managed objects.
	// +optional
	ManagedOptions *ManagedOptions `json:"managedOptions,omitempty"`

	// resyncPeriod defines how frequently the controller will re-reconcile
	// this resource even when no changes have been detected. This overrides
	// the global default resync period. The value must be a valid Go duration
	// string, e.g. "10m", "1h". Set to "0s" to disable periodic resync for
	// this resource. Very low values may cause excessive OpenStack API load.
	// +optional
	ResyncPeriod *metav1.Duration `json:"resyncPeriod,omitempty"` //nolint:kubeapilinter // metav1.Duration is appropriate for user-facing duration config

	// cloudCredentialsRef points to a secret containing OpenStack credentials
	// +required
	CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef,omitzero"`
}

VolumeTypeSpec defines the desired state of an ORC object. +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? has(self.resource) : true",message="resource must be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? !has(self.__import__) : true",message="import may not be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? !has(self.resource) : true",message="resource may not be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? has(self.__import__) : true",message="import must be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="has(self.managedOptions) ? self.managementPolicy == 'managed' : true",message="managedOptions may only be provided when policy is managed"

func (*VolumeTypeSpec) DeepCopy

func (in *VolumeTypeSpec) DeepCopy() *VolumeTypeSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeTypeSpec.

func (*VolumeTypeSpec) DeepCopyInto

func (in *VolumeTypeSpec) DeepCopyInto(out *VolumeTypeSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type VolumeTypeStatus

type VolumeTypeStatus struct {
	// 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.
	//
	// +kubebuilder:validation:MaxItems:=32
	// +patchMergeKey=type
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=type
	// +optional
	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"`

	// resource contains the observed state of the OpenStack resource.
	// +optional
	Resource *VolumeTypeResourceStatus `json:"resource,omitempty"`

	// lastSyncTime is the timestamp of the last successful reconciliation
	// that fetched state from OpenStack. It is updated each time the
	// controller successfully reads the resource state from the OpenStack
	// API.
	// +optional
	LastSyncTime *metav1.Time `json:"lastSyncTime,omitempty"`
}

VolumeTypeStatus defines the observed state of an ORC resource.

func (*VolumeTypeStatus) DeepCopy

func (in *VolumeTypeStatus) DeepCopy() *VolumeTypeStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeTypeStatus.

func (*VolumeTypeStatus) DeepCopyInto

func (in *VolumeTypeStatus) DeepCopyInto(out *VolumeTypeStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

Source Files

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL