+set -eu -o pipefail
+
+tmpfile=$(mktemp --suffix -openstack-ports.txt)
+cores=$(nproc --all)
+threads=$((3*cores))
+
+# Set age for deletion/removal
+age="30 minutes ago"
+cutoff=$(date -d "$age" +%s)
+
+_cleanup()
+{
+ uuid=$1
+ created_at=$(openstack --os-cloud "$os_cloud" port show -f value -c created_at "$uuid")
+ if [ "$created_at" == "None" ]; then
+ echo "No value for port creation time; skipping: $uuid"
+ else
+ created_at_uxts=$(date -d "$created_at" +"%s")
+
+ # For debugging only; this outout usually disabled
+ # echo "Port: ${uuid} created at ${created_at} / ${created_at_uxts}"
+
+ # Validate timing values are numeric
+ if [[ "$created_at_uxts" -eq "$created_at_uxts" ]]; then
+ # Clean up ports where created_at > 30 minutes
+ if [[ "$created_at_uxts" -lt "$cutoff" ]]; then
+ echo "Removing orphaned port $uuid created > $age"
+ openstack --os-cloud "$os_cloud" port delete "$uuid"
+ fi
+ else
+ echo "Date variable failed numeric test; deletion not possible"
+ fi
+ fi
+}
+
+# Output the initial list of port UUIDs to a temporary file
+openstack --os-cloud "$os_cloud" port list -f value -c ID -c status \
+ | { grep -e DOWN || true; } | { awk '{print $1}' || true; } > "$tmpfile"
+
+# Count the number to process
+total=$(wc -l "$tmpfile" | awk '{print $1}')
+echo "Ports to process: $total; age limit: $cutoff"
+echo "Using $threads parallel processes..."