# AWS job cost not supported, exit
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
+ echo "INFO: Not able to calculate job cost on AWS"
+ exit 0
fi
-lf-activate-venv zipp==1.1.0 python-openstackclient
+lf-activate-venv zipp==1.1.0 python-openstackclient urllib3~=1.26.15
if [[ -z ${JOB_NAME:-} ]]; then
lf-echo-error "Required Env Variable Unset/Empty: JOB_NAME"
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
# Nova docs: https://docs.openstack.org/nova/latest/user/metadata.html
+set +e
instance_type=$(curl -s http://169.254.169.254/latest/meta-data/instance-type)
+result=$?
+if [[ "$result" -ne 0 ]]; then
+ echo "INFO: Unable to retrieve instance type. Skipping job cost..."
+ exit 0
+fi
+set -e
echo "INFO: Retrieving Pricing Info for: $instance_type"
url="https://pricing.vexxhost.net/v1/pricing/$instance_type/cost?seconds=$uptime"
fi
# Archive the cost date
-mkdir -p "$WORKSPACE/archives/cost"
+mkdir -p "${WORKSPACE}/archives/cost"
echo "INFO: Archiving Costs"
date=$(TZ=GMT date +'%Y-%m-%d %H:%M:%S')
# Format the uptime, cost & stack_cost fields
-printf "%s,%s,%s,%s,%d,%.2f,%.2f\n" "$JOB_NAME" "$BUILD_NUMBER" "$date" \
- "$resource" "$uptime" "$cost" "$stack_cost" > "$WORKSPACE/archives/cost.csv"
+printf "%s,%s,%s,%s,%d,%.2f,%.2f,%s\n" "${JOB_NAME:-}" "${BUILD_NUMBER:-}" "$date" \
+ "$resource" "$uptime" "$cost" "$stack_cost" "${BUILD_RESULT:-}" > "${WORKSPACE}/archives/cost.csv"