+
+#refered from onap
+function call_api {
+ #Runs curl with passed flags and provides
+ #additional error handling and debug information
+
+ #Function outputs server response body
+ #and performs validation of http_code
+
+ local status
+ local curl_response_file="$(mktemp -p /tmp)"
+ local curl_common_flags=(-s -w "%{http_code}" -o "${curl_response_file}")
+ local command=(curl "${curl_common_flags[@]}" "$@")
+
+ echo "[INFO] Running '${command[@]}'" >&2
+ if ! status="$("${command[@]}")"; then
+ echo "[ERROR] Internal curl error! '$status'" >&2
+ cat "${curl_response_file}"
+ rm "${curl_response_file}"
+ return 2
+ else
+ echo "[INFO] Server replied with status: ${status}" >&2
+ cat "${curl_response_file}"
+ rm "${curl_response_file}"
+ if [[ "${status:0:1}" =~ [45] ]]; then
+ return 1
+ else
+ return 0
+ fi
+ fi
+}
+
+function list_nodes {
+ NODES_FILE="${IRONIC_DATA_DIR}/nodes.json"
+
+ if [ ! -f $IRONIC_DATA_DIR/nodes.json ]; then
+ exit 1
+ fi
+
+ cat "$NODES_FILE" | \
+ jq '.nodes[] | {
+ name,
+ username:.ipmi_driver_info.username,
+ password:.ipmi_driver_info.password,
+ address:.ipmi_driver_info.address
+ } |
+ .name + " " +
+ .username + " " +
+ .password + " " +
+ .address' \
+ | sed 's/"//g'
+}
+