Retire puppet-monasca - Step 2: Remove Project Content

Depends-on: https://review.opendev.org/805098
Change-Id: I6d9314bef6781599a39038a5a405f84c8db9807a
This commit is contained in:
Takashi Kajinami 2021-08-19 11:02:47 +09:00 committed by Alex Schultz
parent 6739bd200c
commit b14a6251fd
160 changed files with 8 additions and 8640 deletions

26
.gitignore vendored
View File

@ -1,26 +0,0 @@
# Add patterns in here to exclude files created by tools integrated with this
# repository, such as test frameworks from the project's recommended workflow,
# rendered documentation and package builds.
#
# Don't add patterns to exclude files created by preferred personal tools
# (editors, IDEs, your operating system itself even). These should instead be
# maintained outside the repository, for example in a ~/.gitignore file added
# with:
#
# git config --global core.excludesfile '~/.gitignore'
pkg/
Gemfile.lock
vendor/
spec/fixtures/
.vagrant/
.bundle/
coverage/
.idea/
*.iml
/openstack
/log
# Files created by releasenotes build
releasenotes/build
.tox

View File

@ -1,5 +0,0 @@
- project:
templates:
- puppet-openstack-check-jobs
- puppet-openstack-module-unit-jobs
- release-notes-jobs-python3

View File

@ -1,19 +0,0 @@
The source repository for this project can be found at:
https://opendev.org/openstack/puppet-monasca
Pull requests submitted through GitHub are not monitored.
To start contributing to OpenStack, follow the steps in the contribution guide
to set up and use Gerrit:
https://docs.openstack.org/contributors/code-and-documentation/quick-start.html
Bugs should be filed on Launchpad:
https://bugs.launchpad.net/puppet-monasca
For more specific information about contributing to this repository, see the
Puppet OpenStack contributor guide:
https://docs.openstack.org/puppet-openstack-guide/latest/contributor/contributing.html

36
Gemfile
View File

@ -1,36 +0,0 @@
source ENV['GEM_SOURCE'] || "https://rubygems.org"
group :development, :test, :system_tests do
spec_helper_dir = '/home/zuul/src/opendev.org/openstack/puppet-openstack_spec_helper'
if File.directory?(spec_helper_dir)
if ENV['ZUUL_PROJECT'] == 'openstack/puppet-openstack_spec_helper'
gem 'puppet-openstack_spec_helper',
:path => '../..',
:require => 'false'
else
gem 'puppet-openstack_spec_helper',
:path => spec_helper_dir,
:require => 'false'
end
else
spec_helper_version = ENV['ZUUL_BRANCH'] || "master"
gem 'puppet-openstack_spec_helper',
:git => 'https://opendev.org/openstack/puppet-openstack_spec_helper',
:ref => spec_helper_version,
:require => 'false'
end
end
if facterversion = ENV['FACTER_GEM_VERSION']
gem 'facter', facterversion, :require => false
else
gem 'facter', :require => false
end
if puppetversion = ENV['PUPPET_GEM_VERSION']
gem 'puppet', puppetversion, :require => false
else
gem 'puppet', :require => false
end
# vim:ft=ruby

176
LICENSE
View File

@ -1,176 +0,0 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.

View File

@ -1,7 +0,0 @@
mod 'wget',
:git => "https://github.com/maestrodev/puppet-wget.git",
:tag => 'v1.7.3'
mod 'epel',
:git => "https://github.com/stahnma/puppet-module-epel",
:tag => '1.2.2'

121
README.md
View File

@ -1,121 +0,0 @@
puppet-monasca
==============
#### Table of Contents
1. [Overview - What is the monasca module?](#overview)
2. [Module Description - What does the module do?](#module-description)
3. [Setup - The basics of getting started with monasca](#setup)
4. [Implementation - An under-the-hood peek at what the module is doing](#implementation)
5. [Limitations - OS compatibility, etc.](#limitations)
6. [Development - Guide for contributing to the module](#development)
7. [Contributors - Those with commits](#contributors)
Overview
--------
The monasca module is a part of [OpenStack](https://opendev.org/openstack), and is meant to assist with the installation and configuration of monasca itself, and its dependent services (mentioned below).
Module Description
------------------
Setup
-----
**What the monasca module affects:**
* monasca, monitoring as a service for OpenStack.
* storm, Apache's distributed realtime computational system.
* kafka, Apache's publish-subscribe messaging system.
* influxdb, a stand-alone open-source distributes time series database.
Implementation
--------------
### monasca
monasca is a combination of Puppet manifest that configures the monasca client and server configuration, as well as monasca's dependent services.
### Types
#### monasca_config
The `monasca_config` provider is a child of the ini_setting provider. It allows one to write an entry in the `/etc/monasca/monasca.conf` file.
```puppet
monasca_config { 'DEFAULT/debug' :
value => true,
}
```
This will write `debug=true` in the `[DEFAULT]` section.
##### name
Section/setting name to manage from `monasca.conf`
##### value
The value of the setting to be defined.
##### secret
Whether to hide the value from Puppet logs. Defaults to `false`.
##### ensure_absent_val
If value is equal to ensure_absent_val then the resource will behave as if `ensure => absent` was specified. Defaults to `<SERVICE DEFAULT>`
#### agent_config
The `agent_config` provider is a children of the ini_setting provider. It allows one to write an entry in the `/etc/monasca/agent/agent.conf` file.
```puppet
agent_config { 'DEFAULT/verbose' :
value => true,
}
```
This will write `verbose=true` in the `[DEFAULT]` section.
##### name
Section/setting name to manage from `agent.conf`
##### value
The value of the setting to be defined.
##### secret
Whether to hide the value from Puppet logs. Defaults to `false`.
##### ensure_absent_val
If value is equal to ensure_absent_val then the resource will behave as if `ensure => absent` was specified. Defaults to `<SERVICE DEFAULT>`
Limitations
-----------
This module currently only supports debian based installs.
Development
-----------
Developer documentation for the entire puppet-openstack project.
* http://docs.openstack.org/developer/puppet-openstack-guide/
Contributors
------------
* https://github.com/openstack/puppet-monasca/graphs/contributors
Release Notes
-------------
* https://docs.openstack.org/releasenotes/puppet-monasca
Repository
----------
* https://opendev.org/openstack/puppet-monasca

8
README.rst Normal file
View File

@ -0,0 +1,8 @@
This project is no longer maintained.
The contents of this repository are still available in the Git source code
management system. To see the contents of this repository before it reached its
end of life, please check out the previous commit with "git checkout HEAD^1".
For any further questions, please email openstack-discuss@lists.openstack.org
or join #openstack-dev on OFTC.

View File

@ -1 +0,0 @@
require 'puppet-openstack_spec_helper/rake_tasks'

View File

@ -1,12 +0,0 @@
# This is a cross-platform list tracking distribution packages needed by tests;
# see http://docs.openstack.org/infra/bindep/ for additional information.
libxml2-devel [test platform:rpm]
libxml2-dev [test platform:dpkg]
libxslt-devel [test platform:rpm]
libxslt1-dev [test platform:dpkg]
ruby-devel [test platform:rpm]
ruby-dev [test platform:dpkg]
zlib1g-dev [test platform:dpkg]
zlib-devel [test platform:rpm]
puppet [build]

View File

@ -1,6 +0,0 @@
# This is required for the docs build jobs
sphinx>=3.5.1 # BSD
openstackdocstheme>=2.2.1 # Apache-2.0
# This is required for the releasenotes build jobs
reno>=3.1.0 # Apache-2.0

View File

@ -1 +0,0 @@
include monasca::apiserver

View File

@ -1,12 +0,0 @@
# The baseline for module testing used by Puppet Inc. is that each manifest
# should have a corresponding test manifest that declares that class or defined
# type.
#
# Tests are then run by using puppet apply --noop (to check for compilation
# errors and view a log of events) or by fully applying the test in a virtual
# environment (to compare the resulting system state to the desired state).
#
# Learn more about module testing here:
# https://puppet.com/docs/puppet/latest/bgtm.html#testing-your-module
#
include monasca

View File

@ -1 +0,0 @@
include monasca::storm

View File

@ -1 +0,0 @@
monasca-agent

View File

@ -1,14 +0,0 @@
# Startup script for the Monasca API
description "Monasca API java app"
start on runlevel [2345]
console log
respawn
setgid monasca
setuid monasca_api
exec /usr/bin/java -Xmx8g -cp \
/opt/monasca/monasca-api.jar:/opt/vertica/java/lib/vertica_jdbc.jar \
monasca.api.MonApiApplication server /etc/monasca/api-config.yml \
> /dev/null

View File

@ -1,50 +0,0 @@
#!/bin/bash
### BEGIN INIT INFO
# Provides: monasca-thresh
# Required-Start: $nimbus
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: Monitoring threshold engine running under storm
# Description:
### END INIT INFO
case "$1" in
start)
$0 status
if [ $? -ne 0 ]; then
sudo -Hu thresh /opt/storm/current/bin/storm jar /opt/monasca/monasca-thresh.jar monasca.thresh.ThresholdingEngine /etc/monasca/thresh-config.yml thresh-cluster
exit $?
else
echo "monasca-thresh is already running"
exit 0
fi
;;
stop)
# On system shutdown storm is being shutdown also and this will hang so skip shutting down thresh in that case
if [ -e '/sbin/runlevel' ]; then # upstart/sysV case
if [ $(runlevel | cut -d\ -f 2) == 0 ]; then
exit 0
fi
else # systemd case
systemctl list-units --type=target |grep shutdown.target
if [ $? -eq 0 ]; then
exit 0
fi
fi
sudo -Hu thresh /opt/storm/current/bin/storm kill thresh-cluster
# The above command returns but actually takes awhile loop watching status
while true; do
sudo -Hu thresh /opt/storm/current/bin/storm list |grep thresh-cluster
if [ $? -ne 0 ]; then break; fi
sleep 1
done
;;
status)
sudo -Hu thresh /opt/storm/current/bin/storm list |grep thresh-cluster
;;
restart)
$0 stop
$0 start
;;
esac

View File

@ -1,187 +0,0 @@
#!/bin/bash
MIRROR_FILE="/etc/monasca/monasca-persister-mirror.yml"
STORM_FILE="/opt/storm/current/conf/storm.yaml"
INFLUXDB_FILE="/etc/opt/influxdb/influxdb.conf"
INCLUDE_THRESH="include_thresh_flag"
#
# Get the list of monasca services in the order they should be
# started in. Note that we intentionally don't stop/start
# verticad -- vertica doesn't like that. Use adminTools
# for the entire cluster instead.
#
get_up_list() {
if [ -e $INFLUXDB_FILE ]
then
echo "influxdb"
fi
echo "zookeeper kafka storm-supervisor storm-nimbus storm-ui"
if [ "$1" = "$INCLUDE_THRESH" ]
then
echo "monasca-thresh"
fi
if [ -e $MIRROR_FILE ]
then
echo "monasca-persister-mirror"
fi
echo "monasca-persister monasca-notification monasca-api"
}
#
# Get the list of monasca services in the order they should be
# stopped in.
#
get_down_list() {
echo "monasca-api monasca-notification monasca-persister"
if [ -e $MIRROR_FILE ]
then
echo "monasca-persister-mirror"
fi
if [ "$1" = "$INCLUDE_THRESH" ]
then
echo "monasca-thresh"
fi
echo "storm-ui storm-nimbus storm-supervisor kafka zookeeper"
if [ -e $INFLUXDB_FILE ]
then
echo "influxdb"
fi
}
status() {
for x in $(get_up_list $INCLUDE_THRESH)
do
service $x status
done
}
start() {
for x in $(get_up_list $1)
do
STATUS=$(is_service_running $x)
#
# Only start a service if it isn't currently running
#
if [ $STATUS != 0 ]
then
service $x start
#
# Many of these services are java -- give them
# some time to come up before starting a dependent
# service.
#
sleep 10
fi
STATUS=$(is_service_running $x)
if [ $STATUS != 0 ]
then
echo "$x did not start -- diagnose and try starting the stack again!"
exit 1
fi
done
}
is_service_running() {
STATUS=$(service $1 status 2>&1)
if [ $? != 0 ] || [[ "$STATUS" == *"stop/waiting"* ]]
then
echo "1"
else
echo "0"
fi
}
stop() {
for x in $(get_down_list $1)
do
service $x stop
#
# Give the service time to clean up and stop before
# moving on.
#
sleep 10
STATUS=$(is_service_running $x)
if [ $STATUS != 1 ]
then
echo "$x did not stop -- diagnose and try stopping the stack again!"
exit 1
fi
done
}
tail_logs() {
/usr/bin/tail -f /opt/storm/current/logs/*log \
/var/log/monasca/*log \
/var/log/influxdb/*log \
/opt/vertica/log/*log \
/var/log/kafka/*log \
/opt/kafka/logs/*log
}
tail_metrics() {
/usr/bin/tail -f /tmp/kafka-logs/metr*/*log | /usr/bin/strings
}
lag() {
#
# Print the consumer lag
#
/opt/kafka/bin/kafka-run-class.sh kafka.admin.ConsumerGroupCommand \
--zookeeper localhost:2181 \
--group $1 --describe 2>&1
}
case "$1" in
status)
status
;;
start)
start
;;
start-cluster)
start $INCLUDE_THRESH
;;
stop)
stop
;;
stop-cluster)
stop $INCLUDE_THRESH
;;
restart)
stop
sleep 2
start
;;
restart-cluster)
stop $INCLUDE_THRESH
sleep 2
start $INCLUDE_THRESH
;;
tail-logs)
tail_logs
;;
tail-metrics)
tail_metrics
;;
local-lag)
lag '1_metrics'
;;
mirror-lag)
lag '2_metrics'
;;
*)
echo "Usage: "$1" {status|start|start-cluster|stop|stop-cluster|restart|restart-cluster|tail-logs|tail-metrics|local-lag|mirror-lag}"
exit 1
esac

View File

@ -1,14 +0,0 @@
CREATE SCHEMA MonAlarms;
CREATE TABLE MonAlarms.StateHistory(
id AUTO_INCREMENT,
tenant_id VARCHAR,
alarm_id VARCHAR,
metrics VARCHAR (65000),
old_state VARCHAR,
new_state VARCHAR,
sub_alarms VARCHAR (65000),
reason VARCHAR(65000),
reason_data VARCHAR(65000),
time_stamp TIMESTAMP NOT NULL
) PARTITION BY EXTRACT('year' FROM time_stamp)*100 + EXTRACT('month' FROM time_stamp);

View File

@ -1,15 +0,0 @@
GRANT USAGE ON SCHEMA MonMetrics TO mon_persister;
GRANT USAGE ON SCHEMA MonAlarms TO mon_persister;
GRANT ALL ON TABLE MonMetrics.Measurements TO mon_persister;
GRANT ALL ON TABLE MonMetrics.Definitions TO mon_persister;
GRANT ALL ON TABLE MonMetrics.Dimensions TO mon_persister;
GRANT ALL ON TABLE MonMetrics.DefinitionDimensions TO mon_persister;
GRANT ALL ON TABLE MonAlarms.StateHistory TO mon_persister;
GRANT USAGE ON SCHEMA MonMetrics TO mon_api;
GRANT USAGE ON SCHEMA MonAlarms TO mon_api;
GRANT SELECT ON TABLE MonMetrics.Measurements TO mon_api;
GRANT SELECT ON TABLE MonMetrics.Definitions TO mon_api;
GRANT SELECT ON TABLE MonMetrics.Dimensions TO mon_api;
GRANT SELECT ON TABLE MonMetrics.DefinitionDimensions TO mon_api;
GRANT ALL ON TABLE MonAlarms.StateHistory TO mon_api;

View File

@ -1,152 +0,0 @@
DROP SCHEMA MonMetrics CASCADE;
CREATE SCHEMA MonMetrics;
CREATE TABLE MonMetrics.Measurements (
definition_dimensions_id BINARY(20) NOT NULL,
time_stamp TIMESTAMP NOT NULL,
value FLOAT NOT NULL,
value_meta VARCHAR(8192)
) PARTITION BY EXTRACT('year' FROM time_stamp)*100 + EXTRACT('month' FROM time_stamp);
CREATE TABLE MonMetrics.Definitions(
id BINARY(20) NOT NULL,
name VARCHAR(255) NOT NULL,
tenant_id VARCHAR(255) NOT NULL,
region VARCHAR(255) NOT NULL,
PRIMARY KEY(id),
CONSTRAINT MetricsDefinitionsConstraint UNIQUE(name, tenant_id, region)
);
CREATE TABLE MonMetrics.Dimensions (
dimension_set_id BINARY(20) NOT NULL,
name VARCHAR(255) NOT NULL,
value VARCHAR(255) NOT NULL,
CONSTRAINT MetricsDimensionsConstraint UNIQUE(dimension_set_id, name, value)
);
CREATE TABLE MonMetrics.DefinitionDimensions (
id BINARY(20) NOT NULL,
definition_id BINARY(20) NOT NULL,
dimension_set_id BINARY(20) NOT NULL,
CONSTRAINT MetricsDefinitionDimensionsConstraint UNIQUE(definition_id, dimension_set_id)
);
-- Projections
-- ** These are for a single node system with no k safety
CREATE PROJECTION Measurements_DBD_1_rep_MonMetrics /*+createtype(D)*/
(
definition_dimensions_id ENCODING RLE,
time_stamp ENCODING COMMONDELTA_COMP,
value ENCODING AUTO,
value_meta ENCODING AUTO
)
AS
SELECT definition_dimensions_id,
time_stamp,
value,
value_meta
FROM MonMetrics.Measurements
ORDER BY definition_dimensions_id,
time_stamp
UNSEGMENTED ALL NODES;
CREATE PROJECTION Measurements_time_order_rep_MonMetrics /*+createtype(D)*/
(
definition_dimensions_id ENCODING RLE,
time_stamp ENCODING COMMONDELTA_COMP,
value ENCODING AUTO,
value_meta ENCODING AUTO
)
AS
SELECT definition_dimensions_id,
time_stamp,
value,
value_meta
FROM MonMetrics.Measurements
ORDER BY time_stamp,
definition_dimensions_id
UNSEGMENTED ALL NODES;
CREATE PROJECTION Definitions_DBD_2_rep_MonMetrics /*+createtype(D)*/
(
id ENCODING AUTO,
name ENCODING AUTO,
tenant_id ENCODING RLE,
region ENCODING RLE
)
AS
SELECT id,
name,
tenant_id,
region
FROM MonMetrics.Definitions
ORDER BY region,
tenant_id,
name
UNSEGMENTED ALL NODES;
CREATE PROJECTION Dimensions_DBD_3_rep_MonMetrics /*+createtype(D)*/
(
dimension_set_id ENCODING AUTO,
name ENCODING RLE,
value ENCODING AUTO
)
AS
SELECT dimension_set_id,
name,
value
FROM MonMetrics.Dimensions
ORDER BY name,
dimension_set_id,
value
UNSEGMENTED ALL NODES;
CREATE PROJECTION MonMetrics.Dimensions_rep_set_id /*+createtype(D)*/
(
dimension_set_id,
name ENCODING RLE,
value
)
AS
SELECT Dimensions.dimension_set_id,
Dimensions.name,
Dimensions.value
FROM MonMetrics.Dimensions
ORDER BY Dimensions.dimension_set_id,
Dimensions.name,
Dimensions.value
UNSEGMENTED ALL NODES;
CREATE PROJECTION DefinitionDimensions_DBD_4_rep_MonMetrics /*+createtype(D)*/
(
id ENCODING AUTO,
definition_id ENCODING RLE,
dimension_set_id ENCODING AUTO
)
AS
SELECT id,
definition_id,
dimension_set_id
FROM MonMetrics.DefinitionDimensions
ORDER BY definition_id,
dimension_set_id
UNSEGMENTED ALL NODES;
CREATE PROJECTION MonMetrics.DefinitionDimensions_rep_set_id /*+createtype(D)*/
(
id ENCODING AUTO,
definition_id ENCODING AUTO,
dimension_set_id ENCODING RLE
)
AS
SELECT id,
definition_id,
dimension_set_id
FROM MonMetrics.DefinitionDimensions
ORDER BY dimension_set_id,
definition_id
UNSEGMENTED ALL NODES;
select refresh('MonMetrics.Measurements, MonMetrics.Definitions, MonMetrics.Dimensions, MonMetrics.DefinitionDimensions');

