#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You 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.
#
function configure_cassandra() {
  local OPTIND
  local OPTARG
  
  . /etc/profile
  
  CLOUD_PROVIDER=
  while getopts "c:" OPTION; do
    case $OPTION in
    c)
      CLOUD_PROVIDER="$OPTARG"
      shift $((OPTIND-1)); OPTIND=1
      ;;
    esac
  done
  
  case $CLOUD_PROVIDER in
    # We want the gossip protocol to use internal (private) addresses, and the
    # client to use public addresses.
    # See http://wiki.apache.org/cassandra/FAQ#cant_listen_on_ip_any
    ec2 | aws-ec2 )
      PRIVATE_SELF_HOST=`wget -q -O - http://169.254.169.254/latest/meta-data/local-ipv4`
      # EC2 is NATed
      PUBLIC_SELF_HOST=$PRIVATE_SELF_HOST
      ;;
    *)
      PUBLIC_SELF_HOST=`/sbin/ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'`
      PRIVATE_SELF_HOST=`/sbin/ifconfig eth1 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'`
      ;;
  esac
  
  config_file="/etc/cassandra/conf/cassandra.yaml"
  if [[ "x"`grep -e '^seeds:' $config_file` == "x" ]]; then
    seeds="$1" # 08 format seeds
    shift
    for server in "$@"; do
      seeds="${seeds},${server}"
    done
    sed -i -e "s|- seeds: \"127.0.0.1\"|- seeds: \"${seeds}\"|" $config_file
  else
    seeds="" # 07 format seeds
    for server in "$@"; do
      seeds="${seeds}\n    - ${server}"
    done
    sed -i -e "/^seeds:/,/^/d" $config_file ; echo -e "seeds:${seeds}" >> $config_file
  fi
  
  sed -i -e "s|listen_address: localhost|listen_address: $PRIVATE_SELF_HOST|" $config_file
  sed -i -e "s|rpc_address: localhost|rpc_address: $PUBLIC_SELF_HOST|" $config_file
  
  # Now that it's configured, start Cassandra
  nohup /etc/rc.local &

}
