wait-onecloud-services.sh.j2 922 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #!/bin/bash
  2. export KUBECONFIG="{{ ENV_KUBECONFIG }}"
  3. services=(
  4. keystone
  5. region
  6. apigateway
  7. web
  8. onecloud-operator
  9. )
  10. check_svc() {
  11. local svc="$1"
  12. local key="app"
  13. if [ "$svc" == "onecloud-operator" ]; then
  14. key="k8s-app"
  15. fi
  16. local status=$({{ K3S_CMDLINE_PREFIX }} kubectl get pods -n onecloud -l $key=$svc | grep "$svc" | grep -v Terminating | awk '{print $3}' | sort -u | xargs)
  17. if [[ "$status" == "Running" ]]; then
  18. echo "true"
  19. else
  20. echo "service pod $svc status is $status"
  21. echo "false"
  22. fi
  23. }
  24. wait_svc() {
  25. local svc="$1"
  26. local is_running=$(check_svc "$svc")
  27. sleep 1
  28. while true; do
  29. if [[ $is_running == "true" ]]; then
  30. echo "service pod $svc is running"
  31. return
  32. else
  33. echo "continue waiting service pod $svc, sleep 30s"
  34. is_running=$(check_svc "$svc")
  35. sleep 30
  36. fi
  37. done
  38. }
  39. for svc in ${@:-${services[@]}}; do
  40. echo "waiting service pod $svc to be running"
  41. wait_svc "$svc"
  42. done