@@ -150,6 +150,7 @@ wait_pod() {
150150 echo -n .
151151 let retry+=1
152152 if [ $retry -ge 360 ]; then
153+ collect_k8s_logs
153154 kubectl_bin describe pod/$pod
154155 kubectl_bin logs $pod
155156 kubectl_bin logs ${OPERATOR_NS: +-n $OPERATOR_NS } $( get_operator_pod) \
@@ -158,6 +159,7 @@ wait_pod() {
158159 | grep -v ' Getting tasks for pod' \
159160 | grep -v ' Getting pods from source' \
160161 | tail -100
162+
161163 echo max retry count $retry reached. something went wrong with operator or kubernetes cluster
162164 exit 1
163165 fi
@@ -177,12 +179,14 @@ wait_cron() {
177179 echo -n .
178180 let retry+=1
179181 if [ $retry -ge 360 ]; then
182+ collect_k8s_logs
180183 kubectl_bin logs ${OPERATOR_NS: +-n $OPERATOR_NS } $( get_operator_pod) \
181184 | grep -v ' level=info' \
182185 | grep -v ' level=debug' \
183186 | grep -v ' Getting tasks for pod' \
184187 | grep -v ' Getting pods from source' \
185188 | tail -100
189+
186190 echo max retry count $retry reached. something went wrong with operator or kubernetes cluster
187191 exit 1
188192 fi
@@ -201,8 +205,10 @@ wait_backup_agent() {
201205 echo -n .
202206 let retry+=1
203207 if [ $retry -ge 360 ]; then
208+ collect_k8s_logs
204209 kubectl_bin logs $agent_pod -c backup-agent \
205210 | tail -100
211+
206212 echo max retry count $retry reached. something went wrong with operator or kubernetes cluster
207213 exit 1
208214 fi
@@ -224,12 +230,14 @@ wait_backup() {
224230 let retry+=1
225231 current_status=$( kubectl_bin get psmdb-backup $backup_name -o jsonpath=' {.status.state}' )
226232 if [[ $retry -ge 360 || ${current_status} == ' error' ]]; then
233+ collect_k8s_logs
227234 kubectl_bin logs ${OPERATOR_NS: +-n $OPERATOR_NS } $( get_operator_pod) \
228235 | grep -v ' level=info' \
229236 | grep -v ' level=debug' \
230237 | grep -v ' Getting tasks for pod' \
231238 | grep -v ' Getting pods from source' \
232239 | tail -100
240+
233241 echo " Backup object psmdb-backup/${backup_name} is in ${current_state} state."
234242 echo something went wrong with operator or kubernetes cluster
235243 exit 1
@@ -283,12 +291,14 @@ wait_deployment() {
283291 echo -n .
284292 let retry+=1
285293 if [ $retry -ge 360 ]; then
294+ collect_k8s_logs
286295 kubectl_bin logs ${OPERATOR_NS: +-n $OPERATOR_NS } $( get_operator_pod) \
287296 | grep -v ' level=info' \
288297 | grep -v ' level=debug' \
289298 | grep -v ' Getting tasks for pod' \
290299 | grep -v ' Getting pods from source' \
291300 | tail -100
301+
292302 echo max retry count $retry reached. something went wrong with operator or kubernetes cluster
293303 exit 1
294304 fi
@@ -328,6 +338,7 @@ wait_restore() {
328338 let retry+=1
329339 current_state=$( kubectl_bin get psmdb-restore restore-$backup_name -o jsonpath=' {.status.state}' )
330340 if [[ $retry -ge 720 || ${current_state} == ' error' ]]; then
341+ collect_k8s_logs
331342 kubectl_bin logs ${OPERATOR_NS: +-n $OPERATOR_NS } $( get_operator_pod) \
332343 | grep -v ' level=info' \
333344 | grep -v ' level=debug' \
@@ -528,6 +539,7 @@ retry() {
528539
529540 until " $@ " ; do
530541 if [[ $n -ge $max ]]; then
542+ collect_k8s_logs
531543 echo " The command '$@ ' has failed after $n attempts."
532544 exit 1
533545 fi
@@ -567,6 +579,7 @@ wait_for_running() {
567579 timeout=$(( timeout + 1 ))
568580 echo -n ' .'
569581 if [[ ${timeout} -gt 1500 ]]; then
582+ collect_k8s_logs
570583 echo
571584 echo " Waiting timeout has been reached. Exiting..."
572585 exit 1
@@ -588,12 +601,14 @@ wait_for_delete() {
588601 echo -n .
589602 let retry+=1
590603 if [ $retry -ge 60 ]; then
604+ collect_k8s_logs
591605 kubectl_bin logs ${OPERATOR_NS: +-n $OPERATOR_NS } $( get_operator_pod) \
592606 | grep -v ' level=info' \
593607 | grep -v ' level=debug' \
594608 | grep -v ' Getting tasks for pod' \
595609 | grep -v ' Getting pods from source' \
596610 | tail -100
611+
597612 echo max retry count $retry reached. something went wrong with operator or kubernetes cluster
598613 exit 1
599614 fi
@@ -609,6 +624,8 @@ compare_generation() {
609624
610625 current_generation=" $( kubectl_bin get ${resource_type} " ${resource_name} " -o jsonpath=' {.metadata.generation}' ) "
611626 if [[ ${generation} != " ${current_generation} " ]]; then
627+ collect_k8s_logs
628+
612629 echo " Generation for ${resource_type} /${resource_name} is: ${current_generation} , but should be: ${generation} "
613630 exit 1
614631 fi
@@ -667,9 +684,9 @@ compare_kubectl() {
667684 del(.spec.ipFamilyPolicy) |
668685 (.. | select(. == "extensions/v1beta1")) = "apps/v1" |
669686 (.. | select(. == "batch/v1beta1")) = "batch/v1" ' - > ${new_result}
670-
687+
671688 yq -i eval ' del(.spec.persistentVolumeClaimRetentionPolicy)' ${new_result}
672-
689+
673690 if version_gt " 1.22" ; then
674691 yq -i eval ' del(.spec.internalTrafficPolicy)' ${new_result}
675692 yq -i eval ' del(.spec.allocateLoadBalancerNodePorts)' ${new_result}
@@ -961,6 +978,7 @@ get_service_endpoint() {
961978 return
962979 fi
963980
981+ collect_k8s_logs
964982 exit 1
965983}
966984
@@ -1135,6 +1153,7 @@ wait_cluster_consistency() {
11351153 until [[ " $( kubectl_bin get psmdb " ${cluster_name} " -o jsonpath=' {.status.state}' ) " == " ready" ]]; do
11361154 let retry+=1
11371155 if [ $retry -ge 32 ]; then
1156+ collect_k8s_logs
11381157 echo max retry count $retry reached. something went wrong with operator or kubernetes cluster
11391158 exit 1
11401159 fi
@@ -1161,6 +1180,7 @@ check_backup_deletion() {
11611180 retry=0
11621181 until [[ $( curl -sw ' %{http_code}' -o /dev/null $path ) -eq 403 ]] || [[ $( curl -sw ' %{http_code}' -o /dev/null $path ) -eq 404 ]]; do
11631182 if [ $retry -ge 10 ]; then
1183+ collect_k8s_logs
11641184 echo max retry count $retry reached. something went wrong with operator or kubernetes cluster
11651185 echo " Backup was not removed from bucket -- $storage_name "
11661186 exit 1
@@ -1222,6 +1242,7 @@ function get_mongod_ver_from_image() {
12221242 version_info=$( run_simple_cli_inside_image ${image} ' mongod --version' | $sed -r ' s/^.*db version v(([0-9]+\.){2}[0-9]+-[0-9]+).*$/\1/g' )
12231243
12241244 if [[ ! ${version_info} =~ ^([0-9]+\. ){2}[0-9]+-[0-9]+$ ]]; then
1245+ collect_k8s_logs
12251246 printf " No mongod version obtained from %s. Exiting" ${image}
12261247 exit 1
12271248 fi
@@ -1234,6 +1255,7 @@ function get_pbm_version() {
12341255 local version_info=$( run_simple_cli_inside_image ${image} ' pbm-agent version' | $sed -r ' s/^Version:\ (([0-9]+\.){2}[0-9]+)\ .*/\1/g' )
12351256
12361257 if [[ ! ${version_info} =~ ^([0-9]+\. ){2}[0-9]+$ ]]; then
1258+ collect_k8s_logs
12371259 printf " No pbm version obtained from %s. Exiting" ${image}
12381260 exit 1
12391261 fi
@@ -1274,6 +1296,33 @@ function generate_vs_json() {
12741296 echo ${version_service_source} | jq ' .' > ${target_path}
12751297}
12761298
1299+ collect_k8s_logs () {
1300+ if [[ ${ENABLE_LOGGING} == " true" ]]; then
1301+ rm -f ${logs_dir} /logs_${test_name} _* || :
1302+
1303+ local check_namespaces=" $namespace ${OPERATOR_NS: + $OPERATOR_NS } "
1304+
1305+ for ns in $check_namespaces ; do
1306+ local pods=$( kubectl_bin get pods -o name | awk -F " /" ' {print $2}' )
1307+ for p in $pods ; do
1308+ local containers=$( kubectl_bin -n " $ns " get pod $p -o jsonpath=' {.spec.containers[*].name}' )
1309+ for c in $containers ; do
1310+ kubectl_bin -n " $ns " logs $p -c $c > ${logs_dir} /logs_${test_name} _$p_$c .txt
1311+ echo logs saved in: ${logs_dir} /logs_${test_name} _$p_$c .txt
1312+ done
1313+ done
1314+ done
1315+ for object in " psmdb psmdb-backup psmdb-restore pods deployments services events sts" ; do
1316+ echo " ##### START: $object #####" >> ${logs_dir} /logs_${test_name} _simple.txt
1317+ kubectl_bin get $object --all-namespaces >> ${logs_dir} /logs_${test_name} _simple.txt
1318+ echo " ##### END: $object ####\n" >> ${logs_dir} /logs_${test_name} _simple.txt
1319+ done
1320+ for object in " psmdb psmdb-backup psmdb-restore pods deployments services events sts" ; do
1321+ kubectl_bin get $object --all-namespaces > ${logs_dir} /logs_${test_name} _$object .yaml
1322+ done
1323+ fi
1324+ }
1325+
12771326check_passwords_leak () {
12781327 secrets=$( kubectl_bin get secrets -o json | jq -r ' .items[].data | to_entries | .[] | select(.key | (contains("_PASSWORD"))) | .value' )
12791328 echo secrets=$secrets
@@ -1295,7 +1344,7 @@ check_passwords_leak() {
12951344 if [[ ${c} =~ " pmm" ]]; then
12961345 continue
12971346 fi
1298- kubectl_bin -n " $NS " logs $p -c $c > ${TEMP_DIR} /logs_output-$p -$c .txt
1347+ kubectl_bin -n " $NS " logs $p -c $c > ${TEMP_DIR} /logs_output-$p -$c .txt
12991348 echo logs saved in: ${TEMP_DIR} /logs_output-$p -$c .txt
13001349 for pass in $passwords ; do
13011350 count=$( grep -c --fixed-strings -- " $pass " ${TEMP_DIR} /logs_output-$p -$c .txt || :)
0 commit comments