#!/usr/bin/env bash
#
# Copyright 2016 Confluent Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.


# Override this section from the script to include the com.sun.management.jmxremote.rmi.port property.
if [ -z "$KAFKA_JMX_OPTS" ]; then
  export KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false  -Dcom.sun.management.jmxremote.ssl=false "
fi

# The JMX client needs to be able to connect to java.rmi.server.hostname.
# The default for bridged n/w is the bridged IP so you will only be able to connect from another docker container.
# For host n/w, this is the IP that the hostname on the host resolves to.

# If you have more that one n/w configured, hostname -i gives you all the IPs,
# the default is to pick the first IP (or network).
export KAFKA_JMX_HOSTNAME=${KAFKA_JMX_HOSTNAME:-$(hostname -i | cut -d" " -f1)}

if [ "$KAFKA_JMX_PORT" ]; then
  # This ensures that the "if" section for JMX_PORT in kafka launch script does not trigger.
  export JMX_PORT=$KAFKA_JMX_PORT
  export KAFKA_JMX_OPTS="$KAFKA_JMX_OPTS -Djava.rmi.server.hostname=$KAFKA_JMX_HOSTNAME -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.rmi.port=$JMX_PORT -Dcom.sun.management.jmxremote.port=$JMX_PORT"
fi
#
## Busy waiting loop that waits until all topic are available
echo "===> Wait for infrastructure ..."
kafka-wait
radar_check=$?
if [ "$radar_check" -ne 0 ]; then
    exit $radar_check
fi

echo "===> Launching ${COMPONENT} ..."
# Add our jar to the classpath so that the custom classes can be loaded first.
# And this also makes sure that the CLASSPATH does not start with ":/etc/..."
# other jars are loaded via the plugin path
if [ -z "$CLASSPATH" ]; then
    export CLASSPATH="/etc/kafka-connect/jars/*"
fi

if [ -z "$CONNECTOR_PROPERTY_FILE_PREFIX" ]; then
  # execute connector in distributed mode
  exec connect-distributed /etc/"${COMPONENT}"/"${COMPONENT}".properties
else
  # execute connector in standalone mode
  exec connect-standalone /etc/"${COMPONENT}"/"${COMPONENT}".properties /etc/"${COMPONENT}"/"${CONNECTOR_PROPERTY_FILE_PREFIX}"*.properties
fi
