@@ -36,67 +36,99 @@ if [ "$continue_with_setup" != "y" ]; then
3636 exit
3737fi
3838
39+ # function used to define GCP resources; appends testid if needed
40+ define_GCP_resources () {
41+ local base_name=" $1 "
42+ local testid_suffix=" "
43+
44+ if [ " $testid " != " False" ]; then
45+ if [ " $base_name " = " $survey " ]; then
46+ testid_suffix=" _${testid} " # complies with BigQuery naming conventions
47+ else
48+ testid_suffix=" -${testid} "
49+ fi
50+ fi
51+
52+ echo " ${base_name}${testid_suffix} "
53+ }
54+
3955# --- GCP resources used directly in this script
40- broker_bucket=" ${PROJECT_ID} -${survey} -broker_files"
41- bq_dataset=" ${survey} "
42- topic_alerts=" ${survey} -alerts"
43- topic_deadletter=" ${survey} -deadletter"
44- subscription_deadletter=" ${survey} -deadletter"
45- subscription_storebigquery=" ${survey} -bigquery"
46-
47- # use test resources, if requested
48- # (there must be a better way to do this)
49- if [ " $testid " != " False" ]; then
50- broker_bucket=" ${broker_bucket} -${testid} "
51- bq_dataset=" ${bq_dataset} _${testid} "
52- topic_alerts=" ${topic_alerts} -${testid} "
53- topic_deadletter=" ${topic_deadletter} -${testid} "
54- subscription_storebigquery=" ${subscription_storebigquery} -${testid} "
55- subscription_deadletter=" ${subscription_deadletter} -${testid} "
56- fi
56+ broker_bucket=$( define_GCP_resources " ${PROJECT_ID} -${survey} -broker_files" )
57+ bq_dataset=$( define_GCP_resources " ${survey} " )
58+ topic_alerts=$( define_GCP_resources " ${survey} -alerts" )
59+ # topics and subscriptions involved in writing DIASource data to BigQuery
60+ topic_diasource=$( define_GCP_resources " ${survey} -diasource" )
61+ subscription_diasource=" ${topic_diasource} " # BigQuery subscription
62+ topic_diasource_deadletter=$( define_GCP_resources " ${survey} -diasource-deadletter" )
63+ subscription_diasource_deadletter=" ${topic_diasource_deadletter} "
64+ # topics and subscriptions involved in writing alert data to BigQuery
65+ topic_alert_data=$( define_GCP_resources " ${survey} -alert-data" ) # needs a better name
66+ subscription_alert_data=" ${topic_alert_data} " # BigQuery subscription
67+ topic_alert_data_deadletter=$( define_GCP_resources " ${survey} -alert-data-deadletter" )
68+ subscription_alert_data_deadletter=" ${topic_alert_data_deadletter} "
5769
5870alerts_table=" alerts_${versiontag} "
71+ diasource_table=" DIASource"
5972
60- # --- Create (or delete) BigQuery, GCS, Pub/Sub resources
61- echo
62- echo " Configuring BigQuery, GCS, Pub/Sub resources..."
63- if [ " $testid " != " False" ]; then
64- if [ " $teardown " = " True" ]; then
65- # delete testing resources
66- python3 setup_gcp.py --survey=" $survey " --testid=" $testid " --teardown --confirmed --versiontag=" ${versiontag} "
67- gcloud pubsub topics delete " ${topic_deadletter} "
68- gcloud pubsub subscriptions delete " ${subscription_deadletter} "
69- gcloud pubsub subscriptions delete " ${subscription_storebigquery} "
70- else
71- # setup testing resources
73+ # function used to create (or delete) GCP resources
74+ manage_resources () {
75+ local mode=" $1 " # setup or teardown
76+ local environment_type=" production"
77+
78+ if [ " $testid " != " False" ]; then
79+ environment_type=" testing"
80+ fi
81+
82+ if [ " $mode " = " setup" ]; then
83+ # setup resources
7284 python3 setup_gcp.py --survey=" $survey " --testid=" $testid " --confirmed --region=" ${region} " --versiontag=" ${versiontag} "
73- gcloud pubsub topics create " ${topic_deadletter} "
74- gcloud pubsub subscriptions create " ${subscription_deadletter} " --topic=" ${topic_deadletter} "
75- gcloud pubsub subscriptions create " ${subscription_storebigquery} " \
76- --topic=" ${topic_alerts} " \
85+ gcloud pubsub topics create " ${topic_diasource} "
86+ gcloud pubsub topics create " ${topic_diasource_deadletter} "
87+ gcloud pubsub topics create " ${topic_alert_data} "
88+ gcloud pubsub topics create " ${topic_alert_data_deadletter} "
89+ gcloud pubsub subscriptions create " ${subscription_diasource_deadletter} " --topic=" ${topic_diasource_deadletter} "
90+ gcloud pubsub subscriptions create " ${subscription_alert_data_deadletter} " --topic=" ${topic_alert_data_deadletter} "
91+ gcloud pubsub subscriptions create " ${subscription_alert_data} " \
92+ --topic=" ${topic_alert_data} " \
7793 --bigquery-table=" ${PROJECT_ID} :${bq_dataset} .${alerts_table} " \
7894 --use-table-schema \
7995 --drop-unknown-fields \
80- --dead-letter-topic=" ${topic_deadletter } " \
96+ --dead-letter-topic=" ${topic_alert_data_deadletter } " \
8197 --max-delivery-attempts=5 \
8298 --dead-letter-topic-project=" ${PROJECT_ID} "
99+ gcloud pubsub subscriptions create " ${subscription_diasource} " \
100+ --topic=" ${topic_diasource} " \
101+ --bigquery-table=" ${PROJECT_ID} :${bq_dataset} .${diasource_table} " \
102+ --use-table-schema \
103+ --drop-unknown-fields \
104+ --dead-letter-topic=" ${topic_diasource_deadletter} " \
105+ --max-delivery-attempts=5 \
106+ --dead-letter-topic-project=" ${PROJECT_ID} "
107+ else
108+ if [ " $environment_type " = " testing" ]; then
109+ # delete testing resources
110+ python3 setup_gcp.py --survey=" $survey " --testid=" $testid " --teardown --confirmed --versiontag=" ${versiontag} "
111+ gcloud pubsub topics delete " ${topic_diasource} "
112+ gcloud pubsub topics delete " ${topic_diasource_deadletter} "
113+ gcloud pubsub topics delete " ${topic_alert_data} "
114+ gcloud pubsub topics delete " ${topic_alert_data_deadletter} "
115+ gcloud pubsub subscriptions delete " ${subscription_diasource} "
116+ gcloud pubsub subscriptions delete " ${subscription_diasource_deadletter} "
117+ gcloud pubsub subscriptions delete " ${subscription_alert_data} "
118+ gcloud pubsub subscriptions delete " ${subscription_alert_data_deadletter} "
119+ fi
83120 fi
121+ }
122+
123+ # --- Create (or delete) BigQuery, GCS, Pub/Sub resources
124+ echo
125+ echo " Configuring BigQuery, GCS, Pub/Sub resources..."
126+ if [ " $teardown " = " True" ]; then
127+ manage_resources " teardown"
84128else
85- # setup production resources
86- python3 setup_gcp.py --survey=" $survey " --production --confirmed --region=" ${region} "
87- gcloud pubsub topics create " ${topic_deadletter} "
88- gcloud pubsub subscriptions create " ${subscription_deadletter} " --topic=" ${topic_deadletter} "
89- gcloud pubsub subscriptions create " ${subscription_storebigquery} " \
90- --topic=" ${topic_alerts} " \
91- --bigquery-table=" ${PROJECT_ID} :${bq_dataset} .${alerts_table} " \
92- --use-table-schema \
93- --drop-unknown-fields \
94- --dead-letter-topic=" ${topic_deadletter} " \
95- --max-delivery-attempts=5 \
96- --dead-letter-topic-project=" ${PROJECT_ID} "
129+ manage_resources " setup"
97130fi
98131
99-
100132# --- finish setting up buckets and dataset
101133if [ " $teardown " != " True" ]; then
102134 ./upload_broker_bucket.sh " $broker_bucket "
0 commit comments