Documentation ¶
Overview ¶
+k8s:deepcopy-gen=package,register +groupName=tenancy.kcp.dev +k8s:openapi-gen=true
Index ¶
- Constants
- Variables
- func Kind(kind string) schema.GroupKind
- func ObjectName(typeName ClusterWorkspaceTypeName) string
- func Resource(resource string) schema.GroupResource
- type ClusterWorkspace
- func (in *ClusterWorkspace) DeepCopy() *ClusterWorkspace
- func (in *ClusterWorkspace) DeepCopyInto(out *ClusterWorkspace)
- func (in *ClusterWorkspace) DeepCopyObject() runtime.Object
- func (in *ClusterWorkspace) GetConditions() conditionsv1alpha1.Conditions
- func (in *ClusterWorkspace) SetConditions(c conditionsv1alpha1.Conditions)
- type ClusterWorkspaceInitializer
- type ClusterWorkspaceList
- type ClusterWorkspaceLocation
- type ClusterWorkspacePhaseType
- type ClusterWorkspaceShard
- func (in *ClusterWorkspaceShard) DeepCopy() *ClusterWorkspaceShard
- func (in *ClusterWorkspaceShard) DeepCopyInto(out *ClusterWorkspaceShard)
- func (in *ClusterWorkspaceShard) DeepCopyObject() runtime.Object
- func (in *ClusterWorkspaceShard) GetConditions() conditionsv1alpha1.Conditions
- func (in *ClusterWorkspaceShard) SetConditions(c conditionsv1alpha1.Conditions)
- type ClusterWorkspaceShardList
- type ClusterWorkspaceShardSpec
- type ClusterWorkspaceShardStatus
- type ClusterWorkspaceSpec
- type ClusterWorkspaceStatus
- type ClusterWorkspaceType
- func (in *ClusterWorkspaceType) DeepCopy() *ClusterWorkspaceType
- func (in *ClusterWorkspaceType) DeepCopyInto(out *ClusterWorkspaceType)
- func (in *ClusterWorkspaceType) DeepCopyObject() runtime.Object
- func (in *ClusterWorkspaceType) GetConditions() conditionsv1alpha1.Conditions
- func (in *ClusterWorkspaceType) SetConditions(conditions conditionsv1alpha1.Conditions)
- type ClusterWorkspaceTypeExtension
- type ClusterWorkspaceTypeList
- type ClusterWorkspaceTypeName
- type ClusterWorkspaceTypeReference
- func (in *ClusterWorkspaceTypeReference) DeepCopy() *ClusterWorkspaceTypeReference
- func (in *ClusterWorkspaceTypeReference) DeepCopyInto(out *ClusterWorkspaceTypeReference)
- func (r ClusterWorkspaceTypeReference) Equal(other ClusterWorkspaceTypeReference) bool
- func (r ClusterWorkspaceTypeReference) String() string
- type ClusterWorkspaceTypeSelector
- type ClusterWorkspaceTypeSpec
- type ClusterWorkspaceTypeStatus
- type ShardConstraints
- type VirtualWorkspace
Constants ¶
const ( ClusterWorkspaceTypeVirtualWorkspaceURLsReady conditionsv1alpha1.ConditionType = "VirtualWorkspaceURLsReady" ErrorGeneratingURLsReason = "ErrorGeneratingURLs" )
These are valid conditions of ClusterWorkspaceType.
const ( // WorkspaceScheduled represents status of the scheduling process for this workspace. WorkspaceScheduled conditionsv1alpha1.ConditionType = "WorkspaceScheduled" // WorkspaceReasonUnschedulable reason in WorkspaceScheduled WorkspaceCondition means that the scheduler // can't schedule the workspace right now, for example due to insufficient resources in the cluster. WorkspaceReasonUnschedulable = "Unschedulable" // WorkspaceReasonReasonUnknown reason in WorkspaceScheduled means that scheduler has failed for // some unexpected reason. WorkspaceReasonReasonUnknown = "Unknown" // WorkspaceReasonUnreschedulable reason in WorkspaceScheduled WorkspaceCondition means that the scheduler // can't reschedule the workspace right now, for example because it not in Scheduling phase anymore and // movement is not possible. WorkspaceReasonUnreschedulable = "Unreschedulable" // WorkspaceShardValid represents status of the connection process for this cluster workspace. WorkspaceShardValid conditionsv1alpha1.ConditionType = "WorkspaceShardValid" // WorkspaceShardValidReasonShardNotFound reason in WorkspaceShardValid condition means that the // referenced ClusterWorkspaceShard object got deleted. WorkspaceShardValidReasonShardNotFound = "ShardNotFound" // WorkspaceDeletionContentSuccess represents the status that all resources in the workspace is deleting WorkspaceDeletionContentSuccess conditionsv1alpha1.ConditionType = "WorkspaceDeletionContentSuccess" // WorkspaceContentDeleted represents the status that all resources in the workspace is deleted. WorkspaceContentDeleted conditionsv1alpha1.ConditionType = "WorkspaceContentDeleted" // WorkspaceInitialized represents the status that initialization has finished. WorkspaceInitialized conditionsv1alpha1.ConditionType = "WorkspaceInitialized" // WorkspaceInitializedInitializerExists reason in WorkspaceInitialized condition means that there is at least // one initializer still left. WorkspaceInitializedInitializerExists = "InitializerExists" // WorkspaceInitializedAPIBindingNotBound reason in WorkspaceInitialized condition means that at least // one APIBinding is not yet bound to the workspace. WorkspaceInitializedAPIBindingNotBound = "APIBindingNotBound" )
These are valid conditions of workspace.
const ( // ClusterWorkspacePhaseLabel holds the ClusterWorkspace.Status.Phase value, and is enforced to match // by a mutating admission webhook. ClusterWorkspacePhaseLabel = "internal.kcp.dev/phase" // ClusterWorkspaceInitializerLabelPrefix is the prefix for labels which match ClusterWorkspace.Status.Initializers, // and the set of labels with this prefix is enforced to match the set of initializers by a mutating admission // webhook. ClusterWorkspaceInitializerLabelPrefix = "initializer.internal.kcp.dev/" )
const ExperimentalClusterWorkspaceOwnerAnnotationKey string = "experimental.tenancy.kcp.dev/owner"
const ( // RootWorkspaceTypeName is a reference to the root logical cluster, which has no cluster workspace type RootWorkspaceTypeName = ClusterWorkspaceTypeName("root") )
Variables ¶
var ( SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) AddToScheme = SchemeBuilder.AddToScheme )
var ( // RootWorkspaceTypeReference is a reference to the root logical cluster, which has no cluster workspace type RootWorkspaceTypeReference = ClusterWorkspaceTypeReference{ Name: RootWorkspaceTypeName, Path: RootCluster.String(), } // RootWorkspaceType is the implicit type of the root logical cluster. RootWorkspaceType = &ClusterWorkspaceType{ ObjectMeta: metav1.ObjectMeta{ Name: ObjectName(RootWorkspaceTypeReference.Name), Annotations: map[string]string{ logicalcluster.AnnotationKey: RootWorkspaceTypeReference.Path, }, }, Spec: ClusterWorkspaceTypeSpec{ LimitAllowedParents: &ClusterWorkspaceTypeSelector{ None: true, }, }, } )
var RootCluster = logicalcluster.New("root")
RootCluster is the root of ClusterWorkspace based logical clusters.
var RootShard = "root"
RootShard holds a name of the root shard.
var SchemeGroupVersion = schema.GroupVersion{Group: tenancy.GroupName, Version: "v1alpha1"}
SchemeGroupVersion is group version used to register these objects
Functions ¶
func ObjectName ¶
func ObjectName(typeName ClusterWorkspaceTypeName) string
ObjectName converts the proper name of a type that users interact with to the metadata.name of the ClusterWorkspaceType object.
func Resource ¶
func Resource(resource string) schema.GroupResource
Resource takes an unqualified resource and returns a Group qualified GroupResource
Types ¶
type ClusterWorkspace ¶
type ClusterWorkspace struct { metav1.TypeMeta `json:",inline"` // +optional metav1.ObjectMeta `json:"metadata,omitempty"` // +optional Spec ClusterWorkspaceSpec `json:"spec,omitempty"` // +optional Status ClusterWorkspaceStatus `json:"status,omitempty"` }
ClusterWorkspace defines a Kubernetes-cluster-like endpoint that holds a default set of resources and exhibits standard Kubernetes API semantics of CRUD operations. It represents the full life-cycle of the persisted data in this workspace in a KCP installation.
ClusterWorkspace is a concrete type that implements a workspace.
+crd +genclient +genclient:nonNamespaced +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +kubebuilder:subresource:status +kubebuilder:resource:scope=Cluster,categories=kcp +kubebuilder:printcolumn:name="Phase",type=string,JSONPath=`.status.phase`,description="The current phase (e.g. Scheduling, Initializing, Ready)" +kubebuilder:printcolumn:name="Type",type=string,JSONPath=`.spec.type.name`,description="Type of the workspace" +kubebuilder:printcolumn:name="URL",type=string,JSONPath=`.status.baseURL`,description="URL to access the workspace" +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp"
func (*ClusterWorkspace) DeepCopy ¶
func (in *ClusterWorkspace) DeepCopy() *ClusterWorkspace
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterWorkspace.
func (*ClusterWorkspace) DeepCopyInto ¶
func (in *ClusterWorkspace) DeepCopyInto(out *ClusterWorkspace)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ClusterWorkspace) DeepCopyObject ¶
func (in *ClusterWorkspace) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*ClusterWorkspace) GetConditions ¶
func (in *ClusterWorkspace) GetConditions() conditionsv1alpha1.Conditions
func (*ClusterWorkspace) SetConditions ¶
func (in *ClusterWorkspace) SetConditions(c conditionsv1alpha1.Conditions)
type ClusterWorkspaceInitializer ¶
type ClusterWorkspaceInitializer string
ClusterWorkspaceInitializer is a unique string corresponding to a cluster workspace initialization controller for the given type of workspaces.
+kubebuilder:validation:Pattern:="^root(:[a-z0-9]([-a-z0-9]*[a-z0-9])?)*(:[a-z][a-z0-9]([-a-z0-9]*[a-z0-9])?)$"
type ClusterWorkspaceList ¶
type ClusterWorkspaceList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata"` Items []ClusterWorkspace `json:"items"` }
ClusterWorkspaceList is a list of ClusterWorkspace resources
+k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
func (*ClusterWorkspaceList) DeepCopy ¶
func (in *ClusterWorkspaceList) DeepCopy() *ClusterWorkspaceList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterWorkspaceList.
func (*ClusterWorkspaceList) DeepCopyInto ¶
func (in *ClusterWorkspaceList) DeepCopyInto(out *ClusterWorkspaceList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ClusterWorkspaceList) DeepCopyObject ¶
func (in *ClusterWorkspaceList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type ClusterWorkspaceLocation ¶
type ClusterWorkspaceLocation struct { // Current workspace placement (shard). // // +optional Current string `json:"current,omitempty"` // Target workspace placement (shard). // // +optional // +kubebuilder:validation:Enum="" Target string `json:"target,omitempty"` }
ClusterWorkspaceLocation specifies workspace placement information, including current, desired (target), and historical information.
func (*ClusterWorkspaceLocation) DeepCopy ¶
func (in *ClusterWorkspaceLocation) DeepCopy() *ClusterWorkspaceLocation
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterWorkspaceLocation.
func (*ClusterWorkspaceLocation) DeepCopyInto ¶
func (in *ClusterWorkspaceLocation) DeepCopyInto(out *ClusterWorkspaceLocation)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ClusterWorkspacePhaseType ¶
type ClusterWorkspacePhaseType string
ClusterWorkspacePhaseType is the type of the current phase of the workspace
const ( ClusterWorkspacePhaseScheduling ClusterWorkspacePhaseType = "Scheduling" ClusterWorkspacePhaseInitializing ClusterWorkspacePhaseType = "Initializing" ClusterWorkspacePhaseReady ClusterWorkspacePhaseType = "Ready" )
type ClusterWorkspaceShard ¶
type ClusterWorkspaceShard struct { metav1.TypeMeta `json:",inline"` // +optional metav1.ObjectMeta `json:"metadata,omitempty"` // +optional Spec ClusterWorkspaceShardSpec `json:"spec,omitempty"` // +optional Status ClusterWorkspaceShardStatus `json:"status,omitempty"` }
ClusterWorkspaceShard describes a Shard (== KCP instance) on which a number of workspaces will live
+crd +genclient +genclient:nonNamespaced +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +kubebuilder:subresource:status +kubebuilder:resource:scope=Cluster,categories=kcp +kubebuilder:printcolumn:name="URL",type=string,JSONPath=`.spec.baseURL`,description="Type URL to directly connect to the shard" +kubebuilder:printcolumn:name="External URL",type=string,JSONPath=`.spec.externalURL`,description="The URL exposed in workspaces created on that shard" +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp"
func (*ClusterWorkspaceShard) DeepCopy ¶
func (in *ClusterWorkspaceShard) DeepCopy() *ClusterWorkspaceShard
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterWorkspaceShard.
func (*ClusterWorkspaceShard) DeepCopyInto ¶
func (in *ClusterWorkspaceShard) DeepCopyInto(out *ClusterWorkspaceShard)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ClusterWorkspaceShard) DeepCopyObject ¶
func (in *ClusterWorkspaceShard) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*ClusterWorkspaceShard) GetConditions ¶
func (in *ClusterWorkspaceShard) GetConditions() conditionsv1alpha1.Conditions
func (*ClusterWorkspaceShard) SetConditions ¶
func (in *ClusterWorkspaceShard) SetConditions(c conditionsv1alpha1.Conditions)
type ClusterWorkspaceShardList ¶
type ClusterWorkspaceShardList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata"` Items []ClusterWorkspaceShard `json:"items"` }
ClusterWorkspaceShardList is a list of workspace shards
+k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
func (*ClusterWorkspaceShardList) DeepCopy ¶
func (in *ClusterWorkspaceShardList) DeepCopy() *ClusterWorkspaceShardList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterWorkspaceShardList.
func (*ClusterWorkspaceShardList) DeepCopyInto ¶
func (in *ClusterWorkspaceShardList) DeepCopyInto(out *ClusterWorkspaceShardList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ClusterWorkspaceShardList) DeepCopyObject ¶
func (in *ClusterWorkspaceShardList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type ClusterWorkspaceShardSpec ¶
type ClusterWorkspaceShardSpec struct { // baseURL is the address of the KCP shard for direct connections, e.g. by some // front-proxy doing the fan-out to the shards. // // This will be defaulted to the shard's external address if not specified. Note that this // is only sensible in single-shards setups. // // +kubebuilder:validation:Format=uri // +kubebuilder:validation:MinLength=1 // +optional BaseURL string `json:"baseURL,omitempty"` // externalURL is the externally visible address presented to users in Workspace URLs. // Changing this will break all existing workspaces on that shard, i.e. existing // kubeconfigs of clients will be invalid. Hence, when changing this value, the old // URL used by clients must keep working. // // The external address will not be unique if a front-proxy does a fan-out to // shards, but all workspace client will talk to the front-proxy. In that case, // put the address of the front-proxy here. // // Note that movement of shards is only possible (in the future) between shards // that share a common external URL. // // This will be defaulted to the value of the baseURL. // // +kubebuilder:validation:Format=uri // +kubebuilder:validation:MinLength=1 // +kubebuilder:Required // +required ExternalURL string `json:"externalURL"` // virtualWorkspaceURL is the address of the virtual workspace server associated with this shard. // It can be a direct address, an address of a front-proxy or even an address of an LB. // As of today this address is assigned to APIExports. // // This will be defaulted to the shard's base address if not specified. // // +kubebuilder:validation:Format=uri // +kubebuilder:validation:MinLength=1 // +optional VirtualWorkspaceURL string `json:"virtualWorkspaceURL,omitempty"` }
ClusterWorkspaceShardSpec holds the desired state of the ClusterWorkspaceShard.
func (*ClusterWorkspaceShardSpec) DeepCopy ¶
func (in *ClusterWorkspaceShardSpec) DeepCopy() *ClusterWorkspaceShardSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterWorkspaceShardSpec.
func (*ClusterWorkspaceShardSpec) DeepCopyInto ¶
func (in *ClusterWorkspaceShardSpec) DeepCopyInto(out *ClusterWorkspaceShardSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ClusterWorkspaceShardStatus ¶
type ClusterWorkspaceShardStatus struct { // Set of integer resources that workspaces can be scheduled into // +optional Capacity corev1.ResourceList `json:"capacity,omitempty"` // Current processing state of the ClusterWorkspaceShard. // +optional Conditions conditionsv1alpha1.Conditions `json:"conditions,omitempty"` }
ClusterWorkspaceShardStatus communicates the observed state of the ClusterWorkspaceShard.
func (*ClusterWorkspaceShardStatus) DeepCopy ¶
func (in *ClusterWorkspaceShardStatus) DeepCopy() *ClusterWorkspaceShardStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterWorkspaceShardStatus.
func (*ClusterWorkspaceShardStatus) DeepCopyInto ¶
func (in *ClusterWorkspaceShardStatus) DeepCopyInto(out *ClusterWorkspaceShardStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ClusterWorkspaceSpec ¶
type ClusterWorkspaceSpec struct { // +optional ReadOnly bool `json:"readOnly,omitempty"` // type defines properties of the workspace both on creation (e.g. initial // resources and initially installed APIs) and during runtime (e.g. permissions). // If no type is provided, the default type for the workspace in which this workspace // is nesting will be used. // // The type is a reference to a ClusterWorkspaceType in the listed workspace, but // lower-cased. The ClusterWorkspaceType existence is validated at admission during // creation. The type is immutable after creation. The use of a type is gated via // the RBAC clusterworkspacetypes/use resource permission. // // +optional Type ClusterWorkspaceTypeReference `json:"type,omitempty"` // shard constraints onto which shards this cluster workspace can be scheduled to. // if the constraint is not fulfilled by the current location stored in the status, // movement will be attempted. // // Either shard name or shard selector must be specified. // // If the no shard constraints are specified, an aribtrary shard is chosen. // // +optional Shard *ShardConstraints `json:"shard,omitempty"` }
ClusterWorkspaceSpec holds the desired state of the ClusterWorkspace.
func (*ClusterWorkspaceSpec) DeepCopy ¶
func (in *ClusterWorkspaceSpec) DeepCopy() *ClusterWorkspaceSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterWorkspaceSpec.
func (*ClusterWorkspaceSpec) DeepCopyInto ¶
func (in *ClusterWorkspaceSpec) DeepCopyInto(out *ClusterWorkspaceSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ClusterWorkspaceStatus ¶
type ClusterWorkspaceStatus struct { // Phase of the workspace (Scheduling / Initializing / Ready) Phase ClusterWorkspacePhaseType `json:"phase,omitempty"` // Current processing state of the ClusterWorkspace. // +optional Conditions conditionsv1alpha1.Conditions `json:"conditions,omitempty"` // Base URL where this ClusterWorkspace can be targeted. // This will generally be of the form: https://<workspace shard server>/cluster/<workspace name>. // But a workspace could also be targetable by a unique hostname in the future. // // +kubebuilder:validation:Pattern:https://[^/].* // +optional BaseURL string `json:"baseURL,omitempty"` // Contains workspace placement information. // // +optional Location ClusterWorkspaceLocation `json:"location,omitempty"` // initializers are set on creation by the system and must be cleared // by a controller before the workspace can be used. The workspace will // stay in the phase "Initializing" state until all initializers are cleared. // // A cluster workspace in "Initializing" state are gated via the RBAC // clusterworkspaces/initialize resource permission. // // +optional Initializers []ClusterWorkspaceInitializer `json:"initializers,omitempty"` }
ClusterWorkspaceStatus communicates the observed state of the ClusterWorkspace.
func (*ClusterWorkspaceStatus) DeepCopy ¶
func (in *ClusterWorkspaceStatus) DeepCopy() *ClusterWorkspaceStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterWorkspaceStatus.
func (*ClusterWorkspaceStatus) DeepCopyInto ¶
func (in *ClusterWorkspaceStatus) DeepCopyInto(out *ClusterWorkspaceStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ClusterWorkspaceType ¶
type ClusterWorkspaceType struct { metav1.TypeMeta `json:",inline"` // +optional metav1.ObjectMeta `json:"metadata,omitempty"` // +optional Spec ClusterWorkspaceTypeSpec `json:"spec,omitempty"` // +optional Status ClusterWorkspaceTypeStatus `json:"status,omitempty"` }
ClusterWorkspaceType specifies behaviour of workspaces of this type.
+crd +genclient +genclient:nonNamespaced +kubebuilder:subresource:status +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +kubebuilder:resource:scope=Cluster,categories=kcp
func (*ClusterWorkspaceType) DeepCopy ¶
func (in *ClusterWorkspaceType) DeepCopy() *ClusterWorkspaceType
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterWorkspaceType.
func (*ClusterWorkspaceType) DeepCopyInto ¶
func (in *ClusterWorkspaceType) DeepCopyInto(out *ClusterWorkspaceType)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ClusterWorkspaceType) DeepCopyObject ¶
func (in *ClusterWorkspaceType) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*ClusterWorkspaceType) GetConditions ¶
func (in *ClusterWorkspaceType) GetConditions() conditionsv1alpha1.Conditions
func (*ClusterWorkspaceType) SetConditions ¶
func (in *ClusterWorkspaceType) SetConditions(conditions conditionsv1alpha1.Conditions)
type ClusterWorkspaceTypeExtension ¶
type ClusterWorkspaceTypeExtension struct { // with are ClusterWorkspaceTypes whose initializers are added to the list // for the owning type, and for whom the owning type becomes an alias, as long // as all of their required types are not mentioned in without. // // +optional With []ClusterWorkspaceTypeReference `json:"with,omitempty"` }
ClusterWorkspaceTypeExtension defines how other ClusterWorkspaceTypes are composed together to add functionality to the owning ClusterWorkspaceType.
func (*ClusterWorkspaceTypeExtension) DeepCopy ¶
func (in *ClusterWorkspaceTypeExtension) DeepCopy() *ClusterWorkspaceTypeExtension
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterWorkspaceTypeExtension.
func (*ClusterWorkspaceTypeExtension) DeepCopyInto ¶
func (in *ClusterWorkspaceTypeExtension) DeepCopyInto(out *ClusterWorkspaceTypeExtension)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ClusterWorkspaceTypeList ¶
type ClusterWorkspaceTypeList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata"` Items []ClusterWorkspaceType `json:"items"` }
ClusterWorkspaceTypeList is a list of cluster workspace types
+k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
func (*ClusterWorkspaceTypeList) DeepCopy ¶
func (in *ClusterWorkspaceTypeList) DeepCopy() *ClusterWorkspaceTypeList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterWorkspaceTypeList.
func (*ClusterWorkspaceTypeList) DeepCopyInto ¶
func (in *ClusterWorkspaceTypeList) DeepCopyInto(out *ClusterWorkspaceTypeList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ClusterWorkspaceTypeList) DeepCopyObject ¶
func (in *ClusterWorkspaceTypeList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type ClusterWorkspaceTypeName ¶
type ClusterWorkspaceTypeName string
ClusterWorkspaceTypeName is a name of a ClusterWorkspaceType
+kubebuilder:validation:Pattern=`^[a-z]([a-z0-9-]{0,61}[a-z0-9])?`
func TypeName ¶
func TypeName(objectName string) ClusterWorkspaceTypeName
TypeName converts the metadata.name of a ClusterWorkspaceType to the proper name of a type, as users interact with it.
type ClusterWorkspaceTypeReference ¶
type ClusterWorkspaceTypeReference struct { // name is the name of the ClusterWorkspaceType // // +required // +kubebuilder:validation:Required Name ClusterWorkspaceTypeName `json:"name"` // path is an absolute reference to the workspace that owns this type, e.g. root:org:ws. // // +optional // +kubebuilder:validation:Pattern:="^root(:[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$" Path string `json:"path"` }
ClusterWorkspaceTypeReference is a globally unique, fully qualified reference to a cluster workspace type.
func ReferenceFor ¶
func ReferenceFor(cwt *ClusterWorkspaceType) ClusterWorkspaceTypeReference
ReferenceFor returns a reference to the type.
func (*ClusterWorkspaceTypeReference) DeepCopy ¶
func (in *ClusterWorkspaceTypeReference) DeepCopy() *ClusterWorkspaceTypeReference
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterWorkspaceTypeReference.
func (*ClusterWorkspaceTypeReference) DeepCopyInto ¶
func (in *ClusterWorkspaceTypeReference) DeepCopyInto(out *ClusterWorkspaceTypeReference)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (ClusterWorkspaceTypeReference) Equal ¶
func (r ClusterWorkspaceTypeReference) Equal(other ClusterWorkspaceTypeReference) bool
func (ClusterWorkspaceTypeReference) String ¶
func (r ClusterWorkspaceTypeReference) String() string
type ClusterWorkspaceTypeSelector ¶
type ClusterWorkspaceTypeSelector struct { // none means that no type matches. // // +kuberbuilders:Enum=true None bool `json:"none,omitempty"` // types is a list of ClusterWorkspaceTypes that match. A workspace type extending // another workspace type automatically is considered as that extended type as well // (even transitively). // // An empty list matches all types. // // +optional // +kubebuilder:validation:MinItems=1 Types []ClusterWorkspaceTypeReference `json:"types,omitempty"` }
ClusterWorkspaceTypeSelector describes a set of types.
func (*ClusterWorkspaceTypeSelector) DeepCopy ¶
func (in *ClusterWorkspaceTypeSelector) DeepCopy() *ClusterWorkspaceTypeSelector
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterWorkspaceTypeSelector.
func (*ClusterWorkspaceTypeSelector) DeepCopyInto ¶
func (in *ClusterWorkspaceTypeSelector) DeepCopyInto(out *ClusterWorkspaceTypeSelector)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ClusterWorkspaceTypeSpec ¶
type ClusterWorkspaceTypeSpec struct { // initializer determines if this ClusterWorkspaceType has an associated initializing // controller. These controllers are used to add functionality to a ClusterWorkspace; // all controllers must finish their work before the ClusterWorkspace becomes ready // for use. // // One initializing controller is supported per ClusterWorkspaceType; the identifier // for this initializer will be a colon-delimited string using the workspace in which // the ClusterWorkspaceType is defined, and the type's name. For example, if a // ClusterWorkspaceType `example` is created in the `root:org` workspace, the implicit // initializer name is `root:org:Example`. // // +optional Initializer bool `json:"initializer,omitempty"` // extend is a list of other ClusterWorkspaceTypes whose initializers and limitAllowedChildren // and limitAllowedParents this ClusterWorkspaceType is inheriting. By (transitively) extending // another ClusterWorkspaceType, this ClusterWorkspaceType will be considered as that // other type in evaluation of limitAllowedChildren and limitAllowedParents constraints. // // A dependency cycle stop this ClusterWorkspaceType from being admitted as the type // of a ClusterWorkspace. // // A non-existing dependency stop this ClusterWorkspaceType from being admitted as the type // of a ClusterWorkspace. // // +optional Extend ClusterWorkspaceTypeExtension `json:"extend,omitempty"` // additionalWorkspaceLabels are a set of labels that will be added to a // ClusterWorkspace on creation. // // +optional AdditionalWorkspaceLabels map[string]string `json:"additionalWorkspaceLabels,omitempty"` // defaultChildWorkspaceType is the ClusterWorkspaceType that will be used // by default if another, nested ClusterWorkspace is created in a workspace // of this type. When this field is unset, the user must specify a type when // creating nested workspaces. Extending another ClusterWorkspaceType does // not inherit its defaultChildWorkspaceType. // // +optional DefaultChildWorkspaceType *ClusterWorkspaceTypeReference `json:"defaultChildWorkspaceType,omitempty"` // limitAllowedChildren specifies constraints for sub-workspaces created in workspaces // of this type. These are in addition to child constraints of types this one extends. // // +optional LimitAllowedChildren *ClusterWorkspaceTypeSelector `json:"limitAllowedChildren,omitempty"` // limitAllowedParents specifies constraints for the parent workspace that workspaces // of this type are created in. These are in addition to parent constraints of types this one // extends. // // +optional LimitAllowedParents *ClusterWorkspaceTypeSelector `json:"limitAllowedParents,omitempty"` }
func (*ClusterWorkspaceTypeSpec) DeepCopy ¶
func (in *ClusterWorkspaceTypeSpec) DeepCopy() *ClusterWorkspaceTypeSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterWorkspaceTypeSpec.
func (*ClusterWorkspaceTypeSpec) DeepCopyInto ¶
func (in *ClusterWorkspaceTypeSpec) DeepCopyInto(out *ClusterWorkspaceTypeSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ClusterWorkspaceTypeStatus ¶
type ClusterWorkspaceTypeStatus struct { // conditions is a list of conditions that apply to the APIExport. // // +optional Conditions conditionsv1alpha1.Conditions `json:"conditions,omitempty"` // virtualWorkspaces contains all APIExport virtual workspace URLs. // +optional VirtualWorkspaces []VirtualWorkspace `json:"virtualWorkspaces,omitempty"` }
ClusterWorkspaceTypeStatus defines the observed state of ClusterWorkspaceType.
func (*ClusterWorkspaceTypeStatus) DeepCopy ¶
func (in *ClusterWorkspaceTypeStatus) DeepCopy() *ClusterWorkspaceTypeStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterWorkspaceTypeStatus.
func (*ClusterWorkspaceTypeStatus) DeepCopyInto ¶
func (in *ClusterWorkspaceTypeStatus) DeepCopyInto(out *ClusterWorkspaceTypeStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ShardConstraints ¶
type ShardConstraints struct { // name is the name of ClusterWorkspaceShard. // // +optional // +kubebuilder:validation:Pattern=`^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$` Name string `json:"name,omitempty"` // selector is a label selector that filters shard scheduling targets. // // +optional Selector *metav1.LabelSelector `json:"selector,omitempty"` }
func (*ShardConstraints) DeepCopy ¶
func (in *ShardConstraints) DeepCopy() *ShardConstraints
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShardConstraints.
func (*ShardConstraints) DeepCopyInto ¶
func (in *ShardConstraints) DeepCopyInto(out *ShardConstraints)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type VirtualWorkspace ¶
type VirtualWorkspace struct { // url is a ClusterWorkspaceType initialization virtual workspace URL. // // +kubebuilder:validation:MinLength=1 // +kubebuilder:format:URL // +required URL string `json:"url"` }
func (*VirtualWorkspace) DeepCopy ¶
func (in *VirtualWorkspace) DeepCopy() *VirtualWorkspace
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VirtualWorkspace.
func (*VirtualWorkspace) DeepCopyInto ¶
func (in *VirtualWorkspace) DeepCopyInto(out *VirtualWorkspace)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.