This is an automated email from the ASF dual-hosted git repository.

pcongiusti pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-k.git


The following commit(s) were added to refs/heads/main by this push:
     new 7f42ac84a feat(trait): move runtime logic into trait catalog
7f42ac84a is described below

commit 7f42ac84af480360494c0ea4492ea0a7b40a7a09
Author: Pasquale Congiusti <[email protected]>
AuthorDate: Wed Mar 20 11:00:20 2024 +0100

    feat(trait): move runtime logic into trait catalog
---
 docs/modules/ROOT/partials/apis/camel-k-crds.adoc  | 23 ++++++++++-
 helm/camel-k/crds/crd-build.yaml                   | 46 +++++++++++++++++----
 helm/camel-k/crds/crd-camel-catalog.yaml           | 22 ++++++++--
 pkg/apis/camel/v1/common_types.go                  | 11 ++++-
 pkg/apis/camel/v1/zz_generated.deepcopy.go         | 21 ++++++++++
 .../applyconfiguration/camel/v1/capability.go      | 47 +++++++++++++++++++++-
 .../config/crd/bases/camel.apache.org_builds.yaml  | 46 +++++++++++++++++----
 .../crd/bases/camel.apache.org_camelcatalogs.yaml  | 22 ++++++++--
 8 files changed, 210 insertions(+), 28 deletions(-)

diff --git a/docs/modules/ROOT/partials/apis/camel-k-crds.adoc 
b/docs/modules/ROOT/partials/apis/camel-k-crds.adoc
index f08fee353..df8d38f86 100644
--- a/docs/modules/ROOT/partials/apis/camel-k-crds.adoc
+++ b/docs/modules/ROOT/partials/apis/camel-k-crds.adoc
@@ -1400,7 +1400,7 @@ list of dependencies needed for this scope
 
 * <<#_camel_apache_org_v1_RuntimeSpec, RuntimeSpec>>
 
-Capability is a particular feature which requires a well known set of 
dependencies
+Capability is a particular feature which requires a well known set of 
dependencies and other properties
 which are specified in the runtime catalog.
 
 [cols="2,2a",options="header"]
@@ -1413,7 +1413,28 @@ which are specified in the runtime catalog.
 |
 
 
+List of required Maven dependencies
 
+|`runtimeProperties` +
+map[string]string
+|
+
+
+Set of required Camel runtime properties
+
+|`buildTimeProperties` +
+map[string]string
+|
+
+
+Set of required Camel build time properties
+
+|`metadata` +
+map[string]string
+|
+
+
+Set of generic metadata
 
 
 |===
diff --git a/helm/camel-k/crds/crd-build.yaml b/helm/camel-k/crds/crd-build.yaml
index ae2925cd2..77a9016f7 100644
--- a/helm/camel-k/crds/crd-build.yaml
+++ b/helm/camel-k/crds/crd-build.yaml
@@ -638,10 +638,17 @@ spec:
                             capabilities:
                               additionalProperties:
                                 description: Capability is a particular 
feature which
-                                  requires a well known set of dependencies 
which
-                                  are specified in the runtime catalog.
+                                  requires a well known set of dependencies 
and other
+                                  properties which are specified in the 
runtime catalog.
                                 properties:
+                                  buildTimeProperties:
+                                    additionalProperties:
+                                      type: string
+                                    description: Set of required Camel build 
time
+                                      properties
+                                    type: object
                                   dependencies:
+                                    description: List of required Maven 
dependencies
                                     items:
                                       description: MavenArtifact defines a GAV 
(Group:Artifact:Type:Version:Classifier)
                                         Maven artifact.
@@ -666,8 +673,16 @@ spec:
                                       - groupId
                                       type: object
                                     type: array
-                                required:
-                                - dependencies
+                                  metadata:
+                                    additionalProperties:
+                                      type: string
+                                    description: Set of generic metadata
+                                    type: object
+                                  runtimeProperties:
+                                    additionalProperties:
+                                      type: string
+                                    description: Set of required Camel runtime 
properties
+                                    type: object
                                 type: object
                               description: features offered by this runtime
                               type: object
@@ -1453,10 +1468,17 @@ spec:
                             capabilities:
                               additionalProperties:
                                 description: Capability is a particular 
feature which
-                                  requires a well known set of dependencies 
which
-                                  are specified in the runtime catalog.
+                                  requires a well known set of dependencies 
and other
+                                  properties which are specified in the 
runtime catalog.
                                 properties:
