You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ts...@apache.org on 2022/07/08 06:12:01 UTC
[camel-k] 06/14: fix(api): fix Trait property name conflicts for generating CRDs
This is an automated email from the ASF dual-hosted git repository.
tsato pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-k.git
commit 1707ed18763c153aa8c1f08cdc4791672c2c5a98
Author: Tadayoshi Sato <sa...@gmail.com>
AuthorDate: Wed Jun 29 20:07:23 2022 +0900
fix(api): fix Trait property name conflicts for generating CRDs
---
pkg/apis/camel/v1/common_types.go | 7 +++----
pkg/apis/camel/v1/trait/base.go | 3 +++
pkg/apis/camel/v1/trait/knative.go | 2 +-
pkg/trait/trait_configure.go | 7 +++++++
4 files changed, 14 insertions(+), 5 deletions(-)
diff --git a/pkg/apis/camel/v1/common_types.go b/pkg/apis/camel/v1/common_types.go
index f49bc83e1..a0906a52d 100644
--- a/pkg/apis/camel/v1/common_types.go
+++ b/pkg/apis/camel/v1/common_types.go
@@ -209,13 +209,12 @@ type TraitConfiguration struct {
RawMessage `json:",inline"`
}
-// +kubebuilder:validation:Type=object
-// +kubebuilder:validation:Format=""
-// +kubebuilder:pruning:PreserveUnknownFields
-
// RawMessage is a raw encoded JSON value.
// It implements Marshaler and Unmarshaler and can
// be used to delay JSON decoding or precompute a JSON encoding.
+// +kubebuilder:validation:Type=object
+// +kubebuilder:validation:Format=""
+// +kubebuilder:pruning:PreserveUnknownFields
type RawMessage []byte
// +kubebuilder:object:generate=false
diff --git a/pkg/apis/camel/v1/trait/base.go b/pkg/apis/camel/v1/trait/base.go
index 5117e1ac9..8c571ba02 100644
--- a/pkg/apis/camel/v1/trait/base.go
+++ b/pkg/apis/camel/v1/trait/base.go
@@ -32,5 +32,8 @@ type Configuration struct {
RawMessage `json:",inline"`
}
+// +kubebuilder:validation:Type=object
+// +kubebuilder:validation:Format=""
+// +kubebuilder:pruning:PreserveUnknownFields
// Deprecated: for backward compatibility.
type RawMessage []byte
diff --git a/pkg/apis/camel/v1/trait/knative.go b/pkg/apis/camel/v1/trait/knative.go
index 13590557a..666953b08 100644
--- a/pkg/apis/camel/v1/trait/knative.go
+++ b/pkg/apis/camel/v1/trait/knative.go
@@ -29,7 +29,7 @@ package trait
type KnativeTrait struct {
Trait `property:",squash" json:",inline"`
// Can be used to inject a Knative complete configuration in JSON format.
- Configuration string `property:"configuration" json:"configuration,omitempty"`
+ Configuration string `property:"configuration" json:"config,omitempty"`
// List of channels used as source of integration routes.
// Can contain simple channel names or full Camel URIs.
ChannelSources []string `property:"channel-sources" json:"channelSources,omitempty"`
diff --git a/pkg/trait/trait_configure.go b/pkg/trait/trait_configure.go
index f50fc26d2..94ae5578f 100644
--- a/pkg/trait/trait_configure.go
+++ b/pkg/trait/trait_configure.go
@@ -100,6 +100,13 @@ func decodeTrait(in map[string]interface{}, target Trait, root bool) error {
// decode legacy configuration first if it exists
if root && in["configuration"] != nil {
if config, ok := in["configuration"].(map[string]interface{}); ok {
+ // for traits that had the same property name "configuration",
+ // it needs to be renamed to "config" to avoid naming conflicts
+ // (e.g. Knative trait).
+ if config["configuration"] != nil {
+ config["config"] = config["configuration"]
+ }
+
if err := decodeTrait(config, target, false); err != nil {
return err
}