View File

@ -1,14 +0,0 @@
#!/bin/bash
MONASCA_TABLES="\
MonMetrics.Dimensions \
MonMetrics.Definitions \
MonMetrics.DefinitionDimensions \
MonMetrics.Measurements \
MonAlarms.StateHistory"
for table in $MONASCA_TABLES
do
/usr/sbin/vsql -c "select analyze_statistics('$table');"
done

View File

@ -1,10 +0,0 @@
Puppet::Type.type(:agent_config).provide(
:ini_setting,
:parent => Puppet::Type.type(:openstack_config).provider(:ini_setting)
) do
def self.file_path
'/etc/monasca/agent/agent.conf'
end
end

View File

@ -1,10 +0,0 @@
Puppet::Type.type(:monasca_config).provide(
:ini_setting,
:parent => Puppet::Type.type(:openstack_config).provider(:ini_setting)
) do
def self.file_path
'/etc/monasca/monasca.conf'
end
end

View File

@ -1,10 +0,0 @@
Puppet::Type.type(:monasca_ini).provide(
:ini_setting,
:parent => Puppet::Type.type(:openstack_config).provider(:ini_setting)
) do
def self.file_path
'/etc/monasca/monasca.ini'
end
end

View File

@ -1,49 +0,0 @@
Puppet::Type.newtype(:agent_config) do
ensurable
newparam(:name, :namevar => true) do
desc 'Section/setting name to manage from agent.conf'
newvalues(/\S+\/\S+/)
end
newproperty(:value) do
desc 'The value of the setting to be defined.'
munge do |value|
value = value.to_s.strip
value.capitalize! if value =~ /^(true|false)$/i
value
end
newvalues(/^[\S ]*$/)
def is_to_s( currentvalue )
if resource.secret?
return '[old secret redacted]'
else
return currentvalue
end
end
def should_to_s( newvalue )
if resource.secret?
return '[new secret redacted]'
else
return newvalue
end
end
end
newparam(:secret, :boolean => true) do
desc 'Whether to hide the value from Puppet logs. Defaults to `false`.'
newvalues(:true, :false)
defaultto false
end
newparam(:ensure_absent_val) do
desc 'A value that is specified as the value property will behave as if ensure => absent was specified'
defaultto('<SERVICE DEFAULT>')
end
end

View File

@ -1,49 +0,0 @@
Puppet::Type.newtype(:monasca_config) do
ensurable
newparam(:name, :namevar => true) do
desc 'Section/setting name to manage from monasca.conf'
newvalues(/\S+\/\S+/)
end
newproperty(:value) do
desc 'The value of the setting to be defined.'
munge do |value|
value = value.to_s.strip
value.capitalize! if value =~ /^(true|false)$/i
value
end
newvalues(/^[\S ]*$/)
def is_to_s( currentvalue )
if resource.secret?
return '[old secret redacted]'
else
return currentvalue
end
end
def should_to_s( newvalue )
if resource.secret?
return '[new secret redacted]'
else
return newvalue
end
end
end
newparam(:secret, :boolean => true) do
desc 'Whether to hide the value from Puppet logs. Defaults to `false`.'
newvalues(:true, :false)
defaultto false
end
newparam(:ensure_absent_val) do
desc 'A value that is specified as the value property will behave as if ensure => absent was specified'
defaultto('<SERVICE DEFAULT>')
end
end

View File

@ -1,48 +0,0 @@
Puppet::Type.newtype(:monasca_ini) do
ensurable
newparam(:name, :namevar => true) do
desc 'Section/setting name to manage from monasca.ini'
newvalues(/\S+\/\S+/)
end
newproperty(:value) do
desc 'The value of the setting to be defined.'
munge do |value|
value = value.to_s.strip
value.capitalize! if value =~ /^(true|false)$/i
value
end
def is_to_s( currentvalue )
if resource.secret?
return '[old secret redacted]'
else
return currentvalue
end
end
def should_to_s( newvalue )
if resource.secret?
return '[new secret redacted]'
else
return newvalue
end
end
end
newparam(:secret, :boolean => true) do
desc 'Whether to hide the value from Puppet logs. Defaults to `false`.'
newvalues(:true, :false)
defaultto false
end
newparam(:ensure_absent_val) do
desc 'A value that is specified as the value property will behave as if ensure => absent was specified'
defaultto('<SERVICE DEFAULT>')
end
end

View File

@ -1,276 +0,0 @@
# == Class: monasca::agents
#
# Setups monasca agent.
#
# === Parameters
#
# [*url*]
# url of the monasca api server to POST metrics to
#
# [*username*]
# monasca agent name
#
# [*password*]
# monasca agent password
#
# [*keystone_url*]
# keystone endpoint for authentication
#
# [*enabled*]
# flag to enable/disable the monasca agent
#
# [*project_name*]
# name of keystone project to POST metrics for
#
# [*project_domain_id*]
# domain id of the keystone project to POST metrics for
#
# [*project_domain_name*]
# domain name of the keystone project to POST metrics for
#
# [*project_id*]
# id of keystone project to POST metrics for
#
# [*ca_file*]
# certificate file to use in keystone authentication
#
# [*max_buffer_size*]
# buffer size for metrics POSTing
#
# [*backlog_send_rate*]
# how name metrics to POST from backlog at a time
#
# [*amplifier*]
# multiplier for testing, allows POSTing the same metric multiple times
#
# [*hostname*]
# hostname for this monasca agent
#
# [*dimensions*]
# list of dimensions for this monasca agent
#
# [*recent_point_threshold*]
# number of seconds to consider a metric 'recent'
#
# [*check_freq*]
# how frequently (in seconds) to run the agent
#
# [*listen_port*]
# port for the monasca agent to listen on
#
# [*non_local_traffic*]
# flag for whether or not to support non-local traffic
# (see monasca documentation for more details)
#
# [*statsd_port*]
# port for the statsd server
#
# [*statsd_interval*]
# frequency to poll statsd
#
# [*statsd_forward_host*]
# host for statsd server
#
# [*statsd_forward_port*]
# port for statsd server
#
# [*log_level*]
# logging level -- INFO, DEBUG, ALL...
#
# [*collector_log_file*]
# logfile for monasca collector
#
# [*forwarder_log_file*]
# logfile for monasca forwarder
#
# [*monstatsd_log_file*]
# logfile for monasca statsd collector
#
# [*log_to_syslog*]
# flag for whether or not to log to syslog
#
# [*syslog_host*]
# host of the syslog server
#
# [*syslog_port*]
# port of the syslog server
#
# [*virtual_env*]
# path of python virtual environment symlink
#
# [*virtual_env_dir*]
# directory for python virtual environments
#
# [*virtual_env_reqs*]
# requirements file for the agent venv
#
# [*virtual_envs*]
# a hash of virtual envs to build
#
# [*agent_user*]
# name of the monasca agent user
#
# [*install_python_deps*]
# flag for whether or not to install python dependencies
#
# [*python_dep_ensure*]
# flag for whether or not to ensure/update python dependencies
#
# [*pip_install_args*]
# arguments to pass to the pip install command
#
class monasca::agent(
$url,
$username,
$password,
$keystone_url,
$enabled = true,
$project_name = 'null',
$project_domain_id = 'null',
$project_domain_name = 'null',
$project_id = 'null',
$ca_file = undef,
$max_buffer_size = '1000',
$backlog_send_rate = '1000',
$amplifier = '0',
$hostname = undef,
$dimensions = {},
$recent_point_threshold = '30',
$check_freq = '15',
$listen_port = '17123',
$non_local_traffic = false,
$statsd_port = '8125',
$statsd_interval = '10',
$statsd_forward_host = undef,
$statsd_forward_port = '8125',
$log_level = 'INFO',
$collector_log_file = '/var/log/monasca/agent/collector.log',
$forwarder_log_file = '/var/log/monasca/agent/forwarder.log',
$monstatsd_log_file = '/var/log/monasca/agent/monstatsd.log',
$log_to_syslog = false,
$syslog_host = undef ,
$syslog_port = undef,
$virtual_env = '/var/lib/monasca-agent',
$virtual_env_dir = '/var/lib/monasca-agent-venvs',
$virtual_env_reqs = 'puppet:///modules/monasca/agent_requirements.txt',
$virtual_envs = {'default'=> {'venv_active'=> true}},
$agent_user = 'monasca-agent',
$install_python_deps = true,
$python_dep_ensure = 'present',
$pip_install_args = '',
) {
include monasca
include monasca::params
$agent_dir = "${::monasca::monasca_dir}/agent"
$additional_checksd = "${agent_dir}/checks.d"
$conf_dir = "${agent_dir}/conf.d"
if $install_python_deps {
package { ['python-virtualenv', 'python-dev']:
ensure => $python_dep_ensure,
}
}
file { $virtual_env_dir:
ensure => 'directory',
owner => 'root',
group => 'root',
mode => '0755',
}
$defaults = {
symlink => $virtual_env,
basedir => $virtual_env_dir,
venv_extra_args => $pip_install_args,
venv_requirements => $virtual_env_reqs,
}
create_resources('::monasca::virtualenv::agent_instance', $virtual_envs,
$defaults)
user { $agent_user:
ensure => present,
groups => $::monasca::group,
require => Group[$::monasca::group]
}
file{ "${::monasca::log_dir}/agent":
ensure => 'directory',
owner => $agent_user,
group => $::monasca::group,
mode => '0755',
require => File[$::monasca::log_dir],
before => Service['monasca-agent'],
}
file { $agent_dir:
ensure => 'directory',
owner => 'root',
group => $::monasca::group,
mode => '0755',
require => File[$::monasca::monasca_dir],
}
file { "${agent_dir}/agent.yaml":
owner => 'root',
group => 'root',
mode => '0755',
content => template('monasca/agent.yaml.erb'),
require => File[$agent_dir],
before => Service['monasca-agent'],
} ~> Service['monasca-agent']
file { $additional_checksd:
ensure => 'directory',
owner => 'root',
group => 'root',
mode => '0755',
require => File[$agent_dir],
before => Service['monasca-agent'],
# ensure removal of all checks unmanaged by puppet
purge => true,
force => true,
recurse => true,
}
file { $conf_dir:
ensure => 'directory',
owner => 'root',
group => $::monasca::group,
mode => '0755',
require => File[$agent_dir],
before => Service['monasca-agent'],
# ensure removal of all checks unmanaged by puppet
purge => true,
force => true,
recurse => true,
}
file { '/etc/init.d/monasca-agent':
owner => 'root',
group => 'root',
mode => '0755',
content => template('monasca/monasca-agent.init.erb'),
before => Service['monasca-agent'],
}
$log_dir = "${::monasca::log_dir}/agent"
file { "${agent_dir}/supervisor.conf":
owner => 'root',
group => 'root',
mode => '0644',
content => template('monasca/supervisor.conf.erb'),
notify => Service['monasca-agent'],
}
if $enabled {
$ensure = 'running'
} else {
$ensure = 'stopped'
}
service { 'monasca-agent':
ensure => $ensure,
enable => $enabled,
name => $::monasca::params::agent_service,
}
}

View File

@ -1,140 +0,0 @@
# == Class: monasca::alarmdefs
#
# Class for bootstrapping monasca alarm definitions
#
# === Parameters:
#
# [*alarm_definition_config_source*]
# location of alarm definitions template to bootstrap in mysql database
#
# [*notification_config_source*]
# location of notification methods template to bootstrap in mysql database
#
# [*notification_assignments_source*]
# location of notification assignments template to bootstrap in mysql database
#
# [*admin_username*]
# name of the monasca admin user
#
# [*admin_password*]
# password of the monasca admin user
#
# [*api_server_url*]
# monasca api server endpoint
#
# [*auth_url*]
# keystone endpoint
#
# [*project_name*]
# keystone project name to bootstrap alarm definitions for
#
# [*virtual_env*]
# location of python virtual environment to install to
#
## DEPRECATED PARAMS
#
# [*install_python_deps*]
# flag for whether or not to install python dependencies
#
# [*python_dep_ensure*]
# flag for whether or not to ensure/update python dependencies
#
class monasca::alarmdefs(
$alarm_definition_config_source = 'monasca/alarm_definition_config.json.erb',
$notification_config_source = 'monasca/notification_config.json.erb',
$notification_assignments_source = 'monasca/notification_assignments.json.erb',
$admin_username = 'monasca-admin',
$admin_password = undef,
$api_server_url = undef,
$auth_url = undef,
$project_name = undef,
$virtual_env = '/var/www/monasca-alarmdefs',
## DEPRECATED PARAMS
$install_python_deps = undef,
$python_dep_ensure = undef,
)
{
include monasca::params
if $install_python_deps {
warning('monasca::alarmdefs::install_python_deps is deprecated and has no effect')
}
if $python_dep_ensure {
warning('monasca::alarmdefs::python_dep_ensure is deprecated and has no effect')
}
$alarm_definition_config = '/tmp/alarm_definition_config.json'
$notification_config = '/tmp/notification_config.json'
$notification_assignments = '/tmp/notification_assignments.json'
$script_name = 'bootstrap-alarm-definitions.py'
$script = "${virtual_env}/bin/${script_name}"
$cleanup_script = "${virtual_env}/bin/vm_alarm_cleanup.py"
$sql_host = $::monasca::params::sql_host
$sql_user = $::monasca::params::sql_user
$sql_password = $::monasca::params::sql_password
$sql_port = $::monasca::params::sql_port
python::virtualenv { $virtual_env :
owner => 'root',
group => 'root',
before => [Exec[$script], File[$script]],
require => [Package['virtualenv'],Package['python-dev']],
}
file { $script:
ensure => file,
content => template("monasca/${script_name}.erb"),
mode => '0755',
owner => 'root',
group => 'root',
}
file { $alarm_definition_config:
ensure => file,
content => template($alarm_definition_config_source),
mode => '0755',
owner => 'root',
group => 'root',
}
file { $notification_config:
ensure => file,
content => template($notification_config_source),
mode => '0755',
owner => 'root',
group => 'root',
}
file { $notification_assignments:
ensure => file,
content => template($notification_assignments_source),
mode => '0755',
owner => 'root',
group => 'root',
}
exec { $script:
subscribe => [File[$script], File[$alarm_definition_config], File[$notification_config], File[$notification_assignments]],
path => '/bin:/sbin:/usr/bin:/usr/sbin:/tmp',
cwd => "${virtual_env}/bin",
user => 'root',
group => 'root',
environment => ["OS_AUTH_URL=${auth_url}",
"OS_USERNAME=${admin_username}",
"OS_PASSWORD=${admin_password}",
"OS_PROJECT_NAME=${project_name}",
"MONASCA_API_URL=${api_server_url}"],
refreshonly => true,
require => Service['monasca-api'],
}
file { $cleanup_script:
ensure => file,
content => template('monasca/vm_alarm_cleanup.py.erb'),
mode => '0755',
owner => 'root',
group => 'root',
require => Python::Virtualenv[$virtual_env],
}
}

View File

