diff --git a/manifests/integrations/mysql.pp b/manifests/integrations/mysql.pp index 2c9bc24c..c9c38f08 100644 --- a/manifests/integrations/mysql.pp +++ b/manifests/integrations/mysql.pp @@ -54,26 +54,31 @@ # # class datadog_agent::integrations::mysql( - String $password, - String $host = 'localhost', - String $user = 'datadog', - Variant[String, Integer] $port = 3306, - Optional[String] $sock = undef, - Array $tags = [], - $replication = '0', - $galera_cluster = '0', - Boolean $extra_status_metrics = false, - Boolean $extra_innodb_metrics = false, - Boolean $extra_performance_metrics = false, - Boolean $schema_size_metrics = false, - Boolean $disable_innodb_metrics = false, - Optional[Array] $instances = undef, + String $host = 'localhost', + Optional[String] $user = 'datadog', + Optional[Variant[String, Integer]] $port = 3306, + Optional[String] $password = undef, + Optional[String] $sock = undef, + Array $tags = [], + $replication = '0', + $galera_cluster = '0', + Boolean $extra_status_metrics = false, + Boolean $extra_innodb_metrics = false, + Boolean $extra_performance_metrics = false, + Boolean $schema_size_metrics = false, + Boolean $disable_innodb_metrics = false, + Optional[Array] $instances = undef, ) inherits datadog_agent::params { include datadog_agent validate_legacy('Optional[String]', 'validate_string', $sock) validate_legacy('Array', 'validate_array', $tags) + if ($host == undef and $sock == undef) or + ($host != undef and $port == undef and $sock == undef) { + fail('invalid MySQL configuration') + } + if !$instances and $host { $_instances = [{ 'host' => $host, diff --git a/spec/classes/datadog_agent_integrations_mysql_spec.rb b/spec/classes/datadog_agent_integrations_mysql_spec.rb index cb266859..07c9fea0 100644 --- a/spec/classes/datadog_agent_integrations_mysql_spec.rb +++ b/spec/classes/datadog_agent_integrations_mysql_spec.rb @@ -20,7 +20,7 @@ let(:conf_file) { "#{conf_dir}/mysql.yaml" } context 'with default parameters' do - it { should_not compile } + it { should compile } end context 'with password set' do diff --git a/templates/agent-conf.d/mysql.yaml.erb b/templates/agent-conf.d/mysql.yaml.erb index ee446cd5..71170b01 100644 --- a/templates/agent-conf.d/mysql.yaml.erb +++ b/templates/agent-conf.d/mysql.yaml.erb @@ -7,10 +7,14 @@ init_config: instances: <%- (Array(@_instances)).each do |instance| -%> - server: <%= instance['host'] %> +<% if instance['user'] and instance['user'] != :undef -%> user: <%= instance['user'] %> +<% end -%> +<% if instance['password'] and instance['password'] != :undef -%> pass: <%= instance['password'] %> +<% end -%> <% if instance['port'] -%> - port: <%= instance['port'] %> + port: <%= instance['port'] and instance['port'] != :undef %> <% end -%> <% if instance['sock'] and instance['sock'] != :undef -%> sock: <%= instance['sock'] %>