#
# Cookbook:: irrigate-snowflake
# Recipe:: cli
#
# Copyright:: (C) 2017 The Orchard
#
# All rights reserved - Do Not Redistribute
#

if node['os'] == 'linux'

  package 'unzip'

  template node['snowflake']['cli']['install_script'] do
    source 'cli_install.sh.erb'
    notifies :run, 'execute[cli_install]', :immediately
    mode '0755'
  end

  execute 'cli_install' do
    command node['snowflake']['cli']['install_script']
    user 'root'
    creates "#{node['snowflake']['cli']['destination']}/#{node['snowflake']['cli']['name']}"
  end

  directory node['snowflake']['cli']['config_file_location'] do
    owner node['snowflake']['cli']['user']
    mode '0700'
  end

  node['snowflake']['cli']['connections'].each do |connection_name, connection_info|
    connection_credentials   = data_bag_item('secrets', connection_info['credentials_data_bag_name'])
    connection_username      = connection_credentials['username'].chomp
    connection_password      = connection_credentials['password'].chomp
    connection_accountname   = connection_info['accountname']
    connection_dbname        = connection_info['dbname']
    connection_rolename      = connection_info['rolename']
    connection_schemaname    = connection_info['schemaname']
    connection_warehousename = connection_info['warehousename']

    template "#{node['snowflake']['cli']['config_file_location']}/config_#{connection_name}" do
      source 'cli_config.erb'
      user node['snowflake']['cli']['user']
      mode '0700'
      variables(
        username: connection_username,
        password: connection_password,
        accountname: connection_accountname,
        dbname: connection_dbname,
        rolename: connection_rolename,
        schemaname: connection_schemaname,
        warehousename: connection_warehousename
      )
    end
  end
end