@ -1,233 +0,0 @@
# == Class: monasca::api
#
# Class to setup monasca api
#
# === Parameters:
#
# [*api_db_thread_min*]
# (Optional) Minimum number of threads for db connection pool.
# Defaults to 4.
#
# [*api_db_thread_max*]
# (Optional) Maximum number of threads for db connection pool.
# Defaults to 32.
#
# [*api_db_wait*]
# (Optional) Amount of time to wait for db connection. Can specify
# any string supported by io.dropwizard Duration class, for example:
#
# '1ns' is 1 nanosecond
# '1s' is 1 seconds
# '1m' is 1 minute
# '1h' is 1 hour
# '1d' is 1 day
#
# Defaults to '5s' (5 seconds).
#
# [*api_user*]
# (Optional) Name of the monasca api user.
# Defaults to 'monasca_api'.
#
# [*blobmirror*]
# (Optional) URL of server to install debians from.
# Defaults to undef.
#
# [*check_conn_while_idle*]
# (Optional) Flag for whether db connection should stay alive while idle.
# Defaults to true.
#
# [*database_type*]
# (Optional) Type of database backend, influxdb or vertica.
# Defaults to influxdb.
#
# [*database_host*]
# (Optional) Host of database backend.
# Defaults to localhost.
#
# [*db_admin_password*]
# (Optional) Database admin password.
# Defaults to undef.
#
# [*gzip_setting*]
# (Optional) Flag for whether to use gzip for monasca api and persister.
# Defaults to true.
#
# [*kafka_brokers*]
# (Optional) List of kafka brokers and ports.
# Defaults to undef.
#
# [*keystone_endpoint*]
# (Optional) URL of keystone server.
# Defaults to undef.
#
# [*keystone_admin_token*]
# (Optional) Token for keystone admin.
# Defaults to undef.
#
# [*max_query_limit*]
# (Optional) Maximum number of records to be returned from db.
# Defaults to 10000.
#
# [*mon_api_build_ver*]
# (Optional) Build version of the monasca api debian package.
# Defaults to undef.
#
# [*mon_api_deb*]
# (Optional) Name of the monasca api debian package.
# Defaults to undef.
#
# [*region_name*]
# (Optional) Openstack region name for this install.
# Defaults to NA.
#
# [*roles_agent*]
# (Optional) List with the names of roles allowed to write metrics.
# Defaults to ['monasca-agent'].
#
# [*role_delegate*]
# (Optional) Name of the role allowed to write cross tenant metrics.
# Defaults to 'monitoring-delegate'.
#
# [*role_admin*]
# (Optional) Name of the role with extended permissions. Includes ability to
# publish metrics older than two weeks.
# Defaults to 'monasca-admin'.
#
# [*roles_default*]
# (Optional) List with the names of roles allowed to read and write metrics.
# Defaults to ['admin','monasca-user', '_member_'].
#
# [*roles_read_only*]
# (Optional) List with the names of roles allowed only to read metrics.
# Defaults to [].
#
# [*vertica_db_hint*]
# (Optional) Database hint to pass to vertica.
# Defaults to "". Setting this to "/*+KV*/" tells vertica to satisfy the
# query locally without talking to other nodes in the cluster -- which reduces
# network chatter when projections are replicated on each node.
#
# [*valid_notif_periods*]
# (Optional) List of valid notification periods in seconds.
# Defaults to [60].
#
# [*zookeeper_servers*]
# (Optional) Comma separated list of zookeeper servers and ports.
# Defaults to undef.
# Example: "zookeeper_host_1:2181,zookeeper_host_2:2181"
#
class monasca::api (
$api_db_thread_min = 4,
$api_db_thread_max = 32,
$api_db_wait = '5s',
$api_user = 'monasca_api',
$blobmirror = undef,
$check_conn_while_idle = true,
$database_type = 'influxdb',
$database_host = 'localhost',
$db_admin_password = undef,
$gzip_setting = true,
$kafka_brokers = undef,
$keystone_endpoint = undef,
$keystone_admin_token = undef,
$max_query_limit = 10000,
$mon_api_build_ver = undef,
$mon_api_deb = undef,
$region_name = 'NA',
$role_delegate = 'monitoring-delegate',
$role_admin = 'monasca-admin',
$roles_agent = ['monasca-agent'],
$roles_default = ['admin','monasca-user','_member_'],
$roles_read_only = [],
$valid_notif_periods = [60],
$vertica_db_hint = '',
$zookeeper_servers = undef,
) {
include monasca
include monasca::params
$api_fetch_url = "http://${blobmirror}/repos/monasca/monasca_api"
$latest_api_deb = "/tmp/${mon_api_deb}"
$api_cfg_file = '/etc/monasca/api-config.yml'
$stack_script_src = 'puppet:///modules/monasca/monasca_stack.sh'
$stack_script = '/usr/bin/monasca_stack.sh'
$startup_script = '/etc/init/monasca-api.conf'
$startup_script_src = 'puppet:///modules/monasca/monasca-api.conf'
wget::fetch { "${api_fetch_url}/${mon_api_build_ver}/${mon_api_deb}":
destination => $latest_api_deb,
timeout => 300,
before => [Package['install-api'],File[$latest_api_deb]],
} ~> Service['monasca-api']
user { $api_user:
ensure => present,
groups => $::monasca::group,
require => Group[$::monasca::group],
}
file { $latest_api_deb:
ensure => present,
}
package { 'monasca-api':
ensure => latest,
provider => dpkg,
source => $latest_api_deb,
alias => 'install-api',
tag => ['openstack', 'monasca-package'],
}
#Variables for the template
$admin_password = $::monasca::params::admin_password
$admin_project_name = $::monasca::params::admin_project_name
$admin_name = $::monasca::params::admin_name
$auth_method = $::monasca::params::auth_method
$sql_host = $::monasca::params::sql_host
$sql_user = $::monasca::params::sql_user
$sql_password = $::monasca::params::sql_password
$sql_port = $::monasca::params::sql_port
$monasca_api_port = $::monasca::params::port
$api_db_user = $::monasca::params::api_db_user
$api_db_password = $::monasca::params::api_db_password
file { $api_cfg_file:
ensure => file,
content => template('monasca/api-config.yml.erb'),
mode => '0644',
owner => $api_user,
group => $::monasca::group,
require => [User[$api_user], Group[$::monasca::group], File[$::monasca::log_dir]],
} ~> Service['monasca-api']
service { 'monasca-api':
ensure => running,
require => [File[$api_cfg_file],
File[$latest_api_deb],
File[$startup_script],
Package['install-api']],
tag => 'monasca-service',
}
# Remove any old debs (puppet won't delete current resources)
tidy { '/tmp':
matches => 'monasca*.deb',
recurse => true,
}
file { $stack_script:
ensure => file,
source => $stack_script_src,
mode => '0755',
owner => 'root',
group => 'root',
}
file { $startup_script:
ensure => file,
source => $startup_script_src,
mode => '0755',
owner => 'root',
group => 'root',
} ~> Service['monasca-api']
}

View File

@ -1,40 +0,0 @@
# == Class: monasca::checks::apache
#
# Sets up the monasca apache check.
#
# === Parameters
#
# [*instances*]
# A hash of instances for the check.
# Each instance should be a hash of the check's parameters.
# Parameters for the apache check are:
# name (the instance key): The name of the instance.
# apache_status_url (required)
# dimensions
# e.g.
# instances:
# server:
# apache_status_url: 'http://your.server.name/server-status'
#
class monasca::checks::apache(
$instances = undef,
){
$conf_dir = $::monasca::agent::conf_dir
if($instances){
Concat["${conf_dir}/apache.yaml"] ~> Service['monasca-agent']
concat { "${conf_dir}/apache.yaml":
owner => 'root',
group => $::monasca::group,
mode => '0640',
warn => true,
require => File[$conf_dir],
}
concat::fragment { 'apache_header':
target => "${conf_dir}/apache.yaml",
order => '0',
content => "---\ninit_config: null\ninstances:\n",
}
create_resources('monasca::checks::instances::apache', $instances)
}
}

View File

@ -1,40 +0,0 @@
# == Class: monasca::checks::cpu
#
# Sets up the monasca cpu check.
#
# === Parameters
#
# [*instances*]
# A hash of instances for the check.
# Each instance should be a hash of the check's parameters.
# Parameters for the cpu check are:
# name (the instance key): The name of the instance.
# send_rollup_stats (default = False)
# dimensions
# e.g.
# instances:
# cpu_stats:
# dimensions:
#
class monasca::checks::cpu(
$instances = undef,
){
$conf_dir = $::monasca::agent::conf_dir
if($instances){
Concat["${conf_dir}/cpu.yaml"] ~> Service['monasca-agent']
concat { "${conf_dir}/cpu.yaml":
owner => 'root',
group => $::monasca::group,
mode => '0640',
warn => true,
require => File[$conf_dir],
}
concat::fragment { 'cpu_header':
target => "${conf_dir}/cpu.yaml",
order => '0',
content => "---\ninit_config: null\ninstances:\n",
}
create_resources('monasca::checks::instances::cpu', $instances)
}
}

View File

@ -1,44 +0,0 @@
# == Class: monasca::checks::disk
#
# Sets up the monasca disk check.
#
# === Parameters
#
# [*instances*]
# A hash of instances for the check.
# Each instance should be a hash of the check's parameters.
# Parameters for the disk check are:
# name (the instance key): The name of the instance.
# use_mount (default = True)
# send_io_stats (default = True)
# send_rollup_stats (default = False)
# device_blacklist_re
# ignore_filesystem_types
# dimensions
# e.g.
# instances:
# disk_stats:
# dimensions:
#
class monasca::checks::disk(
$instances = undef,
){
$conf_dir = $::monasca::agent::conf_dir
if($instances){
Concat["${conf_dir}/disk.yaml"] ~> Service['monasca-agent']
concat { "${conf_dir}/disk.yaml":
owner => 'root',
group => $::monasca::group,
mode => '0640',
warn => true,
require => File[$conf_dir],
}
concat::fragment { 'disk_header':
target => "${conf_dir}/disk.yaml",
order => '0',
content => "---\ninit_config: null\ninstances:\n",
}
create_resources('monasca::checks::instances::disk', $instances)
}
}

View File

@ -1,55 +0,0 @@
# == Class: monasca::checks::host_alive
#
# Sets up the monasca host_alive check.
#
# === Parameters
# [*ssh_port*]
#
# [*ssh_timeout*]
# ssh_timeout is a floating-point number of seconds
# [*ping_timeout*]
# ping_timeout is an integer number of seconds
# [*instances*]
# A hash of instances for the check.
# Each instance should be a hash of the check's parameters.
# Parameters for the host_alive check are:
# name (the instance key): The name of the instance.
# host_name (required)
# alive_test (required)
# e.g.
# instances:
# host:
# host_name: 'somehost.somedomain.net'
# alive_test: 'ssh'
# gateway:
# host_name: 'gateway.somedomain.net'
# alive_test: 'ping'
# other:
# host_name: '192.168.0.221'
# alive_test: 'ssh'
#
class monasca::checks::host_alive(
$ssh_port = '22',
$ssh_timeout = '0.5',
$ping_timeout = '1',
$instances = undef,
){
$conf_dir = $::monasca::agent::conf_dir
if($instances){
Concat["${conf_dir}/host_alive.yaml"] ~> Service['monasca-agent']
concat { "${conf_dir}/host_alive.yaml":
owner => 'root',
group => $::monasca::group,
mode => '0640',
warn => true,
require => File[$conf_dir],
}
concat::fragment { 'host_alive_header':
target => "${conf_dir}/host_alive.yaml",
order => '0',
content => template('monasca/checks/host_alive.yaml.erb'),
}
create_resources('monasca::checks::instances::host_alive', $instances)
}
}

View File

@ -1,53 +0,0 @@
# == Class: monasca::checks::http_check
#
# Sets up the monasca http_check check.
#
# === Parameters
#
# [*instances*]
# A hash of instances for the check.
# Each instance should be a hash of the check's parameters.
# Parameters for the http_check check are:
# name (the instance key): The name of the instance.
# url (required)
# timeout (default = 10)
# username
# password
# match_pattern
# use_keystone (default = False)
# collect_response_time (default = False)
# headers
# disable_ssl_validation (default = True)
# dimensions
# e.g.
# instances:
# nova-api:
# url: 'http://192.168.0.254:8774/v2.0'
# dimensions: '{service: compute_api}'
# match_pattern: '.*version=2.*'
# timeout: '10'
# use_keystone: 'True'
# collect_response_time: 'True'
#
class monasca::checks::http_check(
$instances = undef,
){
$conf_dir = $::monasca::agent::conf_dir
if($instances){
Concat["${conf_dir}/http_check.yaml"] ~> Service['monasca-agent']
concat { "${conf_dir}/http_check.yaml":
owner => 'root',
group => $::monasca::group,
mode => '0640',
warn => true,
require => File[$conf_dir],
}
concat::fragment { 'http_check_header':
target => "${conf_dir}/http_check.yaml",
order => '0',
content => "---\ninit_config: null\ninstances:\n",
}
create_resources('monasca::checks::instances::http_check', $instances)
}
}

View File

@ -1,23 +0,0 @@
# == Defined Type: monasca::checks::instances::apache
#
# configure monasca plugin yaml file for apache
#
# === Parameters:
#
# [*apache_status_url*]
# url to get apache status from
#
# [*dimensions*]
# any additional dimensions for the check
#
define monasca::checks::instances::apache (
$apache_status_url,
$dimensions = undef,
) {
$conf_dir = $::monasca::agent::conf_dir
concat::fragment { "${title}_apache_instance":
target => "${conf_dir}/apache.yaml",
content => template('monasca/checks/apache.erb'),
order => '1',
}
}

View File

@ -1,23 +0,0 @@
# == Defined Type: monasca::checks::instances::cpu
#
# configure monasca plugin yaml file for cpu interfaces
#
# === Parameters:
#
# [*send_rollup_stats*]
# flag for whether or not to send rollup statistics
#
# [*dimensions*]
# any additional dimensions for the check
#
define monasca::checks::instances::cpu (
$send_rollup_stats = undef,
$dimensions = undef,
) {
$conf_dir = $::monasca::agent::conf_dir
concat::fragment { "${title}_cpu_instance":
target => "${conf_dir}/cpu.yaml",
content => template('monasca/checks/cpu.erb'),
order => '1',
}
}

View File

@ -1,39 +0,0 @@
# == Defined Type: monasca::checks::instances::disk
#
# configure monasca plugin yaml file for disk interfaces
#
# === Parameters:
#
# [*use_mount*]
# flag for mount setting for the check
#
# [*send_io_stats*]
# flag for whether or not to send io statistics
#
# [*send_rollup_stats*]
# flag for whether or not to send rollup statistics
#
# [*device_blacklist_re*]
# regular expression for devices to ignore
#
# [*ignore_filesystem_types*]
# types of file systems to ignore
#
# [*dimensions*]
# any additional dimensions for the check
#
define monasca::checks::instances::disk (
$use_mount = undef,
$send_io_stats = undef,
$send_rollup_stats = undef,
$device_blacklist_re = undef,
$ignore_filesystem_types = undef,
$dimensions = undef,
) {
$conf_dir = $::monasca::agent::conf_dir
concat::fragment { "${title}_disk_instance":
target => "${conf_dir}/disk.yaml",
content => template('monasca/checks/disk.erb'),
order => '1',
}
}

View File

@ -1,23 +0,0 @@
# == Defined Type: monasca::checks::instances::host_alive
#
# configure monasca plugin yaml file for host_alive
#
# === Parameters:
#
# [*host_name*]
# host name to check for aliveness
#
# [*alive_test*]
# executable to run to test for aliveness
#
define monasca::checks::instances::host_alive (
$host_name,
$alive_test,
) {
$conf_dir = $::monasca::agent::conf_dir
concat::fragment { "${title}_host_alive_instance":
target => "${conf_dir}/host_alive.yaml",
content => template('monasca/checks/host_alive.erb'),
order => '1',
}
}

View File

@ -1,55 +0,0 @@
# == Defined Type: monasca::checks::instances::http_check
#
# configure monasca plugin yaml file for http_check
#
# === Parameters:
#
# [*url*]
# url to get http status for
#
# [*timeout*]
# timeout in seconds for how long to wait for an http response
#
# [*username*]
# username for keystone authentication
#
# [*password*]
# password for keystone authentication
#
# [*match_pattern*]
# expected patter in http response
#
# [*use_keystone*]
# flag for whether to pass keystone token to url
#
# [*collect_response_time*]
# flag to collect the http response time metric
#
# [*headers*]
# any headers that should be passed to url
#
# [*disable_ssl_validation*]
# flag to disable ssl validation
#
# [*dimensions*]
# any additional dimensions for the check
#
define monasca::checks::instances::http_check (
$url,
$timeout = undef,
$username = undef,
$password = undef,
$match_pattern = undef,
$use_keystone = undef,
$collect_response_time = undef,
$headers = undef,
$disable_ssl_validation = undef,
$dimensions = undef,
) {
$conf_dir = $::monasca::agent::conf_dir
concat::fragment { "${title}_http_check_instance":
target => "${conf_dir}/http_check.yaml",
content => template('monasca/checks/http_check.erb'),
order => '1',
}
}

View File

@ -1,19 +0,0 @@
# == Defined Type: monasca::checks::instances::load
#
# configure monasca plugin yaml file for load interfaces
#
# === Parameters:
#
# [*dimensions*]
# any additional dimensions for the check
#
define monasca::checks::instances::load (
$dimensions = undef,
) {
$conf_dir = $::monasca::agent::conf_dir
concat::fragment { "${title}_load_instance":
target => "${conf_dir}/load.yaml",
content => template('monasca/checks/load.erb'),
order => '1',
}
}

View File

@ -1,19 +0,0 @@
# == Defined Type: monasca::checks::instances::memory
#
# configure monasca plugin yaml file for memory interfaces
#
# === Parameters:
#
# [*dimensions*]
# any additional dimensions for the check
#
define monasca::checks::instances::memory (
$dimensions = undef,
) {
$conf_dir = $::monasca::agent::conf_dir
concat::fragment { "${title}_memory_instance":
target => "${conf_dir}/memory.yaml",
content => template('monasca/checks/memory.erb'),
order => '1',
}
}

View File

@ -1,47 +0,0 @@
# == Defined Type: monasca::checks::instances::mysql
#
# configure monasca plugin yaml file for mysql
#
# === Parameters:
#
# [*server*]
# mysql server to gather stats from
#
# [*user*]
# mysql user
#
# [*port*]
# mysql port
#
# [*pass*]
# mysql password
#
# [*sock*]
# mysql socket
#
# [*defaults_file*]
# file containing any default mysql settings
#
# [*dimensions*]
# any additional dimensions for the check
#
# [*options*]
# any additional options for the check
#
define monasca::checks::instances::mysql (
$server = undef,
$user = undef,
$port = undef,
$pass = undef,
$sock = undef,
$defaults_file = undef,
$dimensions = undef,
$options = undef,
) {
$conf_dir = $::monasca::agent::conf_dir
concat::fragment { "${title}_mysql_instance":
target => "${conf_dir}/mysql.yaml",
content => template('monasca/checks/mysql.erb'),
order => '1',
}
}

