Advertisement
Guest User

Untitled

a guest
Mar 30th, 2017
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.69 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. # Wait until consul instance on clust
  4. INSTANCE_IP="127.0.0.1"
  5. NEXT_WAIT_TIME=0
  6. MAX_WAIT_TIME=35
  7.  
  8.  
  9. check_consul_sync() {
  10. # If we don't have leaders _last_log_index then get it
  11. if [[ -z "${leader_last_log_index}" ]]; then
  12. # Get leader
  13. echo $(curl -s localhost:8500/v1/agent/self | jq -r '.Stats.consul')
  14. leader_addr=$(curl -s localhost:8500/v1/agent/self | jq -r '.Stats.consul.leader_addr | split(":")[0] | select(. != null)')
  15.  
  16. if [[ -z "${leader_addr}" ]]; then
  17. echo 'Not known leader'
  18. return 1 # true
  19. fi
  20. echo "Leader addr: ${leader_addr}"
  21.  
  22. # Get last log index from leader
  23. leader_last_log_index=$(curl -s ${leader_addr}:8500/v1/agent/self | jq -r '.Stats.raft.last_log_index')
  24. echo "Leader agent last_log_index: ${leader_last_log_index}"
  25. fi
  26.  
  27. # Get last log index from local agent
  28. local_last_log_index=$(curl -s localhost:8500/v1/agent/self | jq -r '.Stats.raft.last_log_index')
  29. echo "Local agent last_log_index: ${local_last_log_index}"
  30.  
  31. # Check local node greater or equal to leader
  32. if [[ "${local_last_log_index}" -ge "${leader_last_log_index}" ]]; then
  33. echo 'Synced!'
  34. return 0 # true
  35. fi
  36.  
  37. echo 'Not synced yet'
  38. return 1 # False
  39. }
  40.  
  41. until [[ "${NEXT_WAIT_TIME}" -eq "${MAX_WAIT_TIME}" ]] || check_consul_sync ; do
  42. (( NEXT_WAIT_TIME++ ))
  43. echo "Waiting ${NEXT_WAIT_TIME} seconds until next check... (${NEXT_WAIT_TIME}/${MAX_WAIT_TIME})"
  44. sleep ${NEXT_WAIT_TIME}
  45. done
  46.  
  47. # If we used our max retry the exit
  48. if [[ "${NEXT_WAIT_TIME}" -eq "${MAX_WAIT_TIME}" ]]; then
  49. echo 'Consul Server not ready'
  50. false
  51. else
  52. echo 'Consul peer ready! :)'
  53. fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement