You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by nf...@apache.org on 2020/10/06 08:03:15 UTC
[camel-k] 04/08: chore(e2e): add reserved kamelet names
This is an automated email from the ASF dual-hosted git repository.
nferraro pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k.git
commit 9c07fc6a329f56dfff5bd34e40650bdb313f3140
Author: nicolaferraro <ni...@gmail.com>
AuthorDate: Mon Oct 5 10:49:35 2020 +0200
chore(e2e): add reserved kamelet names
---
pkg/apis/camel/v1alpha1/kamelet_types.go | 11 +++++++++
pkg/apis/camel/v1alpha1/kamelet_types_support.go | 4 ++++
pkg/controller/kamelet/common.go | 30 +++++++++++++++++-------
pkg/trait/kamelets.go | 2 +-
4 files changed, 37 insertions(+), 10 deletions(-)
diff --git a/pkg/apis/camel/v1alpha1/kamelet_types.go b/pkg/apis/camel/v1alpha1/kamelet_types.go
index 22be293..7b356c1 100644
--- a/pkg/apis/camel/v1alpha1/kamelet_types.go
+++ b/pkg/apis/camel/v1alpha1/kamelet_types.go
@@ -27,6 +27,10 @@ const (
AnnotationIcon = "camel.apache.org/kamelet.icon"
)
+var (
+ reservedKameletNames = map[string]bool{"source": true, "sink": true}
+)
+
// KameletSpec defines the desired state of Kamelet
type KameletSpec struct {
Definition JSONSchemaProps `json:"definition,omitempty"`
@@ -89,6 +93,11 @@ const (
KameletConditionReady KameletConditionType = "Ready"
)
+const (
+ // KameletConditionIllegalName --
+ KameletConditionIllegalName string = "IllegalName"
+)
+
type KameletPhase string
const (
@@ -99,6 +108,8 @@ const (
KameletPhaseNone KameletPhase = ""
// KameletPhaseReady --
KameletPhaseReady KameletPhase = "Ready"
+ // KameletPhaseError --
+ KameletPhaseError KameletPhase = "Error"
)
// +genclient
diff --git a/pkg/apis/camel/v1alpha1/kamelet_types_support.go b/pkg/apis/camel/v1alpha1/kamelet_types_support.go
index 9a9fcfd..2aa2c85 100644
--- a/pkg/apis/camel/v1alpha1/kamelet_types_support.go
+++ b/pkg/apis/camel/v1alpha1/kamelet_types_support.go
@@ -136,3 +136,7 @@ func (in *KameletStatus) RemoveCondition(condType KameletConditionType) {
in.Conditions = newConditions
}
+
+func ValidKameletName(name string) bool {
+ return !reservedKameletNames[name]
+}
diff --git a/pkg/controller/kamelet/common.go b/pkg/controller/kamelet/common.go
index d6bf99f..f0e9d97 100644
--- a/pkg/controller/kamelet/common.go
+++ b/pkg/controller/kamelet/common.go
@@ -12,16 +12,28 @@ import (
func updateStatus(kamelet *v1alpha1.Kamelet) (*v1alpha1.Kamelet, error) {
target := kamelet.DeepCopy()
- target.Status.Phase = v1alpha1.KameletPhaseReady
- target.Status.SetCondition(
- v1alpha1.KameletConditionReady,
- corev1.ConditionTrue,
- "",
- "",
- )
- if err := recomputeProperties(target); err != nil {
- return nil, err
+
+ if !v1alpha1.ValidKameletName(kamelet.Name) {
+ target.Status.Phase = v1alpha1.KameletPhaseError
+ target.Status.SetCondition(
+ v1alpha1.KameletConditionReady,
+ corev1.ConditionFalse,
+ v1alpha1.KameletConditionIllegalName,
+ fmt.Sprintf("Kamelet name %q is reserved", kamelet.Name),
+ )
+ } else {
+ target.Status.Phase = v1alpha1.KameletPhaseReady
+ target.Status.SetCondition(
+ v1alpha1.KameletConditionReady,
+ corev1.ConditionTrue,
+ "",
+ "",
+ )
+ if err := recomputeProperties(target); err != nil {
+ return nil, err
+ }
}
+
return target, nil
}
diff --git a/pkg/trait/kamelets.go b/pkg/trait/kamelets.go
index 1b3c9dc..a13dcc6 100644
--- a/pkg/trait/kamelets.go
+++ b/pkg/trait/kamelets.go
@@ -273,7 +273,7 @@ func (t *kameletsTrait) getKameletKeys() []string {
if strings.Contains(i, "/") {
i = strings.SplitN(i, "/", 2)[0]
}
- if i != "" {
+ if i != "" && v1alpha1.ValidKameletName(i) {
util.StringSliceUniqueAdd(&answer, i)
}
}