+                                  buildTimeProperties:
+                                    additionalProperties:
+                                      type: string
+                                    description: Set of required Camel build 
time
+                                      properties
+                                    type: object
                                   dependencies:
+                                    description: List of required Maven 
dependencies
                                     items:
                                       description: MavenArtifact defines a GAV 
(Group:Artifact:Type:Version:Classifier)
                                         Maven artifact.
@@ -1481,8 +1503,16 @@ spec:
                                       - groupId
                                       type: object
                                     type: array
-                                required:
-                                - dependencies
+                                  metadata:
+                                    additionalProperties:
+                                      type: string
+                                    description: Set of generic metadata
+                                    type: object
+                                  runtimeProperties:
+                                    additionalProperties:
+                                      type: string
+                                    description: Set of required Camel runtime 
properties
+                                    type: object
                                 type: object
                               description: features offered by this runtime
                               type: object
diff --git a/helm/camel-k/crds/crd-camel-catalog.yaml 
b/helm/camel-k/crds/crd-camel-catalog.yaml
index 4f75f02b6..99458fd96 100644
--- a/helm/camel-k/crds/crd-camel-catalog.yaml
+++ b/helm/camel-k/crds/crd-camel-catalog.yaml
@@ -372,10 +372,16 @@ spec:
                   capabilities:
                     additionalProperties:
                       description: Capability is a particular feature which 
requires
-                        a well known set of dependencies which are specified 
in the
-                        runtime catalog.
+                        a well known set of dependencies and other properties 
which
+                        are specified in the runtime catalog.
                       properties:
+                        buildTimeProperties:
+                          additionalProperties:
+                            type: string
+                          description: Set of required Camel build time 
properties
+                          type: object
                         dependencies:
+                          description: List of required Maven dependencies
                           items:
                             description: MavenArtifact defines a GAV 
(Group:Artifact:Type:Version:Classifier)
                               Maven artifact.
@@ -400,8 +406,16 @@ spec:
                             - groupId
                             type: object
                           type: array
-                      required:
-                      - dependencies
+                        metadata:
+                          additionalProperties:
+                            type: string
+                          description: Set of generic metadata
+                          type: object
+                        runtimeProperties:
+                          additionalProperties:
+                            type: string
+                          description: Set of required Camel runtime properties
+                          type: object
                       type: object
                     description: features offered by this runtime
                     type: object
diff --git a/pkg/apis/camel/v1/common_types.go 
b/pkg/apis/camel/v1/common_types.go
index 93e81a213..5aef1596d 100644
--- a/pkg/apis/camel/v1/common_types.go
+++ b/pkg/apis/camel/v1/common_types.go
@@ -342,10 +342,17 @@ type RuntimeSpec struct {
        Capabilities map[string]Capability `json:"capabilities,omitempty" 
yaml:"capabilities,omitempty"`
 }
 
-// Capability is a particular feature which requires a well known set of 
dependencies
+// Capability is a particular feature which requires a well known set of 
dependencies and other properties
 // which are specified in the runtime catalog.
 type Capability struct {
-       Dependencies []MavenArtifact `json:"dependencies" yaml:"dependencies"`
+       // List of required Maven dependencies
+       Dependencies []MavenArtifact `json:"dependencies,omitempty" 
yaml:"dependencies,omitempty"`
+       // Set of required Camel runtime properties
+       RuntimeProperties map[string]string `json:"runtimeProperties,omitempty" 
yaml:"runtimeProperties,omitempty"`
+       // Set of required Camel build time properties
+       BuildTimeProperties map[string]string 
`json:"buildTimeProperties,omitempty" yaml:"buildTimeProperties,omitempty"`
+       // Set of generic metadata
+       Metadata map[string]string `json:"metadata,omitempty" 
yaml:"Metadata,omitempty"`
 }
 
 const (
diff --git a/pkg/apis/camel/v1/zz_generated.deepcopy.go 
b/pkg/apis/camel/v1/zz_generated.deepcopy.go
index 6ca63f75f..8ffebb03f 100644
--- a/pkg/apis/camel/v1/zz_generated.deepcopy.go
+++ b/pkg/apis/camel/v1/zz_generated.deepcopy.go
@@ -610,6 +610,27 @@ func (in *Capability) DeepCopyInto(out *Capability) {
                *out = make([]MavenArtifact, len(*in))
                copy(*out, *in)
        }
+       if in.RuntimeProperties != nil {
+               in, out := &in.RuntimeProperties, &out.RuntimeProperties
+               *out = make(map[string]string, len(*in))
+               for key, val := range *in {
+                       (*out)[key] = val
+               }
+       }
+       if in.BuildTimeProperties != nil {
+               in, out := &in.BuildTimeProperties, &out.BuildTimeProperties
+               *out = make(map[string]string, len(*in))
+               for key, val := range *in {
+                       (*out)[key] = val
+               }
+       }
+       if in.Metadata != nil {
+               in, out := &in.Metadata, &out.Metadata
+               *out = make(map[string]string, len(*in))
+               for key, val := range *in {
+                       (*out)[key] = val
+               }
+       }
 }
 
 // DeepCopy is an autogenerated deepcopy function, copying the receiver, 
