#!/bin/sh
# This file is part of cloud-init. See LICENSE file for license information.

# This script checks if cloud-init has hotplug hooked and if
# cloud-init is ready; if so invoke cloud-init hotplug-hook

fifo=/run/cloud-init/share/hook-hotplug-cmd
log_file=/run/cloud-init/hook-hotplug.log

should_run() {
    if [ -d /run/systemd ]; then
        # check that the socket is ready
        [ -p $fifo ]
    else
        # on non-systemd, check cloud-init fully finished.
        [ -e /run/cloud-init/result.json ]
    fi
}

if ! should_run; then
    # This happens when a device is hotplugged before cloud-init-hotplugd.socket is
    # listening on the socket.
    echo "Not running hotplug, not ready yet" >> ${log_file}
    exit 0
fi

# open cloud-init's hotplug-hook fifo rw
exec 3<>$fifo
env_params=" --subsystem=${SUBSYSTEM} handle --devpath=${DEVPATH} --udevaction=${ACTION}"
# write params to cloud-init's hotplug-hook fifo
echo "${env_params}" >&3
echo "Running hotplug hook: $env_params" >> ${log_file}
