Advertisement
Guest User

Untitled

a guest
Apr 19th, 2019
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.41 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. # Name: remove_versions
  4. # Author: pinagamer
  5. # Date: 2019-04-09
  6. # Version: 1.0
  7.  
  8. DEFAULT_TIMESTAMP="2 month"
  9. DATE_FORMAT="+%FT%T"
  10. TEST_ARG=0
  11. NUM_VERSIONS=0
  12.  
  13. check_service_name(){
  14. SERVICES_NAME=($(gcloud app services list | tail -n +2 | awk '{ print $1 }'))
  15. for serv in "${SERVICES_NAME[@]}"
  16. do
  17. :
  18. if [[ "$SERVICE_ARG" == "$serv" ]]; then
  19. return 1
  20. fi
  21. done
  22. return 0
  23. }
  24.  
  25. show_help_menu(){
  26. echo "Help command"
  27. echo " -h : Show this menu"
  28. echo " -t : Test mode. It will not perform any risky operation"
  29. echo " -d : Date filter. Specify the interval to filter the versions"
  30. echo " -s : Service filter"
  31. }
  32.  
  33. # Check arguments
  34. while getopts ":htd:s:" opt; do
  35. case $opt in
  36. h)
  37. show_help_menu
  38. exit
  39. ;;
  40. t)
  41. echo "testing option (-t) detected"
  42. TEST_ARG=1
  43. ;;
  44. d)
  45. echo "date option (-d) detected. Parameter: $OPTARG" >&2
  46. DATE_ARG=$OPTARG
  47. ;;
  48. s)
  49. echo "service option (-s) detected. Parameter: $OPTARG" >&2
  50. SERVICE_ARG=$OPTARG
  51. check_service_name
  52. if [[ $? != 1 ]]; then
  53. echo "ERROR! Invalid service with the name '$SERVICE_ARG'"
  54. echo "Possible values: [ ${SERVICES_NAME[@]} ]"
  55. exit
  56. fi
  57. ;;
  58. \?)
  59. echo "Invalid option: -$OPTARG" >&2
  60. ;;
  61. :)
  62. echo "Option -$OPTARG requires an argument" >&2
  63. exit 1
  64. ;;
  65. esac
  66. done
  67.  
  68. DATE_LIMIT=$(date $DATE_FORMAT -d "-${DATE_ARG:-$DEFAULT_TIMESTAMP}")
  69. echo $DATE_LIMIT
  70.  
  71. # Apply logic
  72. if [[ $TEST_ARG == 0 ]]; then
  73. echo "WARNING! This is not test mode"
  74. if [[ $SERVICE_ARG == "" ]]; then
  75. echo "WARNING! Versions will be deleted from all versions"
  76. gcloud app versions list | tail -n +2 | awk -v DATE_LIMIT=$DATE_LIMIT '{
  77. SERVICE_FIELD=$1;
  78. VERSION_FIELD=$2;
  79. LAST_DEPLOYED_FIELD=$4;
  80.  
  81. if(DATE_LIMIT > LAST_DEPLOYED_FIELD){
  82. printf("Removing version %s from service %s\n", VERSION_FIELD, SERVICE_FIELD);
  83. system("gcloud app versions delete --quiet --service " SERVICE_FIELD " " VERSION_FIELD);
  84. }
  85. }'
  86. else
  87. echo "Service identified"
  88. echo "Versions will be deleted only from '$SERVICE_ARG' service"
  89. gcloud app versions list | tail -n +2 | awk -v DATE_LIMIT=$DATE_LIMIT -v SERVICE_ARG=$SERVICE_ARG '{
  90. SERVICE_FIELD=$1;
  91. VERSION_FIELD=$2;
  92. LAST_DEPLOYED_FIELD=$4;
  93.  
  94. if(DATE_LIMIT > LAST_DEPLOYED_FIELD && SERVICE_ARG == SERVICE_FIELD){
  95. printf("Removing version %s from service %s\n", VERSION_FIELD, SERVICE_FIELD);
  96. system("gcloud app versions delete --quiet --service " SERVICE_FIELD " " VERSION_FIELD);
  97. }
  98. }'
  99.  
  100. fi
  101. else
  102. echo "This is the test mode. It WILL NOT DELETE any version"
  103. if [[ $SERVICE_ARG == "" ]]; then
  104. gcloud app versions list | tail -n +2 | awk -v DATE_LIMIT=$DATE_LIMIT '{
  105. SERVICE_FIELD=$1;
  106. VERSION_FIELD=$2;
  107. LAST_DEPLOYED_FIELD=$4;
  108.  
  109. if(DATE_LIMIT > LAST_DEPLOYED_FIELD){
  110. printf("Version %s from service %s would be removed\n", VERSION_FIELD, SERVICE_FIELD);
  111. }
  112. }'
  113. else
  114. echo "Service identified"
  115. gcloud app versions list | tail -n +2 | awk -v DATE_LIMIT=$DATE_LIMIT -v SERVICE_ARG=$SERVICE_ARG '{
  116. SERVICE_FIELD=$1;
  117. VERSION_FIELD=$2;
  118. LAST_DEPLOYED_FIELD=$4;
  119.  
  120. if(DATE_LIMIT > LAST_DEPLOYED_FIELD && SERVICE_ARG == SERVICE_FIELD){
  121. printf("Version %s from service %s would be removed\n", VERSION_FIELD, SERVICE_FIELD);
  122. }
  123. }'
  124. fi
  125. fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement