Skip to content

Commit

Permalink
[pgbouncer] Add recipe and tests
Browse files Browse the repository at this point in the history
  • Loading branch information
DorianZaccaria committed Apr 24, 2015
1 parent 4352a5e commit 9e7c273
Show file tree
Hide file tree
Showing 5 changed files with 97 additions and 0 deletions.
16 changes: 16 additions & 0 deletions .kitchen.yml
Original file line number Diff line number Diff line change
Expand Up @@ -317,6 +317,22 @@ suites:
init_config:
default_timeout: 10

- name: datadog_pgbouncer
run_list:
- recipe[datadog::pgbouncer]
attributes:
datadog:
<<: *DATADOG
pgbouncer:
instances:
- host: localhost
port: 6432
username: john
password: doe
tags:
- toto
- tata

- name: datadog_process
run_list:
- recipe[datadog::process]
Expand Down
38 changes: 38 additions & 0 deletions recipes/pgbouncer.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#
# Cookbook Name:: datadog
# Recipe:: pgbouncer
#
# Copyright 2011-2015, Datadog
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
include_recipe 'datadog::dd-agent'

# Build a data structure with configuration.
# @example
# node.override['datadog']['pgbouncer']['instances'] = [
# {
# host: 'localhost',
# port: '15432',
# username: 'john',
# password: 'doe',
# tags: [
# 'optional_tag1',
# 'optional_tag2'
# ]
# }
# ]

datadog_monitor 'pgbouncer' do
instances node['datadog']['pgbouncer']['instances']
end
6 changes: 6 additions & 0 deletions templates/default/pgbouncer.yaml.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Generated by Chef, local modifications will be overwritten

<%= JSON.parse(({ 'instances' => @instances }).to_json).to_yaml %>

init_config:
# Nothing to configure here
1 change: 1 addition & 0 deletions test/integration/datadog_pgbouncer/serverspec/Gemfile
36 changes: 36 additions & 0 deletions test/integration/datadog_pgbouncer/serverspec/pgbouncer_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Encoding: utf-8
require 'json_spec'
require 'serverspec'
require 'yaml'

set :backend, :exec
set :path, '/sbin:/usr/local/sbin:$PATH'

AGENT_CONFIG = '/etc/dd-agent/conf.d/pgbouncer.yaml'

describe service('datadog-agent') do
it { should be_running }
end

describe file(AGENT_CONFIG) do
it { should be_a_file }

it 'is valid yaml matching input values' do
generated = YAML.load_file(AGENT_CONFIG)

expected = {
instances: [
{
host: 'localhost',
port: 6432,
username: 'john',
password: 'doe',
tags: ['toto', 'tata']
}
],
init_config: nil
}

expect(generated.to_json).to be_json_eql expected.to_json
end
end

0 comments on commit 9e7c273

Please sign in to comment.