backup script completed, all backup taken for 23-Feb
This commit is contained in:
58
wsl/scripts/openstack_client_info/os_clientInfo.sh
Normal file
58
wsl/scripts/openstack_client_info/os_clientInfo.sh
Normal file
@@ -0,0 +1,58 @@
|
||||
#!/bin/bash
|
||||
|
||||
CUSTOMER_FILE="${1:-customers.txt}"
|
||||
OUT="${2:-openstack_customer_report.csv}"
|
||||
|
||||
command -v openstack >/dev/null 2>&1 || { echo "ERROR: openstack CLI not found"; exit 1; }
|
||||
command -v jq >/dev/null 2>&1 || { echo "ERROR: jq not found. Install: sudo apt-get install -y jq"; exit 1; }
|
||||
|
||||
echo "Customer Name,project name,Project id,Instance name,Instance id,Volume name,volume id,vol size,Projects storage Allocation,Number of volu" > "$OUT"
|
||||
|
||||
PROJ_JSON="$(openstack project list -f json)"
|
||||
|
||||
while IFS= read -r CUSTOMER; do
|
||||
[[ -z "${CUSTOMER// }" ]] && continue
|
||||
PROJECT_NAME="$(echo "$PROJ_JSON" | jq -r --arg p "$CUSTOMER" '.[] | select(.Name|test($p;"i")) | .Name' | head -n1)"
|
||||
PROJECT_ID="$(echo "$PROJ_JSON" | jq -r --arg p "$CUSTOMER" '.[] | select(.Name|test($p;"i")) | .ID' | head -n1)"
|
||||
echo $PROJECT_NAME
|
||||
echo $PROJECT_ID
|
||||
|
||||
if [[ -z "${PROJECT_ID:-}" || "$PROJECT_ID" == "null" ]]; then
|
||||
echo "\"$CUSTOMER\"-> Project Not Found"
|
||||
continue
|
||||
fi
|
||||
echo "checkpoint 1"
|
||||
QUOTA_JSON="$(openstack quota show "$PROJECT_ID" -f json)"
|
||||
QUOTA_GB="$(echo "$QUOTA_JSON" | jq -r '.[] | select(.Resource=="gigabytes") | .Limit' | head -n1)"
|
||||
QUOTA_VOL="$(echo "$QUOTA_JSON" | jq -r '.[] | select(.Resource=="volumes") | .Limit' | head -n1)"
|
||||
QUOTA_GB="${QUOTA_GB:-NA}"
|
||||
QUOTA_VOL="${QUOTA_VOL:-NA}"
|
||||
echo "checkpoint 2"
|
||||
INST_MAP="$(openstack server list --all-projects --project "$PROJECT_ID" -f value -c ID -c Name 2>/dev/null || true)"
|
||||
echo "checkpoint 3"
|
||||
openstack volume list --all-projects --project "$PROJECT_ID" -f value -c ID -c Name -c Size 2>/dev/null | \
|
||||
while read -r VOL_ID VOL_NAME VOL_SIZE; do
|
||||
ATT_JSON="$(openstack volume show "$VOL_ID" -f json -c attachments 2>/dev/null || echo '{"attachments": []}')"
|
||||
INSTANCE_ID="$(echo "$ATT_JSON" | jq -r '.attachments[0].server_id // ""')"
|
||||
echo $ATT_JSON
|
||||
echo "checkpoint 4"
|
||||
INSTANCE_NAME=""
|
||||
if [[ -n "${INSTANCE_ID:-}" ]]; then
|
||||
echo "checkpoint 5"
|
||||
INSTANCE_NAME="$(echo "$INST_MAP" | awk -v id="$INSTANCE_ID" '$1==id{print $2; exit}')"
|
||||
INSTANCE_NAME="${INSTANCE_NAME:-UNKNOWN}"
|
||||
fi
|
||||
echo "checkpoint 6"
|
||||
echo "\"$CUSTOMER\",\"$PROJECT_NAME\",\"$PROJECT_ID\",\"$INSTANCE_NAME\",\"$INSTANCE_ID\",\"$VOL_NAME\",\"$VOL_ID\",\"$VOL_SIZE\",\"$QUOTA_GB\",\"$QUOTA_VOL\"" >> "$OUT"
|
||||
|
||||
done
|
||||
|
||||
|
||||
|
||||
done < "$CUSTOMER_FILE"
|
||||
|
||||
echo "Done: $OUT"
|
||||
|
||||
|
||||
|
||||
echo "Done"
|
||||
Reference in New Issue
Block a user