View File

@ -1,42 +0,0 @@
# == Defined Type: monasca::checks::instances::nagios_wrapper
#
# configure monasca plugin yaml file for nagios_wrapper
#
# === Parameters:
#
# nrpe is not used by the check, only by puppet to determine which host
# uses this fragment
#
# [*check_command*]
# command to execute for the nagios check
#
# [*check_name*]
# name of the nagios check
#
# [*host_name*]
# host name being checked
#
# [*check_interval*]
# how frequently (in seconds) the check should be run
#
# [*dimensions*]
# any additional dimensions for the check
#
# [*nrpe*]
# flag indicating if this is an nrpe check
#
define monasca::checks::instances::nagios_wrapper (
$check_command,
$check_name = undef,
$host_name = undef,
$check_interval = undef,
$dimensions = undef,
$nrpe = undef,
) {
$conf_dir = $::monasca::agent::conf_dir
concat::fragment { "${title}_nagios_wrapper_instance":
target => "${conf_dir}/nagios_wrapper.yaml",
content => template('monasca/checks/nagios_wrapper.erb'),
order => '1',
}
}

View File

@ -1,35 +0,0 @@
# == Defined Type: monasca::checks::instances::network
#
# configure monasca plugin yaml file for network interfaces
#
# === Parameters:
#
# [*collect_connection_state*]
# flag to indicate if connection state should be collected
#
# [*excluded_interfaces*]
# explicit list of interfaces to be ignored
#
# [*excluded_interface_re*]
# regular expression for interfaces to be ignored
#
# [*use_bits*]
# submits metrics in bits rather than bytes
#
# [*dimensions*]
# any additional dimensions for the check
#
define monasca::checks::instances::network (
$collect_connection_state = undef,
$excluded_interfaces = undef,
$excluded_interface_re = undef,
$use_bits = undef,
$dimensions = undef,
) {
$conf_dir = $::monasca::agent::conf_dir
concat::fragment { "${title}_network_instance":
target => "${conf_dir}/network.yaml",
content => template('monasca/checks/network.erb'),
order => '1',
}
}

View File

@ -1,32 +0,0 @@
# == Defined Type: monasca::checks::instances::process
#
# configure monasca plugin yaml file for process usage
#
# === Parameters:
#
# [*search_string*]
# process search string to include in the check
#
# [*exact_match*]
# flag if the search_string needs to be an exact match
#
# [*cpu_check_interval*]
# how frequently (in seconds) the check should run
#
# [*dimensions*]
# any additional dimensions for the check
#
define monasca::checks::instances::process (
$search_string,
$exact_match = undef,
$cpu_check_interval = undef,
$dimensions = undef,
) {
$conf_dir = $::monasca::agent::conf_dir
concat::fragment { "${title}_process_instance":
target => "${conf_dir}/process.yaml",
content => template('monasca/checks/process.erb'),
order => '1',
}
}

View File

@ -1,84 +0,0 @@
# == Defined Type: monasca::checks::instances::rabbitmq
#
# configure monasca plugin yaml file for rabbitmq
#
# === Parameters:
#
# [*rabbitmq_api_url*]
# (Required) url of rabbit server
#
# [*rabbitmq_user*]
# (Optional) username for rabbit server
# Defaults to undef.
#
# [*rabbitmq_pass*]
# (Optional) password for rabbit server
# Defaults to undef.
#
# [*queues*]
# (Optional) an explicit list of rabbit queues to check
# Defaults to undef.
#
# [*nodes*]
# (Optional) an explicit list of rabbit nodes to check
# Defaults to undef.
#
# [*exchanges*]
# (Optional) an explicit list of rabbit exchanges to check
# Defaults to undef.
#
# [*queues_regexes*]
# (Optional) a list of regex for rabbit queues to check
# Defaults to undef.
#
# [*nodes_regexes*]
# (Optional) a list of regex for rabbit nodes to check
# Defaults to undef.
#
# [*exchanges_regexes*]
# (Optional) a list of regex for rabbit exchanges to check
# Defaults to undef.
#
# [*max_detailed_queues*]
# (Optional) maximum number of detailed queues to check
# Defaults to undef.
#
# [*max_detailed_exchanges*]
# (Optional) maximum number of detailed exchanges to check
# Defaults to undef.
#
# [*max_detailed_nodes*]
# (Optional) maximum number of detailed nodes to check
# Defaults to undef.
#
# [*whitelist*]
# (Optional) A dictionary of the node, queue and exchange metrics to collect
# Defaults to undef.
#
# [*dimensions*]
# (Optional) any additional dimensions for the check
# Defaults to undef.
#
define monasca::checks::instances::rabbitmq (
$rabbitmq_api_url,
$rabbitmq_user = undef,
$rabbitmq_pass = undef,
$queues = undef,
$nodes = undef,
$exchanges = undef,
$queues_regexes = undef,
$nodes_regexes = undef,
$exchanges_regexes = undef,
$max_detailed_queues = undef,
$max_detailed_exchanges = undef,
$max_detailed_nodes = undef,
$whitelist = undef,
$dimensions = undef,
) {
$conf_dir = $::monasca::agent::conf_dir
concat::fragment { "${title}_rabbitmq_instance":
target => "${conf_dir}/rabbitmq.yaml",
content => template('monasca/checks/rabbitmq.erb'),
order => '1',
}
}

View File

@ -1,27 +0,0 @@
# == Defined Type: monasca::checks::instances::solidfire
#
# Configure monasca plugin yaml file for solidfire.
#
# === Parameters:
#
# [*admin_name*]
# (Required) Name of the cluster administrator.
#
# [*admin_password*]
# (Required) Password of the cluster administrator.
#
# [*cluster_mvip*]
# (Required) Management VIP of the cluster.
#
define monasca::checks::instances::solidfire (
$admin_name,
$admin_password,
$cluster_mvip,
) {
$conf_dir = $::monasca::agent::conf_dir
concat::fragment { "${title}_solidfire_instance":
target => "${conf_dir}/solidfire.yaml",
content => template('monasca/checks/solidfire.erb'),
order => '1',
}
}

View File

@ -1,31 +0,0 @@
# == Defined Type: monasca::checks::instances::zk
#
# configure monasca plugin yaml file for zookeeper
#
# === Parameters:
#
# [*host*]
# zookeeper host
#
# [*port*]
# zookeeper port
#
# [*timeout*]
# timeout in seconds to wait for zookeeper to respond
#
# [*dimensions*]
# any additional dimensions for the check
#
define monasca::checks::instances::zk (
$host = undef,
$port = undef,
$timeout = undef,
$dimensions = undef,
) {
$conf_dir = $::monasca::agent::conf_dir
concat::fragment { "${title}_zk_instance":
target => "${conf_dir}/zk.yaml",
content => template('monasca/checks/zk.erb'),
order => '1',
}
}

View File

@ -1,140 +0,0 @@
# == Class: monasca::checks::libvirt
#
# Sets up the monasca libvirt check.
# Requires lxml, libvirt-python and python-novaclient
#
# === Parameters
#
# [*admin_password*]
# (Required) Password for the monasca admin.
#
# [*admin_tenant_name*]
# (Required) Name of the monasca admin tenant/project.
#
# [*admin_user*]
# (Required) Name of the monasca admin.
#
# [*alive_only*]
# (Optional) Will suppress all per-VM metrics aside from host_alive_status
# and vm.host_alive_status, including all I/O, network, memory, ping, and
# CPU metrics. Aggregate metrics, however, would still be enabled if alive_only
# is true.
# Defaults to false.
#
# [*cache_dir*]
# (Optional) Cache directory to persist data.
# Defaults to '/dev/shm'.
#
# [*customer_metadata*]
# (Optional) A list of instance metadata to be submitted as dimensions
# with customer data.
# Defaults to not set in the config file.
#
# [*disk_collection_period*]
# (Optional) Have disk metrics be outputted less often to reduce
# metric load on the system. If this is less than the agent collection
# period, it will be ignored.
# Defaults to 0.
#
# [*host_aggregate_re*]
# (Optional) Regular expression of host aggregate names to match, which
# will add a 'host_aggregate' dimension to libvirt metrics for the operations
# project.
# Defaults to undef -- causing the flag to not be set in the config file.
#
# [*identity_uri*]
# (Required) URI of the keystone instance.
#
# [*metadata*]
# (Optional) A list of instance metadata to be submitted as dimensions
# with service data.
# Defaults to not set in the config file.
#
# [*network_use_bits*]
# (Optional) Submit network metrics in bits rather than bytes.
# Defaults to true.
#
# [*nova_refresh*]
# (Optional) Interval to force data refresh. Set to 0 to refresh every time
# the collector runs, or to None to disable regular refreshes entirely (though
# the instance cache will still be refreshed if a new instance is detected).
# Defaults to 14400 (4 hours).
#
# [*ping_check*]
# (Optional) The entire command line (sans the IP address, which is automatically
# appended) used to perform a ping check against instances, with a keyword NAMESPACE
# automatically replaced with the appropriate network namespace for the VM being
# monitored. Set to false to disable ping checks.
# Defaults to false.
#
# [*region_name*]
# (Required) Openstack keystone region for this install.
#
# [*vm_cpu_check_enable*]
# (Optional) Enables collecting of VM CPU metrics.
# Defaults to true.
#
# [*vm_disks_check_enable*]
# (Optional) Enables collecting of VM disk metrics.
# Defaults to true.
#
# [*vm_extended_disks_check_enable*]
# (Optional) nable collecting of extended disk metrics.
# Defaults to false.
#
# [*vm_network_check_enable*]
# (Optional) Enables collecting of VM network metrics.
# Defaults to true.
#
# [*vm_ping_check_enable*]
# (Optional) Enables host alive ping check.
# Defaults to false.
#
# [*vm_probation*]
# (Optional) Period of time (in seconds) in which to suspend metrics
# from a newly-created VM. This is to prevent quickly-obsolete metrics
# in an environment with a high amount of instance churn.
# Defaults to 300 seconds.
#
class monasca::checks::libvirt(
$admin_password = undef,
$admin_tenant_name = undef,
$admin_user = undef,
$alive_only = false,
$cache_dir = '/dev/shm',
$customer_metadata = [],
$disk_collection_period = 0,
$host_aggregate_re = undef,
$identity_uri = undef,
$metadata = [],
$network_use_bits = true,
$nova_refresh = '14400',
$ping_check = false,
$region_name = undef,
$vm_cpu_check_enable = true,
$vm_disks_check_enable = true,
$vm_extended_disks_check_enable = false,
$vm_network_check_enable = true,
$vm_ping_check_enable = false,
$vm_probation = '300',
){
$conf_dir = $::monasca::agent::conf_dir
File["${conf_dir}/libvirt.yaml"] ~> Service['monasca-agent']
file { "${conf_dir}/libvirt.yaml":
owner => 'root',
group => $::monasca::group,
mode => '0640',
content => template('monasca/checks/libvirt.yaml.erb'),
require => File[$conf_dir],
}
# libxslt1-dev, libxml2-dev and zlib1g-dev are needed for lxml install
ensure_packages('libxslt1-dev')
ensure_packages('libxml2-dev')
ensure_packages('zlib1g-dev')
# libvirt-dev and pkg-config are needed libvirt-python
ensure_packages('libvirt-dev')
ensure_packages('pkg-config')
}

View File

@ -1,39 +0,0 @@
# == Class: monasca::checks::load
#
# Sets up the monasca load check.
#
# === Parameters
#
# [*instances*]
# A hash of instances for the check.
# Each instance should be a hash of the check's parameters.
# Parameters for the load check are:
# name (the instance key): The name of the instance.
# dimensions
# e.g.
# instances:
# load_stats:
# dimensions:
#
class monasca::checks::load(
$instances = undef,
){
$conf_dir = $::monasca::agent::conf_dir
if($instances){
Concat["${conf_dir}/load.yaml"] ~> Service['monasca-agent']
concat { "${conf_dir}/load.yaml":
owner => 'root',
group => $::monasca::group,
mode => '0640',
warn => true,
require => File[$conf_dir],
}
concat::fragment { 'load_header':
target => "${conf_dir}/load.yaml",
order => '0',
content => "---\ninit_config: null\ninstances:\n",
}
create_resources('monasca::checks::instances::load', $instances)
}
}

View File

@ -1,39 +0,0 @@
# == Class: monasca::checks::memory
#
# Sets up the monasca memory check.
#
# === Parameters
#
# [*instances*]
# A hash of instances for the check.
# Each instance should be a hash of the check's parameters.
# Parameters for the memory check are:
# name (the instance key): The name of the instance.
# dimensions
# e.g.
# instances:
# memory_stats:
# dimensions:
#
class monasca::checks::memory(
$instances = undef,
){
$conf_dir = $::monasca::agent::conf_dir
if($instances){
Concat["${conf_dir}/memory.yaml"] ~> Service['monasca-agent']
concat { "${conf_dir}/memory.yaml":
owner => 'root',
group => $::monasca::group,
mode => '0640',
warn => true,
require => File[$conf_dir],
}
concat::fragment { 'memory_header':
target => "${conf_dir}/memory.yaml",
order => '0',
content => "---\ninit_config: null\ninstances:\n",
}
create_resources('monasca::checks::instances::memory', $instances)
}
}

View File

@ -1,49 +0,0 @@
# == Class: monasca::checks::mysql
#
# Sets up the monasca mysql check.
# Requires MySQL-python
#
# === Parameters
#
# [*instances*]
# A hash of instances for the check.
# Each instance should be a hash of the check's parameters.
# Parameters for the mysql check are:
# name (the instance key): The name of the instance.
# server
# user
# port
# pass
# sock
# defaults_file
# dimensions
# options
# e.g.
# instances:
# local:
# defaults_file: '/root/.my.cnf'
# server: 'localhost'
# user: 'root'
#
class monasca::checks::mysql(
$instances = undef,
){
$conf_dir = $::monasca::agent::conf_dir
if($instances){
Concat["${conf_dir}/mysql.yaml"] ~> Service['monasca-agent']
concat { "${conf_dir}/mysql.yaml":
owner => 'root',
group => $::monasca::group,
mode => '0640',
warn => true,
require => File[$conf_dir],
}
concat::fragment { 'mysql_header':
target => "${conf_dir}/mysql.yaml",
order => '0',
content => "---\ninit_config: null\ninstances:\n",
}
create_resources('monasca::checks::instances::mysql', $instances)
}
}

View File

@ -1,64 +0,0 @@
# == Class: monasca::checks::nagios_wrapper
#
# Sets up the monasca nagios_wrapper check.
#
# === Parameters
# [*check_path*]
# Directories where Nagios checks (scripts, programs) may live
# [*temp_file_path*]
# Where to store last-run timestamps for each check
# [*instances*]
# A hash of instances for the check.
# Each instance should be a hash of the check's parameters.
# Parameters for the nagios_wrapper check are:
# service_name (the instance key): The name of the instance.
# check_command (required)
# host_name
# check_interval
# dimensions
# e.g.
# instances:
# load:
# check_command: 'check_load -r -w 2,1.5,1 -c 10,5,4'
# disk:
# check_command: 'check_disk -w 15\% -c 5\% -A -i /srv/node'
# check_interval: '300'
# [*host_name*]
# Use with the collector to determine which checks run on which host
# [*central_mon*]
# Set to true when using the collector if a single host will be running
# all non-nrpe checks
#
class monasca::checks::nagios_wrapper(
$check_path = '/usr/lib/nagios/plugins:/usr/local/bin/nagios',
$temp_file_path = '/dev/shm/',
$instances = undef,
$host_name = undef,
$central_mon = false,
){
$conf_dir = $::monasca::agent::conf_dir
if ($central_mon) {
Monasca::Checks::Instances::Nagios_wrapper <<| nrpe == false |>>
}
else {
Monasca::Checks::Instances::Nagios_wrapper <<| host_name == $host_name and nrpe != false |>>
}
Concat["${conf_dir}/nagios_wrapper.yaml"] ~> Service['monasca-agent']
concat { "${conf_dir}/nagios_wrapper.yaml":
owner => 'root',
group => $::monasca::group,
mode => '0640',
warn => true,
require => File[$conf_dir],
}
concat::fragment { 'nagios_wrapper_header':
target => "${conf_dir}/nagios_wrapper.yaml",
order => '0',
content => template('monasca/checks/nagios_wrapper.yaml.erb'),
}
if($instances){
create_resources('monasca::checks::instances::nagios_wrapper', $instances)
}
}

View File

@ -1,44 +0,0 @@
# == Class: monasca::checks::network
#
# Sets up the monasca network check.
#
# === Parameters
#
# [*instances*]
# A hash of instances for the check.
# Each instance should be a hash of the check's parameters.
# Parameters for the network check are:
# name (the instance key): The name of the instance.
# collect_connection_state (default = False)
# excluded_interfaces
# excluded_interface_re: A regular expression for excluded interfaces
# use_bits
# dimensions
# e.g.
# instances:
# network_stats:
# collect_connection_state: 'False'
# excluded_interfaces: '[lo, lo0]'
#
class monasca::checks::network(
$instances = undef,
){
$conf_dir = $::monasca::agent::conf_dir
if($instances){
Concat["${conf_dir}/network.yaml"] ~> Service['monasca-agent']
concat { "${conf_dir}/network.yaml":
owner => 'root',
group => $::monasca::group,
mode => '0640',
warn => true,
require => File[$conf_dir],
}
concat::fragment { 'network_header':
target => "${conf_dir}/network.yaml",
order => '0',
content => "---\ninit_config: null\ninstances:\n",
}
create_resources('monasca::checks::instances::network', $instances)
}
}

View File

