v1alpha1

package
v0.24.0 Latest Latest
Warning

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

Go to latest
Published: Apr 22, 2024 License: Apache-2.0 Imports: 9 Imported by: 8

Documentation

Overview

+k8s:deepcopy-gen=package,register +groupName=tenancy.kcp.io +k8s:openapi-gen=true

Index

Constants

View Source
const (
	// ExperimentalWorkspaceOwnerAnnotationKey is the annotation key used to indicate the owner of the workspace.
	ExperimentalWorkspaceOwnerAnnotationKey string = "experimental.tenancy.kcp.io/owner"
	// ExperimentalWorkspaceMountAnnotationKey is the annotation key used to indicate the mounts of the workspace.
	ExperimentalWorkspaceMountAnnotationKey string = "experimental.tenancy.kcp.io/mount"
	// ExperimentalIsMountAnnotationKey is the annotation key used to indicate that object is a mount.
	ExperimentalIsMountAnnotationKey string = "experimental.tenancy.kcp.io/is-mount"
	// ExperimentalMountWorkspaceAnnotationKey is the annotation key used to indicate the owner workspace of the mount.
	ExperimentalMountWorkspaceAnnotationKey string = "experimental.tenancy.kcp.io/owning-workspace"
)
View Source
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"

	// WorkspaceContentDeleted represents the status that all resources in the workspace are 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"
	// WorkspaceInitializedWorkspaceDisappeared reason in WorkspaceInitialized condition means that the LogicalCluster
	// object has disappeared.
	WorkspaceInitializedWorkspaceDisappeared = "WorkspaceDisappeared"

	// WorkspaceAPIBindingsInitialized represents the status of the initial APIBindings for the workspace.
	WorkspaceAPIBindingsInitialized conditionsv1alpha1.ConditionType = "APIBindingsInitialized"
	// WorkspaceInitializedWaitingOnAPIBindings is a reason for the APIBindingsInitialized condition that indicates
	// at least one APIBinding is not ready.
	WorkspaceInitializedWaitingOnAPIBindings = "WaitingOnAPIBindings"
	// WorkspaceInitializedWorkspaceTypeInvalid is a reason for the APIBindingsInitialized
	// condition that indicates something is invalid with the WorkspaceType (e.g. a cycle trying
	// to resolve all the transitive types).
	WorkspaceInitializedWorkspaceTypeInvalid = "WorkspaceTypesInvalid"
	// WorkspaceInitializedAPIBindingErrors is a reason for the APIBindingsInitialized condition that indicates there
	// were errors trying to initialize APIBindings for the workspace.
	WorkspaceInitializedAPIBindingErrors = "APIBindingErrors"
)

These are valid conditions of workspace.

View Source
const (
	WorkspaceTypeVirtualWorkspaceURLsReady conditionsv1alpha1.ConditionType = "VirtualWorkspaceURLsReady"

	ErrorGeneratingURLsReason = "ErrorGeneratingURLs"
)

These are valid conditions of WorkspaceType.

View Source
const (
	// WorkspacePhaseLabel holds the Workspace.Status.Phase value, and is enforced to match
	// by a mutating admission webhook.
	WorkspacePhaseLabel = "tenancy.kcp.io/phase"
	// WorkspaceInitializerLabelPrefix is the prefix for labels which match Workspace.Status.Initializers,
	// and the set of labels with this prefix is enforced to match the set of initializers by a mutating admission
	// webhook.
	WorkspaceInitializerLabelPrefix = "initializer.internal.kcp.io/"
)
View Source
const LogicalClusterTypeAnnotationKey = "internal.tenancy.kcp.io/type"

LogicalClusterTypeAnnotationKey is the annotation key used to indicate the type of the workspace on the corresponding LogicalCluster object. Its format is "root:ws:name".

View Source
const (
	// RootWorkspaceTypeName is a reference to the root logical cluster, which has no workspace type.
	RootWorkspaceTypeName = WorkspaceTypeName("root")
)
View Source
const WorkspaceAPIBindingsInitializer corev1alpha1.LogicalClusterInitializer = "system:apibindings"

WorkspaceAPIBindingsInitializer is a special-case initializer that waits for APIBindings defined on a WorkspaceType to be created.

Variables

View Source
var (
	SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes)
	AddToScheme   = SchemeBuilder.AddToScheme
)
View Source
var SchemeGroupVersion = schema.GroupVersion{Group: tenancy.GroupName, Version: "v1alpha1"}

