You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@yunikorn.apache.org by cc...@apache.org on 2023/08/04 18:39:28 UTC
[yunikorn-k8shim] branch master updated: [YUNIKORN-1771] Validate configured default queue name (#649)
This is an automated email from the ASF dual-hosted git repository.
ccondit pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/yunikorn-k8shim.git
The following commit(s) were added to refs/heads/master by this push:
new 4cfbda0a [YUNIKORN-1771] Validate configured default queue name (#649)
4cfbda0a is described below
commit 4cfbda0a9c9ea690e05d3da1aa663d330046aa87
Author: Mit Desai <mi...@gmail.com>
AuthorDate: Fri Aug 4 13:39:13 2023 -0500
[YUNIKORN-1771] Validate configured default queue name (#649)
Closes: #649
Signed-off-by: Craig Condit <cc...@apache.org>
---
pkg/admission/conf/am_conf.go | 5 +++++
pkg/admission/conf/am_conf_test.go | 10 ++++++++--
pkg/admission/util_test.go | 16 +++++++++++++++-
pkg/common/constants/constants.go | 1 +
4 files changed, 29 insertions(+), 3 deletions(-)
diff --git a/pkg/admission/conf/am_conf.go b/pkg/admission/conf/am_conf.go
index 60cba9bd..a079369f 100644
--- a/pkg/admission/conf/am_conf.go
+++ b/pkg/admission/conf/am_conf.go
@@ -328,6 +328,11 @@ func (acc *AdmissionControllerConf) updateConfigMaps(configMaps []*v1.ConfigMap,
// labeling
acc.defaultQueueName = parseConfigString(configs, AMFilteringDefaultQueueName, DefaultFilteringQueueName)
+ if acc.defaultQueueName != "" && !strings.HasPrefix(acc.defaultQueueName, constants.RootQueue) {
+ log.Log(log.AdmissionConf).Warn("invalid default queue. defaultQueue must be fully qualified. Resetting to "+DefaultFilteringQueueName,
+ zap.String(AMFilteringDefaultQueueName, acc.defaultQueueName))
+ acc.defaultQueueName = DefaultFilteringQueueName
+ }
// logging
log.UpdateLoggingConfig(configs)
diff --git a/pkg/admission/conf/am_conf_test.go b/pkg/admission/conf/am_conf_test.go
index 600656b6..0849647c 100644
--- a/pkg/admission/conf/am_conf_test.go
+++ b/pkg/admission/conf/am_conf_test.go
@@ -43,7 +43,7 @@ func TestConfigMapVars(t *testing.T) {
AMAccessControlExternalUsers: "^yunikorn$",
AMAccessControlExternalGroups: "^devs$",
AMAccessControlTrustControllers: "false",
- AMFilteringDefaultQueueName: "default.queue",
+ AMFilteringDefaultQueueName: "root.default.queue",
}}})
assert.Equal(t, conf.GetPolicyGroup(), "testPolicyGroup")
assert.Equal(t, conf.GetAmServiceName(), "testYunikornService")
@@ -58,7 +58,7 @@ func TestConfigMapVars(t *testing.T) {
assert.Equal(t, conf.GetExternalUsers()[0].String(), "^yunikorn$")
assert.Equal(t, conf.GetExternalGroups()[0].String(), "^devs$")
assert.Equal(t, conf.GetTrustControllers(), false)
- assert.Equal(t, conf.GetDefaultQueueName(), "default.queue")
+ assert.Equal(t, conf.GetDefaultQueueName(), "root.default.queue")
// test missing settings
conf = NewAdmissionControllerConf([]*v1.ConfigMap{nil, nil})
@@ -93,6 +93,12 @@ func TestConfigMapVars(t *testing.T) {
}}})
assert.Equal(t, len(conf.GetProcessNamespaces()), 0)
+ // test invalid defaultQueue name
+ conf = NewAdmissionControllerConf([]*v1.ConfigMap{nil, {Data: map[string]string{
+ AMFilteringDefaultQueueName: "default.queue",
+ }}})
+ assert.Equal(t, conf.GetDefaultQueueName(), DefaultFilteringQueueName)
+
// test disable / enable of config hot refresh
conf = NewAdmissionControllerConf([]*v1.ConfigMap{nil, nil})
diff --git a/pkg/admission/util_test.go b/pkg/admission/util_test.go
index 9a92221c..c85554ed 100644
--- a/pkg/admission/util_test.go
+++ b/pkg/admission/util_test.go
@@ -209,7 +209,21 @@ func TestDefaultQueueName(t *testing.T) {
assert.Equal(t, result["random"], "random")
assert.Equal(t, result["applicationId"], "yunikorn-default-autogen")
assert.Equal(t, result["disableStateAware"], "true")
- assert.Equal(t, result["queue"], "yunikorn")
+ assert.Assert(t, result["queue"] != "yunikorn")
+ } else {
+ t.Fatal("UpdatePodLabelForAdmissionController is not as expected")
+ }
+
+ customValidQueueNameConf := createConfigWithOverrides(map[string]string{
+ conf.AMFilteringDefaultQueueName: "root.yunikorn",
+ })
+ if result := updatePodLabel(pod, customValidQueueNameConf.GetNamespace(),
+ customValidQueueNameConf.GetGenerateUniqueAppIds(), customValidQueueNameConf.GetDefaultQueueName()); result != nil {
+ assert.Equal(t, len(result), 4)
+ assert.Equal(t, result["random"], "random")
+ assert.Equal(t, result["applicationId"], "yunikorn-default-autogen")
+ assert.Equal(t, result["disableStateAware"], "true")
+ assert.Equal(t, result["queue"], "root.yunikorn")
} else {
t.Fatal("UpdatePodLabelForAdmissionController is not as expected")
}
diff --git a/pkg/common/constants/constants.go b/pkg/common/constants/constants.go
index 968e0c94..b9783b7b 100644
--- a/pkg/common/constants/constants.go
+++ b/pkg/common/constants/constants.go
@@ -33,6 +33,7 @@ const LabelApp = "app"
const LabelApplicationID = "applicationId"
const AnnotationApplicationID = "yunikorn.apache.org/app-id"
const LabelQueueName = "queue"
+const RootQueue = "root"
const AnnotationQueueName = "yunikorn.apache.org/queue"
const AnnotationParentQueue = "yunikorn.apache.org/parentqueue"
const LabelDisableStateAware = "disableStateAware"
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@yunikorn.apache.org
For additional commands, e-mail: issues-help@yunikorn.apache.org