Let collectd manage repo and added unit test

If collectd is allowed to manage repo, it will need
the epel module.

This patch let collectd manage repo. It does not let
to manage the repo by default, but it can be modified.
I also adds the collectd unit test.

Depends-On: I771b4f033ba5d6926e1ab9d9900af8bc81876295
Change-Id: I0576df2902cc44e7e9ff312214d609095132f2a4
This commit is contained in:
Juan Badia Payno 2017-11-20 19:36:06 +01:00
parent 0ac357cbcb
commit 0aef5a7190
3 changed files with 82 additions and 2 deletions

View File

@ -68,3 +68,8 @@ mod 'sensu',
mod 'pacemaker',
:git => 'https://github.com/openstack/puppet-pacemaker',
:ref => 'master'
mod 'collectd',
:git => 'https://github.com/voxpupuli/puppet-collectd',
:ref => 'master'

View File

@ -137,6 +137,11 @@
# (Optional) List of strings. A list of active services in this tripleo
# deployment. This is used to look up service-specific plugins that
# need to be installed.
#
# [*collectd_manage_repo*]
# (Optional) Boolean. Whether let collectd enable manage repositories.
# If it is set to true the epel repository will be used
#
class tripleo::profile::base::metrics::collectd (
$step = Integer(hiera('step')),
@ -166,10 +171,13 @@ class tripleo::profile::base::metrics::collectd (
$gnocchi_keystone_endpoint = undef,
$gnocchi_resource_type = 'collectd',
$gnocchi_batch_size = 10,
$service_names = hiera('service_names', [])
$service_names = hiera('service_names', []),
$collectd_manage_repo = false
) {
if $step >= 3 {
include ::collectd
class {'::collectd':
manage_repo => $collectd_manage_repo
}
if $enable_file_logging {
include ::collectd::plugin::logfile
}

View File

@ -0,0 +1,67 @@
#
# Copyright (C) 2017 Red Hat, Inc.
#
# 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.
#
require 'spec_helper'
describe 'tripleo::profile::base::metrics::collectd' do
shared_examples_for 'tripleo::profile::base::metrics::collectd' do
context 'with step less than 3' do
let(:params) { { :step => 2 } }
it 'should do nothing' do
is_expected.to_not contain_class('collectd')
is_expected.to_not contain_class('collectd::plugin::logfile')
end
end
context 'with defaults and step greater than 3' do
let(:params) { { :step => 3 } }
it 'only have the collectd' do
is_expected.to compile.with_all_deps
is_expected.to contain_class('collectd')
is_expected.to_not contain_class('collectd::plugin::logfile')
is_expected.to contain_class('collectd').with(
:manage_repo => false,
)
is_expected.to contain_service('collectd').with(
:ensure => 'running',
:enable => true,
)
is_expected.to_not contain_class('epel')
end
end
context 'Enabled file_logging and step greater than 3' do
let(:params) { {
:step => 3,
:enable_file_logging => true
} }
it 'Contains both' do
is_expected.to compile.with_all_deps
is_expected.to contain_class('collectd')
is_expected.to contain_class('collectd::plugin::logfile')
end
end
end
on_supported_os.each do |os, facts|
context "on #{os}" do
let (:facts) {
facts
}
it_behaves_like 'tripleo::profile::base::metrics::collectd'
end
end
end