You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by pc...@apache.org on 2023/10/06 05:16:11 UTC
[camel-k] branch main updated: fix(api): deprecate .spec.integration Pipe
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 ea9fb039e fix(api): deprecate .spec.integration Pipe
ea9fb039e is described below
commit ea9fb039e862775669afd74368fe09cd844d0e8d
Author: Pasquale Congiusti <pa...@gmail.com>
AuthorDate: Thu Oct 5 15:56:59 2023 +0200
fix(api): deprecate .spec.integration Pipe
Closes #4780
---
config/crd/bases/camel.apache.org_pipes.yaml | 3 ++-
docs/modules/ROOT/partials/apis/camel-k-crds.adoc | 1 +
helm/camel-k/crds/crd-pipe.yaml | 3 ++-
pkg/apis/camel/v1/pipe_types.go | 3 +++
pkg/controller/pipe/initialize.go | 11 ++++++++++-
pkg/controller/pipe/integration.go | 1 +
pkg/controller/pipe/monitor.go | 9 +++++++++
7 files changed, 28 insertions(+), 3 deletions(-)
diff --git a/config/crd/bases/camel.apache.org_pipes.yaml b/config/crd/bases/camel.apache.org_pipes.yaml
index 5bf2d8ff0..c8c5b8ea8 100644
--- a/config/crd/bases/camel.apache.org_pipes.yaml
+++ b/config/crd/bases/camel.apache.org_pipes.yaml
@@ -74,7 +74,8 @@ spec:
x-kubernetes-preserve-unknown-fields: true
integration:
description: Integration is an optional integration used to specify
- custom parameters
+ custom parameters Deprecated don't use this. Use trait annotations
+ if you need to change any cluster configuration.
properties:
configuration:
description: 'Deprecated: Use camel trait (camel.properties) to
diff --git a/docs/modules/ROOT/partials/apis/camel-k-crds.adoc b/docs/modules/ROOT/partials/apis/camel-k-crds.adoc
index 39fe3ed4c..a9070f7c7 100644
--- a/docs/modules/ROOT/partials/apis/camel-k-crds.adoc
+++ b/docs/modules/ROOT/partials/apis/camel-k-crds.adoc
@@ -4218,6 +4218,7 @@ PipeSpec defines the binding between a source and a sink. It can include custom
Integration is an optional integration used to specify custom parameters
+Deprecated don't use this. Use trait annotations if you need to change any cluster configuration.
|`source` +
*xref:#_camel_apache_org_v1_Endpoint[Endpoint]*
diff --git a/helm/camel-k/crds/crd-pipe.yaml b/helm/camel-k/crds/crd-pipe.yaml
index 5bf2d8ff0..c8c5b8ea8 100644
--- a/helm/camel-k/crds/crd-pipe.yaml
+++ b/helm/camel-k/crds/crd-pipe.yaml
@@ -74,7 +74,8 @@ spec:
x-kubernetes-preserve-unknown-fields: true
integration:
description: Integration is an optional integration used to specify
- custom parameters
+ custom parameters Deprecated don't use this. Use trait annotations
+ if you need to change any cluster configuration.
properties:
configuration:
description: 'Deprecated: Use camel trait (camel.properties) to
diff --git a/pkg/apis/camel/v1/pipe_types.go b/pkg/apis/camel/v1/pipe_types.go
index 369e8626f..74bf55626 100644
--- a/pkg/apis/camel/v1/pipe_types.go
+++ b/pkg/apis/camel/v1/pipe_types.go
@@ -46,6 +46,7 @@ type Pipe struct {
// PipeSpec defines the binding between a source and a sink. It can include custom parameters and additional intermediate steps and error handling.
type PipeSpec struct {
// Integration is an optional integration used to specify custom parameters
+ // Deprecated don't use this. Use trait annotations if you need to change any cluster configuration.
Integration *IntegrationSpec `json:"integration,omitempty"`
// Source is the starting point of the integration defined by this Pipe
Source Endpoint `json:"source,omitempty"`
@@ -132,6 +133,8 @@ const (
PipeConditionReady PipeConditionType = "Ready"
// PipeIntegrationConditionError is used to report the error on the generated Integration.
PipeIntegrationConditionError PipeConditionType = "IntegrationError"
+ // PipeIntegrationDeprecationNotice is used to report the usage of a deprecated resource.
+ PipeIntegrationDeprecationNotice PipeConditionType = "DeprecationNotice"
)
// PipePhase --.
diff --git a/pkg/controller/pipe/initialize.go b/pkg/controller/pipe/initialize.go
index 35b5c56f0..4cec1faf4 100644
--- a/pkg/controller/pipe/initialize.go
+++ b/pkg/controller/pipe/initialize.go
@@ -54,6 +54,15 @@ func (action *initializeAction) CanHandle(binding *v1.Pipe) bool {
func (action *initializeAction) Handle(ctx context.Context, binding *v1.Pipe) (*v1.Pipe, error) {
action.L.Info("Initializing Pipe")
+ if binding.Spec.Integration != nil {
+ action.L.Infof("Pipe %s is using deprecated .spec.integration parameter. Please, update and use annotation traits instead", binding.Name)
+ binding.Status.SetCondition(
+ v1.PipeIntegrationDeprecationNotice,
+ corev1.ConditionTrue,
+ ".spec.integration parameter is deprecated",
+ ".spec.integration parameter is deprecated. Use annotation traits instead",
+ )
+ }
it, err := CreateIntegrationFor(ctx, action.client, binding)
if err != nil {
binding.Status.Phase = v1.PipePhaseError
@@ -63,7 +72,7 @@ func (action *initializeAction) Handle(ctx context.Context, binding *v1.Pipe) (*
}
if _, err := kubernetes.ReplaceResource(ctx, action.client, it); err != nil {
- return nil, fmt.Errorf("could not create integration forPipe: %w", err)
+ return nil, fmt.Errorf("could not create integration for Pipe: %w", err)
}
// propagate Kamelet icon (best effort)
diff --git a/pkg/controller/pipe/integration.go b/pkg/controller/pipe/integration.go
index 9d21e1c41..cf25f0722 100644
--- a/pkg/controller/pipe/integration.go
+++ b/pkg/controller/pipe/integration.go
@@ -75,6 +75,7 @@ func CreateIntegrationFor(ctx context.Context, c client.Client, binding *v1.Pipe
it.GetLabels()[kubernetes.CamelCreatorLabelKind] = binding.Kind
it.GetLabels()[kubernetes.CamelCreatorLabelName] = binding.Name
+ // Deprecated
// start from the integration spec defined in the binding
if binding.Spec.Integration != nil {
it.Spec = *binding.Spec.Integration.DeepCopy()
diff --git a/pkg/controller/pipe/monitor.go b/pkg/controller/pipe/monitor.go
index a2bff2456..292add27a 100644
--- a/pkg/controller/pipe/monitor.go
+++ b/pkg/controller/pipe/monitor.go
@@ -82,6 +82,15 @@ func (action *monitorAction) Handle(ctx context.Context, binding *v1.Pipe) (*v1.
// Check if the integration needs to be changed
expected, err := CreateIntegrationFor(ctx, action.client, binding)
+ if binding.Spec.Integration != nil {
+ action.L.Infof("Pipe %s is using deprecated .spec.integration parameter. Please, update and use annotation traits instead", binding.Name)
+ binding.Status.SetCondition(
+ v1.PipeIntegrationDeprecationNotice,
+ corev1.ConditionTrue,
+ ".spec.integration parameter is deprecated",
+ ".spec.integration parameter is deprecated. Use annotation traits instead",
+ )
+ }
if err != nil {
binding.Status.Phase = v1.PipePhaseError
binding.Status.SetErrorCondition(v1.PipeIntegrationConditionError,