# installs, starts and stops solr
#
# * installation is ubuntu specific
# * start and stop tasks are using the thinking sphinx plugin

namespace :rubber do

  namespace :solr do

    rubber.allow_optional_tasks(self)

    after "rubber:install_packages", "rubber:solr:custom_install"

    desc "custom installing java and solr"
    task :custom_install, :roles => :solr do

        upload rubber_env.jdk_path, "/tmp/#{rubber_env.jdk}"
        upload rubber_env.solr_xml_path, "/tmp/#{rubber_env.solr_xml}"
        upload rubber_env.tarz_config_files, "/tmp/solr_conf.tar.gz"
        rubber.sudo_script 'install_java_solr', <<-ENDSCRIPT
          if [ ! -d "/usr/lib/jvm/jdk1.7" ]; then
            echo 'installing oracle java'
            tar -zxf /tmp/#{rubber_env.jdk} -C /tmp
            sudo mkdir -p /usr/lib/jvm/jdk1.7
            mv -f /tmp/#{rubber_env.jdk}/* /usr/lib/jvm/jdk1.7/

            echo 'updating java alternative'
            update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.7/bin/java" 1
            update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk1.7/bin/javac" 1
            update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/lib/jvm/jdk1.7/bin/javaws" 1

            echo 'installing tomcat'
            curl -o /tmp/apache-tomcat-7.0.34.tar.gz http://ftp.heanet.ie/mirrors/www.apache.org/dist/tomcat/tomcat-7/v7.0.34/bin/apache-tomcat-7.0.34.tar.gz
            tar -zxf /tmp/apache-tomcat-7.0.34.tar.gz -C #{rubber_env.tomcat_dest_folder}
            rm /tmp/apache-tomcat-7.0.34.tar.gz

            echo 'installing solr'
            curl -o /tmp/apache-solr-4.0.0.tgz http://ftp.heanet.ie/mirrors/www.apache.org/dist/lucene/solr/4.0.0/apache-solr-4.0.0.tgz
            tar -zxf /tmp/apache-solr-4.0.0.tgz -C /tmp
            cp /tmp/apache-solr-4.0.0/dist/apache-solr-4.0.0.war #{rubber_env.tomcat_dest_folder}/apache-tomcat-7.0.34/webapps/solr.war
            rm -fr /tmp/apache-solr-4.0.0*

            echo 'setting up solr'
            mkdir -p #{rubber_env.solr_home_dest_folder}/solr/data
            mkdir -p #{rubber_env.solr_home_dest_folder}/solr/#{rubber_env.core_name}
            tar -zxf /tmp/solr_conf.tar.gz -C /mnt/solr/#{rubber_env.core_name}
            mv /tmp/#{rubber_env.solr_xml} #{rubber_env.solr_home_dest_folder}/solr
            rm /tmp/solr_conf.tar.gz
          fi
        ENDSCRIPT
    end


    def set_java_opts
      "export JAVA_OPTS='-server -Xmx#{rubber_env.Xmx} -Dsolr.data.dir=#{rubber_env.solr_home_dest_folder}/solr/data -Dsolr.solr.home=#{rubber_env.solr_home_dest_folder}/solr'"
    end

    desc "start solr"
    task :start_solr, :roles => :solr  do
      rubber.sudo_script 'start_solr', <<-ENDSCRIPT
        echo 'starting tomcat'
        #{set_java_opts}
        nohup #{rubber_env.tomcat_dest_folder}/apache-tomcat-7.0.34/bin/startup.sh  &
        sleep 5
      ENDSCRIPT
    end

    desc "stop solr"
    task :stop_solr, :roles => :solr do
      rubber.sudo_script 'stop_solr', <<-ENDSCRIPT
        echo 'stopping tomcat'
        #{set_java_opts}
        #{rubber_env.tomcat_dest_folder}/apache-tomcat-7.0.34/bin/shutdown.sh
      ENDSCRIPT
    end
  end

end