@ -1,103 +0,0 @@
# == Class: monasca::checks::ovs
#
# Sets up the monasca open vswitch check.
#
# === Parameters
#
# [*admin_user*]
# (Required) Name of the monasca admin.
#
# [*admin_password*]
# (Required) Password for the monasca admin.
#
# [*admin_tenant_name*]
# (Required) Name of the monasca admin tenant/project.
#
# [*identity_uri*]
# (Required) URI of the keystone instance.
#
# [*included_interface_re*]
# (Optional) Regular expression of interfaces to publish metrics for.
# Defaults to 'qg.*'.
#
# [*region_name*]
# (Required) Openstack keystone region for this install.
#
# [*cache_dir*]
# (Optional) Cache directory to persist data.
# Defaults to /dev/shm.
#
# [*metadata*]
# (Optional) A list of router metadata to be submitted as dimensions
# with service data. For example, 'tenant_name' in the list will
# add the tenant name dimension to router metrics posted to the
# infrastructure project.
# Defaults to an empty list in the config file.
#
# [*neutron_refresh*]
# (Optional) Interval to force data refresh from neutron.
# Defaults to 14400 seconds (4 hours)..
#
# [*check_router_ha*]
# (Optional) Flag to indicate if additional neutron calls should be
# made to determine if an HA router is active or standby.
# Defaults to true.
#
# [*network_use_bits*]
# (Optional) Flag to indicate bits should be reported instead of bytes.
# Defaults to true.
#
# [*ovs_cmd*]
# (Optional) Command to run to get ovs data.
# Defaults to 'sudo /usr/bin/ovs-vsctl'.
#
# [*publish_router_capacity*]
# (Optional) Flag indicating if router capacity metrics should be
# published.
# Defaults to true.
#
# [*use_absolute_metrics*]
# (Optional) Flag indicating if absolute metrics should be published
# for interfaces.
# Defaults to true.
#
# [*use_health_metrics*]
# (Optional) Flag indicating if health metrics should be published
# for interfaces.
# Defaults to true.
#
# [*use_rate_metrics*]
# (Optional) Flag indicating if rate metrics should be published
# for interfaces.
# Defaults to true.
#
class monasca::checks::ovs(
$admin_user = undef,
$admin_password = undef,
$admin_tenant_name = undef,
$cache_dir = '/dev/shm',
$check_router_ha = true,
$identity_uri = undef,
$included_interface_re = 'qg.*',
$metadata = [],
$network_use_bits = true,
$neutron_refresh = '14400',
$ovs_cmd = 'sudo /usr/bin/ovs-vsctl',
$publish_router_capacity = true,
$region_name = undef,
$use_absolute_metrics = true,
$use_health_metrics = true,
$use_rate_metrics = true,
){
$conf_dir = $::monasca::agent::conf_dir
File["${conf_dir}/ovs.yaml"] ~> Service['monasca-agent']
file { "${conf_dir}/ovs.yaml":
owner => 'root',
group => $::monasca::group,
mode => '0640',
content => template('monasca/checks/ovs.yaml.erb'),
require => File[$conf_dir],
}
}

View File

@ -1,46 +0,0 @@
# == Class: monasca::checks::process
#
# Sets up the monasca process check.
#
# === Parameters
#
# [*instances*]
# A hash of instances for the check.
# Each instance should be a hash of the check's parameters.
# Parameters for the process check are:
# name (the instance key): The name of the instance.
# search_string (required): An array of process names to search for.
# exact_match (default = True): Whether the search_string should exactly
# match the service name. (Boolean)
# cpu_check_interval (default = 0.1):
# dimensions: Additional dimensions for the instance.
# e.g.
# instances:
# nova-api:
# search_string: '[nova-api]'
# dimensions: '{component: nova-api, service: compute}'
# rabbitmq-server:
# search_string: '[rabbitmq-server]'
#
class monasca::checks::process(
$instances = undef,
){
$conf_dir = $::monasca::agent::conf_dir
if($instances){
Concat["${conf_dir}/process.yaml"] ~> Service['monasca-agent']
concat { "${conf_dir}/process.yaml":
owner => 'root',
group => $::monasca::group,
mode => '0640',
warn => true,
require => File[$conf_dir],
}
concat::fragment { 'process_header':
target => "${conf_dir}/process.yaml",
order => '0',
content => "---\ninit_config: null\ninstances:\n",
}
create_resources('monasca::checks::instances::process', $instances)
}
}

View File

@ -1,53 +0,0 @@
# == Class: monasca::checks::rabbitmq
#
# Sets up the monasca rabbitmq check.
#
# === Parameters
#
# [*instances*]
# A hash of instances for the check.
# Each instance should be a hash of the check's parameters.
# Parameters for the rabbitmq check are:
# name (the instance key): The name of the instance.
# rabbitmq_user (default = guest)
# rabbitmq_pass (default = guest)
# rabbitmq_api_url (required)
# queues
# nodes
# exchanges
# max_detailed_queues
# max_detailed_exchanges
# max_detailed_nodes
# dimensions
# e.g.
# instances:
# rabbit:
# rabbitmq_user: 'guest'
# rabbitmq_pass: 'guest'
# rabbitmq_api_url: 'http://localhost:15672/api'
# exchanges: '[nova, cinder, ceilometer, glance, keystone, neutron, heat]'
# nodes: '[rabbit@devstack]'
# queues: '[conductor]'
#
class monasca::checks::rabbitmq(
$instances = undef,
){
$conf_dir = $::monasca::agent::conf_dir
if($instances){
Concat["${conf_dir}/rabbitmq.yaml"] ~> Service['monasca-agent']
concat { "${conf_dir}/rabbitmq.yaml":
owner => 'root',
group => $::monasca::group,
mode => '0640',
warn => true,
require => File[$conf_dir],
}
concat::fragment { 'rabbitmq_header':
target => "${conf_dir}/rabbitmq.yaml",
order => '0',
content => "---\ninit_config: null\ninstances:\n",
}
create_resources('monasca::checks::instances::rabbitmq', $instances)
}
}

View File

@ -1,46 +0,0 @@
# == Class: monasca::checks::solidfire
#
# Sets up the monasca solidfire agent plugin.
#
# === Parameters
#
# [*instances*]
# (Required) A hash of instances for the solidfire plugin. Each instance
# should be a hash of the check's parameters. Parameters for the solidfire
# check are (all required):
#
# cluster_name (the instance key): The name of the cluster.
# admin_name: Name of the cluster administrator.
# admin_password: Password of the cluster administrator.
# cluster_mvip: Management VIP of the cluster.
#
# Example:
#
# instances:
# rack_d_cluster:
# admin_name: monasca_admin
# admin_password: secret_password
# cluster_mvip: 192.168.1.1
#
class monasca::checks::solidfire(
$instances,
){
$conf_dir = $::monasca::agent::conf_dir
if($instances){
Concat["${conf_dir}/solidfire.yaml"] ~> Service['monasca-agent']
concat { "${conf_dir}/solidfire.yaml":
owner => 'root',
group => $::monasca::group,
mode => '0640',
warn => true,
require => File[$conf_dir],
}
concat::fragment { 'solidfire_header':
target => "${conf_dir}/solidfire.yaml",
order => '0',
content => "---\ninit_config: null\ninstances:\n",
}
create_resources('monasca::checks::instances::solidfire', $instances)
}
}

View File

@ -1,42 +0,0 @@
# == Class: monasca::checks::vertica
#
# Sets up the monasca agent vertica plugin/check.
#
# === Parameters
#
# [*node_name*]
# (Required) Vertica node name for this node (example: 'v_mon_node0001').
#
# [*password*]
# (Required) Password for the vertica user.
#
# [*user*]
# (Required) Name of the vertica user.
#
# [*service*]
# (Optional) Name of service dimension for vertica metrics.
# Defaults to 'vertica'.
#
# [*timeout*]
# (Optional) Timeout in seconds for how long to wait for a query.
# Defaults to 3 seconds.
#
class monasca::checks::vertica(
$node_name,
$password,
$user,
$service = 'vertica',
$timeout = 3,
){
$conf_dir = $::monasca::agent::conf_dir
File["${conf_dir}/vertica.yaml"] ~> Service['monasca-agent']
file { "${conf_dir}/vertica.yaml":
owner => 'root',
group => $::monasca::group,
mode => '0640',
content => template('monasca/checks/vertica.yaml.erb'),
require => File[$conf_dir],
}
}

View File

@ -1,44 +0,0 @@
# == Class: monasca::checks::zk
#
# Sets up the monasca zookeeper check.
#
# === Parameters
#
# [*instances*]
# A hash of instances for the check.
# Each instance should be a hash of the check's parameters.
# Parameters for the zk check are:
# name (the instance key): The name of the instance.
# host (default = localhost)
# port (default = 2181)
# timeout (default = 3.0)
# dimensions
# e.g.
# instances:
# local:
# host: 'localhost'
# port: '2181'
# timeout: '3'
#
class monasca::checks::zk(
$instances = undef,
){
$conf_dir = $::monasca::agent::conf_dir
if($instances){
Concat["${conf_dir}/zk.yaml"] ~> Service['monasca-agent']
concat { "${conf_dir}/zk.yaml":
owner => 'root',
group => $::monasca::group,
mode => '0640',
warn => true,
require => File[$conf_dir],
}
concat::fragment { 'zk_header':
target => "${conf_dir}/zk.yaml",
order => '0',
content => "---\ninit_config: null\ninstances:\n",
}
create_resources('monasca::checks::instances::zk', $instances)
}
}

View File

@ -1,40 +0,0 @@
# == Class: monasca::config
#
# This class is used to manage arbitrary monasca configurations.
#
# example xxx_config
# (optional) Allow configuration of arbitrary monasca configurations.
# The value is an hash of xxx_config resources. Example:
# { 'DEFAULT/foo' => { value => 'fooValue'},
# 'DEFAULT/bar' => { value => 'barValue'}
# }
#
# In yaml format, Example:
# xxx_config:
# DEFAULT/foo:
# value: fooValue
# DEFAULT/bar:
# value: barValue
#
# === Parameters
#
# [*monasca_config*]
# (optional) Allow configuration of monasca.conf configurations.
#
# [*monasca_ini*]
# (optional) Allow configuration of monasca.ini configurations.
#
# NOTE: The configuration MUST NOT be already handled by this module
# or Puppet catalog compilation will fail with duplicate resources.
#
class monasca::config (
$monasca_config = {},
$monasca_ini = {},
) {
validate_legacy(Hash, 'validate_hash', $monasca_config)
validate_legacy(Hash, 'validate_hash', $monasca_ini)
create_resources('monasca_config', $monasca_config)
create_resources('monasca_ini', $monasca_ini)
}

View File

@ -1,59 +0,0 @@
#
# Class to configure monasca's mysql database, which is used
# for configuration of thresholds, alarms, etc.
#
class monasca::db::mysql {
include monasca::params
$sql_host = $::monasca::params::sql_host
$sql_user = $::monasca::params::sql_user
$sql_password = $::monasca::params::sql_password
$sql_port = $::monasca::params::sql_port
$monsql = '/tmp/mon.sql'
$mysql_user_class = 'mysql_user'
$monasca_remote = 'monasca@%'
$notification_local = 'notification@localhost'
$notification_remote = 'notification@%'
$thresh_local = 'thresh@localhost'
$thresh_remote = 'thresh@%'
$prereqs = [
Mysql_user[$monasca_remote],
Mysql_user[$notification_local],
Mysql_user[$notification_remote],
Mysql_user[$thresh_local],
Mysql_user[$thresh_remote],
File[$monsql]]
file { $monsql:
ensure => file,
content => template('monasca/mon.sql.erb'),
mode => '0644',
owner => 'root',
group => 'root',
}
mysql::db { 'mon':
user => 'monasca',
password => $sql_password,
host => 'localhost',
sql => $monsql,
require => $prereqs,
}
$user_resource = {
ensure => present,
password_hash => mysql::password($sql_password),
provider => 'mysql',
require => Class['mysql::server'],
}
#
# We get the monasca local user for free above in the db declaration.
#
ensure_resource($mysql_user_class, $monasca_remote, $user_resource)
ensure_resource($mysql_user_class, $notification_local, $user_resource)
ensure_resource($mysql_user_class, $notification_remote, $user_resource)
ensure_resource($mysql_user_class, $thresh_local, $user_resource)
ensure_resource($mysql_user_class, $thresh_remote, $user_resource)
}

View File

@ -1,67 +0,0 @@
# == Class: monasca::influxdb::bootstrap
#
# Class for bootstrapping influxdb for monasca
#
# === Parameters:
#
# [*influxdb_password*]
# password for the influxdb admin
#
# [*influxdb_dbuser_ro_password*]
# password for the influxdb read-only user
#
# [*influxdb_def_ret_pol_name*]
# default retention policy name
#
# [*influxdb_def_ret_pol_duration*]
# default influxdb retention policy duration
#
# [*influxdb_tmp_ret_pol_name*]
# temporary retention policy
#
# [*influxdb_tmp_ret_pol_duration*]
# temporary influxdb retention policy duration
#
# [*influxdb_retention_replication*]
# influxdb retention policy replication factor
#
class monasca::influxdb::bootstrap(
$influxdb_password = undef,
$influxdb_dbuser_ro_password = undef,
$influxdb_def_ret_pol_name = 'raw',
$influxdb_def_ret_pol_duration = '390d',
$influxdb_tmp_ret_pol_name = 'tmp',
$influxdb_tmp_ret_pol_duration = '1h',
$influxdb_retention_replication = 1,
)
{
include monasca::params
$influxdb_dbuser_password = $::monasca::params::api_db_password
$script = 'bootstrap-influxdb.sh'
$influxdb_host = 'localhost'
$influxdb_port = 8086
$influxdb_user = 'root'
file { "/tmp/${script}":
ensure => file,
content => template("monasca/${script}.erb"),
mode => '0755',
owner => 'root',
group => 'root',
}
exec { "/tmp/${script}":
require => [ Package['influxdb'], Service['influxdb'] ],
subscribe => File["/tmp/${script}"],
path => '/bin:/sbin:/usr/bin:/usr/sbin:/tmp',
cwd => '/tmp',
user => 'root',
group => 'root',
logoutput => true,
refreshonly => true,
environment => ["INFLUX_ADMIN_PASSWORD=${influxdb_password}",
"DB_USER_PASSWORD=${influxdb_dbuser_password}",
"DB_READ_ONLY_USER_PASSWORD=${influxdb_dbuser_ro_password}"],
}
}

View File

@ -1,40 +0,0 @@
# == Class: monasca
#
# This class sets up configuration common
# across all monasca services.
#
# === Parameters:
#
# [*log_dir*]
#
# [*monasca_dir*]
#
# [*group*]
#
class monasca(
$log_dir = '/var/log/monasca',
$monasca_dir = '/etc/monasca',
$group = 'monasca',
){
group { $group:
ensure => present,
}
file { $log_dir:
ensure => directory,
owner => 'root',
group => $group,
mode => '0775',
require => Group[$group],
}
file { $monasca_dir:
ensure => 'directory',
owner => 'root',
group => 'root',
mode => '0755',
require => Group[$group],
}
}

View File

@ -1,36 +0,0 @@
# == Class: monasca::kakfa::config
#
# Class for creating kafka topics needed by monasca
#
# === Parameters:
#
# [*kafka_zookeeper_connections*]
# list of zookeeper servers and ports
#
# [*kafka_replication_factor*]
# replication factor for kafka
#
# [*topic_config*]
# topic specific topic configuration, sample hiera:
#
# monasca::kafka::config::topic_config:
# metrics:
# partitions: 4
# events:
# partitions: 4
# alarm-notifications:
# partitions: 8
# alarm-state-transitions:
# partitions: 8
# retry-notifications:
# partitions: 2
# healthcheck:
# partitions: 4
#
class monasca::kafka::config (
$kafka_zookeeper_connections = undef,
$kafka_replication_factor = undef,
$topic_config = {},
) {
create_resources('monasca::kafka::topics', $topic_config)
}

View File

@ -1,46 +0,0 @@
# == Defined Type: monasca::kafka::topics
#
# Defined type to create kafka topics for monasca
#
# === Parameters:
#
# [*partitions*]
# number of kafka partitions for this topic
#
# [*kafka_zookeeper_connections*]
# list of zookeeper connections for kafka topic
#
# [*kafka_replication_factor*]
# replication factor for kakfa topic
#
# [*install_dir*]
# directory of kafka install
#
define monasca::kafka::topics (
$partitions = 2,
$kafka_zookeeper_connections = $monasca::kafka::config::kafka_zookeeper_connections,
$kafka_replication_factor = $monasca::kafka::config::kafka_replication_factor,
$install_dir = '/opt/kafka',
) {
exec { "Ensure ${name} is created":
# lint:ignore:140chars
command => "kafka-topics.sh --create --zookeeper ${kafka_zookeeper_connections} --replication-factor ${kafka_replication_factor} --partitions ${partitions} --topic ${name}",
# lint:endignore
path => "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:${install_dir}/bin",
cwd => $install_dir,
user => 'root',
group => 'root',
onlyif => "kafka-topics.sh --topic ${name} --list --zookeeper ${kafka_zookeeper_connections} | grep -q ${name}; test $? -ne 0"
}
-> exec { "Ensure ${name} is has ${partitions} partitions":
command => "kafka-topics.sh --alter --zookeeper ${kafka_zookeeper_connections} --partitions ${partitions} --topic ${name}",
path => "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:${install_dir}/bin",
cwd => $install_dir,
user => 'root',
group => 'root',
# lint:ignore:140chars
onlyif => "kafka-topics.sh --describe --zookeeper ${kafka_zookeeper_connections} --topic ${name} | grep 'PartitionCount:${partitions}'; test $? -ne 0"
# lint:endignore
}
}

View File

