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 2022/06/29 07:50:08 UTC

[camel-k] 06/06: chore(trait): Add an option to disable SSA in deployer trait

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

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

commit 33d84e528778e05c183593d53216f749c48d2075
Author: Antonin Stefanutti <an...@stefanutti.fr>
AuthorDate: Wed May 18 10:38:46 2022 +0200

    chore(trait): Add an option to disable SSA in deployer trait
---
 docs/modules/traits/pages/deployer.adoc | 5 +++++
 pkg/resources/resources.go              | 4 ++--
 pkg/trait/deployer.go                   | 5 ++++-
 resources/traits.yaml                   | 5 +++++
 4 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/docs/modules/traits/pages/deployer.adoc b/docs/modules/traits/pages/deployer.adoc
index 61181e5a9..906f34936 100755
--- a/docs/modules/traits/pages/deployer.adoc
+++ b/docs/modules/traits/pages/deployer.adoc
@@ -32,6 +32,11 @@ The following configuration options are available:
 | string
 | Allows to explicitly select the desired deployment kind between `deployment`, `cron-job` or `knative-service` when creating the resources for running the integration.
 
+| deployer.use-ssa
+| bool
+| Use server-side apply to update the owned resources (default `true`).
+Note that it automatically falls back to client-side patching, if SSA is not available, e.g., on old Kubernetes clusters.
+
 |===
 
 // End of autogenerated code - DO NOT EDIT! (configuration)
diff --git a/pkg/resources/resources.go b/pkg/resources/resources.go
index de93e2be8..cb673933e 100644
--- a/pkg/resources/resources.go
+++ b/pkg/resources/resources.go
@@ -583,9 +583,9 @@ var assets = func() http.FileSystem {
 		"/traits.yaml": &vfsgen۰CompressedFileInfo{
 			name:             "traits.yaml",
 			modTime:          time.Time{},
-			uncompressedSize: 51419,
+			uncompressedSize: 51672,
 
-			compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7d\xfd\x73\x5b\xb9\x91\xe0\xef\xf3\x57\xa0\xb4\x57\x65\xc9\x45\x52\x9e\xc9\x26\x99\xd3\xdd\x6c\x4e\x63\x7b\x12\xcd\xf8\x43\x67\x6b\x26\x9b\xf2\xb9\x42\xf0\xbd\x26\x09\xf3\x11\x78\x01\xf0\x24\x33\x97\xfb\xdf\xaf\xd0\xdd\xf8\x78\x8f\x94\x44\xd9\xd6\x6c\xb4\xb5\x9b\xaa\x1d\x4b\x7a\x68\x34\x1a\x8d\x46\x7f\xc3\x5b\xa9\xbc\x3b\xf9\x6a\x2c\xb4\x5c\xc3\x89\x90\xf3\xb9\xd2\xca\x6f\xbe\x12\xa2\x6d\xa4\x9f\x1b\xbb\x3e\x11\x [...]
+			compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7d\xfd\x73\x5b\xb9\x91\xe0\xef\xf3\x57\xa0\xb4\x57\x65\xc9\x45\x52\x9e\xc9\x26\x99\xd3\xdd\x6c\x4e\x63\x7b\x12\xcd\xf8\x43\x67\x6b\x26\x9b\xf2\xb9\x42\xf0\xbd\x26\x09\xf3\x11\x78\x01\xf0\x24\x33\x97\xfb\xdf\xaf\xd0\xdd\xf8\x78\x8f\x94\x44\xd9\xd6\x6c\xb4\xb5\x9b\xaa\x1d\x4b\x7a\x00\x1a\x8d\xee\x46\x7f\xc3\x5b\xa9\xbc\x3b\xf9\x6a\x2c\xb4\x5c\xc3\x89\x90\xf3\xb9\xd2\xca\x6f\xbe\x12\xa2\x6d\xa4\x9f\x1b\xbb\x3e\x11\x [...]
 		},
 	}
 	fs["/"].(*vfsgen۰DirInfo).entries = []os.FileInfo{
diff --git a/pkg/trait/deployer.go b/pkg/trait/deployer.go
index 8bc3b23ff..3dfb036ef 100644
--- a/pkg/trait/deployer.go
+++ b/pkg/trait/deployer.go
@@ -41,6 +41,9 @@ type deployerTrait struct {
 	BaseTrait `property:",squash"`
 	// Allows to explicitly select the desired deployment kind between `deployment`, `cron-job` or `knative-service` when creating the resources for running the integration.
 	Kind string `property:"kind" json:"kind,omitempty"`
+	// Use server-side apply to update the owned resources (default `true`).
+	// Note that it automatically falls back to client-side patching, if SSA is not available, e.g., on old Kubernetes clusters.
+	UseSSA *bool `property:"use-ssa" json:"useSSA,omitempty"`
 }
 
 var _ ControllerStrategySelector = &deployerTrait{}
@@ -68,7 +71,7 @@ func (t *deployerTrait) Apply(e *Environment) error {
 			// check its list of accepted MIME types.
 			// As a simpler solution, we fall back to client-side apply at the first
 			// 415 error, and assume server-side apply is not available globally.
-			if hasServerSideApply {
+			if hasServerSideApply && IsNilOrTrue(t.UseSSA) {
 				err := t.serverSideApply(env, resource)
 				switch {
 				case err == nil:
diff --git a/resources/traits.yaml b/resources/traits.yaml
index 8317239b5..15183bb70 100755
--- a/resources/traits.yaml
+++ b/resources/traits.yaml
@@ -281,6 +281,11 @@ traits:
     description: Allows to explicitly select the desired deployment kind between `deployment`,
       `cron-job` or `knative-service` when creating the resources for running the
       integration.
+  - name: use-ssa
+    type: bool
+    description: Use server-side apply to update the owned resources (default `true`).Note
+      that it automatically falls back to client-side patching, if SSA is not available,
+      e.g., on old Kubernetes clusters.
 - name: deployment
   platform: true
   profiles: