#
# Cookbook:: irrigate-datadog
# Recipe:: mysql
#
# Copyright:: (C) 2019 The Orchard
#

# Set MySQL credentials
if node['datadog']['mysql_credentials_data_bag_name'] && !node['datadog']['mysql_credentials_data_bag_name'].empty?
  mysql_credentials = data_bag_item('secrets', node['datadog']['mysql_credentials_data_bag_name'])
  mysql_user = mysql_credentials['user'].chomp
  mysql_password = mysql_credentials['password'].chomp
else
  mysql_user     = 'datadog'
  mysql_password = 'datadog123'
end

mysql_instances = [
  {
    'server' => node['datadog']['mysql']['host'],
    'port' => 3306,
    'user' => mysql_user,
    'pass' => mysql_password,
    'options' => {
      'replication' => node['datadog']['mysql']['is_replica'],
      'galera_cluster' => 0,
      'extra_status_metrics' => 1,
      'extra_innodb_metrics' => 1,
      'extra_performance_metrics' => 1,
      'schema_size_metrics' => 1,
      'disable_innodb_metrics' => 0,
    },
  },
]

mysql_instances[0]['sock'] = node['datadog']['mysql']['socket'] if node['datadog']['mysql']['host'] == 'localhost'
mysql_instances[0]['queries'] = node['datadog']['mysql']['queries'] unless node['datadog']['mysql']['queries'].empty?
mysql_instances[0]['custom_queries'] = node['datadog']['mysql']['custom_queries'] unless node['datadog']['mysql']['custom_queries'].empty?

mysql_logs = node['datadog']['mysql']['logs']

unless mysql_logs.empty?
  # Enable logs agent if mysql log files are specified
  node.default['datadog']['enable_logs_agent'] = true

  # Make sure datadog agent can read each specified mysql log
  mysql_logs.each do |log|
    file log['path'] do
      group node['datadog']['group']
    end
  end
end

datadog_monitor 'mysql' do
  instances mysql_instances
  logs mysql_logs
  use_integration_template true
  action :add
  notifies :restart, 'service[datadog-agent]' if node['datadog']['agent_start']
end
