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
- Variables
- func GetTerminalError(obj ObjectWithConditions) error
- func IsAvailable[T ObjectWithConditions](obj T) bool
- func IsConditionReasonTerminal(reason string) bool
- func IsReconciliationComplete(obj ObjectWithConditions) bool
- func Resource(resource string) schema.GroupResource
- type Address
- type AddressScope
- func (in *AddressScope) DeepCopy() *AddressScope
- func (in *AddressScope) DeepCopyInto(out *AddressScope)
- func (in *AddressScope) DeepCopyObject() runtime.Object
- func (i *AddressScope) GetCloudCredentialsRef() (*string, *CloudCredentialsReference)
- func (i *AddressScope) GetConditions() []metav1.Condition
- type AddressScopeFilter
- type AddressScopeImport
- type AddressScopeList
- type AddressScopeResourceSpec
- type AddressScopeResourceStatus
- type AddressScopeSpec
- type AddressScopeStatus
- type AllocationPool
- type AllocationPoolStatus
- type AllowedAddressPair
- type AllowedAddressPairStatus
- type ApplicationCredential
- func (in *ApplicationCredential) DeepCopy() *ApplicationCredential
- func (in *ApplicationCredential) DeepCopyInto(out *ApplicationCredential)
- func (in *ApplicationCredential) DeepCopyObject() runtime.Object
- func (i *ApplicationCredential) GetCloudCredentialsRef() (*string, *CloudCredentialsReference)
- func (i *ApplicationCredential) GetConditions() []metav1.Condition
- type ApplicationCredentialAccessRule
- type ApplicationCredentialAccessRuleStatus
- type ApplicationCredentialFilter
- type ApplicationCredentialImport
- type ApplicationCredentialList
- type ApplicationCredentialResourceSpec
- type ApplicationCredentialResourceStatus
- type ApplicationCredentialRoleStatus
- type ApplicationCredentialSpec
- type ApplicationCredentialStatus
- type AvailabilityZoneHint
- type CIDR
- type CloudCredentialsRefProvider
- type CloudCredentialsReference
- type DNSDomain
- type DNSZone
- type DNSZoneFilter
- type DNSZoneImport
- type DNSZoneList
- type DNSZoneResourceSpec
- type DNSZoneResourceStatus
- type DNSZoneSpec
- type DNSZoneStatus
- type DNSZoneType
- type DesignateFQDN
- type Domain
- type DomainFilter
- type DomainImport
- type DomainList
- type DomainResourceSpec
- type DomainResourceStatus
- type DomainSpec
- type DomainStatus
- type Endpoint
- type EndpointFilter
- type EndpointImport
- type EndpointList
- type EndpointResourceSpec
- type EndpointResourceStatus
- type EndpointSpec
- type EndpointStatus
- type Ethertype
- type ExternalGateway
- type ExternalGatewayStatus
- type FilterByKeystoneTags
- type FilterByNeutronTags
- type FilterByServerTags
- type FixedIPStatus
- type Flavor
- type FlavorExtraSpec
- type FlavorExtraSpecStatus
- type FlavorFilter
- type FlavorImport
- type FlavorList
- type FlavorResourceSpec
- type FlavorResourceStatus
- type FlavorSpec
- type FlavorStatus
- type FloatingIP
- type FloatingIPFilter
- type FloatingIPImport
- type FloatingIPList
- type FloatingIPResourceSpec
- type FloatingIPResourceStatus
- type FloatingIPSpec
- type FloatingIPStatus
- type Group
- type GroupFilter
- type GroupImport
- type GroupList
- type GroupResourceSpec
- type GroupResourceStatus
- type GroupSpec
- type GroupStatus
- type HTTPMethod
- type HostID
- type HostRoute
- type HostRouteStatus
- type IPVersion
- type IPv6AddressMode
- type IPv6Options
- type IPv6RAMode
- type IPvAny
- type Image
- type ImageCompression
- type ImageContainerFormat
- type ImageContent
- type ImageContentSourceDownload
- type ImageDiskFormat
- type ImageFilter
- type ImageHWBus
- type ImageHash
- type ImageHashAlgorithm
- type ImageImport
- type ImageList
- type ImageProperties
- type ImagePropertiesHardware
- type ImagePropertiesOperatingSystem
- type ImageResourceSpec
- type ImageResourceStatus
- type ImageSpec
- type ImageStatus
- type ImageStatusExtra
- type ImageTag
- type ImageVisibility
- type KeyPair
- type KeyPairFilter
- type KeyPairImport
- type KeyPairList
- type KeyPairResourceSpec
- type KeyPairResourceStatus
- type KeyPairSpec
- type KeyPairStatus
- type KeystoneName
- type KeystoneTag
- type KubernetesNameRef
- type Limit
- type LimitFilter
- type LimitImport
- type LimitList
- type LimitResourceSpec
- type LimitResourceStatus
- type LimitSpec
- type LimitStatus
- type MAC
- type MTU
- type ManagedOptions
- type ManagementPolicy
- type Network
- type NetworkFilter
- type NetworkImport
- type NetworkList
- type NetworkResourceSpec
- type NetworkResourceStatus
- type NetworkSpec
- type NetworkStatus
- type NeutronDescription
- type NeutronStatusMetadata
- type NeutronTag
- type ObjectWithConditions
- type OnDelete
- type OpenStackName
- type Port
- type PortFilter
- type PortImport
- type PortList
- type PortNumber
- type PortRangeSpec
- type PortRangeStatus
- type PortResourceSpec
- type PortResourceStatus
- type PortSecurityState
- type PortSpec
- type PortStatus
- type PortValueSpec
- type Project
- type ProjectFilter
- type ProjectImport
- type ProjectList
- type ProjectResourceSpec
- type ProjectResourceStatus
- type ProjectSpec
- type ProjectStatus
- type Protocol
- type ProviderNetworkType
- type ProviderPropertiesStatus
- type ProviderSegmentSpec
- type Region
- type RegionFilter
- type RegionImport
- type RegionList
- type RegionResourceSpec
- type RegionResourceStatus
- type RegionSpec
- type RegionStatus
- type RegisteredLimit
- func (in *RegisteredLimit) DeepCopy() *RegisteredLimit
- func (in *RegisteredLimit) DeepCopyInto(out *RegisteredLimit)
- func (in *RegisteredLimit) DeepCopyObject() runtime.Object
- func (i *RegisteredLimit) GetCloudCredentialsRef() (*string, *CloudCredentialsReference)
- func (i *RegisteredLimit) GetConditions() []metav1.Condition
- type RegisteredLimitFilter
- type RegisteredLimitImport
- type RegisteredLimitList
- type RegisteredLimitResourceSpec
- type RegisteredLimitResourceStatus
- type RegisteredLimitSpec
- type RegisteredLimitStatus
- type Role
- type RoleAssignment
- func (in *RoleAssignment) DeepCopy() *RoleAssignment
- func (in *RoleAssignment) DeepCopyInto(out *RoleAssignment)
- func (in *RoleAssignment) DeepCopyObject() runtime.Object
- func (i *RoleAssignment) GetCloudCredentialsRef() (*string, *CloudCredentialsReference)
- func (i *RoleAssignment) GetConditions() []metav1.Condition
- type RoleAssignmentFilter
- type RoleAssignmentImport
- type RoleAssignmentList
- type RoleAssignmentResourceSpec
- type RoleAssignmentResourceStatus
- type RoleAssignmentSpec
- type RoleAssignmentStatus
- type RoleFilter
- type RoleImport
- type RoleList
- type RoleResourceSpec
- type RoleResourceStatus
- type RoleSpec
- type RoleStatus
- type Router
- type RouterFilter
- type RouterImport
- type RouterInterface
- type RouterInterfaceList
- type RouterInterfaceSpec
- type RouterInterfaceStatus
- type RouterInterfaceType
- type RouterList
- type RouterResourceSpec
- type RouterResourceStatus
- type RouterRoute
- type RouterRouteStatus
- type RouterSpec
- type RouterStatus
- type RuleDirection
- type SecurityGroup
- func (in *SecurityGroup) DeepCopy() *SecurityGroup
- func (in *SecurityGroup) DeepCopyInto(out *SecurityGroup)
- func (in *SecurityGroup) DeepCopyObject() runtime.Object
- func (i *SecurityGroup) GetCloudCredentialsRef() (*string, *CloudCredentialsReference)
- func (i *SecurityGroup) GetConditions() []metav1.Condition
- type SecurityGroupFilter
- type SecurityGroupImport
- type SecurityGroupList
- type SecurityGroupResourceSpec
- type SecurityGroupResourceStatus
- type SecurityGroupRule
- type SecurityGroupRuleStatus
- type SecurityGroupSpec
- type SecurityGroupStatus
- type Server
- type ServerBootVolumeSpec
- type ServerFilter
- type ServerGroup
- type ServerGroupFilter
- type ServerGroupImport
- type ServerGroupList
- type ServerGroupPolicy
- type ServerGroupResourceSpec
- type ServerGroupResourceStatus
- type ServerGroupRules
- type ServerGroupRulesStatus
- type ServerGroupSpec
- type ServerGroupStatus
- type ServerImport
- type ServerInterfaceFixedIP
- type ServerInterfaceStatus
- type ServerList
- type ServerMetadata
- type ServerMetadataStatus
- type ServerPortSpec
- type ServerResourceSpec
- type ServerResourceStatus
- type ServerSchedulerHints
- type ServerSpec
- type ServerStatus
- type ServerTag
- type ServerVolumeSpec
- type ServerVolumeStatus
- type Service
- type ServiceFilter
- type ServiceImport
- type ServiceList
- type ServiceResourceSpec
- type ServiceResourceStatus
- type ServiceSpec
- type ServiceStatus
- type ShareNetwork
- func (in *ShareNetwork) DeepCopy() *ShareNetwork
- func (in *ShareNetwork) DeepCopyInto(out *ShareNetwork)
- func (in *ShareNetwork) DeepCopyObject() runtime.Object
- func (i *ShareNetwork) GetCloudCredentialsRef() (*string, *CloudCredentialsReference)
- func (i *ShareNetwork) GetConditions() []metav1.Condition
- type ShareNetworkFilter
- type ShareNetworkImport
- type ShareNetworkList
- type ShareNetworkResourceSpec
- type ShareNetworkResourceStatus
- type ShareNetworkSpec
- type ShareNetworkStatus
- type Subnet
- type SubnetFilter
- type SubnetGateway
- type SubnetGatewayType
- type SubnetImport
- type SubnetList
- type SubnetPool
- type SubnetPoolFilter
- type SubnetPoolImport
- type SubnetPoolList
- type SubnetPoolResourceSpec
- type SubnetPoolResourceStatus
- type SubnetPoolSpec
- type SubnetPoolStatus
- type SubnetResourceSpec
- type SubnetResourceStatus
- type SubnetSpec
- type SubnetStatus
- type Trunk
- type TrunkFilter
- type TrunkImport
- type TrunkList
- type TrunkResourceSpec
- type TrunkResourceStatus
- type TrunkSpec
- type TrunkStatus
- type TrunkSubportSpec
- type TrunkSubportStatus
- type UUID
- type User
- type UserDataSpec
- type UserFilter
- type UserImport
- type UserList
- type UserResourceSpec
- type UserResourceStatus
- type UserSpec
- type UserStatus
- type Volume
- type VolumeAttachmentStatus
- type VolumeFilter
- type VolumeImport
- type VolumeList
- type VolumeMetadata
- type VolumeMetadataStatus
- type VolumeResourceSpec
- type VolumeResourceStatus
- type VolumeSpec
- type VolumeStatus
- type VolumeType
- type VolumeTypeExtraSpec
- type VolumeTypeExtraSpecStatus
- type VolumeTypeFilter
- type VolumeTypeImport
- type VolumeTypeList
- type VolumeTypeResourceSpec
- type VolumeTypeResourceStatus
- type VolumeTypeSpec
- type VolumeTypeStatus
Constants ¶
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" )
const ( ConditionAvailable = "Available" ConditionProgressing = "Progressing" )
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" )
const ( IPv6AddressModeSLAAC = "slaac" IPv6AddressModeDHCPv6Stateful = "dhcpv6-stateful" IPv6AddressModeDHCPv6Stateless = "dhcpv6-stateless" )
const ( IPv6RAModeSLAAC = "slaac" IPv6RAModeDHCPv6Stateful = "dhcpv6-stateful" IPv6RAModeDHCPv6Stateless = "dhcpv6-stateless" )
const ( SubnetGatewayTypeNone = "None" SubnetGatewayTypeAutomatic = "Automatic" SubnetGatewayTypeIP = "IP" )
const GlanceTag = "glance"
GlanceTag is the name of the go field tag in properties structs used to specify the Glance property name.
const GroupName = "openstack.k-orc.cloud"
GroupName is the group name use in this package
Variables ¶
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 )
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 ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Address.
func (*Address) DeepCopyInto ¶
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"`
// 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"`
// 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 ¶
func (in *AddressScopeResourceSpec) DeepCopy() *AddressScopeResourceSpec
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"`
// 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 ¶
func (in *AddressScopeResourceStatus) DeepCopy() *AddressScopeResourceStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AddressScopeResourceStatus.
func (*AddressScopeResourceStatus) DeepCopyInto ¶
func (in *AddressScopeResourceStatus) DeepCopyInto(out *AddressScopeResourceStatus)
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 ¶
func (in *AllocationPoolStatus) DeepCopy() *AllocationPoolStatus
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 ¶
func (in *AllowedAddressPairStatus) DeepCopy() *AllowedAddressPairStatus
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 ¶
func (in *ApplicationCredential) DeepCopy() *ApplicationCredential
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 ¶
func (in *ApplicationCredentialAccessRule) DeepCopy() *ApplicationCredentialAccessRule
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationCredentialAccessRule.
func (*ApplicationCredentialAccessRule) DeepCopyInto ¶
func (in *ApplicationCredentialAccessRule) DeepCopyInto(out *ApplicationCredentialAccessRule)
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 ¶
func (in *ApplicationCredentialAccessRuleStatus) DeepCopy() *ApplicationCredentialAccessRuleStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationCredentialAccessRuleStatus.
func (*ApplicationCredentialAccessRuleStatus) DeepCopyInto ¶
func (in *ApplicationCredentialAccessRuleStatus) DeepCopyInto(out *ApplicationCredentialAccessRuleStatus)
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 ¶
func (in *ApplicationCredentialFilter) DeepCopy() *ApplicationCredentialFilter
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationCredentialFilter.
func (*ApplicationCredentialFilter) DeepCopyInto ¶
func (in *ApplicationCredentialFilter) DeepCopyInto(out *ApplicationCredentialFilter)
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 ¶
func (in *ApplicationCredentialImport) DeepCopy() *ApplicationCredentialImport
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationCredentialImport.
func (*ApplicationCredentialImport) DeepCopyInto ¶
func (in *ApplicationCredentialImport) DeepCopyInto(out *ApplicationCredentialImport)
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 ¶
func (in *ApplicationCredentialList) DeepCopy() *ApplicationCredentialList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationCredentialList.
func (*ApplicationCredentialList) DeepCopyInto ¶
func (in *ApplicationCredentialList) DeepCopyInto(out *ApplicationCredentialList)
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 ¶
func (l *ApplicationCredentialList) GetItems() []ApplicationCredential
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 ¶
func (in *ApplicationCredentialResourceSpec) DeepCopy() *ApplicationCredentialResourceSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationCredentialResourceSpec.
func (*ApplicationCredentialResourceSpec) DeepCopyInto ¶
func (in *ApplicationCredentialResourceSpec) DeepCopyInto(out *ApplicationCredentialResourceSpec)
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 ¶
func (in *ApplicationCredentialResourceStatus) DeepCopy() *ApplicationCredentialResourceStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationCredentialResourceStatus.
func (*ApplicationCredentialResourceStatus) DeepCopyInto ¶
func (in *ApplicationCredentialResourceStatus) DeepCopyInto(out *ApplicationCredentialResourceStatus)
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 ¶
func (in *ApplicationCredentialRoleStatus) DeepCopy() *ApplicationCredentialRoleStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationCredentialRoleStatus.
func (*ApplicationCredentialRoleStatus) DeepCopyInto ¶
func (in *ApplicationCredentialRoleStatus) DeepCopyInto(out *ApplicationCredentialRoleStatus)
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 ¶
func (in *ApplicationCredentialSpec) DeepCopy() *ApplicationCredentialSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationCredentialSpec.
func (*ApplicationCredentialSpec) DeepCopyInto ¶
func (in *ApplicationCredentialSpec) DeepCopyInto(out *ApplicationCredentialSpec)
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 ¶
func (in *ApplicationCredentialStatus) DeepCopy() *ApplicationCredentialStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationCredentialStatus.
func (*ApplicationCredentialStatus) DeepCopyInto ¶
func (in *ApplicationCredentialStatus) DeepCopyInto(out *ApplicationCredentialStatus)
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 ¶
func (in *CloudCredentialsReference) DeepCopy() *CloudCredentialsReference
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CloudCredentialsReference.
func (*CloudCredentialsReference) DeepCopyInto ¶
func (in *CloudCredentialsReference) DeepCopyInto(out *CloudCredentialsReference)
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DNSZone.
func (*DNSZone) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*DNSZone) DeepCopyObject ¶
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 ¶
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 ¶
func (in *DNSZoneResourceStatus) DeepCopy() *DNSZoneResourceStatus
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Domain.
func (*Domain) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Domain) DeepCopyObject ¶
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 ¶
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 ¶
func (in *DomainResourceStatus) DeepCopy() *DomainResourceStatus
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Endpoint.
func (*Endpoint) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Endpoint) DeepCopyObject ¶
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 ¶
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 ¶
func (in *EndpointResourceSpec) DeepCopy() *EndpointResourceSpec
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 ¶
func (in *EndpointResourceStatus) DeepCopy() *EndpointResourceStatus
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 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 ¶
func (in *ExternalGatewayStatus) DeepCopy() *ExternalGatewayStatus
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 ¶
func (in *FilterByKeystoneTags) DeepCopy() *FilterByKeystoneTags
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Flavor.
func (*Flavor) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Flavor) DeepCopyObject ¶
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 ¶
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 ¶
func (in *FlavorExtraSpecStatus) DeepCopy() *FlavorExtraSpecStatus
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 ¶
func (in *FlavorResourceStatus) DeepCopy() *FlavorResourceStatus
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 ¶
func (in *FloatingIPResourceSpec) DeepCopy() *FloatingIPResourceSpec
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 ¶
func (in *FloatingIPResourceStatus) DeepCopy() *FloatingIPResourceStatus
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Group.
func (*Group) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Group) DeepCopyObject ¶
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 ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupList.
func (*GroupList) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*GroupList) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupSpec.
func (*GroupSpec) DeepCopyInto ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HostID.
func (*HostID) DeepCopyInto ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HostRoute.
func (*HostRoute) DeepCopyInto ¶
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 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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Image.
func (*Image) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Image) DeepCopyObject ¶
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 ¶
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 ¶
func (in *ImageContentSourceDownload) DeepCopy() *ImageContentSourceDownload
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImageContentSourceDownload.
func (*ImageContentSourceDownload) DeepCopyInto ¶
func (in *ImageContentSourceDownload) DeepCopyInto(out *ImageContentSourceDownload)
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImageHash.
func (*ImageHash) DeepCopyInto ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImageList.
func (*ImageList) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ImageList) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
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 ¶
func (in *ImagePropertiesHardware) DeepCopy() *ImagePropertiesHardware
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 ¶
func (in *ImagePropertiesOperatingSystem) DeepCopy() *ImagePropertiesOperatingSystem
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImagePropertiesOperatingSystem.
func (*ImagePropertiesOperatingSystem) DeepCopyInto ¶
func (in *ImagePropertiesOperatingSystem) DeepCopyInto(out *ImagePropertiesOperatingSystem)
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImageSpec.
func (*ImageSpec) DeepCopyInto ¶
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" 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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KeyPair.
func (*KeyPair) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*KeyPair) DeepCopyObject ¶
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 ¶
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 ¶
func (in *KeyPairResourceStatus) DeepCopy() *KeyPairResourceStatus
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Limit.
func (*Limit) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Limit) DeepCopyObject ¶
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 ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LimitList.
func (*LimitList) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*LimitList) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LimitSpec.
func (*LimitSpec) DeepCopyInto ¶
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 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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Network.
func (*Network) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Network) DeepCopyObject ¶
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 ¶
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"`
// 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"`
// 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 ¶
func (in *NetworkResourceStatus) DeepCopy() *NetworkResourceStatus
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 ¶
func (in *NeutronStatusMetadata) DeepCopy() *NeutronStatusMetadata
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 ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Port.
func (*Port) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Port) DeepCopyObject ¶
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 ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortList.
func (*PortList) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*PortList) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortSpec.
func (*PortSpec) DeepCopyInto ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Project.
func (*Project) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Project) DeepCopyObject ¶
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 ¶
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 ¶
func (in *ProjectResourceStatus) DeepCopy() *ProjectResourceStatus
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 ¶
func (in *ProviderPropertiesStatus) DeepCopy() *ProviderPropertiesStatus
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Region.
func (*Region) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Region) DeepCopyObject ¶
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 ¶
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 ¶
func (in *RegionResourceStatus) DeepCopy() *RegionResourceStatus
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 ¶
func (in *RegisteredLimitFilter) DeepCopy() *RegisteredLimitFilter
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 ¶
func (in *RegisteredLimitImport) DeepCopy() *RegisteredLimitImport
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 ¶
func (in *RegisteredLimitResourceSpec) DeepCopy() *RegisteredLimitResourceSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RegisteredLimitResourceSpec.
func (*RegisteredLimitResourceSpec) DeepCopyInto ¶
func (in *RegisteredLimitResourceSpec) DeepCopyInto(out *RegisteredLimitResourceSpec)
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 ¶
func (in *RegisteredLimitResourceStatus) DeepCopy() *RegisteredLimitResourceStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RegisteredLimitResourceStatus.
func (*RegisteredLimitResourceStatus) DeepCopyInto ¶
func (in *RegisteredLimitResourceStatus) DeepCopyInto(out *RegisteredLimitResourceStatus)
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 ¶
func (in *RegisteredLimitStatus) DeepCopy() *RegisteredLimitStatus
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Role.
func (*Role) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Role) DeepCopyObject ¶
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 ¶
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 ¶
func (in *RoleAssignmentFilter) DeepCopy() *RoleAssignmentFilter
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 ¶
func (in *RoleAssignmentImport) DeepCopy() *RoleAssignmentImport
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 ¶
func (in *RoleAssignmentResourceSpec) DeepCopy() *RoleAssignmentResourceSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleAssignmentResourceSpec.
func (*RoleAssignmentResourceSpec) DeepCopyInto ¶
func (in *RoleAssignmentResourceSpec) DeepCopyInto(out *RoleAssignmentResourceSpec)
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 ¶
func (in *RoleAssignmentResourceStatus) DeepCopy() *RoleAssignmentResourceStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleAssignmentResourceStatus.
func (*RoleAssignmentResourceStatus) DeepCopyInto ¶
func (in *RoleAssignmentResourceStatus) DeepCopyInto(out *RoleAssignmentResourceStatus)
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 ¶
func (in *RoleAssignmentStatus) DeepCopy() *RoleAssignmentStatus
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleList.
func (*RoleList) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*RoleList) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleSpec.
func (*RoleSpec) DeepCopyInto ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Router.
func (*Router) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Router) DeepCopyObject ¶
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 ¶
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 ¶
func (in *RouterInterfaceStatus) DeepCopy() *RouterInterfaceStatus
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 ¶
func (in *RouterResourceStatus) DeepCopy() *RouterResourceStatus
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 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 ¶
func (in *SecurityGroupResourceSpec) DeepCopy() *SecurityGroupResourceSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecurityGroupResourceSpec.
func (*SecurityGroupResourceSpec) DeepCopyInto ¶
func (in *SecurityGroupResourceSpec) DeepCopyInto(out *SecurityGroupResourceSpec)
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 ¶
func (in *SecurityGroupResourceStatus) DeepCopy() *SecurityGroupResourceStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecurityGroupResourceStatus.
func (*SecurityGroupResourceStatus) DeepCopyInto ¶
func (in *SecurityGroupResourceStatus) DeepCopyInto(out *SecurityGroupResourceStatus)
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 ¶
func (in *SecurityGroupRuleStatus) DeepCopy() *SecurityGroupRuleStatus
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Server.
func (*Server) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Server) DeepCopyObject ¶
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 ¶
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 ¶
func (in *ServerBootVolumeSpec) DeepCopy() *ServerBootVolumeSpec
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 ¶
func (in *ServerGroupResourceSpec) DeepCopy() *ServerGroupResourceSpec
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 ¶
func (in *ServerGroupResourceStatus) DeepCopy() *ServerGroupResourceStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerGroupResourceStatus.
func (*ServerGroupResourceStatus) DeepCopyInto ¶
func (in *ServerGroupResourceStatus) DeepCopyInto(out *ServerGroupResourceStatus)
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 ¶
func (in *ServerGroupRulesStatus) DeepCopy() *ServerGroupRulesStatus
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 ¶
func (in *ServerInterfaceFixedIP) DeepCopy() *ServerInterfaceFixedIP
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 ¶
func (in *ServerInterfaceStatus) DeepCopy() *ServerInterfaceStatus
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 ¶
func (in *ServerMetadataStatus) DeepCopy() *ServerMetadataStatus
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 ¶
func (in *ServerResourceStatus) DeepCopy() *ServerResourceStatus
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 ¶
func (in *ServerSchedulerHints) DeepCopy() *ServerSchedulerHints
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Service.
func (*Service) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Service) DeepCopyObject ¶
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 ¶
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 ¶
func (in *ServiceResourceStatus) DeepCopy() *ServiceResourceStatus
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 {
// +optional
metav1.ObjectMeta `json:"metadata,omitempty"`
// +required
Spec ShareNetworkSpec `json:"spec,omitzero"`
// +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 {
// +optional
Name *OpenStackName `json:"name,omitempty"`
// +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 {
// 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
// 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 {
// +optional
metav1.ListMeta `json:"metadata,omitempty"`
// +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 of the ORC object will be used.
// +optional
Name *OpenStackName `json:"name,omitempty"`
// +kubebuilder:validation:MinLength:=1
// +kubebuilder:validation:MaxLength:=255
// +optional
Description *string `json:"description,omitempty"`
// +optional
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="networkRef is immutable"
// +orc:kustomize:ref=Network
NetworkRef *KubernetesNameRef `json:"networkRef,omitempty"`
// +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 ¶
func (in *ShareNetworkResourceSpec) DeepCopy() *ShareNetworkResourceSpec
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 {
// +kubebuilder:validation:MaxLength=1024
// +optional
Name string `json:"name,omitempty"`
// +kubebuilder:validation:MaxLength=1024
// +optional
Description string `json:"description,omitempty"`
// +kubebuilder:validation:MaxLength=1024
// +optional
NeutronNetID string `json:"neutronNetID,omitempty"`
// +kubebuilder:validation:MaxLength=1024
// +optional
NeutronSubnetID string `json:"neutronSubnetID,omitempty"`
// +kubebuilder:validation:MaxLength=1024
// +optional
NetworkType string `json:"networkType,omitempty"`
// +optional
SegmentationID *int32 `json:"segmentationID,omitempty"`
// +kubebuilder:validation:MaxLength=1024
// +optional
CIDR string `json:"cidr"`
// +optional
IPVersion *int32 `json:"ipVersion,omitempty"`
// +kubebuilder:validation:MaxLength=1024
// +optional
ProjectID string `json:"projectID,omitempty"`
// +optional
CreatedAt *metav1.Time `json:"createdAt,omitempty"`
// +optional
UpdatedAt *metav1.Time `json:"updatedAt,omitempty"`
}
ShareNetworkResourceStatus represents the observed state of the resource.
func (*ShareNetworkResourceStatus) DeepCopy ¶
func (in *ShareNetworkResourceStatus) DeepCopy() *ShareNetworkResourceStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShareNetworkResourceStatus.
func (*ShareNetworkResourceStatus) DeepCopyInto ¶
func (in *ShareNetworkResourceStatus) DeepCopyInto(out *ShareNetworkResourceStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ShareNetworkSpec ¶
type ShareNetworkSpec struct {
// creating a new one.
// +optional
Import *ShareNetworkImport `json:"import,omitempty"`
//
// 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"`
// `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"`
// +optional
ManagedOptions *ManagedOptions `json:"managedOptions,omitempty"`
// 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
// +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 {
// 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"`
// +kubebuilder:validation:MaxLength:=1024
// +optional
ID *string `json:"id,omitempty"`
// +optional
Resource *ShareNetworkResourceStatus `json:"resource,omitempty"`
// 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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Subnet.
func (*Subnet) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Subnet) DeepCopyObject ¶
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 ¶
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"`
// 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"`
// 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 ¶
func (in *SubnetPoolResourceSpec) DeepCopy() *SubnetPoolResourceSpec
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"`
// +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 ¶
func (in *SubnetPoolResourceStatus) DeepCopy() *SubnetPoolResourceStatus
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 ¶
func (in *SubnetResourceStatus) DeepCopy() *SubnetResourceStatus
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Trunk.
func (*Trunk) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Trunk) DeepCopyObject ¶
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 ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TrunkList.
func (*TrunkList) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*TrunkList) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TrunkSpec.
func (*TrunkSpec) DeepCopyInto ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new User.
func (*User) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*User) DeepCopyObject ¶
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 ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserList.
func (*UserList) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*UserList) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserSpec.
func (*UserSpec) DeepCopyInto ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Volume.
func (*Volume) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Volume) DeepCopyObject ¶
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 ¶
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 ¶
func (in *VolumeAttachmentStatus) DeepCopy() *VolumeAttachmentStatus
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 ¶
func (in *VolumeMetadataStatus) DeepCopy() *VolumeMetadataStatus
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 ¶
func (in *VolumeResourceStatus) DeepCopy() *VolumeResourceStatus
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 ¶
func (in *VolumeTypeExtraSpecStatus) DeepCopy() *VolumeTypeExtraSpecStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeTypeExtraSpecStatus.
func (*VolumeTypeExtraSpecStatus) DeepCopyInto ¶
func (in *VolumeTypeExtraSpecStatus) DeepCopyInto(out *VolumeTypeExtraSpecStatus)
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 ¶
func (in *VolumeTypeResourceSpec) DeepCopy() *VolumeTypeResourceSpec
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 ¶
func (in *VolumeTypeResourceStatus) DeepCopy() *VolumeTypeResourceStatus
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
¶
- addressscope_types.go
- applicationcredential_types.go
- common_types.go
- conditions.go
- controller_options.go
- credentials_ref.go
- dnszone_types.go
- doc.go
- domain_types.go
- endpoint_types.go
- flavor_types.go
- floatingip_types.go
- group_types.go
- groupversion_info.go
- image_types.go
- keypair_types.go
- limit_types.go
- network_types.go
- openstack_types.go
- port_types.go
- project_types.go
- region_types.go
- registeredlimit_types.go
- role_types.go
- roleassignment_types.go
- router_interface_types.go
- router_types.go
- securitygroup_types.go
- server_types.go
- servergroup_types.go
- service_types.go
- sharenetwork_types.go
- subnet_types.go
- subnetpool_types.go
- trunk_types.go
- user_types.go
- volume_types.go
- volumetype_types.go
- zz_generated.addressscope-resource.go
- zz_generated.applicationcredential-resource.go
- zz_generated.deepcopy.go
- zz_generated.dnszone-resource.go
- zz_generated.domain-resource.go
- zz_generated.endpoint-resource.go
- zz_generated.flavor-resource.go
- zz_generated.floatingip-resource.go
- zz_generated.group-resource.go
- zz_generated.image-resource.go
- zz_generated.keypair-resource.go
- zz_generated.limit-resource.go
- zz_generated.network-resource.go
- zz_generated.port-resource.go
- zz_generated.project-resource.go
- zz_generated.region-resource.go
- zz_generated.registeredlimit-resource.go
- zz_generated.role-resource.go
- zz_generated.roleassignment-resource.go
- zz_generated.router-resource.go
- zz_generated.securitygroup-resource.go
- zz_generated.server-resource.go
- zz_generated.servergroup-resource.go
- zz_generated.service-resource.go
- zz_generated.sharenetwork-resource.go
- zz_generated.subnet-resource.go
- zz_generated.subnetpool-resource.go
- zz_generated.trunk-resource.go
- zz_generated.user-resource.go
- zz_generated.volume-resource.go
- zz_generated.volumetype-resource.go