From 36a1ea5b8dc56e4e71ff6ea6d0c6a9dc578a33e4 Mon Sep 17 00:00:00 2001 From: Angel Misevski Date: Thu, 23 Jun 2022 15:58:06 -0400 Subject: [PATCH] Add support for component contributions in DevWorkspace custom resource Add field `.spec.contributions` to the DevWorkspace custom resource to allow specifying additional resources (e.g. editors, etc.) that should be included in a DevWorkspace. This allows for adding additional components to a workspace while using the .spec.template field to store a devfile. Signed-off-by: Angel Misevski --- .../v1alpha2/component_contribution.go | 21 +++++++++++++++++++ .../workspaces/v1alpha2/devworkspace_types.go | 7 ++++--- 2 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 pkg/apis/workspaces/v1alpha2/component_contribution.go diff --git a/pkg/apis/workspaces/v1alpha2/component_contribution.go b/pkg/apis/workspaces/v1alpha2/component_contribution.go new file mode 100644 index 000000000..2ed69da19 --- /dev/null +++ b/pkg/apis/workspaces/v1alpha2/component_contribution.go @@ -0,0 +1,21 @@ +package v1alpha2 + +import attributes "github.com/devfile/api/v2/pkg/attributes" + +type ComponentContribution struct { + // Mandatory name that allows referencing the component + // from other elements (such as commands) or from an external + // devfile that may reference this component through a parent or a plugin. + // +kubebuilder:validation:Pattern=^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ + // +kubebuilder:validation:MaxLength=63 + Name string `json:"name"` + // Map of implementation-dependant free-form YAML attributes. + // +optional + // +kubebuilder:validation:Type=object + // +kubebuilder:pruning:PreserveUnknownFields + // +kubebuilder:validation:Schemaless + Attributes attributes.Attributes `json:"attributes,omitempty"` + // Reference to a remote Devfile or DevWorkspace resource to be included + // in the DevWorkspace. + PluginComponent `json:",inline"` +} diff --git a/pkg/apis/workspaces/v1alpha2/devworkspace_types.go b/pkg/apis/workspaces/v1alpha2/devworkspace_types.go index c7fe603c5..c8a500a08 100644 --- a/pkg/apis/workspaces/v1alpha2/devworkspace_types.go +++ b/pkg/apis/workspaces/v1alpha2/devworkspace_types.go @@ -7,9 +7,10 @@ import ( // DevWorkspaceSpec defines the desired state of DevWorkspace type DevWorkspaceSpec struct { - Started bool `json:"started"` - RoutingClass string `json:"routingClass,omitempty"` - Template DevWorkspaceTemplateSpec `json:"template,omitempty"` + Started bool `json:"started"` + RoutingClass string `json:"routingClass,omitempty"` + Template DevWorkspaceTemplateSpec `json:"template,omitempty"` + Contributions []ComponentContribution `json:"contributions,omitempty"` } // DevWorkspaceStatus defines the observed state of DevWorkspace