Merge "Update connection string generation"

This commit is contained in:
Jenkins 2016-01-20 18:05:18 +00:00 committed by Gerrit Code Review
commit ebf68b7ab0
34 changed files with 558 additions and 166 deletions

View File

@ -10,16 +10,15 @@
# #
# === Parameters # === Parameters
# #
# [db_host] Host where DB resides. Required. # [*db_connection*]
# Database connection for glance
# Defaults to 'mysql://glance:glance@localhost/glance'
#
# [glance_user_password] Password for glance auth user. Required. # [glance_user_password] Password for glance auth user. Required.
# [glance_db_password] Password for glance DB. Required.
# [glance_protocol] Protocol glance used to speak with registry. # [glance_protocol] Protocol glance used to speak with registry.
# Optional. Defaults to 'http' # Optional. Defaults to 'http'
# [auth_uri] URI used for auth. Optional. Defaults to "http://127.0.0.1:5000/" # [auth_uri] URI used for auth. Optional. Defaults to "http://127.0.0.1:5000/"
# [identity_uri] URI used for keyston admin endpoint. Optional. Defaults to "http://127.0.0.1:35357/" # [identity_uri] URI used for keyston admin endpoint. Optional. Defaults to "http://127.0.0.1:35357/"
# [db_type] Type of sql databse to use. Optional. Defaults to 'mysql'
# [glance_db_user] Name of glance DB user. Optional. Defaults to 'glance'
# [glance_db_dbname] Name of glance DB. Optional. Defaults to 'glance'
# [verbose] Rather to print more verbose (INFO+) output. Optional. Defaults to false. # [verbose] Rather to print more verbose (INFO+) output. Optional. Defaults to false.
# [debug] Rather to print even more verbose (DEBUG+) output. If true, would ignore verbose option. # [debug] Rather to print even more verbose (DEBUG+) output. If true, would ignore verbose option.
# Optional. Defaults to false. # Optional. Defaults to false.
@ -35,13 +34,10 @@
# #
# class { 'openstack::glance': # class { 'openstack::glance':
# glance_user_password => 'changeme', # glance_user_password => 'changeme',
# db_password => 'changeme',
# db_host => '127.0.0.1',
# } # }
class openstack::glance ( class openstack::glance (
$db_host = 'localhost', $db_connection = 'mysql://glance:glance@localhost/glance',
$glance_db_password = false,
$glance_user = 'glance', $glance_user = 'glance',
$glance_user_password = false, $glance_user_password = false,
$glance_tenant = 'services', $glance_tenant = 'services',
@ -51,9 +47,6 @@ class openstack::glance (
$identity_uri = 'http://127.0.0.1:35357/', $identity_uri = 'http://127.0.0.1:35357/',
$region = 'RegionOne', $region = 'RegionOne',
$glance_protocol = 'http', $glance_protocol = 'http',
$db_type = 'mysql',
$glance_db_user = 'glance',
$glance_db_dbname = 'glance',
$glance_backend = 'file', $glance_backend = 'file',
$glance_vcenter_host = undef, $glance_vcenter_host = undef,
$glance_vcenter_user = undef, $glance_vcenter_user = undef,
@ -97,19 +90,8 @@ class openstack::glance (
$service_workers = $::processorcount, $service_workers = $::processorcount,
) { ) {
validate_string($glance_user_password) validate_string($glance_user_password)
validate_string($glance_db_password)
validate_string($rabbit_password) validate_string($rabbit_password)
# Configure the db string
case $db_type {
'mysql': {
$sql_connection = "mysql://${glance_db_user}:${glance_db_password}@${db_host}/${glance_db_dbname}?read_timeout=60"
}
default: {
fail("Wrong db_type: ${db_type}")
}
}
# Install and configure glance-api # Install and configure glance-api
class { 'glance::api': class { 'glance::api':
verbose => $verbose, verbose => $verbose,
@ -121,7 +103,7 @@ class openstack::glance (
keystone_user => $glance_user, keystone_user => $glance_user,
keystone_password => $glance_user_password, keystone_password => $glance_user_password,
keystone_tenant => $glance_tenant, keystone_tenant => $glance_tenant,
database_connection => $sql_connection, database_connection => $db_connection,
enabled => $enabled, enabled => $enabled,
workers => $service_workers, workers => $service_workers,
registry_host => $registry_host, registry_host => $registry_host,
@ -191,7 +173,7 @@ class openstack::glance (
keystone_user => $glance_user, keystone_user => $glance_user,
keystone_password => $glance_user_password, keystone_password => $glance_user_password,
keystone_tenant => $glance_tenant, keystone_tenant => $glance_tenant,
database_connection => $sql_connection, database_connection => $db_connection,
enabled => $enabled, enabled => $enabled,
use_syslog => $use_syslog, use_syslog => $use_syslog,
use_stderr => $use_stderr, use_stderr => $use_stderr,

View File

@ -23,6 +23,10 @@
# Should be used instead of keystone_{host,port,protocol} # Should be used instead of keystone_{host,port,protocol}
# Defaults to false # Defaults to false
# #
# [*db_connection*]
# (optional) Connection string for database backend.
# Defaults to 'mysql://heat:heat@localhost/heat'
#
# === Deprecated # === Deprecated
# #
# [*keystone_host*] # [*keystone_host*]
@ -70,11 +74,7 @@ class openstack::heat (
$heat_watch_server_url = false, $heat_watch_server_url = false,
$auth_encryption_key = '%ENCRYPTION_KEY%', $auth_encryption_key = '%ENCRYPTION_KEY%',
$sql_connection = false, $db_connection = 'mysql://heat:heat@localhost/heat',
$db_user = 'heat',
$db_password = false,
$db_host = '127.0.0.1',
$db_name = 'heat',
$db_allowed_hosts = ['localhost','%'], $db_allowed_hosts = ['localhost','%'],
$idle_timeout = '3600', $idle_timeout = '3600',
$max_pool_size = '10', $max_pool_size = '10',
@ -149,7 +149,7 @@ class openstack::heat (
keystone_password => $keystone_password, keystone_password => $keystone_password,
region_name => $region, region_name => $region,
sql_connection => $sql_connection, database_connection => $db_connection,
database_idle_timeout => $idle_timeout, database_idle_timeout => $idle_timeout,
sync_db => $primary_controller, sync_db => $primary_controller,

View File

@ -9,9 +9,11 @@
# [keystone_db_password] Password for keystone DB. Required. # [keystone_db_password] Password for keystone DB. Required.
# [keystone_admin_token]. Auth token for keystone admin. Required. # [keystone_admin_token]. Auth token for keystone admin. Required.
# [public_address] Public address where keystone can be accessed. Required. # [public_address] Public address where keystone can be accessed. Required.
# [db_type] Type of DB used. Currently only supports mysql. Optional. Defaults to 'mysql' #
# [keystone_db_user] Name of keystone db user. Optional. Defaults to 'keystone' # [*db_connection*]
# [keystone_db_dbname] Name of keystone DB. Optional. Defaults to 'keystone' # Database connection string.
# Defaults to 'mysql://keystone:keystone@localhost/keystone'
#
# [verbose] Rather to print more verbose (INFO+) output. Optional. Defaults to false. # [verbose] Rather to print more verbose (INFO+) output. Optional. Defaults to false.
# [debug] Rather to print even more verbose (DEBUG+) output. If true, would ignore verbose option. # [debug] Rather to print even more verbose (DEBUG+) output. If true, would ignore verbose option.
# Optional. Defaults to false. # Optional. Defaults to false.
@ -32,25 +34,19 @@
# === Example # === Example
# #
# class { 'openstack::keystone': # class { 'openstack::keystone':
# db_host => '127.0.0.1',
# keystone_db_password => 'changeme',
# admin_password => 'changeme', # admin_password => 'changeme',
# public_address => '192.168.1.1', # public_address => '192.168.1.1',
# } # }
#
class openstack::keystone ( class openstack::keystone (
$public_url, $public_url,
$admin_url, $admin_url,
$internal_url, $internal_url,
$db_host,
$db_password,
$admin_token, $admin_token,
$public_address, $public_address,
$public_ssl = false, $public_ssl = false,
$public_hostname = false, $public_hostname = false,
$db_type = 'mysql', $db_connection = 'mysql://keystone:keystone@localhost/keystone',
$db_user = 'keystone',
$db_name = 'keystone',
$verbose = false, $verbose = false,
$debug = false, $debug = false,
$default_log_levels = undef, $default_log_levels = undef,
@ -86,13 +82,6 @@ class openstack::keystone (
$fernet_key_repository = '/etc/keystone/fernet-keys', $fernet_key_repository = '/etc/keystone/fernet-keys',
) { ) {
# Install and configure Keystone
if $db_type == 'mysql' {
$database_connection = "mysql://${$db_user}:${db_password}@${db_host}/${db_name}?read_timeout=60"
} else {
fail("db_type ${db_type} is not supported")
}
# I have to do all of this crazy munging b/c parameters are not # I have to do all of this crazy munging b/c parameters are not
# set procedurally in Pupet # set procedurally in Pupet
if $internal_address { if $internal_address {
@ -136,7 +125,7 @@ class openstack::keystone (
catalog_type => 'sql', catalog_type => 'sql',
admin_token => $admin_token, admin_token => $admin_token,
enabled => false, enabled => false,
database_connection => $database_connection, database_connection => $db_connection,
public_bind_host => $public_bind_host, public_bind_host => $public_bind_host,
admin_bind_host => $admin_bind_host, admin_bind_host => $admin_bind_host,
admin_workers => $service_workers, admin_workers => $service_workers,

View File

@ -112,18 +112,33 @@ class openstack::nova::controller (
# Configure the db string # Configure the db string
case $db_type { case $db_type {
'mysql': { 'mysql': {
$nova_db = "mysql://${nova_db_user}:${nova_db_password}@${db_host}/${nova_db_dbname}\ # TODO(aschultz): update this class to accept a connection string rather
?read_timeout=60" # than use host/user/pass/dbname/type
# LP#1526938 - python-mysqldb supports this, python-pymysql does not
if $::os_package_type == 'debian' {
$extra_params = { 'charset' => 'utf8', 'read_timeout' => 60 }
} else {
$extra_params = { 'charset' => 'utf8' }
}
$db_connection = os_database_connection({
'dialect' => $db_type,
'host' => $db_host,
'database' => $nova_db_dbname,
'username' => $nova_db_user,
'password' => $nova_db_password,
'extra' => $extra_params
})
} }
} }
if ($glance_api_servers == undef) { if ($glance_api_servers == undef) {
$real_glance_api_servers = "${public_address}:9292" $real_glance_api_servers = "${public_address}:9292"
} else { } else {
$real_glance_api_servers = $glance_api_servers $real_glance_api_servers = $glance_api_servers
} }
$sql_connection = $nova_db $sql_connection = $db_connection
$glance_connection = $real_glance_api_servers $glance_connection = $real_glance_api_servers
if ($debug) { if ($debug) {

View File

@ -7,7 +7,6 @@ describe 'openstack::glance' do
:auth_uri => 'https://192.168.10.1:5000/', :auth_uri => 'https://192.168.10.1:5000/',
:identity_uri => 'https://192.168.10.1:35357/', :identity_uri => 'https://192.168.10.1:35357/',
:glance_user_password => "glance_password", :glance_user_password => "glance_password",
:glance_db_password => "db_password",
:rabbit_password => "rabbit_password", :rabbit_password => "rabbit_password",
:rabbit_hosts => "10.0.0.1, 10.0.0.2", :rabbit_hosts => "10.0.0.1, 10.0.0.2",
} }
@ -20,6 +19,9 @@ describe 'openstack::glance' do
end end
it 'configures with the default params' do it 'configures with the default params' do
should contain_class('glance::api').with(
:database_connection => 'mysql://glance:glance@localhost/glance'
)
end end
context 'with keystone configured' do context 'with keystone configured' do

View File

@ -0,0 +1,55 @@
require 'spec_helper'
describe 'openstack::heat' do
let :params do
{
:amqp_password => "rabbit_password",
}
end
shared_examples_for 'heat configuration' do
it 'contains openstack::heat' do
should contain_class('openstack::heat')
end
it 'configures with the default params' do
should contain_class('heat').with(
:database_connection => 'mysql://heat:heat@localhost/heat'
)
end
end
context 'on Debian platforms' do
let :facts do
{ :osfamily => 'Debian',
:operatingsystem => 'Debian',
:hostname => 'hostname.example.com',
:physicalprocessorcount => 2,
:memorysize_mb => 1024,
:openstack_version => {'nova' => 'present' },
}
end
it_configures 'heat configuration'
end
context 'on RedHat platforms' do
let :facts do
{ :osfamily => 'RedHat',
:operatingsystem => 'RedHat',
:operatingsystemrelease => '7.1',
:operatingsystemmajrelease => '7',
:hostname => 'hostname.example.com',
:physicalprocessorcount => 2,
:memorysize_mb => 1024,
:openstack_version => {'nova' => 'present' },
}
end
it_configures 'heat configuration'
end
end

View File

@ -8,8 +8,6 @@ describe 'openstack::keystone' do
:internal_url => "http://10.0.0.1/5000/", :internal_url => "http://10.0.0.1/5000/",
:public_url => "http://10.0.0.1/5000/", :public_url => "http://10.0.0.1/5000/",
:public_address => "10.0.0.1", :public_address => "10.0.0.1",
:db_host => "10.0.0.1",
:db_password => "dbpass",
:admin_token => "$token", :admin_token => "$token",
} }
end end
@ -21,6 +19,9 @@ describe 'openstack::keystone' do
end end
it 'configures with the default params' do it 'configures with the default params' do
should contain_class('keystone').with(
:database_connection => 'mysql://keystone:keystone@localhost/keystone'
)
end end

View File

@ -31,7 +31,6 @@ $primary_controller = hiera('primary_controller')
$ceilometer_enabled = $ceilometer_hash['enabled'] $ceilometer_enabled = $ceilometer_hash['enabled']
$ceilometer_user_password = $ceilometer_hash['user_password'] $ceilometer_user_password = $ceilometer_hash['user_password']
$ceilometer_metering_secret = $ceilometer_hash['metering_secret'] $ceilometer_metering_secret = $ceilometer_hash['metering_secret']
$ceilometer_db_type = 'mongodb'
$swift_rados_backend = $storage_hash['objects_ceph'] $swift_rados_backend = $storage_hash['objects_ceph']
$amqp_password = $rabbit_hash['password'] $amqp_password = $rabbit_hash['password']
$amqp_user = $rabbit_hash['user'] $amqp_user = $rabbit_hash['user']
@ -51,7 +50,6 @@ $keystone_endpoint = get_ssl_property($ssl_hash, {}, 'keystone', 'internal', 'ho
$default_mongo_hash = { $default_mongo_hash = {
'enabled' => false, 'enabled' => false,
} }
$mongo_hash = hiera_hash('mongo', $default_mongo_hash) $mongo_hash = hiera_hash('mongo', $default_mongo_hash)
$db_type = 'mongodb' $db_type = 'mongodb'
@ -75,7 +73,41 @@ if $mongo_hash['enabled'] and $ceilometer_hash['enabled'] {
$mongo_replicaset = 'ceilometer' $mongo_replicaset = 'ceilometer'
} }
$db_connection = "${db_type}://${db_user}:${db_password}@${db_host}/${db_name}?readpreference=primaryPreferred" # TODO(aschultz): currently mysql is not supported for ceilometer, but this
# should be configurable some day
if ($dbtype == 'mysql') {
# LP#1526938 - python-mysqldb supports this, python-pymysql does not
if ($::os_package_type == 'debian') {
$extra_params = { 'charset' => 'utf8', 'read_timeout' => 60 }
} else {
$extra_params = { 'charset' => 'utf8'}
}
$db_connection = os_database_connection({
'dialect' => $db_type,
'host' => $db_host,
'database' => $db_name,
'username' => $db_user,
'password' => $db_password,
'extra' => $extra_params
})
} else {
$mongo_default_params = {
'readPreference' => 'primaryPreferred',
}
if $mongo_replicaset {
$replica_params = {
'replicaSet' => $mongo_replicaset
}
} else {
$replica_params = { }
}
$extra_params = merge($mongo_default_params, $replica_params)
$params = inline_template("?<%= @extra_params.map{ |k,v| \"#{k}=#{v}\" }.join('&') %>")
# NOTE(aschultz): os_database_connection does not currently support the
# mongodb syntax for mongodb://user:pass@host,host,host/dbname
$db_connection = "${db_type}://${db_user}:${db_password}@${db_host}/${db_name}${params}"
}
############################################################################### ###############################################################################

View File

@ -25,8 +25,26 @@ $primary_controller = hiera('primary_controller')
$default_log_levels = hiera_hash('default_log_levels') $default_log_levels = hiera_hash('default_log_levels')
$db_type = 'mysql' $db_type = 'mysql'
$db_host = pick($glance_hash['db_host'], $database_vip) $db_host = pick($glance_hash['db_host'], $database_vip)
$db_user = pick($glance_hash['db_user'], 'glance')
$db_password = $glance_hash['db_password']
$db_name = pick($glance_hash['db_name'], 'glance')
# LP#1526938 - python-mysqldb supports this, python-pymysql does not
if $::os_package_type == 'debian' {
$extra_params = { 'charset' => 'utf8', 'read_timeout' => 60 }
} else {
$extra_params = { 'charset' => 'utf8' }
}
$db_connection = os_database_connection({
'dialect' => $db_type,
'host' => $db_host,
'database' => $db_name,
'username' => $db_user,
'password' => $db_password,
'extra' => $extra_params
})
$api_bind_address = get_network_role_property('glance/api', 'ipaddr') $api_bind_address = get_network_role_property('glance/api', 'ipaddr')
$enabled = true $enabled = true
$max_retries = '-1' $max_retries = '-1'
@ -37,9 +55,6 @@ $rabbit_user = $rabbit_hash['user']
$rabbit_hosts = split(hiera('amqp_hosts',''), ',') $rabbit_hosts = split(hiera('amqp_hosts',''), ',')
$rabbit_virtual_host = '/' $rabbit_virtual_host = '/'
$glance_db_user = pick($glance_hash['db_user'], 'glance')
$glance_db_dbname = pick($glance_hash['db_name'], 'glance')
$glance_db_password = $glance_hash['db_password']
$glance_user = pick($glance_hash['user'],'glance') $glance_user = pick($glance_hash['user'],'glance')
$glance_user_password = $glance_hash['user_password'] $glance_user_password = $glance_hash['user_password']
$glance_tenant = pick($glance_hash['tenant'],'services') $glance_tenant = pick($glance_hash['tenant'],'services')
@ -90,11 +105,7 @@ class { 'openstack::glance':
verbose => $verbose, verbose => $verbose,
debug => $debug, debug => $debug,
default_log_levels => $default_log_levels, default_log_levels => $default_log_levels,
db_type => $db_type, db_connection => $db_connection,
db_host => $db_host,
glance_db_user => $glance_db_user,
glance_db_dbname => $glance_db_dbname,
glance_db_password => $glance_db_password,
glance_user => $glance_user, glance_user => $glance_user,
glance_user_password => $glance_user_password, glance_user_password => $glance_user_password,
glance_tenant => $glance_tenant, glance_tenant => $glance_tenant,

View File

@ -300,7 +300,23 @@ $max_overflow = hiera('max_overflow', min($::processorcount * 5 + 0,
$max_retries = hiera('max_retries', '-1') $max_retries = hiera('max_retries', '-1')
$idle_timeout = hiera('idle_timeout','3600') $idle_timeout = hiera('idle_timeout','3600')
$nova_db_password = $nova_hash['db_password'] $nova_db_password = $nova_hash['db_password']
$sql_connection = "mysql://nova:${nova_db_password}@${database_vip}/nova?read_timeout = 6 0" # LP#1526938 - python-mysqldb supports this, python-pymysql does not
if $::os_package_type == 'debian' {
$extra_params = { 'charset' => 'utf8', 'read_timeout' => 60 }
} else {
$extra_params = { 'charset' => 'utf8' }
}
# TODO(aschultz): I don't think this is used so it should probably be
# deprecated and removed.
$sql_connection = os_database_connection({
'dialect' => 'mysql',
'host' => $database_vip,
'database' => 'nova',
'username' => 'nova',
'password' => $nova_db_password,
'extra' => $extra_params
})
$mirror_type = hiera('mirror_type', 'external') $mirror_type = hiera('mirror_type', 'external')
$multi_host = hiera('multi_host', true) $multi_host = hiera('multi_host', true)

View File

@ -40,17 +40,31 @@ $syslog_log_facility_heat = hiera('syslog_log_facility_heat')
$deployment_mode = hiera('deployment_mode') $deployment_mode = hiera('deployment_mode')
$bind_address = get_network_role_property('heat/api', 'ipaddr') $bind_address = get_network_role_property('heat/api', 'ipaddr')
$memcache_address = get_network_role_property('mgmt/memcache', 'ipaddr') $memcache_address = get_network_role_property('mgmt/memcache', 'ipaddr')
$database_password = $heat_hash['db_password']
$keystone_user = pick($heat_hash['user'], 'heat') $keystone_user = pick($heat_hash['user'], 'heat')
$keystone_tenant = pick($heat_hash['tenant'], 'services') $keystone_tenant = pick($heat_hash['tenant'], 'services')
$db_host = pick($heat_hash['db_host'], hiera('database_vip'))
$database_user = pick($heat_hash['db_user'], 'heat')
$database_name = hiera('heat_db_name', 'heat')
$read_timeout = '60'
$sql_connection = "mysql://${database_user}:${database_password}@${db_host}/${database_name}?read_timeout=${read_timeout}"
$region = hiera('region', 'RegionOne') $region = hiera('region', 'RegionOne')
$external_lb = hiera('external_lb', false) $external_lb = hiera('external_lb', false)
$db_type = 'mysql'
$db_host = pick($heat_hash['db_host'], hiera('database_vip'))
$db_user = pick($heat_hash['db_user'], 'heat')
$db_password = $heat_hash['db_password']
$db_name = hiera('heat_db_name', 'heat')
# LP#1526938 - python-mysqldb supports this, python-pymysql does not
if $::os_package_type == 'debian' {
$extra_params = { 'charset' => 'utf8', 'read_timeout' => 60 }
} else {
$extra_params = { 'charset' => 'utf8' }
}
$db_connection = os_database_connection({
'dialect' => $db_type,
'host' => $db_host,
'database' => $db_name,
'username' => $db_user,
'password' => $db_password,
'extra' => $extra_params
})
####### Disable upstart startup on install ####### ####### Disable upstart startup on install #######
if $::operatingsystem == 'Ubuntu' { if $::operatingsystem == 'Ubuntu' {
tweaks::ubuntu_service_override { 'heat-api-cloudwatch': tweaks::ubuntu_service_override { 'heat-api-cloudwatch':
@ -92,9 +106,7 @@ class { 'openstack::heat' :
heat_protocol => $heat_protocol, heat_protocol => $heat_protocol,
amqp_user => $rabbit_hash['user'], amqp_user => $rabbit_hash['user'],
amqp_password => $rabbit_hash['password'], amqp_password => $rabbit_hash['password'],
sql_connection => $sql_connection, db_connection => $db_connection,
db_host => $db_host,
db_password => $database_password,
max_retries => $max_retries, max_retries => $max_retries,
max_pool_size => $max_pool_size, max_pool_size => $max_pool_size,
max_overflow => $max_overflow, max_overflow => $max_overflow,

View File

@ -29,11 +29,25 @@ $ironic_tenant = pick($ironic_hash['tenant'],'services')
$ironic_user = pick($ironic_hash['auth_name'],'ironic') $ironic_user = pick($ironic_hash['auth_name'],'ironic')
$ironic_user_password = pick($ironic_hash['user_password'],'ironic') $ironic_user_password = pick($ironic_hash['user_password'],'ironic')
$db_type = 'mysql'
$db_host = pick($nova_hash['db_host'], $database_vip) $db_host = pick($nova_hash['db_host'], $database_vip)
$db_user = pick($nova_hash['db_user'], 'nova') $db_user = pick($nova_hash['db_user'], 'nova')
$db_name = pick($nova_hash['db_name'], 'nova') $db_name = pick($nova_hash['db_name'], 'nova')
$db_password = pick($nova_hash['db_password'], 'nova') $db_password = pick($nova_hash['db_password'], 'nova')
$database_connection = "mysql://${db_name}:${db_password}@${db_host}/${db_name}?read_timeout=60" # LP#1526938 - python-mysqldb supports this, python-pymysql does not
if $::os_package_type == 'debian' {
$extra_params = { 'charset' => 'utf8', 'read_timeout' => 60 }
} else {
$extra_params = { 'charset' => 'utf8' }
}
$db_connection = os_database_connection({
'dialect' => $db_type,
'host' => $db_host,
'database' => $db_name,
'username' => $db_user,
'password' => $db_password,
'extra' => $extra_params
})
$memcached_servers = hiera('memcached_addresses') $memcached_servers = hiera('memcached_addresses')
$memcached_port = hiera('memcache_server_port', '11211') $memcached_port = hiera('memcache_server_port', '11211')
@ -54,7 +68,7 @@ tweaks::ubuntu_service_override { 'nova-compute':
class { '::nova': class { '::nova':
install_utilities => false, install_utilities => false,
ensure_package => installed, ensure_package => installed,
database_connection => $database_connection, database_connection => $db_connection,
rpc_backend => 'nova.openstack.common.rpc.impl_kombu', rpc_backend => 'nova.openstack.common.rpc.impl_kombu',
#FIXME(bogdando) we have to split amqp_hosts until all modules synced #FIXME(bogdando) we have to split amqp_hosts until all modules synced
rabbit_hosts => split($amqp_hosts, ','), rabbit_hosts => split($amqp_hosts, ','),

View File

@ -23,11 +23,25 @@ $neutron_config = hiera_hash('quantum_settings')
$primary_controller = hiera('primary_controller') $primary_controller = hiera('primary_controller')
$amqp_durable_queues = pick($ironic_hash['amqp_durable_queues'], false) $amqp_durable_queues = pick($ironic_hash['amqp_durable_queues'], false)
$db_type = 'mysql'
$db_host = pick($ironic_hash['db_host'], $database_vip) $db_host = pick($ironic_hash['db_host'], $database_vip)
$db_user = pick($ironic_hash['db_user'], 'ironic') $db_user = pick($ironic_hash['db_user'], 'ironic')
$db_name = pick($ironic_hash['db_name'], 'ironic') $db_name = pick($ironic_hash['db_name'], 'ironic')
$db_password = pick($ironic_hash['db_password'], 'ironic') $db_password = pick($ironic_hash['db_password'], 'ironic')
$database_connection = "mysql://${db_name}:${db_password}@${db_host}/${db_name}?charset=utf8&read_timeout=60" # LP#1526938 - python-mysqldb supports this, python-pymysql does not
if $::os_package_type == 'debian' {
$extra_params = { 'charset' => 'utf8', 'read_timeout' => 60 }
} else {
$extra_params = { 'charset' => 'utf8' }
}
$db_connection = os_database_connection({
'dialect' => $db_type,
'host' => $db_host,
'database' => $db_name,
'username' => $db_user,
'password' => $db_password,
'extra' => $extra_params
})
$ironic_tenant = pick($ironic_hash['tenant'],'services') $ironic_tenant = pick($ironic_hash['tenant'],'services')
$ironic_user = pick($ironic_hash['auth_name'],'ironic') $ironic_user = pick($ironic_hash['auth_name'],'ironic')
@ -48,7 +62,7 @@ class { 'ironic':
control_exchange => 'ironic', control_exchange => 'ironic',
use_syslog => $use_syslog, use_syslog => $use_syslog,
log_facility => $syslog_log_facility_ironic, log_facility => $syslog_log_facility_ironic,
database_connection => $database_connection, database_connection => $db_connection,
database_max_retries => '-1', database_max_retries => '-1',
glance_api_servers => $glance_api_servers, glance_api_servers => $glance_api_servers,
sync_db => $primary_controller, sync_db => $primary_controller,

View File

@ -34,6 +34,21 @@ $db_host = pick($keystone_hash['db_host'], $database_vip)
$db_password = $keystone_hash['db_password'] $db_password = $keystone_hash['db_password']
$db_name = pick($keystone_hash['db_name'], 'keystone') $db_name = pick($keystone_hash['db_name'], 'keystone')
$db_user = pick($keystone_hash['db_user'], 'keystone') $db_user = pick($keystone_hash['db_user'], 'keystone')
# LP#1526938 - python-mysqldb supports this, python-pymysql does not
if $::os_package_type == 'debian' {
$extra_params = { 'charset' => 'utf8', 'read_timeout' => 60 }
} else {
$extra_params = { 'charset' => 'utf8' }
}
$db_connection = os_database_connection({
'dialect' => $db_type,
'host' => $db_host,
'database' => $db_name,
'username' => $db_user,
'password' => $db_password,
'extra' => $extra_params
})
$admin_token = $keystone_hash['admin_token'] $admin_token = $keystone_hash['admin_token']
$admin_tenant = $access_hash['tenant'] $admin_tenant = $access_hash['tenant']
@ -101,48 +116,44 @@ $external_lb = hiera('external_lb', false)
############################################################################### ###############################################################################
####### KEYSTONE ########### ####### KEYSTONE ###########
class { 'openstack::keystone': class { '::openstack::keystone':
verbose => $verbose, verbose => $verbose,
debug => $debug, debug => $debug,
default_log_levels => $default_log_levels, default_log_levels => $default_log_levels,
db_type => $db_type, db_connection => $db_connection,
db_host => $db_host, admin_token => $admin_token,
db_password => $db_password, public_address => $public_address,
db_name => $db_name, public_ssl => $public_ssl_hash['services'],
db_user => $db_user, public_hostname => $public_ssl_hash['hostname'],
admin_token => $admin_token, internal_address => $service_endpoint,
public_address => $public_address, admin_address => $admin_address,
public_ssl => $public_ssl_hash['services'], public_bind_host => $local_address_for_bind,
public_hostname => $public_ssl_hash['hostname'], admin_bind_host => $local_address_for_bind,
internal_address => $service_endpoint, primary_controller => $primary_controller,
admin_address => $admin_address, enabled => $enabled,
public_bind_host => $local_address_for_bind, use_syslog => $use_syslog,
admin_bind_host => $local_address_for_bind, use_stderr => $use_stderr,
primary_controller => $primary_controller, syslog_log_facility => $syslog_log_facility,
enabled => $enabled, region => $region,
use_syslog => $use_syslog, memcache_servers => $memcached_server,
use_stderr => $use_stderr, memcache_server_port => $memcache_server_port,
syslog_log_facility => $syslog_log_facility, memcache_pool_maxsize => $memcache_pool_maxsize,
region => $region, max_retries => $max_retries,
memcache_servers => $memcached_server, max_pool_size => $max_pool_size,
memcache_server_port => $memcache_server_port, max_overflow => $max_overflow,
memcache_pool_maxsize => $memcache_pool_maxsize, rabbit_password => $rabbit_password,
max_retries => $max_retries, rabbit_userid => $rabbit_user,
max_pool_size => $max_pool_size, rabbit_hosts => $rabbit_hosts,
max_overflow => $max_overflow, rabbit_virtual_host => $rabbit_virtual_host,
rabbit_password => $rabbit_password, database_idle_timeout => $database_idle_timeout,
rabbit_userid => $rabbit_user, revoke_driver => $revoke_driver,
rabbit_hosts => $rabbit_hosts, public_url => $public_url,
rabbit_virtual_host => $rabbit_virtual_host, admin_url => $admin_url,
database_idle_timeout => $database_idle_timeout, internal_url => $internal_url,
revoke_driver => $revoke_driver, notification_driver => $ceilometer_hash['notification_driver'],
public_url => $public_url, service_workers => $service_workers,
admin_url => $admin_url, token_provider => $token_provider,
internal_url => $internal_url, fernet_src_repository => '/var/lib/astute/keystone',
notification_driver => $ceilometer_hash['notification_driver'],
service_workers => $service_workers,
token_provider => $token_provider,
fernet_src_repository => '/var/lib/astute/keystone',
} }
####### WSGI ########### ####### WSGI ###########

View File

@ -51,12 +51,26 @@ if $murano_hash['enabled'] {
$murano_user = pick($murano_hash['user'], 'murano') $murano_user = pick($murano_hash['user'], 'murano')
$tenant = pick($murano_hash['tenant'], 'services') $tenant = pick($murano_hash['tenant'], 'services')
$db_type = 'mysql'
$db_user = pick($murano_hash['db_user'], 'murano') $db_user = pick($murano_hash['db_user'], 'murano')
$db_name = pick($murano_hash['db_name'], 'murano') $db_name = pick($murano_hash['db_name'], 'murano')
$db_password = pick($murano_hash['db_password']) $db_password = pick($murano_hash['db_password'])
$db_host = pick($murano_hash['db_host'], $database_ip) $db_host = pick($murano_hash['db_host'], $database_ip)
$read_timeout = '60' # LP#1526938 - python-mysqldb supports this, python-pymysql does not
$sql_connection = "mysql://${db_user}:${db_password}@${db_host}/${db_name}?read_timeout=${read_timeout}" if $::os_package_type == 'debian' {
$extra_params = { 'charset' => 'utf8', 'read_timeout' => 60 }
} else {
$extra_params = { 'charset' => 'utf8' }
}
$db_connection = os_database_connection({
'dialect' => $db_type,
'host' => $db_host,
'database' => $db_name,
'username' => $db_user,
'password' => $db_password,
'extra' => $extra_params
})
$external_network = $use_neutron ? { $external_network = $use_neutron ? {
true => get_ext_net_name($neutron_config['predefined_networks']), true => get_ext_net_name($neutron_config['predefined_networks']),
@ -85,7 +99,7 @@ if $murano_hash['enabled'] {
use_syslog => $use_syslog, use_syslog => $use_syslog,
use_stderr => $use_stderr, use_stderr => $use_stderr,
log_facility => $syslog_log_facility_murano, log_facility => $syslog_log_facility_murano,
database_connection => $sql_connection, database_connection => $db_connection,
sync_db => $primary_controller, sync_db => $primary_controller,
auth_uri => "${public_auth_protocol}://${public_auth_address}:5000/v2.0/", auth_uri => "${public_auth_protocol}://${public_auth_address}:5000/v2.0/",
admin_user => $murano_user, admin_user => $murano_user,

View File

@ -13,17 +13,33 @@ $sahara_hash = hiera_hash('sahara_hash',{})
$rabbit_hash = hiera_hash('rabbit_hash', {}) $rabbit_hash = hiera_hash('rabbit_hash', {})
$service_endpoint = hiera('service_endpoint') $service_endpoint = hiera('service_endpoint')
$service_workers = pick($cinder_hash['workers'], min(max($::processorcount, 2), 16)) $service_workers = pick($cinder_hash['workers'], min(max($::processorcount, 2), 16))
$cinder_db_password = $cinder_hash[db_password]
$cinder_user_password = $cinder_hash[user_password] $cinder_user_password = $cinder_hash[user_password]
$keystone_user = pick($cinder_hash['user'], 'cinder') $keystone_user = pick($cinder_hash['user'], 'cinder')
$keystone_tenant = pick($cinder_hash['tenant'], 'services') $keystone_tenant = pick($cinder_hash['tenant'], 'services')
$region = hiera('region', 'RegionOne') $region = hiera('region', 'RegionOne')
$db_host = pick($cinder_hash['db_host'], hiera('database_vip'))
$cinder_db_user = pick($cinder_hash['db_user'], 'cinder')
$cinder_db_name = pick($cinder_hash['db_name'], 'cinder')
$roles = node_roles($nodes_hash, hiera('uid')) $roles = node_roles($nodes_hash, hiera('uid'))
$ssl_hash = hiera_hash('use_ssl', {}) $ssl_hash = hiera_hash('use_ssl', {})
$primary_controller = hiera('primary_controller') $primary_controller = hiera('primary_controller')
$db_type = 'mysql'
$db_host = pick($cinder_hash['db_host'], hiera('database_vip'))
$db_user = pick($cinder_hash['db_user'], 'cinder')
$db_password = $cinder_hash[db_password]
$db_name = pick($cinder_hash['db_name'], 'cinder')
# LP#1526938 - python-mysqldb supports this, python-pymysql does not
if $::os_package_type == 'debian' {
$extra_params = { 'charset' => 'utf8', 'read_timeout' => 60 }
} else {
$extra_params = { 'charset' => 'utf8' }
}
$db_connection = os_database_connection({
'dialect' => $db_type,
'host' => $db_host,
'database' => $db_name,
'username' => $db_user,
'password' => $db_password,
'extra' => $extra_params
})
$keystone_auth_protocol = get_ssl_property($ssl_hash, {}, 'keystone', 'internal', 'protocol', 'http') $keystone_auth_protocol = get_ssl_property($ssl_hash, {}, 'keystone', 'internal', 'protocol', 'http')
$keystone_auth_host = get_ssl_property($ssl_hash, {}, 'keystone', 'internal', 'hostname', [hiera('keystone_endpoint', ''), $service_endpoint, $management_vip]) $keystone_auth_host = get_ssl_property($ssl_hash, {}, 'keystone', 'internal', 'hostname', [hiera('keystone_endpoint', ''), $service_endpoint, $management_vip])
@ -68,7 +84,7 @@ $openstack_version = {
######### Cinder Controller Services ######## ######### Cinder Controller Services ########
class {'openstack::cinder': class {'openstack::cinder':
sql_connection => "mysql://${cinder_db_user}:${cinder_db_password}@${db_host}/${cinder_db_name}?charset=utf8&read_timeout=60", sql_connection => $db_connection,
queue_provider => $queue_provider, queue_provider => $queue_provider,
amqp_hosts => hiera('amqp_hosts',''), amqp_hosts => hiera('amqp_hosts',''),
amqp_user => $rabbit_hash['user'], amqp_user => $rabbit_hash['user'],

View File

@ -16,12 +16,25 @@ if $use_neutron {
$nova_hash = hiera_hash('nova', { }) $nova_hash = hiera_hash('nova', { })
$primary_controller = hiera('primary_controller', false) $primary_controller = hiera('primary_controller', false)
$neutron_db_password = $neutron_config['database']['passwd'] $db_type = 'mysql'
$neutron_db_user = try_get_value($neutron_config, 'database/user', 'neutron') $db_password = $neutron_config['database']['passwd']
$neutron_db_name = try_get_value($neutron_config, 'database/name', 'neutron') $db_user = try_get_value($neutron_config, 'database/user', 'neutron')
$neutron_db_host = try_get_value($neutron_config, 'database/host', $database_vip) $db_name = try_get_value($neutron_config, 'database/name', 'neutron')
$db_host = try_get_value($neutron_config, 'database/host', $database_vip)
$neutron_db_uri = "mysql://${neutron_db_user}:${neutron_db_password}@${neutron_db_host}/${neutron_db_name}?&read_timeout=60" # LP#1526938 - python-mysqldb supports this, python-pymysql does not
if $::os_package_type == 'debian' {
$extra_params = { 'charset' => 'utf8', 'read_timeout' => 60 }
} else {
$extra_params = { 'charset' => 'utf8' }
}
$db_connection = os_database_connection({
'dialect' => $db_type,
'host' => $db_host,
'database' => $db_name,
'username' => $db_user,
'password' => $db_password,
'extra' => $extra_params
})
$auth_password = $neutron_config['keystone']['admin_password'] $auth_password = $neutron_config['keystone']['admin_password']
$auth_user = pick($neutron_config['keystone']['admin_user'], 'neutron') $auth_user = pick($neutron_config['keystone']['admin_user'], 'neutron')
@ -148,7 +161,7 @@ if $use_neutron {
auth_uri => $identity_uri, auth_uri => $identity_uri,
database_retry_interval => '2', database_retry_interval => '2',
database_connection => $neutron_db_uri, database_connection => $db_connection,
database_max_retries => '-1', database_max_retries => '-1',
agent_down_time => '30', agent_down_time => '30',

View File

@ -40,12 +40,28 @@ $syslog_log_facility_murano = hiera('syslog_log_facility_murano', 'LOG_LOCAL
$syslog_log_facility_sahara = hiera('syslog_log_facility_sahara','LOG_LOCAL0') $syslog_log_facility_sahara = hiera('syslog_log_facility_sahara','LOG_LOCAL0')
$syslog_log_facility_ceph = hiera('syslog_log_facility_ceph','LOG_LOCAL0') $syslog_log_facility_ceph = hiera('syslog_log_facility_ceph','LOG_LOCAL0')
$cinder_db_password = $cinder_hash[db_password]
$keystone_user = pick($cinder_hash['user'], 'cinder') $keystone_user = pick($cinder_hash['user'], 'cinder')
$keystone_tenant = pick($cinder_hash['tenant'], 'services') $keystone_tenant = pick($cinder_hash['tenant'], 'services')
$db_host = pick($cinder_hash['db_host'], hiera('database_vip'))
$cinder_db_user = pick($cinder_hash['db_user'], 'cinder') $db_type = 'mysql'
$cinder_db_name = pick($cinder_hash['db_name'], 'cinder') $db_host = pick($cinder_hash['db_host'], hiera('database_vip'))
$db_user = pick($cinder_hash['db_user'], 'cinder')
$db_password = $cinder_hash[db_password]
$db_name = pick($cinder_hash['db_name'], 'cinder')
# LP#1526938 - python-mysqldb supports this, python-pymysql does not
if $::os_package_type == 'debian' {
$extra_params = { 'charset' => 'utf8', 'read_timeout' => 60 }
} else {
$extra_params = { 'charset' => 'utf8' }
}
$db_connection = os_database_connection({
'dialect' => $db_type,
'host' => $db_host,
'database' => $db_name,
'username' => $db_user,
'password' => $db_password,
'extra' => $extra_params
})
$ssl_hash = hiera_hash('use_ssl', {}) $ssl_hash = hiera_hash('use_ssl', {})
$service_endpoint = hiera('service_endpoint') $service_endpoint = hiera('service_endpoint')
@ -272,7 +288,7 @@ if member($roles, 'controller') or member($roles, 'primary-controller') {
# after the deployment is done. # after the deployment is done.
class { '::openstack::cinder': class { '::openstack::cinder':
enable_volumes => false, enable_volumes => false,
sql_connection => "mysql://${cinder_db_user}:${cinder_db_password}@${db_host}/${cinder_db_name}?charset=utf8&read_timeout=60", sql_connection => $db_connection,
glance_api_servers => $glance_api_servers, glance_api_servers => $glance_api_servers,
bind_host => $bind_host, bind_host => $bind_host,
queue_provider => $queue_provider, queue_provider => $queue_provider,

View File

@ -29,11 +29,25 @@ $ironic_user = pick($ironic_hash['auth_name'],'ironic')
$ironic_user_password = pick($ironic_hash['user_password'],'ironic') $ironic_user_password = pick($ironic_hash['user_password'],'ironic')
$ironic_swift_tempurl_key = pick($ironic_hash['swift_tempurl_key'],'ironic') $ironic_swift_tempurl_key = pick($ironic_hash['swift_tempurl_key'],'ironic')
$db_type = 'mysql'
$db_host = pick($ironic_hash['db_host'], $database_vip) $db_host = pick($ironic_hash['db_host'], $database_vip)
$db_user = pick($ironic_hash['db_user'], 'ironic') $db_user = pick($ironic_hash['db_user'], 'ironic')
$db_name = pick($ironic_hash['db_name'], 'ironic') $db_name = pick($ironic_hash['db_name'], 'ironic')
$db_password = pick($ironic_hash['db_password'], 'ironic') $db_password = pick($ironic_hash['db_password'], 'ironic')
$database_connection = "mysql://${db_name}:${db_password}@${db_host}/${db_name}?charset=utf8&read_timeout=60" # LP#1526938 - python-mysqldb supports this, python-pymysql does not
if $::os_package_type == 'debian' {
$extra_params = { 'charset' => 'utf8', 'read_timeout' => 60 }
} else {
$extra_params = { 'charset' => 'utf8' }
}
$db_connection = os_database_connection({
'dialect' => $db_type,
'host' => $db_host,
'database' => $db_name,
'username' => $db_user,
'password' => $db_password,
'extra' => $extra_params
})
$tftp_root = '/var/lib/ironic/tftpboot' $tftp_root = '/var/lib/ironic/tftpboot'
@ -57,7 +71,7 @@ class { '::ironic':
control_exchange => 'ironic', control_exchange => 'ironic',
use_syslog => $use_syslog, use_syslog => $use_syslog,
log_facility => $syslog_log_facility_ironic, log_facility => $syslog_log_facility_ironic,
database_connection => $database_connection, database_connection => $db_connection,
database_max_retries => '-1', database_max_retries => '-1',
glance_api_servers => $glance_api_servers, glance_api_servers => $glance_api_servers,
} }

View File

@ -49,16 +49,30 @@ if $sahara_hash['enabled'] {
$sahara_user = pick($sahara_hash['user'], 'sahara') $sahara_user = pick($sahara_hash['user'], 'sahara')
$sahara_password = pick($sahara_hash['user_password']) $sahara_password = pick($sahara_hash['user_password'])
$tenant = pick($sahara_hash['tenant'], 'services') $tenant = pick($sahara_hash['tenant'], 'services')
$db_user = pick($sahara_hash['db_user'], 'sahara')
$db_name = pick($sahara_hash['db_name'], 'sahara')
$db_password = pick($sahara_hash['db_password'])
$db_host = pick($sahara_hash['db_host'], $database_vip)
$max_pool_size = min($::processorcount * 5 + 0, 30 + 0) $max_pool_size = min($::processorcount * 5 + 0, 30 + 0)
$max_overflow = min($::processorcount * 5 + 0, 60 + 0) $max_overflow = min($::processorcount * 5 + 0, 60 + 0)
$max_retries = '-1' $max_retries = '-1'
$idle_timeout = '3600' $idle_timeout = '3600'
$read_timeout = '60'
$sql_connection = "mysql://${db_user}:${db_password}@${db_host}/${db_name}?read_timeout=${read_timeout}" $db_type = 'mysql'
$db_user = pick($sahara_hash['db_user'], 'sahara')
$db_name = pick($sahara_hash['db_name'], 'sahara')
$db_password = pick($sahara_hash['db_password'])
$db_host = pick($sahara_hash['db_host'], $database_vip)
# LP#1526938 - python-mysqldb supports this, python-pymysql does not
if $::os_package_type == 'debian' {
$extra_params = { 'charset' => 'utf8', 'read_timeout' => 60 }
} else {
$extra_params = { 'charset' => 'utf8' }
}
$db_connection = os_database_connection({
'dialect' => $db_type,
'host' => $db_host,
'database' => $db_name,
'username' => $db_user,
'password' => $db_password,
'extra' => $extra_params
})
####### Disable upstart startup on install ####### ####### Disable upstart startup on install #######
tweaks::ubuntu_service_override { 'sahara-api': tweaks::ubuntu_service_override { 'sahara-api':
@ -80,7 +94,7 @@ if $sahara_hash['enabled'] {
use_stderr => $use_stderr, use_stderr => $use_stderr,
plugins => [ 'ambari', 'cdh', 'mapr', 'spark', 'vanilla' ], plugins => [ 'ambari', 'cdh', 'mapr', 'spark', 'vanilla' ],
log_facility => $syslog_log_facility_sahara, log_facility => $syslog_log_facility_sahara,
database_connection => $sql_connection, database_connection => $db_connection,
database_max_pool_size => $max_pool_size, database_max_pool_size => $max_pool_size,
database_max_overflow => $max_overflow, database_max_overflow => $max_overflow,
database_max_retries => $max_retries, database_max_retries => $max_retries,

View File

@ -1,4 +1,5 @@
test_tasks: test_tasks:
- globals/globals
- roles/cinder - roles/cinder
user_node_name: Untitled (79:d2) user_node_name: Untitled (79:d2)

View File

@ -45,8 +45,13 @@ describe manifest do
# Ceilometer # Ceilometer
if ceilometer_hash['enabled'] if ceilometer_hash['enabled']
it 'should configure connection string with read reference set to primaryPreferred' do it 'should properly build connection string' do
should contain_ceilometer_config('database/connection').with(:value => "mongodb://#{ceilometer_db_user}:#{ceilometer_db_password}@#{db_hosts}/#{ceilometer_db_dbname}?readpreference=primaryPreferred") if mongo_replicaset and mongo_replicaset != ''
db_params = "?readPreference=primaryPreferred&replicaSet=#{mongo_replicaset}"
else
db_params = "?readPreference=primaryPreferred"
end
should contain_ceilometer_config('database/connection').with(:value => "mongodb://#{ceilometer_db_user}:#{ceilometer_db_password}@#{db_hosts}/#{ceilometer_db_dbname}#{db_params}")
end end
if mongo_replicaset and mongo_replicaset != '' if mongo_replicaset and mongo_replicaset != ''

View File

@ -24,6 +24,10 @@ describe manifest do
pipeline = 'keystone' pipeline = 'keystone'
end end
murano_glance_artifacts_plugin = Noop.hiera('murano_glance_artifacts_plugin', {}) murano_glance_artifacts_plugin = Noop.hiera('murano_glance_artifacts_plugin', {})
database_vip = Noop.hiera('database_vip')
glance_db_password = Noop.hiera_structure 'glance/db_password', 'glance'
glance_db_user = Noop.hiera_structure 'glance/db_user', 'glance'
glance_db_name = Noop.hiera_structure 'glance/db_name', 'glance'
let(:ssl_hash) { Noop.hiera_hash 'use_ssl', {} } let(:ssl_hash) { Noop.hiera_hash 'use_ssl', {} }
@ -52,6 +56,17 @@ describe manifest do
should contain_class('glance::notify::rabbitmq') should contain_class('glance::notify::rabbitmq')
end end
it 'should configure the database connection string' do
if facts[:os_package_type] == 'debian'
extra_params = '?charset=utf8&read_timeout=60'
else
extra_params = '?charset=utf8'
end
should contain_class('openstack::glance').with(
:db_connection => "mysql://#{glance_db_user}:#{glance_db_password}@#{database_vip}/#{glance_db_name}#{extra_params}"
)
end
it 'should configure glance api config' do it 'should configure glance api config' do
should contain_glance_api_config('database/max_pool_size').with_value(max_pool_size) should contain_glance_api_config('database/max_pool_size').with_value(max_pool_size)
should contain_glance_api_config('DEFAULT/use_stderr').with_value(use_stderr) should contain_glance_api_config('DEFAULT/use_stderr').with_value(use_stderr)

View File

@ -39,6 +39,11 @@ describe manifest do
primary_controller = Noop.hiera 'primary_controller' primary_controller = Noop.hiera 'primary_controller'
sahara = Noop.hiera_structure('sahara/enabled') sahara = Noop.hiera_structure('sahara/enabled')
database_vip = Noop.hiera('database_vip')
heat_db_password = Noop.hiera_structure 'heat/db_password', 'heat'
heat_db_user = Noop.hiera_structure 'heat/db_user', 'heat'
heat_db_name = Noop.hiera('heat_db_name', 'heat')
it 'should install heat-docker package only after heat-engine' do it 'should install heat-docker package only after heat-engine' do
if !facts.has_key?(:os_package_type) or facts[:os_package_type] != 'ubuntu' if !facts.has_key?(:os_package_type) or facts[:os_package_type] != 'ubuntu'
if facts[:osfamily] == 'RedHat' if facts[:osfamily] == 'RedHat'
@ -57,6 +62,17 @@ describe manifest do
end end
end end
it 'should configure the database connection string' do
if facts[:os_package_type] == 'debian'
extra_params = '?charset=utf8&read_timeout=60'
else
extra_params = '?charset=utf8'
end
should contain_class('openstack::heat').with(
:db_connection => "mysql://#{heat_db_user}:#{heat_db_password}@#{database_vip}/#{heat_db_name}#{extra_params}"
)
end
it 'should configure default_log_levels' do it 'should configure default_log_levels' do
should contain_heat_config('DEFAULT/default_log_levels').with_value(default_log_levels.sort.join(',')) should contain_heat_config('DEFAULT/default_log_levels').with_value(default_log_levels.sort.join(','))
end end

View File

@ -12,6 +12,11 @@ describe manifest do
memcache_addresses = Noop.hiera 'memcached_addresses', false memcache_addresses = Noop.hiera 'memcached_addresses', false
memcache_server_port = Noop.hiera 'memcache_server_port', '11211' memcache_server_port = Noop.hiera 'memcache_server_port', '11211'
database_vip = Noop.hiera('database_vip')
nova_db_password = Noop.hiera_structure 'nova/db_password', 'nova'
nova_db_user = Noop.hiera_structure 'nova/db_user', 'nova'
nova_db_name = Noop.hiera_structure 'nova/db_name', 'nova'
let(:memcache_nodes) do let(:memcache_nodes) do
Noop.puppet_function 'get_nodes_hash_by_roles', network_metadata, memcache_roles Noop.puppet_function 'get_nodes_hash_by_roles', network_metadata, memcache_roles
end end
@ -82,6 +87,17 @@ describe manifest do
:enable => false, :enable => false,
) )
end end
it 'should configure the database connection string' do
if facts[:os_package_type] == 'debian'
extra_params = '?charset=utf8&read_timeout=60'
else
extra_params = '?charset=utf8'
end
should contain_class('nova').with(
:database_connection => "mysql://#{nova_db_user}:#{nova_db_password}@#{database_vip}/#{nova_db_name}#{extra_params}"
)
end
end end
end end

View File

@ -14,6 +14,11 @@ if ironic_enabled
primary_controller = Noop.hiera 'primary_controller' primary_controller = Noop.hiera 'primary_controller'
amqp_durable_queues = Noop.hiera_structure 'ironic/amqp_durable_queues', 'false' amqp_durable_queues = Noop.hiera_structure 'ironic/amqp_durable_queues', 'false'
database_vip = Noop.hiera('database_vip')
ironic_db_password = Noop.hiera_structure 'ironic/db_password', 'ironic'
ironic_db_user = Noop.hiera_structure 'ironic/db_user', 'ironic'
ironic_db_name = Noop.hiera_structure 'ironic/db_name', 'ironic'
it 'should configure default_log_levels' do it 'should configure default_log_levels' do
should contain_ironic_config('DEFAULT/default_log_levels').with_value(default_log_levels.sort.join(',')) should contain_ironic_config('DEFAULT/default_log_levels').with_value(default_log_levels.sort.join(','))
end end
@ -29,6 +34,17 @@ if ironic_enabled
) )
end end
it 'should configure the database connection string' do
if facts[:os_package_type] == 'debian'
extra_params = '?charset=utf8&read_timeout=60'
else
extra_params = '?charset=utf8'
end
should contain_class('ironic').with(
:database_connection => "mysql://#{ironic_db_user}:#{ironic_db_password}@#{database_vip}/#{ironic_db_name}#{extra_params}"
)
end
# TODO (iberezovskiy): uncomment this test after ironic module update # TODO (iberezovskiy): uncomment this test after ironic module update
#it 'should configure default log levels' do #it 'should configure default log levels' do
# should contain_class('ironic::logging').with('default_log_levels' => default_log_levels) # should contain_class('ironic::logging').with('default_log_levels' => default_log_levels)

View File

@ -73,6 +73,11 @@ describe manifest do
token_provider = Noop.hiera('token_provider') token_provider = Noop.hiera('token_provider')
primary_controller = Noop.hiera 'primary_controller' primary_controller = Noop.hiera 'primary_controller'
database_vip = Noop.hiera('database_vip')
keystone_db_password = Noop.hiera_structure 'keystone/db_password', 'keystone'
keystone_db_user = Noop.hiera_structure 'keystone/db_user', 'keystone'
keystone_db_name = Noop.hiera_structure 'keystone/db_name', 'keystone'
default_log_levels_hash = Noop.hiera_hash 'default_log_levels' default_log_levels_hash = Noop.hiera_hash 'default_log_levels'
default_log_levels = Noop.puppet_function 'join_keys_to_values',default_log_levels_hash,'=' default_log_levels = Noop.puppet_function 'join_keys_to_values',default_log_levels_hash,'='
@ -80,6 +85,18 @@ describe manifest do
should contain_keystone_config('DEFAULT/default_log_levels').with_value(default_log_levels.sort.join(',')) should contain_keystone_config('DEFAULT/default_log_levels').with_value(default_log_levels.sort.join(','))
end end
it 'should configure the database connection string' do
if facts[:os_package_type] == 'debian'
extra_params = '?charset=utf8&read_timeout=60'
else
extra_params = '?charset=utf8'
end
should contain_class('openstack::keystone').with(
:db_connection => "mysql://#{keystone_db_user}:#{keystone_db_password}@#{database_vip}/#{keystone_db_name}#{extra_params}"
)
end
it 'should declare keystone class with admin_token' do it 'should declare keystone class with admin_token' do
should contain_class('keystone').with( should contain_class('keystone').with(
'admin_token' => admin_token 'admin_token' => admin_token

View File

@ -60,8 +60,12 @@ describe manifest do
let(:api_bind_port) { '8082' } let(:api_bind_port) { '8082' }
let(:sql_connection) do let(:sql_connection) do
read_timeout = '60' if facts[:os_package_type] == 'debian'
"mysql://#{db_user}:#{db_password}@#{db_host}/#{db_name}?read_timeout=#{read_timeout}" extra_params = '?charset=utf8&read_timeout=60'
else
extra_params = '?charset=utf8'
end
"mysql://#{db_user}:#{db_password}@#{db_host}/#{db_name}#{extra_params}"
end end
let(:ssl_hash) { Noop.hiera_hash 'use_ssl', {} } let(:ssl_hash) { Noop.hiera_hash 'use_ssl', {} }

View File

@ -16,10 +16,26 @@ describe manifest do
default_log_levels = Noop.puppet_function 'join_keys_to_values',default_log_levels_hash,'=' default_log_levels = Noop.puppet_function 'join_keys_to_values',default_log_levels_hash,'='
primary_controller = Noop.hiera 'primary_controller' primary_controller = Noop.hiera 'primary_controller'
database_vip = Noop.hiera('database_vip')
cinder_db_password = Noop.hiera_structure 'cinder/db_password', 'cinder'
cinder_db_user = Noop.hiera_structure 'cinder/db_user', 'cinder'
cinder_db_name = Noop.hiera_structure 'cinder/db_name', 'cinder'
it 'should configure default_log_levels' do it 'should configure default_log_levels' do
should contain_cinder_config('DEFAULT/default_log_levels').with_value(default_log_levels.sort.join(',')) should contain_cinder_config('DEFAULT/default_log_levels').with_value(default_log_levels.sort.join(','))
end end
it 'should configure the database connection string' do
if facts[:os_package_type] == 'debian'
extra_params = '?charset=utf8&read_timeout=60'
else
extra_params = '?charset=utf8'
end
should contain_class('cinder').with(
:database_connection => "mysql://#{cinder_db_user}:#{cinder_db_password}@#{database_vip}/#{cinder_db_name}#{extra_params}"
)
end
it 'ensures cinder_config contains "oslo_messaging_rabbit/rabbit_ha_queues" ' do it 'ensures cinder_config contains "oslo_messaging_rabbit/rabbit_ha_queues" ' do
should contain_cinder_config('oslo_messaging_rabbit/rabbit_ha_queues').with( should contain_cinder_config('oslo_messaging_rabbit/rabbit_ha_queues').with(
'value' => rabbit_ha_queues, 'value' => rabbit_ha_queues,

View File

@ -75,15 +75,21 @@ describe manifest do
it 'database options' do it 'database options' do
database_vip = Noop.hiera('database_vip') database_vip = Noop.hiera('database_vip')
neutron_db_password = neutron_config.fetch('database', {}).fetch('passwd') db_password = neutron_config.fetch('database', {}).fetch('passwd')
neutron_db_user = neutron_config.fetch('database', {}).fetch('user', 'neutron') db_user = neutron_config.fetch('database', {}).fetch('user', 'neutron')
neutron_db_name = neutron_config.fetch('database', {}).fetch('name', 'neutron') db_name = neutron_config.fetch('database', {}).fetch('name', 'neutron')
neutron_db_host = neutron_config.fetch('database', {}).fetch('host', database_vip) db_host = neutron_config.fetch('database', {}).fetch('host', database_vip)
neutron_db_uri = "mysql://#{neutron_db_user}:#{neutron_db_password}@#{neutron_db_host}/#{neutron_db_name}?&read_timeout=60" if facts[:os_package_type] == 'debian'
extra_params = '?charset=utf8&read_timeout=60'
else
extra_params = '?charset=utf8'
end
db_connection = "mysql://#{db_user}:#{db_password}@#{db_host}/#{db_name}#{extra_params}"
should contain_class('neutron::server').with( should contain_class('neutron::server').with(
'sync_db' => 'false', 'sync_db' => 'false',
'database_retry_interval' => '2', 'database_retry_interval' => '2',
'database_connection' => neutron_db_uri, 'database_connection' => db_connection,
'database_max_retries' => '-1', 'database_max_retries' => '-1',
) )
end end

View File

@ -8,6 +8,22 @@ describe manifest do
storage_hash = Noop.hiera 'storage_hash' storage_hash = Noop.hiera 'storage_hash'
ceilometer_hash = Noop.hiera 'ceilometer_hash', { 'enabled' => false } ceilometer_hash = Noop.hiera 'ceilometer_hash', { 'enabled' => false }
database_vip = Noop.hiera('database_vip')
cinder_db_password = Noop.hiera_structure 'cinder/db_password', 'cinder'
cinder_db_user = Noop.hiera_structure 'cinder/db_user', 'cinder'
cinder_db_name = Noop.hiera_structure 'cinder/db_name', 'cinder'
it 'should configure the database connection string' do
if facts[:os_package_type] == 'debian'
extra_params = '?charset=utf8&read_timeout=60'
else
extra_params = '?charset=utf8'
end
should contain_class('openstack::cinder').with(
:sql_connection => "mysql://#{cinder_db_user}:#{cinder_db_password}@#{database_vip}/#{cinder_db_name}#{extra_params}"
)
end
if Noop.hiera 'use_ceph' and !(storage_hash['volumes_lvm']) and !(member($roles, 'cinder-vmware')) if Noop.hiera 'use_ceph' and !(storage_hash['volumes_lvm']) and !(member($roles, 'cinder-vmware'))
it { should contain_class('ceph') } it { should contain_class('ceph') }
end end

View File

@ -10,6 +10,11 @@ describe manifest do
storage_config = Noop.hiera_structure 'storage' storage_config = Noop.hiera_structure 'storage'
amqp_durable_queues = Noop.hiera_structure 'ironic/amqp_durable_queues', 'false' amqp_durable_queues = Noop.hiera_structure 'ironic/amqp_durable_queues', 'false'
database_vip = Noop.hiera('database_vip')
ironic_db_password = Noop.hiera_structure 'ironic/db_password', 'ironic'
ironic_db_user = Noop.hiera_structure 'ironic/db_user', 'ironic'
ironic_db_name = Noop.hiera_structure 'ironic/db_name', 'ironic'
if ironic_enabled if ironic_enabled
it 'should ensure that ironic-fa-deploy is installed' do it 'should ensure that ironic-fa-deploy is installed' do
should contain_package('ironic-fa-deploy').with('ensure' => 'present') should contain_package('ironic-fa-deploy').with('ensure' => 'present')
@ -26,6 +31,17 @@ describe manifest do
) )
end end
it 'should configure the database connection string' do
if facts[:os_package_type] == 'debian'
extra_params = '?charset=utf8&read_timeout=60'
else
extra_params = '?charset=utf8'
end
should contain_class('ironic').with(
:database_connection => "mysql://#{ironic_db_user}:#{ironic_db_password}@#{database_vip}/#{ironic_db_name}#{extra_params}"
)
end
management_vip = Noop.hiera 'management_vip' management_vip = Noop.hiera 'management_vip'
service_endpoint = Noop.hiera 'service_endpoint', management_vip service_endpoint = Noop.hiera 'service_endpoint', management_vip
neutron_endpoint = Noop.hiera 'neutron_endpoint', service_endpoint neutron_endpoint = Noop.hiera 'neutron_endpoint', service_endpoint

View File

@ -95,7 +95,12 @@ describe manifest do
max_retries = '-1' max_retries = '-1'
idle_timeout = '3600' idle_timeout = '3600'
read_timeout = '60' read_timeout = '60'
sql_connection = "mysql://#{db_user}:#{db_password}@#{db_host}/#{db_name}?read_timeout=#{read_timeout}" if facts[:os_package_type] == 'debian'
extra_params = '?charset=utf8&read_timeout=60'
else
extra_params = '?charset=utf8'
end
sql_connection = "mysql://#{db_user}:#{db_password}@#{db_host}/#{db_name}#{extra_params}"
should contain_class('sahara').with( should contain_class('sahara').with(
'auth_uri' => auth_url, 'auth_uri' => auth_url,

View File

@ -37,6 +37,7 @@ class Noop
:concat_basedir => '/tmp/', :concat_basedir => '/tmp/',
:l23_os => 'ubuntu', :l23_os => 'ubuntu',
:lsbdistcodename => 'trusty', :lsbdistcodename => 'trusty',
:os_package_type => 'debian',
}.merge override_facts }.merge override_facts
end end
@ -58,6 +59,7 @@ class Noop
:l3_default_route => '172.16.1.1', :l3_default_route => '172.16.1.1',
:concat_basedir => '/tmp/', :concat_basedir => '/tmp/',
:l23_os => 'centos6', :l23_os => 'centos6',
:os_package_type => 'rpm',
}.merge override_facts }.merge override_facts
end end