#!/bin/sh

# chkconfig: 2345 93 25
# description: Starts and stops the JBoss ON agent
#
# This file is not packaged as part of standard RHQ. It is available for optional EC2 AMI packaging.
#
# processname: java
# pidfile: /var/run/rhq-agent.pid

# =============================================================================
# RHQ Agent UNIX/EC2 Boot Script
#
# Grab the user data for the EC2 instance and parse out the JON server URL.
# Calls rhq-agent-wrapper.sh for the rest of the startup/shutdown handling.

# source function library
. /etc/init.d/functions
lockfile=/var/lock/subsys/jon-agent-ec2

RHQ_AGENT_HOME=/usr/share/rhq-agent-<VERSION>
export RHQ_AGENT_HOME

RHQ_AGENT_JAVA_EXE_FILE_PATH=/usr/bin/java
export RHQ_AGENT_JAVA_EXE_FILE_PATH

RHQ_AGENT_PIDFILE_DIR=/var/run
export RHQ_AGENT_PIDFILE_DIR

RHQ_AGENT_ADDITIONAL_JAVA_OPTS="-Drhq.agent.data-directory=/var/lib/jon-agent/data -Djava.util.prefs.userRoot=/var/lib/jon-agent/prefs"
export RHQ_AGENT_ADDITIONAL_JAVA_OPTS

set_server_params() {
    local USER_DATA SERVER_URL SERVER_PORT INSTANCE_ID

    ## load initial configuration
    if [ ! -f /etc/sysconfig/jon-agent-ec2 ]; then
       curl -s http://169.254.169.254/1.0/user-data/ > /etc/sysconfig/jon-agent-ec2
       if [ $? != 0 ]; then
          failure $"Unable to retrieve EC2 user data"
          echo
	  exit 1
       fi
    fi
    . /etc/sysconfig/jon-agent-ec2

    if [ -z "$JON_AGENT_NAME" ]; then
       JON_AGENT_NAME="$(curl 169.254.169.254/1.0/meta-data/instance-id 2>/dev/null)"
       if [ $? != 0 ]; then
	  failure $"Unable to retrieve EC2 instance id"
          echo
	  exit 1
       fi
    fi

    if [ -z "$JON_SERVER_ADDR" ]; then
       failure $"JON_SERVER_URL not specified"
       echo
       exit 1
    fi

    RHQ_AGENT_ADDITIONAL_JAVA_OPTS="$RHQ_AGENT_ADDITIONAL_JAVA_OPTS -Drhq.agent.name=$JON_AGENT_NAME"
    RHQ_AGENT_ADDITIONAL_JAVA_OPTS="$RHQ_AGENT_ADDITIONAL_JAVA_OPTS -Drhq.agent.server.bind-address=$JON_SERVER_ADDR"

    if [ -n "$JON_SERVER_PORT" ]; then
	RHQ_AGENT_ADDITIONAL_JAVA_OPTS="$RHQ_AGENT_ADDITIONAL_JAVA_OPTS -Drhq.agent.server.bind-port=$JON_SERVER_PORT"
    fi

    if [ -n "$JON_AGENT_ADDR" ]; then
        RHQ_AGENT_ADDITIONAL_JAVA_OPTS="$RHQ_AGENT_ADDITIONAL_JAVA_OPTS -Drhq.communications.connector.bind-address=$JON_AGENT_ADDR"
    fi

    if [ -n "$JON_AGENT_PORT" ]; then
        RHQ_AGENT_ADDITIONAL_JAVA_OPTS="$RHQ_AGENT_ADDITIONAL_JAVA_OPTS -Drhq.communications.connector.bind-port=$JON_AGENT_PORT"
    fi

    if [ -n "$JON_AGENT_TOKEN" ]; then
        RHQ_AGENT_ADDITIONAL_JAVA_OPTS="$RHQ_AGENT_ADDITIONAL_JAVA_OPTS -Drhq.agent.security-token='$JON_AGENT_TOKEN'"
    fi

    if [ -n "$JON_AGENT_OPTS" ]; then
        RHQ_AGENT_ADDITIONAL_JAVA_OPTS="$RHQ_AGENT_ADDITIONAL_JAVA_OPTS $JON_AGENT_OPTS"
    fi

    export RHQ_AGENT_ADDITIONAL_JAVA_OPTS
}

case "$1" in
    start|restart)
        set_server_params
        touch "$lockfile"
        ;;
    stop)
        rm "$lockfile"
        ;;
esac

exec $RHQ_AGENT_HOME/bin/rhq-agent-wrapper.sh "$@"