SchemeGroupVersion is group version used to register these objects.

Functions

func Kind

func Kind(kind string) schema.GroupKind

Kind takes an unqualified kind and returns back a Group qualified GroupKind.

func ObjectName

func ObjectName(typeName WorkspaceTypeName) string

ObjectName converts the proper name of a type that users interact with to the metadata.name of the WorkspaceType object.

func Resource

func Resource(resource string) schema.GroupResource

Resource takes an unqualified resource and returns a Group qualified GroupResource.

func WorkspaceTypeReservedNames

func WorkspaceTypeReservedNames() []string

WorkspaceTypeReservedNames defines the set of names that may not be used on user-supplied WorkspaceTypes. TODO(hasheddan): tie this definition of reserved names to the patches used to apply the same restrictions to the OpenAPISchema.

Types

type APIExportReference

type APIExportReference struct {
	// path is the fully-qualified path to the workspace containing the APIExport. If it is
	// empty, the current workspace is assumed.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +kubebuilder:validation:Pattern:="^[a-z0-9]([-a-z0-9]*[a-z0-9])?(:[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$"
	Path string `json:"path,omitempty"`

	// export is the name of the APIExport.
	//
	// +required
	// +kubebuilder:validation:Required
	// +kube:validation:MinLength=1
	Export string `json:"export"`
}

APIExportReference provides the fields necessary to resolve an APIExport.

func (*APIExportReference) DeepCopy

func (in *APIExportReference) DeepCopy() *APIExportReference

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

func (*APIExportReference) DeepCopyInto

func (in *APIExportReference) DeepCopyInto(out *APIExportReference)

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

type Mount added in v0.22.0

type Mount struct {
	// MountSpec is the spec of the mount.
	MountSpec MountSpec `json:"spec,omitempty"`
	// MountStatus is the status of the mount.
	MountStatus MountStatus `json:"status,omitempty"`
}

Mount is a workspace mount that can be used to mount a workspace into another workspace or resource. Mounting itself is done at front proxy level.

func ParseTenancyMountAnnotation added in v0.22.0

func ParseTenancyMountAnnotation(value string) (*Mount, error)

ParseTenancyMountAnnotation parses the value of the annotation into a Mount.

func (*Mount) DeepCopy added in v0.22.0

func (in *Mount) DeepCopy() *Mount

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

func (*Mount) DeepCopyInto added in v0.22.0

func (in *Mount) DeepCopyInto(out *Mount)

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

func (*Mount) String added in v0.22.0

func (m *Mount) String() string

String returns the string representation of the mount.

type MountPhaseType added in v0.22.0

type MountPhaseType string

MountPhaseType is the type of the current phase of the mount (Initializing, Connecting, Ready, Unknown).

+kubebuilder:validation:Enum=Initializing;Connecting;Ready;Unknown

const (
	// Initializing means the cluster proxy is being initialized.
	MountPhaseInitializing MountPhaseType = "Initializing"
	// Connecting means the cluster proxy is waiting for the agent to connect.
	MountPhaseConnecting MountPhaseType = "Connecting"
	// Ready means the cluster proxy is ready, and agent connected.
	MountPhaseReady MountPhaseType = "Ready"
	// Unknown means the cluster proxy status is unknown.
	MountPhaseUnknown MountPhaseType = "Unknown"
)

type MountSpec added in v0.22.0

type MountSpec struct {
	// Reference is an ObjectReference to the object that is mounted.
	Reference *corev1.ObjectReference `json:"ref,omitempty"`
}

func (*MountSpec) DeepCopy added in v0.22.0

func (in *MountSpec) DeepCopy() *MountSpec

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

func (*MountSpec) DeepCopyInto added in v0.22.0

func (in *MountSpec) DeepCopyInto(out *MountSpec)

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

type MountStatus added in v0.22.0

type MountStatus struct {
	// Phase of the mount (Initializing, Connecting, Ready, Unknown).
	//
	// +kubebuilder:default=Initializing
	Phase MountPhaseType `json:"phase,omitempty"`
	// Conditions is a list of conditions and their status.
	// Current processing state of the Mount.
	// +optional
	Conditions conditionsv1alpha1.Conditions `json:"conditions,omitempty"`

	// URL is the URL of the mount. Mount is considered mountable when URL is set.
	// +optional
	URL string `json:"url,omitempty"`
}