@ -1,259 +0,0 @@
# == Class: monasca::keystone::auth
#
# Configures Monasca user, service and endpoint in Keystone.
#
# === Parameters
# [*auth_name*]
# Username for Monasca service. Optional. Defaults to 'monasca'.
#
# [*admin_email*]
# Email for Monasca admin user. Optional. Defaults to 'monasca@localhost'.
#
# [*agent_email*]
# Email for Monasca agent user. Optional. Defaults to 'monasca@localhost'.
#
# [*user_email*]
# Email for Monasca default. Optional. Defaults to 'monasca@localhost'.
#
# [*configure_endpoint*]
# Should Monasca endpoint be configured? Optional. Defaults to 'true'.
#
# [*configure_user*]
# Should Monasca service user be configured? Optional. Defaults to 'true'.
#
# [*configure_user_role*]
# Should roles be configured on Monasca service user? Optional. Defaults to 'true'.
#
# [*service_name*]
# Name of the service. Optional. Defaults to 'monasca'.
#
# [*service_type*]
# Type of service. Optional. Defaults to 'monitoring'.
#
# [*service_description*]
# Description for monasca/monitoring service in the keystone service catalog.
# Optional. Defaults to 'Openstack Monitoring Service'.
#
# [*public_address*]
# Public address for endpoint. Optional. Defaults to '127.0.0.1'.
#
# [*admin_address*]
# Admin address for endpoint. Optional. Defaults to '127.0.0.1'.
#
# [*internal_address*]
# Internal address for endpoint. Optional. Defaults to '127.0.0.1'.
#
# [*tenant*]
# Tenant for Monasca user. Optional. Defaults to 'services'.
#
# [*public_protocol*]
# Protocol for public endpoint. Optional. Defaults to 'http'.
#
# [*admin_protocol*]
# Protocol for admin endpoint. Optional. Defaults to 'http'.
#
# [*internal_protocol*]
# Protocol for public endpoint. Optional. Defaults to 'http'.
#
# [*public_url*]
# The endpoint's public url.
# Optional. Defaults to $public_protocol://$public_address:$port
# This url should *not* contain any API version and should have
# no trailing '/'
# Setting this variable overrides other $public_* parameters.
#
# [*admin_url*]
# The endpoint's admin url.
# Optional. Defaults to $admin_protocol://$admin_address:$port
# This url should *not* contain any API version and should have
# no trailing '/'
# Setting this variable overrides other $admin_* parameters.
#
# [*internal_url*]
# The endpoint's internal url.
# Optional. Defaults to $internal_protocol://$internal_address:$port
# This url should *not* contain any API version and should have
# no trailing '/'
# Setting this variable overrides other $internal_* parameters.
#
# [*role_agent*]
# name for the monasca agent role
#
# [*role_delegate*]
# name for the monasca delegate role
#
# [*role_admin*]
# name for the monasca admin role
#
# [*role_user*]
# name for the monasca user role
#
# [*user_roles_agent*]
# list of roles to assign to the monasca agent user
#
# [*user_roles_admin*]
# list of roles to assign to the monasca admin user
#
# [*user_roles_user*]
# list of roles to assign to the monasca user user
#
class monasca::keystone::auth (
$auth_name = 'monasca',
$admin_email = 'monasca@localhost',
$agent_email = 'monasca@localhost',
$user_email = 'monasca@localhost',
$configure_user = true,
$configure_user_role = true,
$service_name = 'monasca',
$service_type = 'monitoring',
$service_description = 'Openstack Monitoring Service',
$public_address = '127.0.0.1',
$admin_address = '127.0.0.1',
$internal_address = '127.0.0.1',
$tenant = 'services',
$public_protocol = 'http',
$admin_protocol = 'http',
$internal_protocol = 'http',
$configure_endpoint = true,
$public_url = undef,
$admin_url = undef,
$internal_url = undef,
$role_agent = 'monasca-agent',
$role_delegate = 'monitoring-delegate',
$role_admin = 'monasca-admin',
$role_user = 'monasca-user',
$user_roles_agent = undef,
$user_roles_admin = undef,
$user_roles_user = undef,
) {
include monasca::params
$admin_name = $::monasca::params::admin_name
$agent_name = $::monasca::params::agent_name
$user_name = $::monasca::params::user_name
$admin_password = $::monasca::params::admin_password
$agent_password = $::monasca::params::agent_password
$user_password = $::monasca::params::user_password
$port = $::monasca::params::port
$api_version = $::monasca::params::api_version
$region = $::monasca::params::region
if $public_url {
$public_url_real = $public_url
} else {
$public_url_real = "${public_protocol}://${public_address}:${port}/${api_version}"
}
if $admin_url {
$admin_url_real = $admin_url
} else {
$admin_url_real = "${admin_protocol}://${admin_address}:${port}/${api_version}"
}
if $internal_url {
$internal_url_real = $internal_url
} else {
$internal_url_real = "${internal_protocol}://${internal_address}:${port}/${api_version}"
}
if $configure_user {
Keystone_user_role[$agent_name]
~> Service <| name == 'monasca-agent' |>
Keystone_user_role[$user_name]
~> Service <| name == 'monasca-agent' |>
keystone_user { $agent_name:
ensure => present,
password => $agent_password,
email => $agent_email,
}
keystone_user { $user_name:
ensure => present,
password => $user_password,
email => $user_email,
}
}
if $configure_user_role {
Keystone_user_role["${admin_name}@${tenant}"]
~> Service <| name == 'monasca-api' |>
Keystone_user_role["${agent_name}@${tenant}"]
~> Service <| name == 'monasca-api' |>
Keystone_user_role["${user_name}@${tenant}"]
~> Service <| name == 'monasca-api' |>
Keystone_user_role["${agent_name}@${tenant}"]
~> Service <| name == 'monasca-agent' |>
Keystone_user_role["${user_name}@${tenant}"]
~> Service <| name == 'monasca-agent' |>
if !defined(Keystone_role[$role_agent]) {
keystone_role { $role_agent:
ensure => present,
}
}
if !defined(Keystone_role[$role_delegate]) {
keystone_role { $role_delegate:
ensure => present,
}
}
if !defined(Keystone_role[$role_admin]) {
keystone_role { $role_admin:
ensure => present,
}
}
if !defined(Keystone_role[$role_user]) {
keystone_role { $role_user:
ensure => present,
}
}
if $user_roles_agent {
$real_user_roles_agent = $user_roles_agent
} else {
$real_user_roles_agent = [$role_agent, $role_delegate]
}
if $user_roles_admin {
$real_user_roles_admin = $user_roles_admin
} else {
$real_user_roles_admin = ['admin']
}
if $user_roles_user {
$real_user_roles_user = $user_roles_user
} else {
$real_user_roles_user = [$role_user]
}
keystone_user_role { "${agent_name}@${tenant}":
ensure => present,
roles => $real_user_roles_agent,
}
keystone_user_role { "${user_name}@${tenant}":
ensure => present,
roles => $real_user_roles_user,
}
}
keystone::resource::service_identity { 'monasca':
configure_user => $configure_user,
configure_user_role => $configure_user_role,
configure_endpoint => $configure_endpoint,
service_type => $service_type,
service_description => $service_description,
service_name => $service_name,
region => $region,
roles => $real_user_roles_admin,
auth_name => $admin_name,
password => $admin_password,
email => $admin_email,
tenant => $tenant,
public_url => $public_url_real,
admin_url => $admin_url_real,
internal_url => $internal_url_real,
}
if $configure_endpoint {
Keystone_endpoint["${region}/${service_name}::${service_type}"]
~> Service <| name == 'monasca-api' |>
}
}

View File

@ -1,171 +0,0 @@
# == Class: monasca::notification
#
# Class for configuring monasca notifications
#
# === Parameters:
#
# [*from_email_address*]
# (Optional) Email address to send notifications from.
# Defaults to empty string.
#
# [*hipchat_ca_certs*]
# (Optional) CA cert file for hipchat notifications
# Defaults to "/etc/ssl/certs/ca-certificates.crt"
#
# [*hipchat_insecure*]
# (Optional) Flag to indicate if hipchat notification calls should
# be insecure.
# Defaults to False
#
# [*install_python_deps*]
# (Optional) Flag for whether or not to install python dependencies.
# Defaults to true.
#
# [*kafka_brokers*]
# (Optional) List of kafka broker servers and ports.
# Defaults to 'localhost:9092'.
#
# [*notification_user*]
# (Optional) Name of the monasca notification user.
# Defaults to 'monasca-notification'.
#
# [*pagerduty_url*]
# (Optional) URL of pager duty if used as a notification method.
# Defaults to 'https://events.pagerduty.com/generic/2010-04-15/create_event.json'.
#
# [*periodic_kafka_topics*]
# (Optional) List of periodic notification kafka topics
# Defaults to '60: 60-seconds-notifications'
#
# [*periodic_zookeeper_paths*]
# (Optional) List of periodic notification zookeeper paths
# Defaults to '60: /notification/60_seconds'
#
# [*python_dep_ensure*]
# (Optional) Flag for whether or not to ensure/update python dependencies.
# Defaults to 'present'.
#
# [*slack_ca_certs*]
# (Optional) CA cert file for slack notifications.
# Defaults to "/etc/ssl/certs/ca-certificates.crt".
#
# [*slack_insecure*]
# (Optional) Flag to indicate if slack notification calls should
# be insecure.
# Defaults to False.
#
# [*smtp_password*]
# (Optional) Password for the smtp server.
# Defaults to empty string.
#
# [*smtp_port*]
# (Optional) Port on the smtp server to send mail to.
# Defaults to 25.
#
# [*smtp_server*]
# (Optional) Host of the smtp server.
# Defaults to 'localhost'.
#
# [*smtp_user*]
# (Optional) Name to use when authenticating agains the smtp server.
# Defaults to empty string.
#
# [*virtual_env*]
# directory of python virtual environment
#
# [*webhook_url*]
# (Optional) URL for webhook notifications.
# Defaults to empty string.
#
# [*zookeeper_servers*]
# (Optional) List of zookeeper servers and ports.
# Defaults to 'localhost:2181'.
#
class monasca::notification(
$from_email_address = '',
$hipchat_ca_certs = '/etc/ssl/certs/ca-certificates.crt',
$hipchat_insecure = false,
$install_python_deps = true,
$kafka_brokers = 'localhost:9092',
$notification_user = 'monasca-notification',
$pagerduty_url = 'https://events.pagerduty.com/generic/2010-04-15/create_event.json',
$periodic_kafka_topics = ['60: 60-seconds-notifications'],
$periodic_zookeeper_paths = ['60: /notification/60_seconds'],
$python_dep_ensure = 'present',
$slack_ca_certs = '/etc/ssl/certs/ca-certificates.crt',
$slack_insecure = false,
$smtp_password = '',
$smtp_port = 25,
$smtp_server = 'localhost',
$smtp_user = '',
$virtual_env = '/var/www/monasca-notification',
$webhook_url = '',
$zookeeper_servers = 'localhost:2181',
)
{
include monasca::params
# variables for the template
$sql_host = $::monasca::params::sql_host
$sql_user = $::monasca::params::sql_user
$sql_password = $::monasca::params::sql_password
$sql_port = $::monasca::params::sql_port
$cfg_file = '/etc/monasca/notification.yaml'
$startup_script = '/etc/init/monasca-notification.conf'
if $install_python_deps {
# Name virtualenv instead of python-virtualenv for compat with puppet-python
package { 'virtualenv':
ensure => $python_dep_ensure,
name => 'python-virtualenv',
before => Python::Virtualenv[$virtual_env],
}
package { 'python-dev':
ensure => $python_dep_ensure,
before => Python::Virtualenv[$virtual_env],
}
}
python::virtualenv { $virtual_env :
owner => 'root',
group => 'root',
require => [Package['virtualenv'],Package['python-dev']],
}
python::pip { 'monasca-notification' :
virtualenv => $virtual_env,
owner => 'root',
require => Python::Virtualenv[$virtual_env],
}
user { $notification_user:
ensure => present,
groups => $::monasca::group,
require => Group[$::monasca::group],
}
file { $cfg_file:
ensure => file,
content => template('monasca/notification.yaml.erb'),
mode => '0644',
owner => $notification_user,
group => $::monasca::group,
require => [User[$notification_user], Group[$::monasca::group], File[$::monasca::log_dir]],
} ~> Service['monasca-notification']
service { 'monasca-notification':
ensure => running,
require => [File[$cfg_file], File[$startup_script]],
tag => 'monasca-service',
}
file { $startup_script:
ensure => file,
content => template('monasca/notification.conf.erb'),
mode => '0755',
owner => 'root',
group => 'root',
} ~> Service['monasca-notification']
}

View File

@ -1,117 +0,0 @@
# == Class: monasca::params
#
# This class is used to specify configuration parameters that are common
# across all monasca services.
#
# === Parameters:
#
# [*api_db_user*]
# name of the monasca api user for the database
#
# [*api_db_password*]
# password for the monasca api database user
#
# [*port*]
# port to run monasca api server on
#
# [*api_version*]
# version of the monasca api to configure
#
# [*region*]
# default openstack region for this monasca api instance
#
# [*admin_name*]
# name of the monasca admin user
#
# [*agent_name*]
# name of the monasca agent user
#
# [*user_name*]
# name of the default monasca user
#
# [*auth_method*]
# keystone auth method, token or password
#
# [*admin_password*]
# password for the monasca admin user
#
# [*admin_project_name*]
# project name for the monasca admin user
#
# [*agent_password*]
# password for the monasca agent user
#
# [*user_password*]
# password for the monasca default user
#
# [*sql_host*]
# host of the mysql instance
#
# [*sql_user*]
# name of the mysql user
#
# [*sql_password*]
# password for the mysql user
#
# [*sql_port*]
# port for the mysql instance
#
# [*persister_config_defaults*]
# defaults for monasca persister settings
#
# [*pers_db_user*]
# name of the monasca persister user for the database
#
# [*pers_db_password*]
# password for the monasca persister database user
#
class monasca::params(
$api_db_user = 'mon_api',
$api_db_password = undef,
$port = '8070',
$api_version = 'v2.0',
$region = 'RegionOne',
$admin_name = 'monasca-admin',
$agent_name = 'monasca-agent',
$user_name = 'monasca-user',
$auth_method = 'token',
$admin_password = undef,
$admin_project_name = undef,
$agent_password = undef,
$user_password = undef,
$sql_host = undef,
$sql_user = undef,
$sql_password = undef,
$sql_port = 3306,
$pers_db_user = 'mon_persister',
$pers_db_password = undef,
$persister_config_defaults = {
'admin_port' => 8091,
'application_port' => 8090,
'consumer_group_id' => 1,
'database_url' => 'http://localhost:8086',
'database_type' => 'influxdb',
}
) {
include openstacklib::defaults
validate_legacy(String, 'validate_string', $admin_password)
validate_legacy(String, 'validate_string', $admin_project_name)
validate_legacy(String, 'validate_string', $user_password)
validate_legacy(String, 'validate_string', $agent_password)
validate_legacy(String, 'validate_string', $sql_password)
validate_legacy(String, 'validate_string', $sql_host)
validate_legacy(String, 'validate_string', $api_db_password)
validate_legacy(String, 'validate_string', $pers_db_password)
if $::osfamily == 'Debian' {
$agent_package = 'monasca-agent'
$agent_service = 'monasca-agent'
} elsif($::osfamily == 'RedHat') {
$agent_package = false
$agent_service = ''
} else {
fail("unsupported osfamily ${::osfamily}, currently Debian and Redhat are the only supported platforms")
}
}

View File

@ -1,84 +0,0 @@
# == Class: monasca::persister
#
# Class to setup monasca persister
#
# === Parameters:
#
# [*blobmirror*]
# location of server to pull debian package from
#
# [*consumer_id*]
# id of the kafka consumer for this persister
#
# [*batch_size*]
# batch size of metrics/alarm to persist at the same time
#
# [*num_threads*]
# number of persister threads
#
# [*batch_seconds*]
# frequency for this perisiter to write to db
#
# [*config*]
# persister specific configuration -- allows running multiple persisters.
#
# [*db_admin_password*]
# admin password for database
#
# [*mon_pers_build_ver*]
# version of the persister to install
#
# [*mon_pers_deb*]
# name of the debian package for the persister
#
# [*pers_user*]
# name of the monasca perisister user
#
# [*zookeeper_servers*]
# list of zookeeper servers
#
class monasca::persister (
$blobmirror = undef,
$consumer_id = 1,
$batch_size = 10000,
$num_threads = 1,
$batch_seconds = 30,
$config = $monasca::params::persister_config_defaults,
$db_admin_password = undef,
$mon_pers_build_ver = undef,
$mon_pers_deb = undef,
$pers_user = 'persister',
$zookeeper_servers = undef,
) {
include monasca
include monasca::params
$pers_fetch_url = "http://${blobmirror}/repos/monasca/monasca_persister"
$latest_pers_deb = "/tmp/${mon_pers_deb}"
wget::fetch { "${pers_fetch_url}/${mon_pers_build_ver}/${mon_pers_deb}":
destination => $latest_pers_deb,
timeout => 300,
before => [Package['install-persister'], File[$latest_pers_deb]],
}
file { $latest_pers_deb:
ensure => present,
}
package { 'monasca-persister':
ensure => latest,
provider => dpkg,
source => $latest_pers_deb,
alias => 'install-persister',
tag => ['openstack', 'monasca-package'],
}
user { $pers_user:
ensure => present,
groups => $::monasca::group,
require => Group[$::monasca::group],
}
create_resources('monasca::persister::config', $config)
}

View File

