@@ -1034,6 +1034,24 @@ jobs:
10341034 PY
10351035 )"
10361036
1037+ desired_probe_schedule="$(CURRENT_SCHEDULE="${desired_schedule}" SCHEDULE_TIME="${probe_time}" python - <<'PY'
1038+ import os
1039+
1040+ current_fields = os.environ["CURRENT_SCHEDULE"].split()
1041+ time_fields = os.environ["SCHEDULE_TIME"].split()
1042+ if len(current_fields) != 5:
1043+ raise SystemExit(f"Cloud Scheduler schedule must have 5 fields: {os.environ['CURRENT_SCHEDULE']!r}")
1044+ if len(time_fields) == 5:
1045+ print(" ".join(time_fields))
1046+ elif len(time_fields) == 2:
1047+ print(" ".join([*time_fields, *current_fields[2:]]))
1048+ else:
1049+ raise SystemExit(
1050+ f"Cloud Scheduler override must have 2 time fields or 5 cron fields: {os.environ['SCHEDULE_TIME']!r}"
1051+ )
1052+ PY
1053+ )"
1054+
10371055 scheduler_uri="${service_url}/run"
10381056 if [ -n "${current_schedule}" ]; then
10391057 echo "Updating Cloud Scheduler job ${job_name} schedule to ${desired_schedule}, timezone to ${market_timezone}, and URI to ${scheduler_uri}."
@@ -1059,6 +1077,42 @@ jobs:
10591077 --quiet
10601078 fi
10611079
1080+ probe_job_name="${CLOUD_RUN_SERVICE}-probe-scheduler"
1081+ probe_uri="${service_url}/probe"
1082+ if gcloud scheduler jobs describe "${probe_job_name}" \
1083+ --project="${GCP_PROJECT_ID}" \
1084+ --location="${scheduler_location}" >/dev/null 2>&1; then
1085+ echo "Updating Cloud Scheduler probe ${probe_job_name} to ${desired_probe_schedule}."
1086+ gcloud scheduler jobs update http "${probe_job_name}" \
1087+ --project="${GCP_PROJECT_ID}" \
1088+ --location="${scheduler_location}" \
1089+ --uri="${probe_uri}" \
1090+ --schedule="${desired_probe_schedule}" \
1091+ --time-zone="${market_timezone}" \
1092+ --http-method=POST \
1093+ --oidc-service-account-email="${GCP_SCHEDULER_SERVICE_ACCOUNT}" \
1094+ --oidc-token-audience="${service_url}" \
1095+ --attempt-deadline=180s \
1096+ --max-retry-attempts=0 \
1097+ --max-retry-duration=0s \
1098+ --quiet
1099+ else
1100+ echo "Creating Cloud Scheduler probe ${probe_job_name} at ${desired_probe_schedule}."
1101+ gcloud scheduler jobs create http "${probe_job_name}" \
1102+ --project="${GCP_PROJECT_ID}" \
1103+ --location="${scheduler_location}" \
1104+ --uri="${probe_uri}" \
1105+ --schedule="${desired_probe_schedule}" \
1106+ --time-zone="${market_timezone}" \
1107+ --http-method=POST \
1108+ --oidc-service-account-email="${GCP_SCHEDULER_SERVICE_ACCOUNT}" \
1109+ --oidc-token-audience="${service_url}" \
1110+ --attempt-deadline=180s \
1111+ --max-retry-attempts=0 \
1112+ --max-retry-duration=0s \
1113+ --quiet
1114+ fi
1115+
10621116 precheck_job_name="${CLOUD_RUN_SERVICE}-precheck-scheduler"
10631117 precheck_uri="${service_url}/dry-run"
10641118 if gcloud scheduler jobs describe "${precheck_job_name}" \
@@ -1095,7 +1149,7 @@ jobs:
10951149 --quiet
10961150 fi
10971151
1098- managed_scheduler_jobs=("${job_name}" "${precheck_job_name}")
1152+ managed_scheduler_jobs=("${job_name}" "${probe_job_name}" "${ precheck_job_name}")
10991153 for managed_job_name in "${managed_scheduler_jobs[@]}"; do
11001154 managed_job_state="$(gcloud scheduler jobs describe "${managed_job_name}" \
11011155 --project="${GCP_PROJECT_ID}" \
@@ -1123,6 +1177,19 @@ jobs:
11231177 esac
11241178 done
11251179
1180+ if [ "${DEPLOYMENT_LABEL:-}" = "SG" ]; then
1181+ monitor_job_name="longbridge-monitor-dispatcher-scheduler"
1182+ if gcloud scheduler jobs describe "${monitor_job_name}" \
1183+ --project="${GCP_PROJECT_ID}" \
1184+ --location="${scheduler_location}" >/dev/null 2>&1; then
1185+ echo "Deleting obsolete shared monitor dispatcher ${monitor_job_name}."
1186+ gcloud scheduler jobs delete "${monitor_job_name}" \
1187+ --project="${GCP_PROJECT_ID}" \
1188+ --location="${scheduler_location}" \
1189+ --quiet
1190+ fi
1191+ fi
1192+
11261193 - name : Reconcile legacy Cloud Scheduler jobs
11271194 if : steps.config.outputs.env_sync_enabled == 'true'
11281195 env :
0 commit comments