1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
|
#!/bin/sh
set -e
if ! [ -r /etc/openstack-cluster-installer/openstack-cluster-installer.conf ] ; then
echo "Could not load /etc/openstack-cluster-installer/openstack-cluster-installer.conf"
exit 1
else
TMPFILE=$(mktemp -t openstack-cluster-installer.XXXXXX)
cat /etc/openstack-cluster-installer/openstack-cluster-installer.conf | grep -v '^\[' >${TMPFILE}
. ${TMPFILE}
rm ${TMPFILE}
fi
ME=$(basename $0)
usage () {
echo "${ME} <ACTION>"
echo "where <ACTION> can be:"
echo " list-hosts: list all foreman discovered hosts"
echo " adopt <ID>: tell foreman that OCI wants to adopt a host, and to boot in the OCI live image"
exit 1
}
for i in $@ ; do
case "${1}" in
"list-hosts")
ACTION=${1}
;;
"adopt")
ACTION=${1}
HOST_ID=${2}
;;
*)
;;
esac
done
if [ -z "${ACTION}" ] ; then
usage
fi
case "${ACTION}" in
"list-hosts")
echo "id,name,serial_number,manufacturer,product_name,memory,processor_count"
MACHINE_LIST=$(curl ${INSECURE} -s -u ${FOREMAN_USERNAME}:${FOREMAN_PASSWORD} ${FOREMAN_URL}/discovered_hosts | jq '.["results"][].id')
for id in $MACHINE_LIST ; do
DISCO_HOST_TMP=$(mktemp -t ${ME}-discovered-host.XXXXXX)
curl ${INSECURE} -s -u ${FOREMAN_USERNAME}:${FOREMAN_PASSWORD} ${FOREMAN_URL}/discovered_hosts/${id} >${DISCO_HOST_TMP}
SERIAL_NUMBER=$(cat ${DISCO_HOST_TMP} | jq -r '.["facts_hash"]["serialnumber"]')
NAME=$(cat ${DISCO_HOST_TMP} | jq -r '.["name"]')
MANUFACTURER=$(cat ${DISCO_HOST_TMP} | jq -r '.["facts_hash"]["manufacturer"]')
PRODUCT_NAME=$(cat ${DISCO_HOST_TMP} | jq -r '.["facts_hash"]["productname"]')
MEMORY_MB=$(cat ${DISCO_HOST_TMP} | jq -r '.["facts_hash"]["memorysize_mb"]')
MEMORY_GB=$(echo "${MEMORY_MB} / 1024" | bc)
PROCESSOR_COUNT=$(cat ${DISCO_HOST_TMP} | jq -r '.["facts_hash"]["processors::count"]')
echo ${id},${NAME},${SERIAL_NUMBER},${MANUFACTURER},${PRODUCT_NAME},${MEMORY_GB},${PROCESSOR_COUNT}
rm -f ${DISCO_HOST_TMP}
done
;;
"adopt")
echo "Adopting host with ID: ${HOST_ID}."
set -x
DISCO_HOST_TMP=$(mktemp -t ${ME}-discovered-host-before-adopt.XXXXXX)
curl ${INSECURE} -s -u ${FOREMAN_USERNAME}:${FOREMAN_PASSWORD} ${FOREMAN_URL}/discovered_hosts/${HOST_ID} >${DISCO_HOST_TMP}
SERIAL_NUMBER=$(cat ${DISCO_HOST_TMP} | jq -r '.["facts_hash"]["serialnumber"]')
IP=$(cat ${DISCO_HOST_TMP} | jq -r '.["ip"]')
MAC=$(cat ${DISCO_HOST_TMP} | jq -r '.["mac"]')
SUBNET_ID=$(cat ${DISCO_HOST_TMP} | jq -r '.["subnet_id"]')
rm -f ${DISCO_HOST_TMP}
curl ${INSECURE} -X PUT -s -u ${FOREMAN_USERNAME}:${FOREMAN_PASSWORD} ${FOREMAN_URL}/discovered_hosts/${HOST_ID} -H "Content-Type: application/json;charset=utf-8" \
--data-raw \
"{
\"discovered_host\": {
\"name\": \"${SERIAL_NUMBER}\",
\"operatingsystem_name\": \"Oci 1\",
\"mac\": \"${MAC}\",
\"ip\": \"${IP}\",
\"hostgroup_id\": \"4\",
\"subnet_id\": \"${SUBNET_ID}\",
\"parameters\":
[
{
\"name\": \"oci_ip\",
\"value\": \"10.4.38.60\"
}
]
}
}"
exit 0
;;
esac
exit 0
|