Allow gcloud-pubsub-events to be configured as events-broker
Add possibility to use gcloud-pubsub-events as a events-broker for local
setup.
Bug: Issue 14206
Change-Id: I85897b52b25b7686c51be68fac48da79e4fa9b76
diff --git a/setup_local_env/README.md b/setup_local_env/README.md
index 0b1d00c..fca46d8 100644
--- a/setup_local_env/README.md
+++ b/setup_local_env/README.md
@@ -5,7 +5,7 @@
- 2 gerrit instances deployed by default in /tmp
- 1 zookeeper node
-- 1 Broker node (either kafka or kinesis)
+- 1 Broker node (kafka, kinesis or gcloud-pubsub)
- 1 HA-PROXY
## Requirements
@@ -35,6 +35,15 @@
--broker-type kinesis
```
+Deploy GCloud PubSub broker
+
+```bash
+sh setup_local_env/setup.sh \
+ --release-war-file /path/to/gerrit.war \
+ --multisite-lib-file /path/to/multi-site.jar \
+ --broker-type gcloud-pubsub
+```
+
Cleanup the previous deployments
@@ -73,7 +82,7 @@
[--enabled-https] Enabled https; default true
-[--broker_type] events broker type; either 'kafka' or 'kinesis'. Default 'kafka'
+[--broker_type] events broker type; 'kafka', 'kinesis' or 'gcloud-pubsub'. Default 'kafka'
```
## Limitations
diff --git a/setup_local_env/configs/gerrit.config b/setup_local_env/configs/gerrit.config
index 0f19578..248f669 100644
--- a/setup_local_env/configs/gerrit.config
+++ b/setup_local_env/configs/gerrit.config
@@ -18,6 +18,7 @@
[container]
javaOptions = "-Dflogger.backend_factory=com.google.common.flogger.backend.log4j.Log4jBackendFactory#getInstance"
javaOptions = "-Dflogger.logging_context=com.google.gerrit.server.logging.LoggingContext#getInstance"
+ javaOptions = "-DPUBSUB_EMULATOR_HOST=localhost:$BROKER_PORT"
javaOptions = "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=$REMOTE_DEBUG_PORT"
[index]
type = LUCENE
@@ -56,5 +57,9 @@
endpoint = http://localhost:$BROKER_PORT
applicationName = $GROUP_ID
initialPosition = trim_horizon
+[plugin "gcloud-pubsub-events"]
+ numberOfSubscribers = 6
+ gcloudProject="test-project"
+ subscriptionId=$GROUP_ID
[plugin "metrics-reporter-prometheus"]
prometheusBearerToken = token
diff --git a/setup_local_env/docker-compose-gcloud-pubsub.yaml b/setup_local_env/docker-compose-gcloud-pubsub.yaml
new file mode 100644
index 0000000..983e784
--- /dev/null
+++ b/setup_local_env/docker-compose-gcloud-pubsub.yaml
@@ -0,0 +1,13 @@
+version: '3'
+services:
+ pubsub:
+ image: gcr.io/google.com/cloudsdktool/cloud-sdk:316.0.0-emulators
+ ports:
+ - "8085:8085"
+ container_name: gcloud-pubsub_test_node
+ entrypoint: gcloud beta emulators pubsub start --project test-project --host-port 0.0.0.0:8085
+ networks:
+ - setup_local_env_default
+networks:
+ setup_local_env_default:
+ external: true
diff --git a/setup_local_env/setup.sh b/setup_local_env/setup.sh
index 5c9de6f..536fcff 100755
--- a/setup_local_env/setup.sh
+++ b/setup_local_env/setup.sh
@@ -107,6 +107,8 @@
export BROKER_PORT=4566
elif [ "$BROKER_TYPE" = "kafka" ]; then
export BROKER_PORT=9092
+ elif [ "$BROKER_TYPE" = "gcloud-pubsub" ]; then
+ export BROKER_PORT=8085
fi
}
@@ -245,7 +247,7 @@
echo
echo "[--enabled-https] Enabled https; default true"
echo
- echo "[--broker-type] events broker type; either 'kafka' or 'kinesis'. Default 'kafka'"
+ echo "[--broker-type] events broker type; 'kafka', 'kinesis' or 'gcloud-pubsub'. Default 'kafka'"
echo
exit 0
;;
@@ -338,8 +340,8 @@
BROKER_TYPE=$2
shift
shift
- if [ ! "$BROKER_TYPE" = "kafka" ] && [ ! "$BROKER_TYPE" = "kinesis" ]; then
- echo >&2 "broker type: '$BROKER_TYPE' not valid. Please supply 'kafka' or 'kinesis'. Aborting"
+ if [ ! "$BROKER_TYPE" = "kafka" ] && [ ! "$BROKER_TYPE" = "kinesis" ] && [ ! "$BROKER_TYPE" = "gcloud-pubsub" ]; then
+ echo >&2 "broker type: '$BROKER_TYPE' not valid. Please supply 'kafka','kinesis' or 'gcloud-pubsub'. Aborting"
exit 1
fi
;;
@@ -444,6 +446,14 @@
ing"; exit 1; }
fi
+
+if [ "$BROKER_TYPE" = "gcloud-pubsub" ]; then
+echo "Downloading gcloud-pubsub-events plugin master (TODO: replace with $GERRIT_BRANCH, once we have build)"
+ wget $GERRIT_CI/plugin-gcloud-pubsub-events-gh-bazel-master-stable-3.3/$LAST_BUILD/gcloud-pubsub-events/gcloud-pubsub-events.jar \
+ -O $DEPLOYMENT_LOCATION/gcloud-pubsub-events.jar || { echo >&2 "Cannot download gcloud-pubsub-events plugin: Check internet connection. Abort\
+ing"; exit 1; }
+fi
+
echo "Downloading metrics-reporter-prometheus plugin $GERRIT_BRANCH"
wget $GERRIT_CI/plugin-metrics-reporter-prometheus-bazel-master-$GERRIT_BRANCH/$LAST_BUILD/metrics-reporter-prometheus/metrics-reporter-prometheus.jar \
-O $DEPLOYMENT_LOCATION/metrics-reporter-prometheus.jar || { echo >&2 "Cannot download metrics-reporter-prometheus plugin: Check internet connection. Abort\