@ -1,89 +0,0 @@
# == Defined Type: monasca::persister::config
#
# Defined type to setup monasca persister
#
# === Parameters:
#
# [*batch_seconds*]
# frequency for this perisiter to write to db
#
# [*batch_size*]
# batch size of metrics/alarm to persist at the same time
#
# [*check_conn_while_idle*]
# flag for whether db connection should stay alive while idle
#
# [*config*]
# persister specific configuration -- allows running multiple persisters.
#
# [*consumer_id*]
# id of the kafka consumer for this persister
#
# [*database_type*]
# influxdb or vertica
#
# [*db_admin_password*]
# admin password for database
#
# [*gzip_setting*]
# true for gzipping http data
#
# [*num_threads*]
# number of persister threads to run
#
# [*pers_user*]
# name of the monasca perisister default user
#
# [*replication_factor*]
# replication factor for this persister
#
# [*retention_policy*]
# retention policy for this persister
#
# [*zookeeper_servers*]
# list of zookeeper servers
#
define monasca::persister::config (
$batch_seconds = $monasca::persister::batch_seconds,
$batch_size = $monasca::persister::batch_size,
$check_conn_while_idle = true,
$config = {},
$consumer_id = $monasca::persister::consumer_id,
$database_type = $monasca::persister::database_type,
$db_admin_password = $monasca::persister::db_admin_password,
$gzip_setting = true,
$num_threads = $monasca::persister::num_threads,
$pers_user = $monasca::persister::pers_user,
$replication_factor = 1,
$retention_policy = 'raw',
$zookeeper_servers = $monasca::persister::zookeeper_servers,
) {
include monasca::params
$persister_config = deep_merge($monasca::params::persister_config_defaults, $config)
$persister_service_name = $name
$pers_cfg_file = "/etc/monasca/${persister_service_name}.yml"
$pers_db_user = $::monasca::params::pers_db_user
$pers_db_password = $::monasca::params::pers_db_password
file { $pers_cfg_file:
ensure => file,
content => template('monasca/persister-config.yml.erb'),
mode => '0644',
owner => $pers_user,
group => $::monasca::group,
require => [User[$pers_user], Group[$::monasca::group], File[$::monasca::log_dir]],
} ~> Service[$persister_service_name]
service { $persister_service_name:
ensure => running,
require => [File[$pers_cfg_file], Package['install-persister'],
Monasca::Persister::Startup_script[$persister_service_name]],
tag => 'monasca-service',
}
monasca::persister::startup_script { $persister_service_name:
require => Package['install-persister'],
}
}

View File

@ -1,17 +0,0 @@
#
# Defined type for creating a persister startup script.
#
define monasca::persister::startup_script (
){
$persister_service_name = $name
$script = "/etc/init/${persister_service_name}.conf"
file { $script:
ensure => file,
content => template('monasca/persister-startup-script.erb'),
mode => '0755',
owner => 'root',
group => 'root',
} ~> Service[$persister_service_name]
}

View File

@ -1,110 +0,0 @@
#
# Class for configuring misc storm packages for use by monasca api server
#
# [*storm_version*]
# version of apache-storm to use
#
# [*mirror*]
# location of apache-storm mirror
#
# [*install_dir*]
# location to install storm
#
# [*storm_user*]
# name of the storm user
#
# [*storm_group*]
# name of the storm group
#
# [*log_dir*]
# directory for storm logs
#
class monasca::storm::config (
$storm_version = 'apache-storm-0.9.3',
$mirror = 'http://apache.arvixe.com/storm',
$install_dir = '/opt/storm',
$storm_user = 'storm',
$storm_group = 'storm',
$log_dir = '/var/log/storm',
) {
$cache_dir = '/var/cache/storm'
$storm_local = '/storm-local'
user { $storm_user:
ensure => present,
}
group { $storm_group:
ensure => present,
}
File {
mode => '0644',
owner => $storm_user,
group => $storm_group,
}
file { ['/usr/lib/storm', $storm_local, $install_dir]:
ensure => directory,
}
$tarfile = "${storm_version}.tar.gz"
#
# The redownload and cache_dir flags will only do the wget if it's changed
#
wget::fetch { "${mirror}/${storm_version}/${tarfile}":
destination => "/${cache_dir}/${tarfile}",
timeout => 120,
before => Exec['untar-storm-package'],
cache_dir => $cache_dir,
redownload => false,
verbose => true,
}
#
# Only untar if the directory hasn't yet been untarred yet.
#
exec { "tar -xvzf /${cache_dir}/${tarfile}":
path => '/bin:/sbin:/usr/bin:/usr/sbin',
cwd => $install_dir,
alias => 'untar-storm-package',
user => $storm_user,
group => $storm_group,
before => File[$log_dir],
creates => "${install_dir}/${storm_version}",
}
file { "${install_dir}/current":
ensure => link,
target => "${install_dir}/${storm_version}",
}
file { $log_dir:
ensure => directory,
}
monasca::storm::startup_script {
'/etc/init.d/storm-ui':
require => File[$install_dir],
storm_service => 'ui',
storm_install_dir => "${install_dir}/current",
storm_user => $storm_user,
}
monasca::storm::startup_script {
'/etc/init.d/storm-supervisor':
require => [ File[$install_dir], File[$storm_local] ],
storm_service => 'supervisor',
storm_install_dir => "${install_dir}/current",
storm_user => $storm_user,
}
monasca::storm::startup_script {
'/etc/init.d/storm-nimbus':
require => [ File[$install_dir], File[$storm_local] ],
storm_service => 'nimbus',
storm_install_dir => "${install_dir}/current",
storm_user => $storm_user,
}
}

View File

@ -1,29 +0,0 @@
# == Defined Type: monasca::storm::startup_script
#
# Defined type for creating a storm startup script.
#
# === Parameters:
#
# [*storm_service*]
# executable for the storm service
#
# [*storm_install_dir*]
# directory for the storm installation
#
# [*storm_user*]
# name of the storm user
#
define monasca::storm::startup_script (
$storm_service = undef,
$storm_install_dir = undef,
$storm_user = undef
){
$script = $name
file { $script:
ensure => file,
content => template('monasca/storm-startup-script.erb'),
mode => '0755',
owner => 'root',
group => 'root',
}
}

View File

@ -1,91 +0,0 @@
#
# Class to install monasca thresholding engine
#
# [*blobmirror*]
# location of the server to pull debians from
#
# [*kafka_brokers*]
# list of kafka brokers
#
# [*mon_thresh_build_ver*]
# version of the thresh debian package
#
# [*mon_thresh_deb*]
# name of the thresh debian package
#
# [*zookeeper_servers*]
# list of zookeeper servers
#
class monasca::thresh (
$blobmirror = undef,
$kafka_brokers = undef,
$mon_thresh_build_ver = undef,
$mon_thresh_deb = undef,
$zookeeper_servers = undef,
) {
include monasca
include monasca::params
# variables for the template
$sql_host = $::monasca::params::sql_host
$sql_user = $::monasca::params::sql_user
$sql_password = $::monasca::params::sql_password
$sql_port = $::monasca::params::sql_port
$thresh_fetch_url = "http://${blobmirror}/repos/monasca/monasca_thresh"
$latest_thresh_deb = "/tmp/${mon_thresh_deb}"
$thresh_cfg_file = '/etc/monasca/thresh-config.yml'
$startup_script = '/etc/init.d/monasca-thresh'
$startup_script_src = 'puppet:///modules/monasca/monasca-thresh'
wget::fetch { "${thresh_fetch_url}/${mon_thresh_build_ver}/${mon_thresh_deb}":
destination => $latest_thresh_deb,
timeout => 300,
before => [Package['install-thresh'], File[$latest_thresh_deb]],
} ~> Service['monasca-thresh']
file { $latest_thresh_deb:
ensure => present,
}
file { $thresh_cfg_file:
ensure => file,
content => template('monasca/thresh-config.yml.erb'),
mode => '0644',
owner => 'root',
group => $::monasca::group,
require => [Group[$::monasca::group], File[$::monasca::log_dir]],
}
package { 'monasca-thresh':
ensure => latest,
provider => dpkg,
source => $latest_thresh_deb,
alias => 'install-thresh',
tag => ['openstack', 'monasca-package'],
}
service { 'monasca-thresh':
ensure => running,
require => [File[$thresh_cfg_file],
File[$latest_thresh_deb],
File[$startup_script],
User['thresh']],
tag => 'monasca-service',
}
user { 'thresh':
ensure => present,
groups => $::monasca::group,
require => Group[$::monasca::group],
}
file { $startup_script:
ensure => file,
source => $startup_script_src,
mode => '0755',
owner => 'root',
group => 'root',
require => Package['install-thresh'],
}
}

View File

@ -1,243 +0,0 @@
#
# Class for vertica specific files
#
# === Parameters
#
# [*api_pool*]
# name of the resource pool for monasca api process
#
# [*api_pool_mem_size*]
# memory size for api resource pool
#
# [*api_pool_max_mem_size*]
# max memory size for api resource pool
#
# [*api_pool_planned_con*]
# planned concurrency for api resource pool
#
# [*api_pool_max_con*]
# max concurrency for api resource pool
#
# [*api_pool_runtime_priority*]
# runtime priority for api resource pool (LOW, MEDIUM..)
#
# [*api_pool_runtime_priority_thresh*]
# runtime priority threshold for api resource pool (# of seconds)
#
# [*api_pool_priority*]
# priority threshold api resource pool
#
# [*api_pool_exec_parallel*]
# execution parallelism for api resource pool
#
# [*db_admin_password*]
# database admin password
#
# [*db_group*]
# name of the database group
#
# [*db_user*]
# name of the database user
#
# [*metrics_schema*]
# location of the metrics schema/projections file
#
# [*monitor_password*]
# database monitor user password
#
# [*monitor_user*]
# database monitor user name
#
# [*pers_pool*]
# name of the resource pool for monasca persister process
#
# [*pers_pool_mem_size*]
# memory size for persister resource pool
#
# [*pers_pool_max_mem_size*]
# max memory size for persister resource pool
#
# [*pers_pool_planned_con*]
# planned concurrency for persister resource pool
#
# [*pers_pool_max_con*]
# max concurrency for persister resource pool
#
# [*pers_pool_runtime_priority*]
# runtime priority for persister resource pool (LOW, MEDIUM..)
#
# [*pers_pool_runtime_priority_thresh*]
# runtime priority threshold for persister resource pool (# of seconds)
#
# [*pers_pool_priority*]
# priority threshold persister resource pool
#
# [*pers_pool_exec_parallel*]
# execution parallelism for persister resource pool
#
# [*virtual_env*]
# location of python virtual environment to install to for any
# python utilities
#
class monasca::vertica::config (
$api_pool = 'api_pool',
$api_pool_mem_size = '5G',
$api_pool_max_mem_size = '15G',
$api_pool_planned_con = '2',
$api_pool_max_con = '4',
$api_pool_runtime_priority = 'MEDIUM',
$api_pool_runtime_priority_thresh = '2',
$api_pool_priority = '50',
$api_pool_exec_parallel = '2',
$db_user = 'dbadmin',
$db_group = 'verticadba',
$db_admin_password = unset,
$metrics_schema = 'puppet:///modules/monasca/vertica/mon_metrics_schema.sql',
$monitor_password = unset,
$monitor_user = 'monitor',
$pers_pool = 'persister_pool',
$pers_pool_mem_size = '5G',
$pers_pool_max_mem_size = '15G',
$pers_pool_planned_con = '2',
$pers_pool_max_con = '4',
$pers_pool_runtime_priority = 'MEDIUM',
$pers_pool_runtime_priority_thresh = '2',
$pers_pool_priority = '60',
$pers_pool_exec_parallel = '1',
$virtual_env = '/var/lib/vertica',
) {
include monasca::params
$api_db_user = $::monasca::params::api_db_user
$api_db_password = $::monasca::params::api_db_password
$pers_db_user = $::monasca::params::pers_db_user
$pers_db_password = $::monasca::params::pers_db_password
$files = 'puppet:///modules/monasca/vertica/'
$templates = 'monasca/vertica'
$install_dir = '/var/vertica'
$alarms_schema = 'mon_alarms_schema.sql'
$grants_schema = 'mon_grants.sql'
$config_schema = 'mon_schema.sql'
$users_schema = 'mon_users.sql'
$cluster_script = 'create_mon_db_cluster.sh'
$single_node_script = 'create_mon_db.sh'
$prune_script_name = 'prune_vertica.py'
$prune_script = "${virtual_env}/bin/${prune_script_name}"
$partition_drop_script_name = 'drop_vertica_partitions.py'
$partition_drop_script = "${virtual_env}/bin/${partition_drop_script_name}"
file { $install_dir:
ensure => directory,
owner => $db_user,
group => $db_group,
mode => '0755',
}
file { "${install_dir}/${alarms_schema}":
ensure => file,
source => "${files}/${alarms_schema}",
mode => '0644',
owner => $db_user,
group => $db_group,
require => File[$install_dir],
}
file { '/usr/sbin/vsql':
ensure => file,
content => template("${templates}/vsql.erb"),
mode => '0755',
owner => $db_user,
group => $db_group,
require => File[$install_dir],
}
python::virtualenv { $virtual_env :
owner => 'root',
group => 'root',
before => [File[$prune_script], File[$partition_drop_script]],
require => [Package['virtualenv'],Package['python-dev']],
}
file { $prune_script:
ensure => file,
content => template("${templates}/${prune_script_name}.erb"),
mode => '0755',
owner => $db_user,
group => $db_group,
require => File[$install_dir],
}
file { $partition_drop_script:
ensure => file,
content => template("${templates}/${partition_drop_script_name}.erb"),
mode => '0755',
owner => $db_user,
group => $db_group,
require => File[$install_dir],
}
file { '/usr/sbin/update_vertica_stats.sh':
ensure => file,
source => "${files}/update_vertica_stats.sh",
mode => '0755',
owner => $db_user,
group => $db_group,
require => File[$install_dir],
}
file { "${install_dir}/${grants_schema}":
ensure => file,
source => "${files}/${grants_schema}",
mode => '0644',
owner => $db_user,
group => $db_group,
require => File[$install_dir],
}
file { "${install_dir}/mon_metrics_schema.sql":
ensure => file,
source => $metrics_schema,
mode => '0644',
owner => $db_user,
group => $db_group,
require => File[$install_dir],
}
file { "${install_dir}/${config_schema}":
ensure => file,
content => template("${templates}/${config_schema}.erb"),
mode => '0644',
owner => $db_user,
group => $db_group,
require => File[$install_dir],
}
file { "${install_dir}/${users_schema}":
ensure => file,
content => template("${templates}/${users_schema}.erb"),
mode => '0644',
owner => $db_user,
group => $db_group,
require => File[$install_dir],
}
file { "${install_dir}/${cluster_script}":
ensure => file,
content => template("${templates}/${cluster_script}.erb"),
mode => '0755',
owner => $db_user,
group => $db_group,
require => File[$install_dir],
}
file { "${install_dir}/${single_node_script}":
ensure => file,
content => template("${templates}/${single_node_script}.erb"),
mode => '0755',
owner => $db_user,
group => $db_group,
require => File[$install_dir],
}
}

View File

@ -1,65 +0,0 @@
# == Define: virtualenv::agent_instance
#
# Sets up a virtualenv instance and handles agent specific setup in the venv.
# See the instance class for details on using virtualenv instances
#
# === Parameters
#
# [*ensure*] (required) Whether or not the package should be removed or
# installed. Should be 'present', or 'absent'. For package installs, other
# values such as a version number or 'latest' are also acceptable.
#
# [*venv_active*] (optional) Whether or not the virtualenv should be made
# active by managing symlinks into it and restarting services if the links are
# changed. Only one virtualenv can be active at a time. Defaults to false.
#
# [*basedir*] (required) Base directory for storing virtualenvs.
#
# [*symlink*] (required if venv_active is true) The path to link to the venv_dir
#
# [*venv_prefix*] Prefix to give to virtualenv directories
# This can be specified to provide more meaningful names, or to have multiple
# virtualenvs installed at the same time. Defaults to $name
#
# [*venv_requirements*] (required) Python requirements.txt to pass to pip when
# populating the virtualenv. Required if the instance is ensured to be present.
#
# [*venv_extra_args*] (optional) Extra arguments that will be passed to `pip
# install` when creating the virtualenv.
define monasca::virtualenv::agent_instance(
$basedir,
$venv_prefix = $name,
$ensure = 'present',
$symlink = undef,
$venv_requirements = undef,
$venv_active = false,
$venv_extra_args = undef,
) {
validate_legacy(String, 'validate_string', $ensure)
$valid_values = [
'^present$',
'^absent$',
]
validate_legacy(Enum['present', 'absent'], 'validate_re', $ensure,
[$valid_values, "Unknown value '${ensure}' for ensure, must be present or absent"])
File[$basedir] -> anchor { 'monasca::virtualenv::instance': }
Package<| name == 'python-virtualenv' |> -> Anchor['monasca::virtualenv::instance']
Package<| name == 'python-dev' |> -> Anchor['monasca::virtualenv::instance']
monasca::virtualenv::instance { $name:
ensure => $ensure,
basedir => $basedir,
venv_prefix => $venv_prefix,
symlink => $symlink,
venv_requirements => $venv_requirements,
venv_active => $venv_active,
venv_extra_args => $venv_extra_args,
require => Anchor['monasca::virtualenv::instance'],
}
}

View File