MountStatus is the status of a mount. It is used to indicate the status of a mount, potentially managed outside of the core API.

func (*MountStatus) DeepCopy added in v0.22.0

func (in *MountStatus) DeepCopy() *MountStatus

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

func (*MountStatus) DeepCopyInto added in v0.22.0

func (in *MountStatus) DeepCopyInto(out *MountStatus)

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 WorkspaceType 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.

type Workspace

type Workspace struct {
	metav1.TypeMeta `json:",inline"`
	// +optional
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec WorkspaceSpec `json:"spec"`

	// +optional
	Status WorkspaceStatus `json:"status,omitempty"`
}

Workspace defines a generic Kubernetes-cluster-like endpoint, with standard Kubernetes discovery APIs, OpenAPI and resource API endpoints.

A workspace can be backed by different concrete types of workspace implementation, depending on access pattern. All workspace implementations share the characteristic that the URL that serves a given workspace can be used with standard Kubernetes API machinery and client libraries and command line tools.

+crd +genclient +genclient:nonNamespaced +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +kubebuilder:storageversion +kubebuilder:subresource:status +kubebuilder:resource:scope=Cluster,categories=kcp,shortName=ws +kubebuilder:printcolumn:name="Type",type=string,JSONPath=`.spec.type.name`,description="Type of the workspace" +kubebuilder:printcolumn:name="Region",type=string,JSONPath=`.metadata.labels['region']`,description="The region this workspace is in" +kubebuilder:printcolumn:name="Phase",type=string,JSONPath=`.metadata.labels['tenancy\.kcp\.io/phase']`,description="The current phase (e.g. Scheduling, Initializing, Ready, Deleting)" +kubebuilder:printcolumn:name="URL",type=string,JSONPath=`.spec.URL`,description="URL to access the workspace" +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp"

func (*Workspace) DeepCopy

func (in *Workspace) DeepCopy() *Workspace

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

func (*Workspace) DeepCopyInto

func (in *Workspace) DeepCopyInto(out *Workspace)

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

func (*Workspace) DeepCopyObject

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

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

func (*Workspace) GetConditions

func (in *Workspace) GetConditions() conditionsv1alpha1.Conditions

func (*Workspace) SetConditions

func (in *Workspace) SetConditions(c conditionsv1alpha1.Conditions)

type WorkspaceList

type WorkspaceList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata"`

	Items []Workspace `json:"items"`
}

WorkspaceList is a list of Workspaces

+k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object

func (*WorkspaceList) DeepCopy

func (in *WorkspaceList) DeepCopy() *WorkspaceList

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

func (*WorkspaceList) DeepCopyInto

func (in *WorkspaceList) DeepCopyInto(out *WorkspaceList)

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

func (*WorkspaceList) DeepCopyObject

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

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

type WorkspaceLocation

type WorkspaceLocation struct {

	// selector is a label selector that filters workspace scheduling targets.
	//
	// +optional
	Selector *metav1.LabelSelector `json:"selector,omitempty"`
}

func (*WorkspaceLocation) DeepCopy

func (in *WorkspaceLocation) DeepCopy() *WorkspaceLocation

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

func (*WorkspaceLocation) DeepCopyInto

func (in *WorkspaceLocation) DeepCopyInto(out *WorkspaceLocation)

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

type WorkspaceSpec

type WorkspaceSpec struct {
	// 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 WorkspaceType in the listed workspace, but
	// lower-cased. The WorkspaceType existence is validated at admission during
	// creation. The type is immutable after creation. The use of a type is gated via
	// the RBAC workspacetypes/use resource permission.
	//
	// +optional
	// +kubebuilder:validation:XValidation:rule="self.name == oldSelf.name",message="name is immutable"
	// +kubebuilder:validation:XValidation:rule="has(oldSelf.path) == has(self.path)",message="path is immutable"
	// +kubebuilder:validation:XValidation:rule="!has(oldSelf.path) || !has(self.path) || self.path == oldSelf.path",message="path is immutable"
	Type WorkspaceTypeReference `json:"type,omitempty"`

	// location constraints where this workspace can be scheduled to.
	//
	// If the no location is specified, an arbitrary location is chosen.
	//
	// +optional
	Location *WorkspaceLocation `json:"location,omitempty"`

	// cluster is the name of the logical cluster this workspace is stored under.
	//
	// Set by the system.
	//
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="cluster is immutable"
	Cluster string `json:"cluster,omitempty"`

	// URL is the address under which the Kubernetes-cluster-like endpoint
	// can be found. This URL can be used to access the workspace with standard Kubernetes
	// client libraries and command line tools.
	//
	// Set by the system.
	//
	// +kubebuilder:format:uri
	URL string `json:"URL,omitempty"`
}

