X-Git-Url: https://gerrit.linuxfoundation.org/infra/gitweb?a=blobdiff_plain;f=shell%2Fjob-cost.sh;h=b856f6a5cbdd58762f55d0cd62343033033c4337;hb=a86c6e8d376c95aa00b179fce9d207e61c8f72d0;hp=a7dceea429956b2e997fd02fcc7636ed76f82697;hpb=21009213aa6204bfb40eedc1b11f89a259abd917;p=releng%2Fglobal-jjb.git diff --git a/shell/job-cost.sh b/shell/job-cost.sh index a7dceea4..b856f6a5 100644 --- a/shell/job-cost.sh +++ b/shell/job-cost.sh @@ -15,10 +15,18 @@ set -euf -o pipefail # shellcheck disable=SC1090 source ~/lf-env.sh +if [[ ! -f /run/cloud-init/result.json && ! -f stack-cost ]]; then + # Don't attempt to calculate job cost as build is not running in a + # cloud environment + echo "INFO: Skipping job cost calculation" + exit 0 +fi + # AWS job cost not supported, exit -if grep -qi amazon /sys/devices/virtual/dmi/id/bios_vendor ; then - echo "INFO: Not able to calculate job cost on AWS" - exit 0 +cloudtype="$(jq -r .v1.datasource /run/cloud-init/result.json)" +if [[ $cloudtype == "DataSourceEc2Local" ]]; then + echo "INFO: Not able to calculate job cost on AWS" + exit 0 fi lf-activate-venv zipp==1.1.0 python-openstackclient @@ -45,9 +53,8 @@ else fi # Retrieve the current uptime (in seconds) -uptime=$(awk '{print $1}' /proc/uptime) -# Convert to integer by truncating fractional part' and round up by one -((uptime=${uptime%\.*}+1)) +# And Convert to integer by truncating fractional part' and round up by one +uptime=$(awk '{print int($1 + 1)}' /proc/uptime) # EC2 and OpenStack have simiar instace metadata APIs at this IP # AWS docs: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html @@ -59,7 +66,7 @@ url="https://pricing.vexxhost.net/v1/pricing/$instance_type/cost?seconds=$uptime json_block=$(curl -s "$url") # check if JSON returned and can be parsed -if jq <<< "$json_block" > /dev/null 2>&1; then +if jq . <<< "$json_block" > /dev/null 2>&1; then cost=$(jq .cost <<< "$json_block") resource=$(jq .resource <<< "$json_block" | tr -d '"') else