Add zaqar::messaging::mongodb
This class is used to enable and configure the mongodb messaging driver. Change-Id: I1843aa1506103f92dd3bb8057eca9d2120a5d7b1
This commit is contained in:
parent
e55ebf275c
commit
b731e48bf4
96
manifests/messaging/mongodb.pp
Normal file
96
manifests/messaging/mongodb.pp
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
# == class: zaqar::messaging::mongodb
|
||||||
|
#
|
||||||
|
# [*uri*]
|
||||||
|
# Mongodb Connection URI. Required.
|
||||||
|
#
|
||||||
|
# [*ssl_keyfile*]
|
||||||
|
# The private keyfile used to identify the local connection against
|
||||||
|
# mongod. Default $::os_service_default
|
||||||
|
# Defaults to $::os_service_default.
|
||||||
|
#
|
||||||
|
# [*ssl_certfile*]
|
||||||
|
# The certificate file used to identify the local connection against
|
||||||
|
# mongod. (string value)
|
||||||
|
# Defaults to $::os_service_default.
|
||||||
|
#
|
||||||
|
# [*ssl_cert_reqs*]
|
||||||
|
# Specifies whether a certificate is required from the other side of
|
||||||
|
# the connection, and whether it will be validated if provided. It
|
||||||
|
# must be one of the three values ``CERT_NONE``(certificates ignored),
|
||||||
|
# ``CERT_OPTIONAL``(not required, but validated if provided), or
|
||||||
|
# ``CERT_REQUIRED``(required and validated).
|
||||||
|
# Defaults to $::os_service_default.
|
||||||
|
#
|
||||||
|
# [*ssl_ca_certs*]
|
||||||
|
# The ca_certs file contains a set of concatenated "certification
|
||||||
|
# authority" certificates, which are used to validate certificates
|
||||||
|
# passed from the other end of the connection.
|
||||||
|
# Defaults to $::os_service_default.
|
||||||
|
#
|
||||||
|
# [*database*]
|
||||||
|
# Database name. (string value). Defaults to $::os_service_default.
|
||||||
|
#
|
||||||
|
# [*max_attempts*]
|
||||||
|
# Maximum number of times to retry a failed operation. Currently only
|
||||||
|
# used for retrying a message post.
|
||||||
|
# Defaults to $::os_service_default.
|
||||||
|
#
|
||||||
|
# [*max_retry_sleep*]
|
||||||
|
# Maximum sleep interval between retries (actual sleep time increases
|
||||||
|
# linearly according to number of attempts performed).
|
||||||
|
# Defaults to $::os_service_default.
|
||||||
|
#
|
||||||
|
# [*max_retry_jitter*]
|
||||||
|
# Maximum jitter interval, to be added to the sleep interval, in order
|
||||||
|
# to decrease probability that parallel requests will retry at the
|
||||||
|
# same instant. (floating point value)
|
||||||
|
# Defaults to $::os_service_default.
|
||||||
|
#
|
||||||
|
# [*max_reconnect_attempts*]
|
||||||
|
# Maximum number of times to retry an operation that failed due to a
|
||||||
|
# primary node failover. (integer value)
|
||||||
|
# Defaults to $::os_service_default.
|
||||||
|
#
|
||||||
|
# [*reconnect_sleep*]
|
||||||
|
# Base sleep interval between attempts to reconnect after a primary
|
||||||
|
# node failover. The actual sleep time increases exponentially (power
|
||||||
|
# of 2) each time the operation is retried. (floating point value)
|
||||||
|
# Defaults to $::os_service_default.
|
||||||
|
#
|
||||||
|
# [*partitions*]
|
||||||
|
# Number of databases across which to partition message data, in order
|
||||||
|
# to reduce writer lock %. DO NOT change this setting after initial
|
||||||
|
# deployment. It MUST remain static.
|
||||||
|
# Defaults to $::os_service_default.
|
||||||
|
class zaqar::messaging::mongodb(
|
||||||
|
$uri,
|
||||||
|
$ssl_keyfile = $::os_service_default,
|
||||||
|
$ssl_certfile = $::os_service_default,
|
||||||
|
$ssl_cert_reqs = $::os_service_default,
|
||||||
|
$ssl_ca_certs = $::os_service_default,
|
||||||
|
$database = $::os_service_default,
|
||||||
|
$max_attempts = $::os_service_default,
|
||||||
|
$max_retry_sleep = $::os_service_default,
|
||||||
|
$max_retry_jitter = $::os_service_default,
|
||||||
|
$max_reconnect_attempts = $::os_service_default,
|
||||||
|
$reconnect_sleep = $::os_service_default,
|
||||||
|
$partitions = $::os_service_default,
|
||||||
|
) {
|
||||||
|
|
||||||
|
zaqar_config {
|
||||||
|
'drivers/message_store': value => 'mongodb';
|
||||||
|
'drivers:message_store:mongodb/uri': value => $uri, secret => true;
|
||||||
|
'drivers:message_store:mongodb/ssl_keyfile': value => $ssl_keyfile;
|
||||||
|
'drivers:message_store:mongodb/ssl_certfile': value => $ssl_certfile;
|
||||||
|
'drivers:message_store:mongodb/ssl_cert_reqs': value => $ssl_cert_reqs;
|
||||||
|
'drivers:message_store:mongodb/ssl_ca_certs': value => $ssl_ca_certs;
|
||||||
|
'drivers:message_store:mongodb/database': value => $database;
|
||||||
|
'drivers:message_store:mongodb/max_attempts': value => $max_attempts;
|
||||||
|
'drivers:message_store:mongodb/max_retry_sleep': value => $max_retry_sleep;
|
||||||
|
'drivers:message_store:mongodb/max_retry_jitter': value => $max_retry_jitter;
|
||||||
|
'drivers:message_store:mongodb/max_reconnect_attempts': value => $max_reconnect_attempts;
|
||||||
|
'drivers:message_store:mongodb/reconnect_sleep': value => $reconnect_sleep;
|
||||||
|
'drivers:message_store:mongodb/partitions': value => $partitions;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
63
spec/classes/zaqar_messaging_mongodb_spec.rb
Normal file
63
spec/classes/zaqar_messaging_mongodb_spec.rb
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe 'zaqar::messaging::mongodb' do
|
||||||
|
|
||||||
|
let :req_params do
|
||||||
|
{
|
||||||
|
:uri => 'mongodb://127.0.0.1:27017',
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
let :facts do
|
||||||
|
{ :osfamily => 'RedHat' }
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'with only required params' do
|
||||||
|
let :params do
|
||||||
|
req_params
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should config mongo messaging driver' do
|
||||||
|
is_expected.to contain_zaqar_config('drivers/message_store').with(
|
||||||
|
:value => 'mongodb'
|
||||||
|
)
|
||||||
|
is_expected.to contain_zaqar_config('drivers:message_store:mongodb/uri').with(
|
||||||
|
:value => 'mongodb://127.0.0.1:27017'
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'with custom values' do
|
||||||
|
let :params do
|
||||||
|
req_params.merge!({
|
||||||
|
:ssl_keyfile => 'keyfile',
|
||||||
|
:ssl_certfile => 'certfile',
|
||||||
|
:ssl_cert_reqs => 'cert_reqs',
|
||||||
|
:ssl_ca_certs => 'ca_certs',
|
||||||
|
:database => 'zaqar_db',
|
||||||
|
:max_attempts => '1',
|
||||||
|
:max_retry_sleep => '2',
|
||||||
|
:max_retry_jitter => '3',
|
||||||
|
:max_reconnect_attempts => '4',
|
||||||
|
:reconnect_sleep => '5',
|
||||||
|
:partitions => '6',
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'configures custom values' do
|
||||||
|
is_expected.to contain_zaqar_config('drivers:message_store:mongodb/ssl_keyfile').with_value('keyfile')
|
||||||
|
is_expected.to contain_zaqar_config('drivers:message_store:mongodb/ssl_certfile').with_value('certfile')
|
||||||
|
is_expected.to contain_zaqar_config('drivers:message_store:mongodb/ssl_cert_reqs').with_value('cert_reqs')
|
||||||
|
is_expected.to contain_zaqar_config('drivers:message_store:mongodb/ssl_ca_certs').with_value('ca_certs')
|
||||||
|
is_expected.to contain_zaqar_config('drivers:message_store:mongodb/database').with_value('zaqar_db')
|
||||||
|
is_expected.to contain_zaqar_config('drivers:message_store:mongodb/max_attempts').with_value('1')
|
||||||
|
is_expected.to contain_zaqar_config('drivers:message_store:mongodb/max_retry_sleep').with_value('2')
|
||||||
|
is_expected.to contain_zaqar_config('drivers:message_store:mongodb/max_retry_jitter').with_value('3')
|
||||||
|
is_expected.to contain_zaqar_config('drivers:message_store:mongodb/max_reconnect_attempts').with_value('4')
|
||||||
|
is_expected.to contain_zaqar_config('drivers:message_store:mongodb/reconnect_sleep').with_value('5')
|
||||||
|
is_expected.to contain_zaqar_config('drivers:message_store:mongodb/partitions').with_value('6')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
Loading…
Reference in New Issue
Block a user