@ -1,109 +0,0 @@
# == Define: virtualenv::instance
#
# This class will manage the installation of the monasca agent into a Python
# virtualenv. It will also manage the config files needed by that software,
# with different policies for packages and virtualenvs. By default the config
# files will be copied from the template files internal to the module. This
# behavior can be overridden by providing a $config_files hash.
#
# Virtualenv installations are built by installing packages from a given
# requirements.txt file. For production use you will normally want to override
# the requirements.txt and provide one that contains pinned module versions,
# and possibly include information about a local pypi mirror in the
# requirements.txt.
#
# This module explicitly supports provisioning multiple virtualenv based
# installations in order to make upgrades and rollbacks easier. To take
# advantage of this, you can define additional instances of
# monasca::virtualenv::instance type with the active flag set to false
# and with different $venv_prefix options. The monasca::agent class will allow
# configuring multiple virtualenvs via hiera.
#
# If using virtualenv based installations it's *strongly* recommended that
# virtualenvs be treated as immutable once created. Behavior with changing
# requirements.txt or code may not be what you expect, since the existing
# virtualenv will be updated, not rebuilt when requirements.txt or the git
# revision changes.
#
# === Parameters
#
# [*ensure*] (required) Whether or not the package should be removed or
# installed. Should be 'present', or 'absent'. For package installs, other
# values such as a version number or 'latest' are also acceptable.
#
# [*venv_active*] (optional) Whether or not the virtualenv should be made
# active by managing symlinks into it and restarting services if the links are
# changed. Only one virtualenv can be active at a time. Defaults to false.
#
# [*basedir*] (required) Base directory for storing virtualenvs.
#
# [*symlink*] (required if venv_active is true) The path to link to the venv_dir
#
# [*venv_prefix*] Prefix to give to virtualenv directories
# This can be specified to provide more meaningful names, or to have multiple
# virtualenvs installed at the same time. Defaults to $name
#
# [*venv_requirements*] (required) Python requirements.txt to pass to pip when
# populating the virtualenv. Required if the instance is ensured to be present.
#
# [*venv_extra_args*] (optional) Extra arguments that will be passed to `pip
# install` when creating the virtualenv.
define monasca::virtualenv::instance(
$basedir,
$venv_prefix = $name,
$ensure = 'present',
$symlink = undef,
$venv_requirements = undef,
$venv_active = false,
$venv_extra_args = undef,
) {
validate_legacy(String, 'validate_string', $ensure)
$valid_values = [
'^present$',
'^absent$',
]
validate_legacy(Enum['present', 'absent'], 'validate_re', $ensure,
[$valid_values, "Unknown value '${ensure}' for ensure, must be present or absent"])
$req_dest = "${basedir}/${venv_prefix}-requirements.txt"
$venv_dir = "${basedir}/${venv_prefix}-venv"
$venv_name = "${venv_prefix}-${name}"
if $ensure == 'present' {
validate_legacy(String, 'validate_string', $venv_requirements)
file { $req_dest:
ensure => 'file',
owner => 'root',
group => 'root',
mode => '0644',
source => $venv_requirements,
before => Python::Virtualenv[$venv_name],
}
} else {
file { $req_dest:
ensure => 'absent',
}
}
python::virtualenv { $venv_name:
ensure => $ensure,
venv_dir => $venv_dir,
requirements => $req_dest,
extra_pip_args => $venv_extra_args,
owner => 'root',
group => 'root',
}
if $venv_active {
file { $symlink:
ensure => 'link',
force => true,
target => $venv_dir,
}
}
}

View File

@ -1,73 +0,0 @@
{
"name": "openstack-monasca",
"version": "8.2.0",
"author": "Time Warner Cable and OpenStack Contributors",
"summary": "Puppet module for OpenStack Monasca",
"license": "Apache-2.0",
"source": "https://opendev.org/openstack/puppet-monasca.git",
"project_page": "https://launchpad.net/puppet-monasca",
"issues_url": "https://bugs.launchpad.net/puppet-monasca",
"requirements": [
{
"name": "puppet",
"version_requirement": ">= 6.0.0 < 7.0.0"
}
],
"operatingsystem_support": [
{
"operatingsystem": "Debian",
"operatingsystemrelease": [
"9"
]
},
{
"operatingsystem": "Ubuntu",
"operatingsystemrelease": [
"20.04"
]
}
],
"description": "Installs and configures OpenStack Monasca (Monitoring as a Service).",
"dependencies": [
{
"name": "deric/storm",
"version_requirement": ">=0.0.1 <1.0.0"
},
{
"name": "deric/zookeeper",
"version_requirement": ">=0.0.1 <1.0.0"
},
{
"name": "jdowning/influxdb",
"version_requirement": ">=0.3.0 <1.0.0"
},
{
"name": "maestrodev/wget",
"version_requirement": ">=0.0.1 <2.0.0"
},
{
"name": "puppetlabs/mysql",
"version_requirement": ">=6.0.0 <12.0.0"
},
{
"name": "openstack/keystone",
"version_requirement": ">=19.2.0 <20.0.0"
},
{
"name": "openstack/openstacklib",
"version_requirement": ">=19.2.0 <20.0.0"
},
{
"name": "opentable/kafka",
"version_requirement": ">=1.0.0 <2.0.0"
},
{
"name": "puppetlabs/stdlib",
"version_requirement": ">=5.0.0 <8.0.0"
},
{
"name": "puppet/python",
"version_requirement": ">=2.1.1 <7.0.0"
}
]
}

View File

@ -1,5 +0,0 @@
---
deprecations:
- |
The parameters install_python_deps and python_dep_ensure in monasca::alarmdefs
is deprecated, has no effect and will be removed in a future release.

View File

@ -1,5 +0,0 @@
---
fixes:
- The keystone auth class has been updated to provide a default service_name
to allow a user to specify a custom auth_name that may not contain the
name of the service.

View File

@ -1,4 +0,0 @@
---
upgrade:
- |
This module now requires a puppetlabs-mysql version >= 6.0.0

View File

@ -1,10 +0,0 @@
---
prelude: >
In this release Ubuntu has moved all projects that supported it to python3
which means that there will be a lot of changes. The Puppet OpenStack project
does not test the upgrade path from python2 to python3 packages so there might
be manual steps required when moving to the python3 packages.
upgrade:
- |
Ubuntu packages are now using python3, the upgrade path is not tested by
Puppet OpenStack. Manual steps may be required when upgrading.

View File

@ -1,257 +0,0 @@
# -*- coding: utf-8 -*-
# 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.
#
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#sys.path.insert(0, os.path.abspath('.'))
# -- General configuration ------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
#needs_sphinx = '1.0'
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = [
'openstackdocstheme',
'reno.sphinxext',
]
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
# The suffix of source filenames.
source_suffix = '.rst'
# The encoding of source files.
#source_encoding = 'utf-8-sig'
# The master toctree document.
master_doc = 'index'
# General information about the project.
copyright = u'2018, Puppet OpenStack Developers'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = ''
# The full version, including alpha/beta/rc tags.
release = ''
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#language = None
# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:
#today = ''
# Else, today_fmt is used as the format for a strftime call.
#today_fmt = '%B %d, %Y'
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
exclude_patterns = []
# The reST default role (used for this markup: `text`) to use for all
# documents.
#default_role = None
# If true, '()' will be appended to :func: etc. cross-reference text.
#add_function_parentheses = True
# If true, the current module name will be prepended to all description
# unit titles (such as .. function::).
#add_module_names = True
# If true, sectionauthor and moduleauthor directives will be shown in the
# output. They are ignored by default.
#show_authors = False
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'native'
# A list of ignored prefixes for module index sorting.
#modindex_common_prefix = []
# If true, keep warnings as "system message" paragraphs in the built documents.
#keep_warnings = False
# -- Options for HTML output ----------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
html_theme = 'openstackdocs'
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
#html_theme_options = {}
# Add any paths that contain custom themes here, relative to this directory.
# html_theme_path = []
# The name for this set of Sphinx documents. If None, it defaults to
# "<project> v<release> documentation".
#html_title = None
# A shorter title for the navigation bar. Default is the same as html_title.
#html_short_title = None
# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
#html_logo = None
# The name of an image file (within the static path) to use as favicon of the
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
# pixels large.
#html_favicon = None
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['_static']
# Add any extra paths that contain custom files (such as robots.txt or
# .htaccess) here, relative to this directory. These files are copied
# directly to the root of the documentation.
#html_extra_path = []
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
# If true, SmartyPants will be used to convert quotes and dashes to
# typographically correct entities.
#html_use_smartypants = True
# Custom sidebar templates, maps document names to template names.
#html_sidebars = {}
# Additional templates that should be rendered to pages, maps page names to
# template names.
#html_additional_pages = {}
# If false, no module index is generated.
#html_domain_indices = True
# If false, no index is generated.
#html_use_index = True
# If true, the index is split into individual pages for each letter.
#html_split_index = False
# If true, links to the reST sources are added to the pages.
#html_show_sourcelink = True
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
#html_show_sphinx = True
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
#html_show_copyright = True
# If true, an OpenSearch description file will be output, and all pages will
# contain a <link> tag referring to it. The value of this option must be the
# base URL from which the finished HTML is served.
#html_use_opensearch = ''
# This is the file name suffix for HTML files (e.g. ".xhtml").
#html_file_suffix = None
# Output file base name for HTML help builder.
htmlhelp_basename = 'puppet-monascaReleaseNotesdoc'
# -- Options for LaTeX output ---------------------------------------------
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title,
# author, documentclass [howto, manual, or own class]).
latex_documents = [
('index', 'puppet-monascaReleaseNotes.tex', u'puppet-monasca Release Notes Documentation',
u'2018, Puppet OpenStack Developers', 'manual'),
]
# The name of an image file (relative to this directory) to place at the top of
# the title page.
#latex_logo = None
# For "manual" documents, if this is true, then toplevel headings are parts,
# not chapters.
#latex_use_parts = False
# If true, show page references after internal links.
#latex_show_pagerefs = False
# If true, show URL addresses after external links.
#latex_show_urls = False
# Documents to append as an appendix to all manuals.
#latex_appendices = []
# If false, no module index is generated.
#latex_domain_indices = True
# -- Options for manual page output ---------------------------------------
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
('index', 'puppet-monascareleasenotes', u'puppet-monasca Release Notes Documentation',
[u'2018, Puppet OpenStack Developers'], 1)
]
# If true, show URL addresses after external links.
#man_show_urls = False
# -- Options for Texinfo output -------------------------------------------
# Grouping the document tree into Texinfo files. List of tuples
# (source start file, target name, title, author,
# dir menu entry, description, category)
texinfo_documents = [
('index', 'puppet-monascaReleaseNotes', u'puppet-monasca Release Notes Documentation',
u'2018, Puppet OpenStack Developers', 'puppet-monascaReleaseNotes', 'One line description of project.',
'Miscellaneous'),
]
# Documents to append as an appendix to all manuals.
#texinfo_appendices = []
# If false, no module index is generated.
#texinfo_domain_indices = True
# How to display URL addresses: 'footnote', 'no', or 'inline'.
#texinfo_show_urls = 'footnote'
# If true, do not generate a @detailmenu in the "Top" node's menu.
#texinfo_no_detailmenu = False
# -- Options for Internationalization output ------------------------------
locale_dirs = ['locale/']
# openstackdocstheme options
openstackdocs_repo_name = 'openstack/puppet-monasca'
openstackdocs_bug_project = 'puppet-monasca'
openstackdocs_bug_tag = ''
openstackdocs_auto_name = False

View File

@ -1,24 +0,0 @@
=======================================
Welcome to senlin Release Notes!
=======================================
Contents
========
.. toctree::
:maxdepth: 2
unreleased
wallaby
victoria
ussuri
train
stein
rocky
Indices and tables
==================
* :ref:`genindex`
* :ref:`search`

View File

@ -1,6 +0,0 @@
===================================
Rocky Series Release Notes
===================================
.. release-notes::
:branch: stable/rocky

View File

@ -1,6 +0,0 @@
===================================
Stein Series Release Notes
===================================
.. release-notes::
:branch: stable/stein

View File

@ -1,6 +0,0 @@
==========================
Train Series Release Notes
==========================
.. release-notes::
:branch: stable/train

View File

@ -1,5 +0,0 @@
==============================
Current Series Release Notes
==============================
.. release-notes::

View File

@ -1,6 +0,0 @@
===========================
Ussuri Series Release Notes
===========================
.. release-notes::
:branch: stable/ussuri

View File

@ -1,6 +0,0 @@
=============================
Victoria Series Release Notes
=============================
.. release-notes::
:branch: stable/victoria

View File

@ -1,6 +0,0 @@
============================
Wallaby Series Release Notes
============================
.. release-notes::
:branch: stable/wallaby

View File

@ -1,13 +0,0 @@
[metadata]
name = puppet-monasca
summary = Puppet module for OpenStack Monasca
description_file =
README.md
author = OpenStack
author_email = openstack-discuss@lists.openstack.org
home_page = https://docs.openstack.org/puppet-openstack-guide/latest/
classifier =
Intended Audience :: Developers
Intended Audience :: System Administrators
License :: OSI Approved :: Apache Software License
Operating System :: POSIX :: Linux

View File

@ -1,26 +0,0 @@
require 'spec_helper_acceptance'
describe 'alarmdefs class' do
describe 'bootstrapping alarm definitions' do
it 'we expect a failure for now' do
tmpdir = default.tmpdir('alarmdefs')
pp = <<-EOS
class { 'monasca::alarmdefs':
admin_password => 'foo',
api_server_url => 'http://127.0.0.1:8070',
auth_url => 'http://127.0.0.1:5000',
project_name => 'project_foo',
}
EOS
#
# Since the bootstrap script will try to talk
# to a real keystone and monasca api server.
#
# TODO: More comprehensive stack setup
#
apply_manifest(pp, :catch_failures => false)
end
end
end

View File

@ -1,90 +0,0 @@
require 'spec_helper_acceptance'
describe 'basic monasca_config resource' do
context 'default parameters' do
it 'should work with no errors' do
pp= <<-EOS
Exec { logoutput => 'on_failure' }
File <||> -> Monasca_config <||>
File <||> -> Agent_config <||>
file { '/etc/monasca' :
ensure => directory,
}
file { '/etc/monasca/monasca.conf' :
ensure => file,
}
file { '/etc/monasca/agent/agent.conf' :
ensure => file,
}
monasca_config { 'DEFAULT/thisshouldexist' :
value => 'foo',
}
monasca_config { 'DEFAULT/thisshouldnotexist' :
value => '<SERVICE DEFAULT>',
}
monasca_config { 'DEFAULT/thisshouldexist2' :
value => '<SERVICE DEFAULT>',
ensure_absent_val => 'toto',
}
monasca_config { 'DEFAULT/thisshouldnotexist2' :
value => 'toto',
ensure_absent_val => 'toto',
}
agent_config { 'DEFAULT/thisshouldexist' :
value => 'foo',
}
agent_config { 'DEFAULT/thisshouldnotexist' :
value => '<SERVICE DEFAULT>',
}
agent_config { 'DEFAULT/thisshouldexist2' :
value => '<SERVICE DEFAULT>',
ensure_absent_val => 'toto',
}
agent_config { 'DEFAULT/thisshouldnotexist2' :
value => 'toto',
ensure_absent_val => 'toto',
}
EOS
# Run it twice and test for idempotency
apply_manifest(pp, :catch_failures => true)
apply_manifest(pp, :catch_changes => true)
end
describe file('/etc/monasca/monasca.conf') do
it { is_expected.to exist }
it { is_expected.to contain('thisshouldexist=foo') }
it { is_expected.to contain('thisshouldexist2=<SERVICE DEFAULT>') }
describe '#content' do
subject { super().content }
it { is_expected.to_not match /thisshouldnotexist/ }
end
end
describe file('/etc/monasca/agent/agent.conf') do
it { is_expected.to exist }
it { is_expected.to contain('thisshouldexist=foo') }
it { is_expected.to contain('thisshouldexist2=<SERVICE DEFAULT>') }
describe '#content' do
subject { super().content }
it { is_expected.to_not match /thisshouldnotexist/ }
end
end
end
end

View File

@ -1,72 +0,0 @@
require 'spec_helper'
describe 'monasca::agent' do
let :params do
{ :url => 'http://localhost:8070/v2.0',
:username => 'monasca-agent',
:password => 'password',
:keystone_url => 'http://localhost:5000/v3/',
:install_python_deps => false }
end
shared_examples 'monasca-agent' do
context 'with default parameters' do
it 'sets up monasca-agent files' do
is_expected.to contain_file('/etc/init.d/monasca-agent').with(
:owner => 'root',
:group => 'root',
:mode => '0755',
)
end
it 'installs monasca-agent service' do
is_expected.to contain_service('monasca-agent').with(
:ensure => 'running',
)
end
it 'configures various stuff' do
is_expected.to contain_file('/etc/monasca/agent/agent.yaml').with_content(/^\s*url: http:\/\/localhost:8070\/v2.0$/)
is_expected.to contain_file('/etc/monasca/agent/agent.yaml').with_content(/^\s*username: monasca-agent$/)
is_expected.to contain_file('/etc/monasca/agent/agent.yaml').with_content(/^\s*password: password$/)
is_expected.to contain_file('/etc/monasca/agent/agent.yaml').with_content(/^\s*keystone_url: http:\/\/localhost:5000\/v3\/$/)
is_expected.to contain_file('/etc/monasca/agent/agent.yaml').with_content(/^\s*project_name: null$/)
is_expected.to contain_file('/etc/monasca/agent/agent.yaml').with_content(/^\s*project_domain_id: null$/)
is_expected.to contain_file('/etc/monasca/agent/agent.yaml').with_content(/^\s*project_domain_name: null$/)
is_expected.to contain_file('/etc/monasca/agent/agent.yaml').with_content(/^\s*project_id: null$/)
end
end
context 'with overridden parameters' do
before do
params.merge!({
:project_name => 'test_project',
:project_domain_id => 'domain_id',
:project_domain_name => 'test_domain',
:project_id => 'project_id',
})
end
it 'configures various stuff' do
is_expected.to contain_file('/etc/monasca/agent/agent.yaml').with_content(/^\s*project_name: test_project$/)
is_expected.to contain_file('/etc/monasca/agent/agent.yaml').with_content(/^\s*project_domain_id: domain_id$/)
is_expected.to contain_file('/etc/monasca/agent/agent.yaml').with_content(/^\s*project_domain_name: test_domain$/)
is_expected.to contain_file('/etc/monasca/agent/agent.yaml').with_content(/^\s*project_id: project_id$/)
end
end
end
on_supported_os({
:supported_os => OSDefaults.get_supported_os
}).each do |os,facts|
context "on #{os}" do
let (:facts) do
facts.merge!(OSDefaults.get_facts)
end
it_behaves_like 'monasca-agent'
end
end
end

View File

@ -1,24 +0,0 @@
require 'spec_helper'
describe 'monasca::alarmdefs' do
let :pre_condition do
"include monasca
include monasca::api"
end
shared_examples 'monasca::alarmdefs' do
it { should contain_python__virtualenv('/var/www/monasca-alarmdefs') }
end
on_supported_os({
:supported_os => OSDefaults.get_supported_os
}).each do |os,facts|
context "on #{os}" do
let (:facts) do
facts.merge!(OSDefaults.get_facts())
end
it_behaves_like 'monasca::alarmdefs'
end
end
end

Some files were not shown because too many files have changed in this diff Show More