File: oci-foreman

package info (click to toggle)
openstack-cluster-installer 43.0.18
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 4,484 kB
  • sloc: php: 19,127; sh: 18,142; ruby: 75; makefile: 31; xml: 8
file content (95 lines) | stat: -rwxr-xr-x 3,097 bytes parent folder | download | duplicates (2)
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