1+ # I think it's a good idea to test your scripts. It's kinda awkward but you'll
2+ # be happy you did
3+
4+
5+ # DON'T REMOVE FROM test script.
6+ CYAN='\033[0;36m'
7+ BCYAN='\033[1;36m'
8+ NC='\033[0m' # No Color
9+ DIVIDER=$(printf %"$(tput cols)"s | tr " " "*")
10+ if [ -z "$DIVIDER" ]
11+ then
12+ DIVIDER=$(printf %"80"s | tr " " "*")
13+ fi
14+ DIVIDER+="\n"
15+
16+
17+ function get_project_id() {
18+ local __resultvar=$1
19+ VALUE=$(gcloud config get-value project | xargs)
20+ eval $__resultvar="'$VALUE'"
21+ }
22+
23+ function get_project_number() {
24+ local __resultvar=$1
25+ local PRO=$2
26+ VALUE=$(gcloud projects list --filter="project_id=$PRO" --format="value(PROJECT_NUMBER)" | xargs)
27+ eval $__resultvar="'$VALUE'"
28+ }
29+
30+ # DISPLAY HELPERS
31+ function section_open() {
32+ section_description=$1
33+ printf "$DIVIDER"
34+ printf "${CYAN}$section_description${NC} \n"
35+ printf "$DIVIDER"
36+ }
37+
38+ function section_close() {
39+ printf "$DIVIDER"
40+ printf "${CYAN}$section_description ${BCYAN}- done${NC}\n"
41+ printf "\n\n"
42+ }
43+
44+ function evalTest() {
45+ local command=$1
46+ local expected=$2
47+
48+ local ERR=""
49+ got=$(eval $command 2>errFile)
50+ ERR=$(<errFile)
51+
52+ if [ ${#ERR} -gt 0 ]; then
53+ if [ "$expected" = "EXPECTERROR" ]; then
54+ printf "Expected Error thrown \n"
55+ return
56+ fi
57+
58+ printf "Halting - error: '$ERR' \n"
59+ exit 1
60+ fi
61+
62+ if [ "$got" != "$expected" ]; then
63+ printf "Halting: '$got' expected '$expected' \n"
64+ exit 1
65+ fi
66+
67+ printf "$expected is ok\n"
68+ }
69+
70+ # END DON'T REMOVE FROM test script.
71+
72+ get_project_id PROJECT
73+ get_project_number PROJECT_NUMBER $PROJECT
74+ REGION=us-west1
75+ ZONE=us-west1-a
76+ BASENAME=serverless-social-media
77+
78+
79+ gcloud config set project ${PROJECT}
80+
81+
82+ private_ip_name=$(terraform output -raw private_ip_name)
83+
84+
85+ section_open "Delete Load Balancer parts"
86+ gcloud compute forwarding-rules delete $PROJECT -q
87+ gcloud compute target-http-proxies delete $PROJECT-http-proxy -q
88+ gcloud compute url-maps delete $PROJECT-url-map -q
89+ gcloud compute url-maps delete $PROJECT-https-redirect -q
90+ gcloud compute backend-services delete $PROJECT-backend-default -q --global
91+ section_close
92+
93+
94+ section_open "Delete Cloud Run Services"
95+ gcloud run services delete $PROJECT --region=us-central1 -q
96+ gcloud run services delete $PROJECT --region=us-west1 -q
97+ gcloud run services delete $PROJECT --region=us-east1 -q
98+ section_close
99+
100+ section_open "Deleting Secrets"
101+ gcloud secrets delete django_settings -q
102+ gcloud secrets delete DATABASE_PASSWORD -q
103+ gcloud secrets delete DATABASE_USER -q
104+ gcloud secrets delete DATABASE_NAME -q
105+ gcloud secrets delete DATABASE_HOST_PROD -q
106+ gcloud secrets delete DATABASE_PORT_PROD -q
107+ gcloud secrets delete EXTERNAL_IP -q
108+ gcloud secrets delete GS_BUCKET_NAME -q
109+ gcloud secrets delete PROJECT_ID -q
110+ gcloud secrets delete WEBSITE_URL_US_CENTRAL1 -q
111+ gcloud secrets delete WEBSITE_URL_US_WEST1 -q
112+ gcloud secrets delete WEBSITE_URL_US_EAST1 -q
113+ gcloud secrets delete SUPERUSER_PASSWORD -q
114+ section_close
115+
116+ section_open "Delete SQL Server"
117+ sql_servers_raw=$(gcloud sql instances list --format="value(name)")
118+ read -r -a sql_servers <<< $(echo "$sql_servers_raw" | tr '\n' ' ')
119+
120+
121+ for sql_name in "${sql_servers[@]}"; do
122+ gcloud sql instances delete $sql_name -q
123+ done
124+ section_close
125+
126+ section_open "Delete the Cloud Storage Bucket"
127+ gsutil rm -rf gs://$PROJECT-bucket/*
128+ gsutil rb gs://$PROJECT-bucket
129+ section_close
130+
131+ section_open "Delete Service Account"
132+ gcloud iam service-accounts delete django@$PROJECT.iam.gserviceaccount.com -q
133+ section_close
134+
135+ section_open "Deleting VPNs"
136+ gcloud compute networks vpc-access connectors delete vpc-con-us-west1 --region us-west1 -q
137+ gcloud compute networks vpc-access connectors delete vpc-con-us-central1 --region us-central1 -q
138+ gcloud compute networks vpc-access connectors delete vpc-con-us-east1 --region us-east1 -q
139+ section_close
140+
141+ section_open "Deleting Network Endpoint Groups"
142+ gcloud compute network-endpoint-groups delete $PROJECT--neg--us-west1 --region us-west1 -q
143+ gcloud compute network-endpoint-groups delete $PROJECT--neg--us-central1 --region us-central1 -q
144+ gcloud compute network-endpoint-groups delete $PROJECT--neg--us-east1 --region us-east1 -q
145+ section_close
146+
147+ section_open "Delete Load Balancer parts"
148+ gcloud compute forwarding-rules delete $PROJECT -q
149+ gcloud compute target-http-proxies delete $PROJECT-http-proxy -q
150+ gcloud compute url-maps delete $PROJECT-url-map -q
151+ gcloud compute url-maps delete $PROJECT-https-redirect -q
152+ gcloud compute backend-services delete $PROJECT-backend-default -q --global
153+ section_close
154+
155+ section_open "Delete the IP Address"
156+ ip_addresses_raw=$(gcloud compute addresses list --format="value(name)")
157+ read -r -a ip_addresses <<< $(echo "$ip_addresses_raw" | tr '\n' ' ')
158+
159+
160+ for sql_name in "${ip_addresses[@]}"; do
161+ gcloud compute addresses delete $ip_addresses --global -q
162+ done
163+
164+ ip_addresses_raw=$(gcloud compute addresses list --format="value(name)")
165+ read -r -a ip_addresses <<< $(echo "$ip_addresses_raw" | tr '\n' ' ')
166+
167+
168+ for sql_name in "${ip_addresses[@]}"; do
169+ gcloud compute addresses delete $ip_addresses --global -q
170+ done
171+
172+ section_close
173+
174+
175+
176+ section_open "Delete Extraneous networks"
177+ networks_raw=$(gcloud compute networks list --format="value(name)")
178+ read -r -a networks <<< $(echo "$networks_raw" | tr '\n' ' ')
179+
180+
181+ for network in "${networks[@]}"; do
182+
183+ if [[ "$network" = "default" ]]
184+ then
185+ echo "don't delete default"
186+ else
187+ echo "delete $network"
188+ gcloud compute networks delete $network -q
189+ fi
190+ done
191+ section_close
192+
193+
194+
195+
196+
197+
198+ printf "$DIVIDER"
199+ printf "CONGRATS!!!!!!! \n"
200+ printf "You got the end the of your test with everything working. \n"
201+ printf "$DIVIDER"
0 commit comments