creating a new Capability.
diff --git a/pkg/client/camel/applyconfiguration/camel/v1/capability.go 
b/pkg/client/camel/applyconfiguration/camel/v1/capability.go
index 7d49027fa..d6d3073b2 100644
--- a/pkg/client/camel/applyconfiguration/camel/v1/capability.go
+++ b/pkg/client/camel/applyconfiguration/camel/v1/capability.go
@@ -22,7 +22,10 @@ package v1
 // CapabilityApplyConfiguration represents an declarative configuration of the 
Capability type for use
 // with apply.
 type CapabilityApplyConfiguration struct {
-       Dependencies []MavenArtifactApplyConfiguration 
`json:"dependencies,omitempty"`
+       Dependencies        []MavenArtifactApplyConfiguration 
`json:"dependencies,omitempty"`
+       RuntimeProperties   map[string]string                 
`json:"runtimeProperties,omitempty"`
+       BuildTimeProperties map[string]string                 
`json:"buildTimeProperties,omitempty"`
+       Metadata            map[string]string                 
`json:"metadata,omitempty"`
 }
 
 // CapabilityApplyConfiguration constructs an declarative configuration of the 
Capability type for use with
@@ -43,3 +46,45 @@ func (b *CapabilityApplyConfiguration) 
WithDependencies(values ...*MavenArtifact
        }
        return b
 }
+
+// WithRuntimeProperties puts the entries into the RuntimeProperties field in 
the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" 
function invocations.
+// If called multiple times, the entries provided by each call will be put on 
the RuntimeProperties field,
+// overwriting an existing map entries in RuntimeProperties field with the 
same key.
+func (b *CapabilityApplyConfiguration) WithRuntimeProperties(entries 
map[string]string) *CapabilityApplyConfiguration {
+       if b.RuntimeProperties == nil && len(entries) > 0 {
+               b.RuntimeProperties = make(map[string]string, len(entries))
+       }
+       for k, v := range entries {
+               b.RuntimeProperties[k] = v
+       }
+       return b
+}
+
+// WithBuildTimeProperties puts the entries into the BuildTimeProperties field 
in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" 
function invocations.
+// If called multiple times, the entries provided by each call will be put on 
the BuildTimeProperties field,
+// overwriting an existing map entries in BuildTimeProperties field with the 
same key.
+func (b *CapabilityApplyConfiguration) WithBuildTimeProperties(entries 
map[string]string) *CapabilityApplyConfiguration {
+       if b.BuildTimeProperties == nil && len(entries) > 0 {
+               b.BuildTimeProperties = make(map[string]string, len(entries))
+       }
+       for k, v := range entries {
+               b.BuildTimeProperties[k] = v
+       }
+       return b
+}
+
+// WithMetadata puts the entries into the Metadata field in the declarative 
configuration
+// and returns the receiver, so that objects can be build by chaining "With" 
function invocations.
+// If called multiple times, the entries provided by each call will be put on 
the Metadata field,
+// overwriting an existing map entries in Metadata field with the same key.
+func (b *CapabilityApplyConfiguration) WithMetadata(entries map[string]string) 
*CapabilityApplyConfiguration {
+       if b.Metadata == nil && len(entries) > 0 {
+               b.Metadata = make(map[string]string, len(entries))
+       }
+       for k, v := range entries {
+               b.Metadata[k] = v
+       }
+       return b
+}
diff --git a/pkg/resources/config/crd/bases/camel.apache.org_builds.yaml 
b/pkg/resources/config/crd/bases/camel.apache.org_builds.yaml
index ae2925cd2..77a9016f7 100644
--- a/pkg/resources/config/crd/bases/camel.apache.org_builds.yaml
+++ b/pkg/resources/config/crd/bases/camel.apache.org_builds.yaml
@@ -638,10 +638,17 @@ spec:
                             capabilities:
                               additionalProperties:
                                 description: Capability is a particular 
