Improve GCP test cases to pick regions with available quota
We currently use a single GCP Compute region when spinning up VMs using the imported GCE image. As a result, we are often hitting the 'IN_USE_ADDRESSES' quota limit when there are multiple CI jobs running. Google does not allow us to increase the quota limit any more. Change the GCP test cases to use the CI `GCP_REGION` variable to list all GCE regions with available quota and pick a random one from the list. The `GCP_REGION` value is used as the region name prefix when filtering available regions. This means that if you specify an exact GCE region, such as `us-west1`, you'll always get the same region, but if a GCP multi-region is used, such as `us`, then a random region prefixed with 'us' will be used.
This commit is contained in:
parent
f0f0873d6e
commit
18dfa9d9c9
2 changed files with 14 additions and 8 deletions
|
|
@ -1388,11 +1388,14 @@ function verifyInGCP() {
|
|||
# resource ID can have max 62 characters, the $GCP_TEST_ID_HASH contains 56 characters
|
||||
GCP_INSTANCE_NAME="vm-$GCP_TEST_ID_HASH"
|
||||
|
||||
# Ensure that we use random GCP region with available 'IN_USE_ADDRESSES' quota
|
||||
# We use the CI variable "GCP_REGION" as the base for expression to filter regions.
|
||||
# It works best if the "GCP_REGION" is set to a storage multi-region, such as "us"
|
||||
local GCP_COMPUTE_REGION
|
||||
GCP_COMPUTE_REGION=$($GCP_CMD compute regions list --filter="name:$GCP_REGION* AND status=UP" | jq -r '.[] | select(.quotas[] as $quota | $quota.metric == "IN_USE_ADDRESSES" and $quota.limit > $quota.usage) | .name' | shuf -n1)
|
||||
|
||||
# Randomize the used GCP zone to prevent hitting "exhausted resources" error on each test re-run
|
||||
# disable Shellcheck error as the suggested alternatives are less readable for this use case
|
||||
# shellcheck disable=SC2207
|
||||
local GCP_ZONES=($($GCP_CMD compute zones list --filter="region=$GCP_REGION" | jq '.[] | select(.status == "UP") | .name' | tr -d '"' | tr '\n' ' '))
|
||||
GCP_ZONE=${GCP_ZONES[$((RANDOM % ${#GCP_ZONES[@]}))]}
|
||||
GCP_ZONE=$($GCP_CMD compute zones list --filter="region=$GCP_COMPUTE_REGION AND status=UP" | jq -r '.[].name' | shuf -n1)
|
||||
|
||||
$GCP_CMD compute instances create "$GCP_INSTANCE_NAME" \
|
||||
--zone="$GCP_ZONE" \
|
||||
|
|
|
|||
|
|
@ -142,11 +142,14 @@ function verifyInGCP() {
|
|||
# resource ID can have max 62 characters, the $GCP_TEST_ID_HASH contains 56 characters
|
||||
GCP_INSTANCE_NAME="vm-$GCP_TEST_ID_HASH"
|
||||
|
||||
# Ensure that we use random GCP region with available 'IN_USE_ADDRESSES' quota
|
||||
# We use the CI variable "GCP_REGION" as the base for expression to filter regions.
|
||||
# It works best if the "GCP_REGION" is set to a storage multi-region, such as "us"
|
||||
local GCP_COMPUTE_REGION
|
||||
GCP_COMPUTE_REGION=$($GCP_CMD compute regions list --filter="name:$GCP_REGION* AND status=UP" | jq -r '.[] | select(.quotas[] as $quota | $quota.metric == "IN_USE_ADDRESSES" and $quota.limit > $quota.usage) | .name' | shuf -n1)
|
||||
|
||||
# Randomize the used GCP zone to prevent hitting "exhausted resources" error on each test re-run
|
||||
# disable Shellcheck error as the suggested alternatives are less readable for this use case
|
||||
# shellcheck disable=SC2207
|
||||
local GCP_ZONES=($($GCP_CMD compute zones list --filter="region=$GCP_REGION" | jq '.[] | select(.status == "UP") | .name' | tr -d '"' | tr '\n' ' '))
|
||||
GCP_ZONE=${GCP_ZONES[$((RANDOM % ${#GCP_ZONES[@]}))]}
|
||||
GCP_ZONE=$($GCP_CMD compute zones list --filter="region=$GCP_COMPUTE_REGION AND status=UP" | jq -r '.[].name' | shuf -n1)
|
||||
|
||||
$GCP_CMD compute instances create "$GCP_INSTANCE_NAME" \
|
||||
--zone="$GCP_ZONE" \
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue