This is an automated email from the ASF dual-hosted git repository.
squakez 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 0c9ef196d fix(trait): don't create a kit outside accepted namespaces
0c9ef196d is described below
commit 0c9ef196da7a533bcb9dfbea1a40d4362b1fdea5
Author: Pasquale Congiusti <[email protected]>
AuthorDate: Fri Aug 14 08:32:34 2026 +0200
fix(trait): don't create a kit outside accepted namespaces
Closes #6733
---
pkg/trait/quarkus.go | 45 +++++++++++++++++++++++++++++----------------
pkg/trait/quarkus_test.go | 14 ++++++++++++++
2 files changed, 43 insertions(+), 16 deletions(-)
diff --git a/pkg/trait/quarkus.go b/pkg/trait/quarkus.go
index bf8ca05e0..bb886b1e1 100644
--- a/pkg/trait/quarkus.go
+++ b/pkg/trait/quarkus.go
@@ -18,6 +18,7 @@ limitations under the License.
package trait
import (
+ "errors"
"fmt"
"slices"
"sort"
@@ -224,34 +225,34 @@ func (t *quarkusTrait) validateNativeSupport(e
*Environment) error {
func (t *quarkusTrait) Apply(e *Environment) error {
if e.IntegrationInPhase(v1.IntegrationPhaseBuildingKit) {
- t.applyWhileBuildingKit(e)
-
- return nil
+ return t.applyWhileBuildingKit(e)
}
switch e.IntegrationKit.Status.Phase {
case v1.IntegrationKitPhaseBuildSubmitted:
- if err := t.applyWhenBuildSubmitted(e); err != nil {
- return err
- }
+ return t.applyWhenBuildSubmitted(e)
case v1.IntegrationKitPhaseReady:
- if err := t.applyWhenKitReady(e); err != nil {
- return err
- }
+ return t.applyWhenKitReady(e)
}
return nil
}
-func (t *quarkusTrait) applyWhileBuildingKit(e *Environment) {
+func (t *quarkusTrait) applyWhileBuildingKit(e *Environment) error {
switch len(t.Modes) {
case 0:
// Default behavior
- kit := t.newIntegrationKit(e, fastJarPackageType)
+ kit, err := t.newIntegrationKit(e, fastJarPackageType)
+ if err != nil {
+ return err
+ }
e.IntegrationKits = append(e.IntegrationKits, *kit)
case 1:
- kit := t.newIntegrationKit(e, packageType(t.Modes[0]))
+ kit, err := t.newIntegrationKit(e, packageType(t.Modes[0]))
+ if err != nil {
+ return err
+ }
e.IntegrationKits = append(e.IntegrationKits, *kit)
default:
// execute jvm mode before native mode
@@ -259,7 +260,10 @@ func (t *quarkusTrait) applyWhileBuildingKit(e
*Environment) {
return t.Modes[i] != traitv1.NativeQuarkusMode
})
for _, md := range t.Modes {
- kit := t.newIntegrationKit(e, packageType(md))
+ kit, err := t.newIntegrationKit(e, packageType(md))
+ if err != nil {
+ return err
+ }
if kit.Spec.Traits.Quarkus == nil {
kit.Spec.Traits.Quarkus =
&traitv1.QuarkusTrait{}
}
@@ -267,11 +271,20 @@ func (t *quarkusTrait) applyWhileBuildingKit(e
*Environment) {
e.IntegrationKits = append(e.IntegrationKits, *kit)
}
}
+
+ return nil
}
-func (t *quarkusTrait) newIntegrationKit(e *Environment, packageType
quarkusPackageType) *v1.IntegrationKit {
+func (t *quarkusTrait) newIntegrationKit(e *Environment, packageType
quarkusPackageType) (*v1.IntegrationKit, error) {
integration := e.Integration
- kit :=
v1.NewIntegrationKit(integration.GetIntegrationKitNamespace(e.Platform.CatalogNamespace),
fmt.Sprintf("kit-%s", xid.New()))
+ namespace :=
integration.GetIntegrationKitNamespace(e.Platform.CatalogNamespace)
+
+ if namespace != e.Integration.Namespace && namespace !=
e.Platform.CatalogNamespace {
+ // Cannot create a new Integration Kit outside those namespaces
+ return nil, errors.New("cannot create a Kit outside Integration
or Catalog namespaces")
+ }
+
+ kit := v1.NewIntegrationKit(namespace, fmt.Sprintf("kit-%s", xid.New()))
kit.Labels = map[string]string{
v1.IntegrationKitTypeLabel:
v1.IntegrationKitTypePlatform,
@@ -317,7 +330,7 @@ func (t *quarkusTrait) newIntegrationKit(e *Environment,
packageType quarkusPack
kit.Spec.Capabilities = e.Integration.Status.Capabilities
}
- return kit
+ return kit, nil
}
func propagateKitTraits(e *Environment) v1.IntegrationKitTraits {
diff --git a/pkg/trait/quarkus_test.go b/pkg/trait/quarkus_test.go
index d6b744bc7..7aafe861d 100644
--- a/pkg/trait/quarkus_test.go
+++ b/pkg/trait/quarkus_test.go
@@ -22,6 +22,7 @@ import (
"github.com/apache/camel-k/v2/pkg/platform"
"github.com/apache/camel-k/v2/pkg/util/boolean"
+ corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
traitv1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1/trait"
@@ -275,3 +276,16 @@ func TestConfigureQuarkusTraitDeprecatedLanguages(t
*testing.T) {
assert.NotNil(t, condition)
assert.Equal(t, "The sources contains some language marked as
deprecated. This Integration may not be supported in future release.",
condition.message)
}
+
+func TestFailNewIntegrationKit(t *testing.T) {
+ quarkusTrait, environment := createNominalQuarkusTest()
+ environment.Integration.Namespace = "it-ns"
+ environment.Integration.Spec.IntegrationKit = &corev1.ObjectReference{
+ Namespace: "rogue-ns",
+ }
+ environment.Platform.CatalogNamespace = "op-ns"
+
+ _, err := quarkusTrait.newIntegrationKit(environment,
fastJarPackageType)
+ require.Error(t, err)
+ assert.Equal(t, "cannot create a Kit outside Integration or Catalog
namespaces", err.Error())
+}