Commit 65cca36e authored by Kubernetes Submit Queue's avatar Kubernetes Submit Queue Committed by GitHub

Merge pull request #52917 from juanvallejo/jvallejo/support-multiple-node-selection

Automatic merge from submit-queue (batch tested with PRs 53454, 53446, 52935, 53443, 52917). If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>. add --selector flag support **Release note**: ```release-note NONE ``` Adds --selector option to kubectl drain,cordon,uncordon, performing each action on a list of nodes matching the given label. If at least one node fails to be cordoned/uncordoned, the command will continue to operate on any remaining nodes, uninterrupted, reporting any errors it encounters along the way. If at least one node fails to be drained, the command will halt, printing the immediate error encountered, and a list of nodes yet to be drained (including the node that just failed to be drained). cc @kubernetes/sig-cli-misc @fabianofranz @soltysh
parents b0eb7d88 3775a50c
...@@ -4213,6 +4213,38 @@ run_certificates_tests() { ...@@ -4213,6 +4213,38 @@ run_certificates_tests() {
set +o errexit set +o errexit
} }
run_cluster_management_tests() {
set -o nounset
set -o errexit
kube::log::status "Testing cluster-management commands"
kube::test::get_object_assert nodes "{{range.items}}{{$id_field}}:{{end}}" '127.0.0.1:'
### kubectl drain command fails when both --selector and a node argument are given
# Pre-condition: node exists and contains label test=label
kubectl label node "127.0.0.1" "test=label"
kube::test::get_object_assert "nodes 127.0.0.1" '{{.metadata.labels.test}}' 'label'
response=$(! kubectl drain "127.0.0.1" --selector test=label 2>&1)
kube::test::if_has_string "${response}" 'cannot specify both a node name'
### kubectl cordon command fails when no arguments are passed
# Pre-condition: node exists
response=$(! kubectl cordon 2>&1)
kube::test::if_has_string "${response}" 'error\: USAGE\: cordon NODE'
### kubectl cordon selects all nodes with an empty --selector=
# Pre-condition: node "127.0.0.1" is uncordoned
kubectl uncordon "127.0.0.1"
response=$(kubectl cordon --selector=)
kube::test::if_has_string "${response}" 'node "127.0.0.1" cordoned'
# Post-condition: node "127.0.0.1" is cordoned
kube::test::get_object_assert "nodes 127.0.0.1" "{{.spec.unschedulable}}" 'true'
set +o nounset
set +o errexit
}
run_plugins_tests() { run_plugins_tests() {
set -o nounset set -o nounset
set -o errexit set -o errexit
...@@ -4803,6 +4835,13 @@ runTests() { ...@@ -4803,6 +4835,13 @@ runTests() {
record_command run_certificates_tests record_command run_certificates_tests
fi fi
######################
# Cluster Management #
######################
if kube::test::if_supports_resource "${nodes}" ; then
record_command run_cluster_management_tests
fi
########### ###########
# Plugins # # Plugins #
########### ###########
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment