Skip to content

Commit 7d900ea

Browse files
committed
update setup_broker.sh
1 parent 412c0f4 commit 7d900ea

File tree

1 file changed

+79
-47
lines changed

1 file changed

+79
-47
lines changed

broker/setup_broker/setup_broker.sh

Lines changed: 79 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -36,67 +36,99 @@ if [ "$continue_with_setup" != "y" ]; then
3636
exit
3737
fi
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

5870
alerts_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"
84128
else
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"
97130
fi
98131

99-
100132
#--- finish setting up buckets and dataset
101133
if [ "$teardown" != "True" ]; then
102134
./upload_broker_bucket.sh "$broker_bucket"

0 commit comments

Comments
 (0)