WorkspaceSpec holds the desired state of the Workspace. +kubebuilder:validation:XValidation:rule="!has(oldSelf.URL) || has(self.URL)",message="URL cannot be unset" +kubebuilder:validation:XValidation:rule="!has(oldSelf.cluster) || has(self.cluster)",message="cluster cannot be unset"

func (*WorkspaceSpec) DeepCopy

func (in *WorkspaceSpec) DeepCopy() *WorkspaceSpec

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

func (*WorkspaceSpec) DeepCopyInto

func (in *WorkspaceSpec) DeepCopyInto(out *WorkspaceSpec)

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

type WorkspaceStatus

type WorkspaceStatus struct {
	// Phase of the workspace (Scheduling, Initializing, Ready).
	//
	// +kubebuilder:default=Scheduling
	Phase corev1alpha1.LogicalClusterPhaseType `json:"phase,omitempty"`

	// Current processing state of the Workspace.
	// +optional
	Conditions conditionsv1alpha1.Conditions `json:"conditions,omitempty"`

	// initializers must be cleared by a controller before the workspace is ready
	// and can be used.
	//
	// +optional
	Initializers []corev1alpha1.LogicalClusterInitializer `json:"initializers,omitempty"`
}

WorkspaceStatus communicates the observed state of the Workspace.

func (*WorkspaceStatus) DeepCopy

func (in *WorkspaceStatus) DeepCopy() *WorkspaceStatus

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

func (*WorkspaceStatus) DeepCopyInto

func (in *WorkspaceStatus) DeepCopyInto(out *WorkspaceStatus)

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

type WorkspaceType

type WorkspaceType struct {
	metav1.TypeMeta `json:",inline"`
	// +optional
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// +optional
	Spec WorkspaceTypeSpec `json:"spec,omitempty"`

	// +optional
	Status WorkspaceTypeStatus `json:"status,omitempty"`
}

WorkspaceType 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 (*WorkspaceType) DeepCopy

func (in *WorkspaceType) DeepCopy() *WorkspaceType

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

func (*WorkspaceType) DeepCopyInto

func (in *WorkspaceType) DeepCopyInto(out *WorkspaceType)

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

func (*WorkspaceType) DeepCopyObject

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

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

func (*WorkspaceType) GetConditions

func (in *WorkspaceType) GetConditions() conditionsv1alpha1.Conditions

func (*WorkspaceType) SetConditions

func (in *WorkspaceType) SetConditions(conditions conditionsv1alpha1.Conditions)

type WorkspaceTypeExtension

type WorkspaceTypeExtension struct {
	// with are WorkspaceTypes 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 []WorkspaceTypeReference `json:"with,omitempty"`
}

WorkspaceTypeExtension defines how other WorkspaceTypes are composed together to add functionality to the owning WorkspaceType.

func (*WorkspaceTypeExtension) DeepCopy

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

func (*WorkspaceTypeExtension) DeepCopyInto

func (in *WorkspaceTypeExtension) DeepCopyInto(out *WorkspaceTypeExtension)

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

type WorkspaceTypeList

type WorkspaceTypeList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata"`

	Items []WorkspaceType `json:"items"`
}

WorkspaceTypeList is a list of workspace types

+k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object

func (*WorkspaceTypeList) DeepCopy

func (in *WorkspaceTypeList) DeepCopy() *WorkspaceTypeList

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

func (*WorkspaceTypeList) DeepCopyInto

func (in *WorkspaceTypeList) DeepCopyInto(out *WorkspaceTypeList)

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

func (*WorkspaceTypeList) DeepCopyObject

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

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

type WorkspaceTypeName

type WorkspaceTypeName string

WorkspaceTypeName is a name of a WorkspaceType

+kubebuilder:validation:Pattern=`^[a-z]([a-z0-9-]{0,61}[a-z0-9])?`

func TypeName

func TypeName(objectName string) WorkspaceTypeName

TypeName converts the metadata.name of a WorkspaceType to the proper name of a type, as users interact with it.

