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