Added wildcard label vaule option

This commit is contained in:
avihuly
2023-01-05 14:28:08 +02:00
parent 8ebbb476b2
commit 9e7b70964e
3 changed files with 42 additions and 21 deletions
+2
View File
@@ -199,6 +199,8 @@ metadata:
test: true
...
```
If you want to select namespace only by the key of the label use ```*``` as the value.
For example, for ```--namespace-selector=select-this:*``` all namespaces with label-key "select-this" will be selected regardless of the labels value
### Vanilla kustomize
+21 -21
View File
@@ -104,30 +104,30 @@ func (c *Controller) resourceInNamespaceSelector(raw interface{}) bool {
switch object := raw.(type) {
case *v1.ConfigMap:
namespace, err := c.client.CoreV1().Namespaces().Get(context.Background(), object.ObjectMeta.Namespace, metav1.GetOptions{})
if err != nil {
logrus.Warn(err)
return false
}
for selectorKey, selectorVal := range c.namespaceSelector {
namespaceLabelVal, namespaceLabelKeyExists := namespace.ObjectMeta.Labels[selectorKey]
if !namespaceLabelKeyExists || selectorVal != namespaceLabelVal {
return false
}
}
return c.matchLabels(object.ObjectMeta.Namespace)
case *v1.Secret:
namespace, err := c.client.CoreV1().Namespaces().Get(context.Background(), object.ObjectMeta.Namespace, metav1.GetOptions{})
if err != nil {
logrus.Warn(err)
return false
return c.matchLabels(object.ObjectMeta.Namespace)
}
return true
}
func (c *Controller) matchLabels(resourceNamespace string) bool {
namespace, err := c.client.CoreV1().Namespaces().Get(context.Background(), resourceNamespace, metav1.GetOptions{})
if err != nil {
logrus.Warn(err)
return false
}
for selectorKey, selectorVal := range c.namespaceSelector {
namespaceLabelVal, namespaceLabelKeyExists := namespace.ObjectMeta.Labels[selectorKey]
if namespaceLabelKeyExists && selectorVal == "*" {
continue
}
for selectorKey, selectorVal := range c.namespaceSelector {
namespaceLabelVal, namespaceLabelKeyExists := namespace.ObjectMeta.Labels[selectorKey]
if !namespaceLabelKeyExists || selectorVal != namespaceLabelVal {
return false
}
if !namespaceLabelKeyExists || selectorVal != namespaceLabelVal {
return false
}
}
return true
@@ -2381,6 +2381,25 @@ func TestController_resourceInNamespaceSelector(t *testing.T) {
raw: testutil.GetSecret("not-selected-namespace", "secret", "test"),
},
want: false,
}, {
name: "TestSecretResourceInNamespaceSelectorWiledcardValue",
fields: fields{
namespaceSelector: util.Map{
"select": "*",
},
namespace: v1.Namespace{
ObjectMeta: metav1.ObjectMeta{
Name: "selected-namespace",
Labels: map[string]string{
"select": "this",
},
},
},
},
args: args{
raw: testutil.GetSecret("selected-namespace", "secret", "test"),
},
want: true,
},
}