type WorkspaceTypeReference

type WorkspaceTypeReference struct {
	// name is the name of the WorkspaceType
	//
	// +required
	// +kubebuilder:validation:Required
	Name WorkspaceTypeName `json:"name"`

	// path is an absolute reference to the workspace that owns this type, e.g. root:org:ws.
	//
	// +optional
	// +kubebuilder:validation:Pattern:="^[a-z0-9]([-a-z0-9]*[a-z0-9])?(:[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$"
	Path string `json:"path,omitempty"`
}

WorkspaceTypeReference is a globally unique, fully qualified reference to a workspace type.

func (*WorkspaceTypeReference) DeepCopy

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

func (*WorkspaceTypeReference) DeepCopyInto

func (in *WorkspaceTypeReference) DeepCopyInto(out *WorkspaceTypeReference)

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

func (WorkspaceTypeReference) String

func (r WorkspaceTypeReference) String() string

type WorkspaceTypeSelector

type WorkspaceTypeSelector struct {
	// none means that no type matches.
	//
	// +kuberbuilders:Enum=true
	None bool `json:"none,omitempty"`

	// types is a list of WorkspaceTypes 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 []WorkspaceTypeReference `json:"types,omitempty"`
}

WorkspaceTypeSelector describes a set of types.

func (*WorkspaceTypeSelector) DeepCopy

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

func (*WorkspaceTypeSelector) DeepCopyInto

func (in *WorkspaceTypeSelector) DeepCopyInto(out *WorkspaceTypeSelector)

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

type WorkspaceTypeSpec

type WorkspaceTypeSpec struct {
	// initializer determines if this WorkspaceType has an associated initializing
	// controller. These controllers are used to add functionality to a Workspace;
	// all controllers must finish their work before the Workspace becomes ready
	// for use.
	//
	// One initializing controller is supported per WorkspaceType; the identifier
	// for this initializer will be a colon-delimited string using the workspace in which
	// the WorkspaceType is defined, and the type's name. For example, if a
	// WorkspaceType `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 WorkspaceTypes whose initializers and limitAllowedChildren
	// and limitAllowedParents this WorkspaceType is inheriting. By (transitively) extending
	// another WorkspaceType, this WorkspaceType will be considered as that
	// other type in evaluation of limitAllowedChildren and limitAllowedParents constraints.
	//
	// A dependency cycle stop this WorkspaceType from being admitted as the type
	// of a Workspace.
	//
	// A non-existing dependency stop this WorkspaceType from being admitted as the type
	// of a Workspace.
	//
	// +optional
	Extend WorkspaceTypeExtension `json:"extend,omitempty"`

	// additionalWorkspaceLabels are a set of labels that will be added to a
	// Workspace on creation.
	//
	// +optional
	AdditionalWorkspaceLabels map[string]string `json:"additionalWorkspaceLabels,omitempty"`

	// defaultChildWorkspaceType is the WorkspaceType that will be used
	// by default if another, nested Workspace 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 WorkspaceType does
	// not inherit its defaultChildWorkspaceType.
	//
	// +optional
	DefaultChildWorkspaceType *WorkspaceTypeReference `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 *WorkspaceTypeSelector `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 *WorkspaceTypeSelector `json:"limitAllowedParents,omitempty"`

	// defaultAPIBindings are the APIs to bind during initialization of workspaces created from this type.
	// The APIBinding names will be generated dynamically.
	//
	// +optional
	DefaultAPIBindings []APIExportReference `json:"defaultAPIBindings,omitempty"`
}

func (*WorkspaceTypeSpec) DeepCopy

func (in *WorkspaceTypeSpec) DeepCopy() *WorkspaceTypeSpec

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

func (*WorkspaceTypeSpec) DeepCopyInto

func (in *WorkspaceTypeSpec) DeepCopyInto(out *WorkspaceTypeSpec)

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

type WorkspaceTypeStatus

type WorkspaceTypeStatus 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"`
}

WorkspaceTypeStatus defines the observed state of WorkspaceType.

func (*WorkspaceTypeStatus) DeepCopy

func (in *WorkspaceTypeStatus) DeepCopy() *WorkspaceTypeStatus

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

func (*WorkspaceTypeStatus) DeepCopyInto

func (in *WorkspaceTypeStatus) DeepCopyInto(out *WorkspaceTypeStatus)

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

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL