#
# Cookbook:: irrigate-jenkins
# Recipe:: workstation
#
# Copyright:: (C) 2017 The Orchard
#

chefdk_version = node['chefdk_version']
if chefdk_version
  if platform_family?('rhel')
    os_major = node['platform_version'].to_i
    chefdk_url = "https://packages.chef.io/files/stable/chefdk/#{chefdk_version}/el/#{os_major}/chefdk-#{chefdk_version}-1.el#{os_major}.x86_64.rpm"
  else
    raise "ERROR: Unsupported platform - #{node['platform_family']}"
  end

  # Getting and installing ChefDK rpm package
  chefdk_installer = "#{Chef::Config[:file_cache_path]}/chefdk_#{chefdk_version}.rpm"
  remote_file chefdk_installer do
    source chefdk_url
  end

  rpm_package 'chefdk.rpm' do
    source chefdk_installer
    action :install
  end
end

# knife block configuration
user_name = node['jenkins']['user']
user_home = node['jenkins']['jenkins_home_dir']

directory "#{user_home}/.chef" do
  owner user_name
  group user_name
  mode '0750'
  action :create
end

workstation_data = data_bag_item('secrets', 'jenkins_chef_workstation')
workstation_data['chef_servers'].each do |chef_server|
  template "#{user_home}/.chef/knife-#{chef_server['name']}.rb" do
    source 'knife.erb'
    variables(
      chef_server: chef_server,
      user_home: user_home
    )
    owner user_name
    group user_name
    mode '0750'
  end

  file "#{user_home}/.chef/#{chef_server['username']}-#{chef_server['name']}.pem" do
    content chef_server['key']
    owner user_name
    group user_name
    mode '0600'
    sensitive true
  end
  next unless chef_server['default']
  link "#{user_home}/.chef/knife.rb" do
    to "#{user_home}/.chef/knife-#{chef_server['name']}.rb"
  end
end