feature which
-                                  requires a well known set of dependencies 
which
-                                  are specified in the runtime catalog.
+                                  requires a well known set of dependencies 
and other
+                                  properties which are specified in the 
runtime catalog.
                                 properties:
+                                  buildTimeProperties:
+                                    additionalProperties:
+                                      type: string
+                                    description: Set of required Camel build 
time
+                                      properties
+                                    type: object
                                   dependencies:
+                                    description: List of required Maven 
dependencies
                                     items:
                                       description: MavenArtifact defines a GAV 
(Group:Artifact:Type:Version:Classifier)
                                         Maven artifact.
@@ -666,8 +673,16 @@ spec:
                                       - groupId
                                       type: object
                                     type: array
-                                required:
-                                - dependencies
+                                  metadata:
+                                    additionalProperties:
+                                      type: string
+                                    description: Set of generic metadata
+                                    type: object
+                                  runtimeProperties:
+                                    additionalProperties:
+                                      type: string
+                                    description: Set of required Camel runtime 
properties
+                                    type: object
                                 type: object
                               description: features offered by this runtime
                               type: object
@@ -1453,10 +1468,17 @@ spec:
                             capabilities:
                               additionalProperties:
                                 description: Capability is a particular 
feature which
-                                  requires a well known set of dependencies 
which
-                                  are specified in the runtime catalog.
+                                  requires a well known set of dependencies 
and other
+                                  properties which are specified in the 
runtime catalog.
                                 properties:
+                                  buildTimeProperties:
+                                    additionalProperties:
+                                      type: string
+                                    description: Set of required Camel build 
time
+                                      properties
+                                    type: object
                                   dependencies:
+                                    description: List of required Maven 
dependencies
                                     items:
                                       description: MavenArtifact defines a GAV 
(Group:Artifact:Type:Version:Classifier)
                                         Maven artifact.
@@ -1481,8 +1503,16 @@ spec:
                                       - groupId
                                       type: object
                                     type: array
-                                required:
-                                - dependencies
+                                  metadata:
+                                    additionalProperties:
+                                      type: string
+                                    description: Set of generic metadata
+                                    type: object
+                                  runtimeProperties:
+                                    additionalProperties:
+                                      type: string
+                                    description: Set of required Camel runtime 
properties
+                                    type: object
                                 type: object
                               description: features offered by this runtime
                               type: object
diff --git a/pkg/resources/config/crd/bases/camel.apache.org_camelcatalogs.yaml 
b/pkg/resources/config/crd/bases/camel.apache.org_camelcatalogs.yaml
index 4f75f02b6..99458fd96 100644
--- a/pkg/resources/config/crd/bases/camel.apache.org_camelcatalogs.yaml
+++ b/pkg/resources/config/crd/bases/camel.apache.org_camelcatalogs.yaml
@@ -372,10 +372,16 @@ spec:
                   capabilities:
                     additionalProperties:
                       description: Capability is a particular feature which 
requires
-                        a well known set of dependencies which are specified 
in the
-                        runtime catalog.
+                        a well known set of dependencies and other properties 
which
+                        are specified in the runtime catalog.
                       properties:
+                        buildTimeProperties:
+                          additionalProperties:
+                            type: string
+                          description: Set of required Camel build time 
properties
+                          type: object
                         dependencies:
+                          description: List of required Maven dependencies
                           items:
                             description: MavenArtifact defines a GAV 
(Group:Artifact:Type:Version:Classifier)
                               Maven artifact.
@@ -400,8 +406,16 @@ spec:
                             - groupId
                             type: object
                           type: array
-                      required:
-                      - dependencies
+                        metadata:
+                          additionalProperties:
+                            type: string
+                          description: Set of generic metadata
+                          type: object
+                        runtimeProperties:
+                          additionalProperties:
+                            type: string
+                          description: Set of required Camel runtime properties
+                          type: object
                       type: object
                     description: features offered by this runtime
                     type: object

Reply via email to