#!/usr/bin/env ruby
require 'logger'
require 'abiquo-etk'

CONFIG_FILE='/etc/sysconfig/abiquo-server'

Log = Logger.new('/var/log/abiquo-etk.log')
Log.level = Logger::INFO

def create_schemas(user = 'root', password = '')
  cmd = ''
  if password.strip.chomp.empty? 
    cmd = "mysql -u #{user} "
  else
    cmd = "mysql -u #{user} -p#{password} "
  end

  if `#{cmd} -e 'show databases'|grep kinton`.strip.chomp.empty?
    cib = false
    if File.exist? '/etc/abiquo-release'
      if File.readlines('/etc/abiquo-release').join =~ /cloud-in-a-box/
        Log.info 'Cloud in a Box profile found'
        cib = true
      end
    end
    if cib
      out = `mysql -u root < /usr/share/doc/abiquo-16-pocsetup/cloud-in-a-box.sql`
      if $?.exitstatus == 0 
        Log.info 'cloud-in-a-box schema imported succesfully.'
      else
        Log.error "Error importing cloud-in-a-box schema: #{out}"
      end
    else
      out = `mysql -u root < /usr/share/doc/abiquo-server/database/kinton-schema.sql`
      if $?.exitstatus == 0 
        Log.info 'kinton-schema imported succesfully.'
      else
        Log.error "Error importing kinton-schema: #{out}"
      end
      out = `mysql -u root < /usr/share/doc/abiquo-server/database/kinton-premium-schema.sql`
      if $?.exitstatus == 0 
        Log.info 'kinton-premium-schema imported succesfully.'
      else
        Log.error "Error importing kinton-premium-schema: #{out}"
      end
    end
  else
    Log.warn 'kinton schema found. Skipping schema creation.'
  end
  
end

begin
	if File.exist? CONFIG_FILE
    @settings = abiquo_server_settings
	else
		Log.error "Config file #{CONFIG_FILE} does not exist. Exit."
		exit
	end

  Log.info "Setting EventSink URL"
  `abicli set event-sink-url http://#{@settings['abiquo_server_ip']}:8080/server/EventSink`
  
  Log.info "Setting DB Properties"
  `abicli set database-host #{@settings['abiquo_db_host']}`
  `abicli set database-user root`
  `abicli set database-password #{@settings['abiquo_db_password']}`
  `abicli set mail-server 127.0.0.1`
    
  Log.info "Creating database schemas..."
  create_schemas
rescue Exception => e
	Log.error "Unhandled exception: #{e.message}"
	Log.error "Unhandled exception: #{e.backtrace}"
end


