#!/bin/bash

# Sample Docker start script for the AppDynamics Standalone Machine Agent
# This is provided for illustration purposes only, for full details
# please consult the product documentation: https://docs.appdynamics.com/

# See the AppDynamics Product Docs (Standalone Machine Agent Configuration Property Reference)
# In this example, MA_* environment variables are passed to the container at runtime

# Initializing MA_PROPERTIES variable
MA_PROPERTIES=""

# Controller host
if [ -n "$MA_CONTROLLER_HOST" ]; then
    MA_PROPERTIES+=" -Dappdynamics.controller.hostName=$MA_CONTROLLER_HOST"
fi

# Controller port
if [ -n "$MA_CONTROLLER_PORT" ]; then
    MA_PROPERTIES+=" -Dappdynamics.controller.port=$MA_CONTROLLER_PORT"
fi

# ssl enabled
if [ -n "$MA_SSL_ENABLED" ]; then
    MA_PROPERTIES+=" -Dappdynamics.controller.ssl.enabled=$MA_SSL_ENABLED"
fi

# access key
if [ -n "$MA_ACCESS_KEY" ]; then
    MA_PROPERTIES+=" -Dappdynamics.agent.accountAccessKey='$MA_ACCESS_KEY'"
fi

# Account Name
if [ -n "$MA_ACCOUNT_NAME" ]; then
    MA_PROPERTIES+=" -Dappdynamics.agent.accountName=$MA_ACCOUNT_NAME"
fi

# Unique host id
if [ -n "$MA_UNIQUE_HOSTID" ]; then
    MA_PROPERTIES+=" -Dappdynamics.agent.uniqueHostId=$MA_UNIQUE_HOSTID"
fi

# sim enabled
if [ -n "$MA_SIM_ENABLED" ]; then
    MA_PROPERTIES+=" -Dappdynamics.sim.enabled=$MA_SIM_ENABLED"
fi

# docker enabled
if [ -n "$MA_DOCKER_ENABLED" ]; then
    MA_PROPERTIES+=" -Dappdynamics.docker.enabled=$MA_DOCKER_ENABLED"
fi

# dmm enabled
if [ -n "$MA_DMM_ENABLED" ]; then
    MA_PROPERTIES+=" -Dappdynamics.machine.agent.dynamicMonitoring.enabled=$MA_DMM_ENABLED"
fi

# machine hierarchy
if [ -n "$MA_MACHINE_PATH" ]; then
    MA_PROPERTIES+=" -Dappdynamics.machine.agent.hierarchyPath=\"$MA_MACHINE_PATH\""
fi

# docker metric collector thread pool
if [ -n "$MA_DOCKER_COLLECTOR_POOL_SIZE" ]; then
    MA_PROPERTIES+=" -Dappdynamics.docker.metric.collector.pool.size=$MA_DOCKER_COLLECTOR_POOL_SIZE"
fi

# docker tread container id as host id for apm nodes.
if [ -n "$MA_DOCKER_CONTAINERIDASHOSTID" ]; then
    MA_PROPERTIES+=" -Dappdynamics.docker.container.containerIdAsHostId.enabled=$MA_DOCKER_CONTAINERIDASHOSTID"
fi

# docker container registration interval in seconds.
if [ -n "$MA_CONTAINER_REGISTRATION_INTERVAL_IN_SECONDS" ]; then
   MA_PROPERTIES+=" -Dappdynamics.docker.container.registration.interval=${MA_CONTAINER_REGISTRATION_INTERVAL_IN_SECONDS}"
fi

# http listener for custom metric
if [ -n "$MA_HTTP_LISTENER_ENABLED" ]; then
    MA_PROPERTIES+=" -Dmetric.http.listener=$MA_HTTP_LISTENER_ENABLED"
fi

# http listener port
if [ -n "$MA_HTTP_LISTENER_PORT" ]; then
    MA_PROPERTIES+=" -Dmetric.http.listener.port=$MA_HTTP_LISTENER_PORT"
fi

# http listener host
if [ -n "$MA_HTTP_LISTENER_HOST" ]; then
    MA_PROPERTIES+=" ‑Dmetric.http.listener.host=$MA_HTTP_LISTENER_HOST"
fi

# additional properties
if [ -n "$MA_ADDITIONAL_PROPERTIES" ]; then
 MA_PROPERTIES+=" $MA_ADDITIONAL_PROPERTIES"
fi

# Printing the startup properties, will be visible in container logs.
echo "$MA_PROPERTIES"

# Start Machine Agent
./bin/machine-agent ${MA_PROPERTIES} -j jre/