Mend ceilometer_radosgw_user provider
Fix exists() method of ceilometer_radosgw_user provider to properly check desired vs current state. Also - outdated central/compute agents have been replaced with the polling one - "notification_driver" option has been unified Change-Id: Ieb8e850dbde05705c838aa0090279acfe969b92d Closes-Bug: #1526892
This commit is contained in:
parent
04382c1db8
commit
eddcb94b70
@ -11,13 +11,13 @@ fixtures:
|
|||||||
'firewall': 'https://github.com/puppetlabs/puppetlabs-firewall.git'
|
'firewall': 'https://github.com/puppetlabs/puppetlabs-firewall.git'
|
||||||
'openstacklib':
|
'openstacklib':
|
||||||
repo: 'https://review.fuel-infra.org/puppet-modules/puppet-openstacklib.git'
|
repo: 'https://review.fuel-infra.org/puppet-modules/puppet-openstacklib.git'
|
||||||
branch: '7.0.0-mos-rc4'
|
branch: '7.0.0-rc6'
|
||||||
'horizon':
|
'horizon':
|
||||||
repo: 'https://review.fuel-infra.org/puppet-modules/puppet-horizon.git'
|
repo: 'https://review.fuel-infra.org/puppet-modules/puppet-horizon.git'
|
||||||
branch: '7.0.0-mos-rc3'
|
branch: '7.0.0-mos-rc3'
|
||||||
'keystone':
|
'keystone':
|
||||||
repo: 'https://review.fuel-infra.org/puppet-modules/puppet-keystone.git'
|
repo: 'https://review.fuel-infra.org/puppet-modules/puppet-keystone.git'
|
||||||
branch: '7.0.0-mos-rc3'
|
branch: '7.0.0-rc4'
|
||||||
'neutron':
|
'neutron':
|
||||||
repo: 'https://review.fuel-infra.org/puppet-modules/puppet-neutron.git'
|
repo: 'https://review.fuel-infra.org/puppet-modules/puppet-neutron.git'
|
||||||
branch: '7.0.0-mos-rc4'
|
branch: '7.0.0-mos-rc4'
|
||||||
@ -32,10 +32,10 @@ fixtures:
|
|||||||
branch: '7.0.0-mos-rc2'
|
branch: '7.0.0-mos-rc2'
|
||||||
'ceilometer':
|
'ceilometer':
|
||||||
repo: 'https://review.fuel-infra.org/puppet-modules/puppet-ceilometer.git'
|
repo: 'https://review.fuel-infra.org/puppet-modules/puppet-ceilometer.git'
|
||||||
branch: '7.0.0-mos-rc2'
|
branch: '7.0.0-rc3'
|
||||||
'cinder':
|
'cinder':
|
||||||
repo: 'https://review.fuel-infra.org/puppet-modules/openstack-cinder.git'
|
repo: 'https://review.fuel-infra.org/puppet-modules/openstack-cinder.git'
|
||||||
branch: '7.0.0-mos-rc2'
|
branch: '7.0.0-rc3'
|
||||||
'sahara':
|
'sahara':
|
||||||
repo: 'https://review.fuel-infra.org/puppet-modules/puppet-sahara.git'
|
repo: 'https://review.fuel-infra.org/puppet-modules/puppet-sahara.git'
|
||||||
branch: '7.0.0-mos-rc2'
|
branch: '7.0.0-mos-rc2'
|
||||||
@ -55,3 +55,6 @@ fixtures:
|
|||||||
'corosync': "#{source_dir}/../corosync"
|
'corosync': "#{source_dir}/../corosync"
|
||||||
'pacemaker': "#{source_dir}/../pacemaker"
|
'pacemaker': "#{source_dir}/../pacemaker"
|
||||||
'haproxy': "#{source_dir}/../haproxy"
|
'haproxy': "#{source_dir}/../haproxy"
|
||||||
|
'ceilometer_ha': "#{source_dir}/../ceilometer_ha"
|
||||||
|
'pacemaker_wrappers': "#{source_dir}/../pacemaker_wrappers"
|
||||||
|
'mellanox_openstack': "#{source_dir}/../mellanox_openstack"
|
||||||
|
@ -89,7 +89,7 @@ class openstack::ceilometer (
|
|||||||
|
|
||||||
if ($on_controller) {
|
if ($on_controller) {
|
||||||
# Configure the ceilometer database
|
# Configure the ceilometer database
|
||||||
# Only needed if ceilometer::agent::central or ceilometer::api are declared
|
# Only needed if ceilometer::agent::polling or ceilometer::api are declared
|
||||||
|
|
||||||
if ( !$ext_mongo ) {
|
if ( !$ext_mongo ) {
|
||||||
if ( $db_type == 'mysql' ) {
|
if ( $db_type == 'mysql' ) {
|
||||||
@ -114,7 +114,7 @@ class openstack::ceilometer (
|
|||||||
}
|
}
|
||||||
|
|
||||||
ceilometer_config { 'service_credentials/os_endpoint_type': value => $os_endpoint_type} ->
|
ceilometer_config { 'service_credentials/os_endpoint_type': value => $os_endpoint_type} ->
|
||||||
Service<| title == 'ceilometer-agent-central'|>
|
Service<| title == 'ceilometer-polling'|>
|
||||||
|
|
||||||
class { '::ceilometer::db':
|
class { '::ceilometer::db':
|
||||||
database_connection => $current_database_connection,
|
database_connection => $current_database_connection,
|
||||||
@ -147,8 +147,6 @@ class openstack::ceilometer (
|
|||||||
collector_workers => $collector_workers,
|
collector_workers => $collector_workers,
|
||||||
}
|
}
|
||||||
|
|
||||||
class { '::ceilometer::agent::central': }
|
|
||||||
|
|
||||||
class { '::ceilometer::alarm::evaluator':
|
class { '::ceilometer::alarm::evaluator':
|
||||||
evaluation_interval => 60,
|
evaluation_interval => 60,
|
||||||
}
|
}
|
||||||
@ -162,13 +160,13 @@ class openstack::ceilometer (
|
|||||||
|
|
||||||
if $ha_mode {
|
if $ha_mode {
|
||||||
include ceilometer_ha::agent::central
|
include ceilometer_ha::agent::central
|
||||||
|
Service['ceilometer-polling'] -> Class['::ceilometer_ha::agent::central']
|
||||||
Package[$::ceilometer::params::common_package_name] -> Class['::ceilometer_ha::agent::central']
|
|
||||||
Package[$::ceilometer::params::agent_central_package_name] -> Class['::ceilometer_ha::agent::central']
|
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
Package[$::ceilometer::params::common_package_name] -> Service[$::ceilometer::params::agent_central_service_name]
|
class { '::ceilometer::agent::polling':
|
||||||
Package[$::ceilometer::params::agent_central_package_name] -> Service[$::ceilometer::params::agent_central_service_name]
|
enabled => !$ha_mode,
|
||||||
|
compute_namespace => false,
|
||||||
|
ipmi_namespace => false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -217,11 +215,13 @@ class openstack::ceilometer (
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
# Install compute agent
|
# Install polling agent
|
||||||
class { 'ceilometer::agent::compute':
|
class { '::ceilometer::agent::polling':
|
||||||
enabled => true,
|
central_namespace => false,
|
||||||
|
ipmi_namespace => false
|
||||||
}
|
}
|
||||||
|
|
||||||
ceilometer_config { 'service_credentials/os_endpoint_type': value => $os_endpoint_type} ->
|
ceilometer_config { 'service_credentials/os_endpoint_type': value => $os_endpoint_type} ->
|
||||||
Service<| title == 'ceilometer-agent-compute'|>
|
Service<| title == 'ceilometer-polling'|>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
# [*syslog_log_facility*] Facility for syslog, if used. Optional. Note: duplicating conf option
|
# [*syslog_log_facility*] Facility for syslog, if used. Optional. Note: duplicating conf option
|
||||||
# wouldn't have been used, but more powerfull rsyslog features managed via conf template instead
|
# wouldn't have been used, but more powerfull rsyslog features managed via conf template instead
|
||||||
# [*ceilometer*] true if we use ceilometer
|
# [*notification_driver*] The driver(s) name to handle notifications. Defaults to undef.
|
||||||
|
|
||||||
class openstack::cinder(
|
class openstack::cinder(
|
||||||
$sql_connection,
|
$sql_connection,
|
||||||
@ -42,7 +42,7 @@ class openstack::cinder(
|
|||||||
$identity_uri = false,
|
$identity_uri = false,
|
||||||
$keystone_user = 'cinder',
|
$keystone_user = 'cinder',
|
||||||
$region = 'RegionOne',
|
$region = 'RegionOne',
|
||||||
$ceilometer = false,
|
$notification_driver = undef,
|
||||||
$service_workers = $::processorcount,
|
$service_workers = $::processorcount,
|
||||||
$vmware_host_ip = '10.10.10.10',
|
$vmware_host_ip = '10.10.10.10',
|
||||||
$vmware_host_username = 'administrator@vsphere.local',
|
$vmware_host_username = 'administrator@vsphere.local',
|
||||||
@ -266,9 +266,9 @@ class openstack::cinder(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if $ceilometer {
|
if $notification_driver {
|
||||||
class { 'cinder::ceilometer':
|
class { 'cinder::ceilometer':
|
||||||
notification_driver => 'messagingv2'
|
notification_driver => $notification_driver
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -135,7 +135,7 @@ class openstack::compute (
|
|||||||
$cinder_rate_limits = undef,
|
$cinder_rate_limits = undef,
|
||||||
$create_networks = false,
|
$create_networks = false,
|
||||||
$state_path = '/var/lib/nova',
|
$state_path = '/var/lib/nova',
|
||||||
$ceilometer = false,
|
$notification_driver = 'noop',
|
||||||
$ceilometer_metering_secret = 'ceilometer',
|
$ceilometer_metering_secret = 'ceilometer',
|
||||||
$libvirt_vif_driver = 'nova.virt.libvirt.vif.LibvirtGenericVIFDriver',
|
$libvirt_vif_driver = 'nova.virt.libvirt.vif.LibvirtGenericVIFDriver',
|
||||||
$storage_hash = {},
|
$storage_hash = {},
|
||||||
@ -267,6 +267,7 @@ class openstack::compute (
|
|||||||
report_interval => $nova_report_interval,
|
report_interval => $nova_report_interval,
|
||||||
service_down_time => $nova_service_down_time,
|
service_down_time => $nova_service_down_time,
|
||||||
notify_on_state_change => $notify_on_state_change,
|
notify_on_state_change => $notify_on_state_change,
|
||||||
|
notification_driver => $notification_driver,
|
||||||
memcached_servers => $memcached_addresses,
|
memcached_servers => $memcached_addresses,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -311,10 +312,8 @@ class openstack::compute (
|
|||||||
nova_config {
|
nova_config {
|
||||||
'libvirt/live_migration_flag': value => 'VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_PERSIST_DEST';
|
'libvirt/live_migration_flag': value => 'VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_PERSIST_DEST';
|
||||||
'libvirt/block_migration_flag': value => 'VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_NON_SHARED_INC';
|
'libvirt/block_migration_flag': value => 'VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_NON_SHARED_INC';
|
||||||
}
|
'cinder/catalog_info': value => pick($nova_hash['cinder_catalog_info'], 'volume:cinder:internalURL');
|
||||||
|
'DEFAULT/connection_type': value => 'libvirt';
|
||||||
nova_config {
|
|
||||||
'cinder/catalog_info': value => pick($nova_hash['cinder_catalog_info'], 'volume:cinder:internalURL')
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if $use_syslog {
|
if $use_syslog {
|
||||||
@ -456,10 +455,6 @@ on packages update": }
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
nova_config {
|
|
||||||
'DEFAULT/connection_type': value => 'libvirt';
|
|
||||||
}
|
|
||||||
|
|
||||||
Package<| title == 'nova-compute'|> ~> Service<| title == 'nova-compute'|>
|
Package<| title == 'nova-compute'|> ~> Service<| title == 'nova-compute'|>
|
||||||
if !defined(Service['nova-compute']) {
|
if !defined(Service['nova-compute']) {
|
||||||
notify{ "Module ${module_name} cannot notify service nova-compute\
|
notify{ "Module ${module_name} cannot notify service nova-compute\
|
||||||
|
@ -93,7 +93,7 @@ class openstack::controller (
|
|||||||
$nova_user_tenant = 'services',
|
$nova_user_tenant = 'services',
|
||||||
$nova_hash = {},
|
$nova_hash = {},
|
||||||
# Required Ceilometer
|
# Required Ceilometer
|
||||||
$ceilometer = false,
|
$ceilometer_notification_driver = false,
|
||||||
$ceilometer_db_password = 'ceilometer_pass',
|
$ceilometer_db_password = 'ceilometer_pass',
|
||||||
$ceilometer_user_password = 'ceilometer_pass',
|
$ceilometer_user_password = 'ceilometer_pass',
|
||||||
$ceilometer_db_user = 'ceilometer',
|
$ceilometer_db_user = 'ceilometer',
|
||||||
@ -330,7 +330,7 @@ class openstack::controller (
|
|||||||
idle_timeout => $idle_timeout,
|
idle_timeout => $idle_timeout,
|
||||||
novnc_address => $novnc_address,
|
novnc_address => $novnc_address,
|
||||||
ha_mode => $ha_mode,
|
ha_mode => $ha_mode,
|
||||||
ceilometer => $ceilometer,
|
ceilometer_notification_driver => $ceilometer_notification_driver,
|
||||||
neutron_metadata_proxy_shared_secret => $network_provider ? {'nova'=>undef, 'neutron'=>$neutron_metadata_proxy_secret },
|
neutron_metadata_proxy_shared_secret => $network_provider ? {'nova'=>undef, 'neutron'=>$neutron_metadata_proxy_secret },
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -93,7 +93,7 @@ class openstack::glance (
|
|||||||
$rbd_store_user = 'images',
|
$rbd_store_user = 'images',
|
||||||
$rbd_store_pool = 'images',
|
$rbd_store_pool = 'images',
|
||||||
$rados_connect_timeout = '0',
|
$rados_connect_timeout = '0',
|
||||||
$ceilometer = false,
|
$notification_driver = undef,
|
||||||
$service_workers = $::processorcount,
|
$service_workers = $::processorcount,
|
||||||
) {
|
) {
|
||||||
validate_string($glance_user_password)
|
validate_string($glance_user_password)
|
||||||
@ -220,14 +220,6 @@ class openstack::glance (
|
|||||||
$rabbit_hosts_real = $rabbit_hosts
|
$rabbit_hosts_real = $rabbit_hosts
|
||||||
}
|
}
|
||||||
|
|
||||||
# Configure rabbitmq notifications
|
|
||||||
# TODO(bogdando) sync qpid support from upstream
|
|
||||||
if $ceilometer {
|
|
||||||
$notification_driver = 'messaging'
|
|
||||||
} else {
|
|
||||||
$notification_driver = 'noop'
|
|
||||||
}
|
|
||||||
|
|
||||||
class { 'glance::notify::rabbitmq':
|
class { 'glance::notify::rabbitmq':
|
||||||
rabbit_password => $rabbit_password,
|
rabbit_password => $rabbit_password,
|
||||||
rabbit_userid => $rabbit_userid,
|
rabbit_userid => $rabbit_userid,
|
||||||
|
@ -80,7 +80,7 @@ class openstack::keystone (
|
|||||||
$cache_backend = 'keystone.cache.memcache_pool',
|
$cache_backend = 'keystone.cache.memcache_pool',
|
||||||
$token_provider = undef,
|
$token_provider = undef,
|
||||||
$revoke_driver = false,
|
$revoke_driver = false,
|
||||||
$ceilometer = false,
|
$notification_driver = undef,
|
||||||
$service_workers = $::processorcount,
|
$service_workers = $::processorcount,
|
||||||
$fernet_src_repository = undef,
|
$fernet_src_repository = undef,
|
||||||
$fernet_key_repository = '/etc/keystone/fernet-keys',
|
$fernet_key_repository = '/etc/keystone/fernet-keys',
|
||||||
@ -106,14 +106,6 @@ class openstack::keystone (
|
|||||||
$admin_real = $internal_real
|
$admin_real = $internal_real
|
||||||
}
|
}
|
||||||
|
|
||||||
if $ceilometer {
|
|
||||||
$notification_driver = 'messagingv2'
|
|
||||||
$notification_topics = 'notifications'
|
|
||||||
} else {
|
|
||||||
$notification_driver = false
|
|
||||||
$notification_topics = false
|
|
||||||
}
|
|
||||||
|
|
||||||
if $memcache_servers {
|
if $memcache_servers {
|
||||||
$memcache_servers_real = suffix($memcache_servers, inline_template(':<%= @memcache_server_port %>'))
|
$memcache_servers_real = suffix($memcache_servers, inline_template(':<%= @memcache_server_port %>'))
|
||||||
$token_driver = 'keystone.token.persistence.backends.memcache_pool.Token'
|
$token_driver = 'keystone.token.persistence.backends.memcache_pool.Token'
|
||||||
@ -162,7 +154,6 @@ class openstack::keystone (
|
|||||||
token_driver => $token_driver,
|
token_driver => $token_driver,
|
||||||
token_provider => $token_provider,
|
token_provider => $token_provider,
|
||||||
notification_driver => $notification_driver,
|
notification_driver => $notification_driver,
|
||||||
notification_topics => $notification_topics,
|
|
||||||
token_caching => $token_caching,
|
token_caching => $token_caching,
|
||||||
cache_backend => $cache_backend,
|
cache_backend => $cache_backend,
|
||||||
revoke_driver => $revoke_driver,
|
revoke_driver => $revoke_driver,
|
||||||
|
@ -98,7 +98,7 @@ class openstack::nova::controller (
|
|||||||
$nova_report_interval = '10',
|
$nova_report_interval = '10',
|
||||||
$nova_service_down_time = '60',
|
$nova_service_down_time = '60',
|
||||||
$cinder = true,
|
$cinder = true,
|
||||||
$ceilometer = false,
|
$ceilometer_notification_driver = false,
|
||||||
$service_workers = $::processorcount,
|
$service_workers = $::processorcount,
|
||||||
# SQLAlchemy backend
|
# SQLAlchemy backend
|
||||||
$idle_timeout = '3600',
|
$idle_timeout = '3600',
|
||||||
@ -218,9 +218,9 @@ class openstack::nova::controller (
|
|||||||
}
|
}
|
||||||
|
|
||||||
# From legacy ceilometer notifications for nova
|
# From legacy ceilometer notifications for nova
|
||||||
if ($ceilometer) {
|
if ($ceilometer_notification_driver) {
|
||||||
$notify_on_state_change = 'vm_and_task_state'
|
$notify_on_state_change = 'vm_and_task_state'
|
||||||
$notification_driver = concat(['messaging'], $nova_notification_driver)
|
$notification_driver = concat([$ceilometer_notification_driver], $nova_notification_driver)
|
||||||
} else {
|
} else {
|
||||||
$notification_driver = $nova_notification_driver
|
$notification_driver = $nova_notification_driver
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,119 @@
|
|||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe 'openstack::ceilometer' do
|
||||||
|
|
||||||
|
shared_examples_for 'ceilometer services config' do
|
||||||
|
|
||||||
|
[true, false].each do |ha_mode|
|
||||||
|
context "on controller node with HA mode set to '#{ha_mode}'" do
|
||||||
|
let :params do
|
||||||
|
{
|
||||||
|
:on_controller => true,
|
||||||
|
:ha_mode => ha_mode,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'contains class ceilometer::agent::polling' do
|
||||||
|
is_expected.to contain_class('ceilometer::agent::polling').with(
|
||||||
|
:enabled => !ha_mode,
|
||||||
|
:compute_namespace => false,
|
||||||
|
:ipmi_namespace => false
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
if ha_mode
|
||||||
|
it { is_expected.to contain_class('ceilometer_ha::agent::central') }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "on conroller node" do
|
||||||
|
let :params do
|
||||||
|
{
|
||||||
|
:on_controller => true,
|
||||||
|
:keystone_password => 'cEilomEtEr_pAss',
|
||||||
|
:keystone_user => 'ceilometer',
|
||||||
|
:keystone_tenant => 'services',
|
||||||
|
:keystone_region => 'Region007',
|
||||||
|
:keystone_protocol => 'http',
|
||||||
|
:keystone_host => '127.0.0.1',
|
||||||
|
:api_workers => facts[:processorcount],
|
||||||
|
:host => '10.254.0.9',
|
||||||
|
:port => '8777',
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
it { is_expected.to contain_class('ceilometer') }
|
||||||
|
it { is_expected.to contain_class('ceilometer::logging') }
|
||||||
|
it { is_expected.to contain_class('ceilometer::db') }
|
||||||
|
it { is_expected.to contain_class('ceilometer::expirer') }
|
||||||
|
it { is_expected.to contain_class('ceilometer::agent::notification') }
|
||||||
|
it { is_expected.to contain_class('ceilometer::alarm::evaluator') }
|
||||||
|
it { is_expected.to contain_class('ceilometer::collector') }
|
||||||
|
it { is_expected.to contain_class('ceilometer::alarm::notifier') }
|
||||||
|
it { is_expected.to contain_class('ceilometer::client') }
|
||||||
|
|
||||||
|
it { is_expected.to contain_class('ceilometer::agent::auth').with(
|
||||||
|
:auth_url => "#{params[:keystone_protocol]}://#{params[:keystone_host]}:5000/v2.0",
|
||||||
|
:auth_password => params[:keystone_password],
|
||||||
|
:auth_region => params[:keystone_region],
|
||||||
|
:auth_tenant_name => params[:keystone_tenant],
|
||||||
|
:auth_user => params[:keystone_user],
|
||||||
|
) }
|
||||||
|
|
||||||
|
it { is_expected.to contain_class('ceilometer::api').with(
|
||||||
|
:keystone_protocol => params[:keystone_protocol],
|
||||||
|
:keystone_host => params[:keystone_host],
|
||||||
|
:keystone_user => params[:keystone_user],
|
||||||
|
:keystone_password => params[:keystone_password],
|
||||||
|
:keystone_tenant => params[:keystone_tenant],
|
||||||
|
:host => params[:host],
|
||||||
|
:port => params[:port],
|
||||||
|
:api_workers => params[:api_workers],
|
||||||
|
) }
|
||||||
|
end
|
||||||
|
|
||||||
|
context "on compute node" do
|
||||||
|
let :params do
|
||||||
|
{
|
||||||
|
:on_compute => true,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'contains class ceilometer::agent::polling' do
|
||||||
|
is_expected.to contain_class('ceilometer::agent::polling').with(
|
||||||
|
:central_namespace => false,
|
||||||
|
:ipmi_namespace => false
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'on Debian platforms' do
|
||||||
|
let :facts do
|
||||||
|
{
|
||||||
|
:osfamily => 'Debian',
|
||||||
|
:operatingsystem => 'Debian',
|
||||||
|
:processorcount => 2,
|
||||||
|
:memorysize_mb => 4096,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
it_configures 'ceilometer services config'
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'on RedHat platforms' do
|
||||||
|
let :facts do
|
||||||
|
{
|
||||||
|
:osfamily => 'RedHat',
|
||||||
|
:operatingsystem => 'RedHat',
|
||||||
|
:processorcount => 2,
|
||||||
|
:memorysize_mb => 4096,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
it_configures 'ceilometer services config'
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
@ -2,62 +2,74 @@ require 'spec_helper'
|
|||||||
|
|
||||||
describe 'openstack::cinder' do
|
describe 'openstack::cinder' do
|
||||||
|
|
||||||
let(:default_params) do {
|
let :default_params do
|
||||||
:sql_connection => 'mysql://user:pass@127.0.0.1/cinder',
|
{
|
||||||
:cinder_user_password => 'secret',
|
:sql_connection => 'sqlite:///relative/path/to/file.db',
|
||||||
:glance_api_servers => 'http://127.0.0.1:9292',
|
:cinder_user_password => 'cindeRUserPAssw0rD',
|
||||||
|
:glance_api_servers => ['glance-001:9292', 'glance-002:9292'],
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
let(:params) do
|
|
||||||
default_params.merge(params)
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
shared_examples_for 'cinder configuration' do
|
shared_examples_for 'cinder configuration' do
|
||||||
let :p do
|
|
||||||
default_params.merge(params)
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
context 'with a default config' do
|
context 'with a default config' do
|
||||||
#let :params do {} end
|
let :params do
|
||||||
|
default_params
|
||||||
it 'contains openstack::cinder' do
|
|
||||||
should contain_class('openstack::cinder')
|
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'contains cinder::glance' do
|
it { is_expected.to contain_class('cinder') }
|
||||||
should contain_class('cinder::glance')
|
it { is_expected.to contain_class('cinder::glance') }
|
||||||
|
it { is_expected.to contain_class('cinder::logging') }
|
||||||
|
it { is_expected.to contain_class('cinder::scheduler') }
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'configures with the default params' do
|
context 'with custom config' do
|
||||||
end
|
let :params do
|
||||||
end
|
default_params.merge(
|
||||||
|
:bind_host => '156.151.59.35',
|
||||||
context 'with keystone config' do
|
|
||||||
let :params do {
|
|
||||||
:identity_uri => 'http://192.168.0.1:5000',
|
:identity_uri => 'http://192.168.0.1:5000',
|
||||||
}
|
:notification_driver => 'messagingv2',
|
||||||
end
|
:manage_volumes => true,
|
||||||
|
|
||||||
let :p do
|
|
||||||
default_params.merge(params)
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'contains keymgr keystone config' do
|
|
||||||
should contain_class('cinder::api').with(
|
|
||||||
:identity_uri => 'http://192.168.1.:5000',
|
|
||||||
:keymgr_encryption_auth_url => 'http://192.168.0.1:5000/v3',
|
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'contains cinder::glance' do
|
it { is_expected.to contain_class('cinder::volume') }
|
||||||
should contain_class('cinder::glance')
|
|
||||||
|
it { is_expected.to contain_class('cinder::api').with(
|
||||||
|
:bind_host => params[:bind_host],
|
||||||
|
:identity_uri => params[:identity_uri],
|
||||||
|
:keymgr_encryption_auth_url => "#{params[:identity_uri]}/v3",
|
||||||
|
) }
|
||||||
|
|
||||||
|
it { is_expected.to contain_class('cinder::ceilometer').with(
|
||||||
|
:notification_driver => params[:notification_driver],
|
||||||
|
) }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'configures with the default params' do
|
context 'on Debian platforms' do
|
||||||
|
let :facts do
|
||||||
|
{ :osfamily => 'Debian',
|
||||||
|
:operatingsystem => 'Debian',
|
||||||
|
:physicalprocessorcount => 2,
|
||||||
|
:memorysize_mb => 1024,
|
||||||
|
:openstack_version => { 'nova' => 'present' },
|
||||||
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it_configures 'cinder configuration'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'on RedHat platforms' do
|
||||||
|
let :facts do
|
||||||
|
{ :osfamily => 'RedHat',
|
||||||
|
:operatingsystem => 'RedHat',
|
||||||
|
:physicalprocessorcount => 2,
|
||||||
|
:memorysize_mb => 1024,
|
||||||
|
:openstack_version => { 'nova' => 'present' },
|
||||||
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it_configures 'cinder configuration'
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
@ -10,10 +10,11 @@ Puppet::Type.type(:ceilometer_radosgw_user).provide(:user) do
|
|||||||
INI_FILENAME = '/etc/ceilometer/ceilometer.conf'
|
INI_FILENAME = '/etc/ceilometer/ceilometer.conf'
|
||||||
|
|
||||||
def exists?
|
def exists?
|
||||||
!(@property_hash[:ensure] == :absent or @property_hash.empty?)
|
radosgw_user_keys == access_keys_from_config
|
||||||
end
|
end
|
||||||
|
|
||||||
def create
|
def create
|
||||||
|
create_radosgw_user unless radosgw_user_keys
|
||||||
set_access_keys
|
set_access_keys
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -30,13 +31,15 @@ Puppet::Type.type(:ceilometer_radosgw_user).provide(:user) do
|
|||||||
['access_key', 'secret_key']
|
['access_key', 'secret_key']
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def radosgw_user_keys
|
||||||
|
@radosgw_user_keys ||= get_radosgw_user_keys
|
||||||
|
end
|
||||||
|
|
||||||
def set_access_keys
|
def set_access_keys
|
||||||
user_keys = get_user_keys
|
if ceilometer_file
|
||||||
keys = get_access_keys_from_config
|
|
||||||
if ceilometer_file and user_keys != keys
|
|
||||||
ceilometer_file.add_section(section, ini_filename) unless ceilometer_file.include?(section)
|
ceilometer_file.add_section(section, ini_filename) unless ceilometer_file.include?(section)
|
||||||
user_keys.keys.each do |key|
|
radosgw_user_keys.keys.each do |key|
|
||||||
ceilometer_file[section][key] = user_keys[key]
|
ceilometer_file[section][key] = radosgw_user_keys[key]
|
||||||
end
|
end
|
||||||
ceilometer_file.store
|
ceilometer_file.store
|
||||||
end
|
end
|
||||||
@ -55,8 +58,8 @@ Puppet::Type.type(:ceilometer_radosgw_user).provide(:user) do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_access_keys_from_config
|
def access_keys_from_config
|
||||||
keys = Hash.new
|
keys = {}
|
||||||
if ceilometer_file
|
if ceilometer_file
|
||||||
key_settings.each do |setting|
|
key_settings.each do |setting|
|
||||||
keys[setting] = ceilometer_file[section][setting] if ceilometer_file[section] && ceilometer_file[section][setting]
|
keys[setting] = ceilometer_file[section][setting] if ceilometer_file[section] && ceilometer_file[section][setting]
|
||||||
@ -65,38 +68,37 @@ Puppet::Type.type(:ceilometer_radosgw_user).provide(:user) do
|
|||||||
keys
|
keys
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_user_keys
|
def get_radosgw_user_keys
|
||||||
cmd = ['user', 'info', "--uid=#{@resource[:name]}"]
|
cmd = ['user', 'info', "--uid=#{@resource[:name]}"]
|
||||||
begin
|
begin
|
||||||
hash_as_string = rgw_adm(cmd)
|
rgw_output = rgw_adm(cmd)
|
||||||
rescue Exception => e
|
rescue Puppet::ExecutionFailure => e
|
||||||
if e.message =~ /could not fetch user info: no user info saved/
|
return nil if e.message =~ /could not fetch user info: no user info saved/
|
||||||
hash_as_string = create_radosgw_user
|
|
||||||
else
|
|
||||||
raise e
|
raise e
|
||||||
end
|
end
|
||||||
end
|
parse_radosgw_output(rgw_output)
|
||||||
|
|
||||||
hash = JSON.parse hash_as_string.to_s.gsub('=>', ':')
|
|
||||||
keys = {}
|
|
||||||
hash['keys'].each do |key|
|
|
||||||
if key['user'] == "#{@resource[:name]}"
|
|
||||||
keys['access_key'] = key['access_key']
|
|
||||||
keys['secret_key'] = key['secret_key']
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
keys
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def create_radosgw_user
|
def create_radosgw_user
|
||||||
cmd = ['user', 'create', "--uid=#{@resource[:name]}", "--display-name=#{@resource[:name]}"]
|
cmd = ['user', 'create', "--uid=#{@resource[:name]}", "--display-name=#{@resource[:name]}"]
|
||||||
rgw_adm(cmd)
|
rgw_adm(cmd)
|
||||||
@resource[:caps].keys.each do |key|
|
@resource[:caps].each_key do |key|
|
||||||
cmd = ['caps', 'add', "--uid=#{@resource[:name]}", "--caps=#{key}=#{@resource[:caps][key]}"]
|
cmd = ['caps', 'add', "--uid=#{@resource[:name]}", "--caps=#{key}=#{@resource[:caps][key]}"]
|
||||||
rgw_adm(cmd)
|
rgw_adm(cmd)
|
||||||
end
|
end
|
||||||
cmd = ['user', 'info', "--uid=#{@resource[:name]}"]
|
|
||||||
return rgw_adm(cmd)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def parse_radosgw_output(rgw_output)
|
||||||
|
keys = {}
|
||||||
|
rgw_keys = JSON.parse(rgw_output.to_s.gsub('=>', ':')).fetch('keys', {})
|
||||||
|
|
||||||
|
rgw_keys.each do |key|
|
||||||
|
if key['user'] == "#{@resource[:name]}"
|
||||||
|
keys['access_key'] = key['access_key']
|
||||||
|
keys['secret_key'] = key['secret_key']
|
||||||
|
end
|
||||||
|
end
|
||||||
|
keys
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
@ -17,7 +17,7 @@ $syslog_log_facility = hiera('syslog_log_facility_glance')
|
|||||||
$rabbit_hash = hiera_hash('rabbit_hash', {})
|
$rabbit_hash = hiera_hash('rabbit_hash', {})
|
||||||
$max_pool_size = hiera('max_pool_size')
|
$max_pool_size = hiera('max_pool_size')
|
||||||
$max_overflow = hiera('max_overflow')
|
$max_overflow = hiera('max_overflow')
|
||||||
$ceilometer_hash = hiera_hash('ceilometer', {})
|
$ceilometer_hash = hiera_hash('ceilometer_hash', {})
|
||||||
$region = hiera('region','RegionOne')
|
$region = hiera('region','RegionOne')
|
||||||
$service_workers = pick($glance_hash['glance_workers'], min(max($::processorcount, 2), 16))
|
$service_workers = pick($glance_hash['glance_workers'], min(max($::processorcount, 2), 16))
|
||||||
$ironic_hash = hiera_hash('ironic', {})
|
$ironic_hash = hiera_hash('ironic', {})
|
||||||
@ -127,7 +127,7 @@ class { 'openstack::glance':
|
|||||||
rabbit_hosts => $rabbit_hosts,
|
rabbit_hosts => $rabbit_hosts,
|
||||||
rabbit_virtual_host => $rabbit_virtual_host,
|
rabbit_virtual_host => $rabbit_virtual_host,
|
||||||
known_stores => $glance_known_stores,
|
known_stores => $glance_known_stores,
|
||||||
ceilometer => $ceilometer_hash[enabled],
|
notification_driver => $ceilometer_hash['notification_driver'],
|
||||||
service_workers => $service_workers,
|
service_workers => $service_workers,
|
||||||
rados_connect_timeout => $rados_connect_timeout,
|
rados_connect_timeout => $rados_connect_timeout,
|
||||||
}
|
}
|
||||||
|
@ -69,7 +69,6 @@ $rabbit_hash = hiera_hash('rabbit', {})
|
|||||||
$glance_hash = hiera_hash('glance', {})
|
$glance_hash = hiera_hash('glance', {})
|
||||||
$swift_hash = hiera('swift', {})
|
$swift_hash = hiera('swift', {})
|
||||||
$cinder_hash = hiera_hash('cinder', {})
|
$cinder_hash = hiera_hash('cinder', {})
|
||||||
$ceilometer_hash = hiera('ceilometer',{})
|
|
||||||
$access_hash = hiera_hash('access', {})
|
$access_hash = hiera_hash('access', {})
|
||||||
# mp_hash is actually an array, not a hash
|
# mp_hash is actually an array, not a hash
|
||||||
$mp_hash = hiera('mp', [])
|
$mp_hash = hiera('mp', [])
|
||||||
@ -77,7 +76,6 @@ $keystone_hash = merge({'service_token_off' => $service_token_o
|
|||||||
hiera_hash('keystone', {}))
|
hiera_hash('keystone', {}))
|
||||||
|
|
||||||
$dns_nameservers = hiera('dns_nameservers', [])
|
$dns_nameservers = hiera('dns_nameservers', [])
|
||||||
$use_ceilometer = $ceilometer_hash['enabled']
|
|
||||||
$use_neutron = hiera('quantum', false)
|
$use_neutron = hiera('quantum', false)
|
||||||
$use_ovs = hiera('use_ovs', $use_neutron)
|
$use_ovs = hiera('use_ovs', $use_neutron)
|
||||||
$verbose = true
|
$verbose = true
|
||||||
@ -384,13 +382,18 @@ $sahara_roles = hiera('sahara_roles', ['primary-controller', 'controller'])
|
|||||||
$sahara_nodes = get_nodes_hash_by_roles($network_metadata, $sahara_roles)
|
$sahara_nodes = get_nodes_hash_by_roles($network_metadata, $sahara_roles)
|
||||||
|
|
||||||
# Define ceilometer-releated parameters
|
# Define ceilometer-releated parameters
|
||||||
$default_ceilometer_hash = {
|
$ceilometer = hiera('ceilometer', {})
|
||||||
|
$use_ceilometer = $ceilometer['enabled']
|
||||||
|
|
||||||
|
$ceilometer_defaults = {
|
||||||
'alarm_history_time_to_live' => '604800',
|
'alarm_history_time_to_live' => '604800',
|
||||||
'event_time_to_live' => '604800',
|
'event_time_to_live' => '604800',
|
||||||
'metering_time_to_live' => '604800',
|
'metering_time_to_live' => '604800',
|
||||||
'http_timeout' => '600'
|
'http_timeout' => '600',
|
||||||
|
'notification_driver' => $use_ceilometer ? { true => 'messagingv2', default => $::os_service_default },
|
||||||
}
|
}
|
||||||
$real_ceilometer_hash = merge($ceilometer_hash, $default_ceilometer_hash)
|
|
||||||
|
$real_ceilometer_hash = merge($ceilometer_defaults, $ceilometer)
|
||||||
|
|
||||||
# Define database-related variables:
|
# Define database-related variables:
|
||||||
# todo: use special node-roles instead controllers in the future
|
# todo: use special node-roles instead controllers in the future
|
||||||
|
@ -20,7 +20,7 @@ $service_endpoint = hiera('service_endpoint')
|
|||||||
$glance_hash = hiera_hash('glance', {})
|
$glance_hash = hiera_hash('glance', {})
|
||||||
$nova_hash = hiera_hash('nova', {})
|
$nova_hash = hiera_hash('nova', {})
|
||||||
$cinder_hash = hiera_hash('cinder', {})
|
$cinder_hash = hiera_hash('cinder', {})
|
||||||
$ceilometer_hash = hiera_hash('ceilometer', {})
|
$ceilometer_hash = hiera_hash('ceilometer_hash', {})
|
||||||
$syslog_log_facility = hiera('syslog_log_facility_keystone')
|
$syslog_log_facility = hiera('syslog_log_facility_keystone')
|
||||||
$rabbit_hash = hiera_hash('rabbit_hash', {})
|
$rabbit_hash = hiera_hash('rabbit_hash', {})
|
||||||
$neutron_user_password = hiera('neutron_user_password', false)
|
$neutron_user_password = hiera('neutron_user_password', false)
|
||||||
@ -139,7 +139,7 @@ class { 'openstack::keystone':
|
|||||||
public_url => $public_url,
|
public_url => $public_url,
|
||||||
admin_url => $admin_url,
|
admin_url => $admin_url,
|
||||||
internal_url => $internal_url,
|
internal_url => $internal_url,
|
||||||
ceilometer => $ceilometer_hash['enabled'],
|
notification_driver => $ceilometer_hash['notification_driver'],
|
||||||
service_workers => $service_workers,
|
service_workers => $service_workers,
|
||||||
token_provider => $token_provider,
|
token_provider => $token_provider,
|
||||||
fernet_src_repository => '/var/lib/astute/keystone',
|
fernet_src_repository => '/var/lib/astute/keystone',
|
||||||
|
@ -100,7 +100,7 @@ class {'openstack::cinder':
|
|||||||
max_pool_size => $max_pool_size,
|
max_pool_size => $max_pool_size,
|
||||||
max_overflow => $max_overflow,
|
max_overflow => $max_overflow,
|
||||||
idle_timeout => $idle_timeout,
|
idle_timeout => $idle_timeout,
|
||||||
ceilometer => $ceilometer_hash[enabled],
|
notification_driver => $ceilometer_hash['notification_driver'],
|
||||||
service_workers => $service_workers,
|
service_workers => $service_workers,
|
||||||
} # end class
|
} # end class
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ $nova_hash = hiera_hash('nova', {})
|
|||||||
$nova_config_hash = hiera_hash('nova_config', {})
|
$nova_config_hash = hiera_hash('nova_config', {})
|
||||||
$api_bind_address = get_network_role_property('nova/api', 'ipaddr')
|
$api_bind_address = get_network_role_property('nova/api', 'ipaddr')
|
||||||
$rabbit_hash = hiera_hash('rabbit_hash', {})
|
$rabbit_hash = hiera_hash('rabbit_hash', {})
|
||||||
$ceilometer_hash = hiera_hash('ceilometer',{})
|
$ceilometer_hash = hiera_hash('ceilometer_hash',{})
|
||||||
$syslog_log_facility_ceph = hiera('syslog_log_facility_ceph','LOG_LOCAL0')
|
$syslog_log_facility_ceph = hiera('syslog_log_facility_ceph','LOG_LOCAL0')
|
||||||
$workloads_hash = hiera_hash('workloads_collector', {})
|
$workloads_hash = hiera_hash('workloads_collector', {})
|
||||||
$service_endpoint = hiera('service_endpoint')
|
$service_endpoint = hiera('service_endpoint')
|
||||||
@ -149,7 +149,7 @@ class { '::openstack::controller':
|
|||||||
service_endpoint => $service_endpoint,
|
service_endpoint => $service_endpoint,
|
||||||
neutron_metadata_proxy_secret => $neutron_metadata_proxy_secret,
|
neutron_metadata_proxy_secret => $neutron_metadata_proxy_secret,
|
||||||
cinder => true,
|
cinder => true,
|
||||||
ceilometer => $ceilometer_hash[enabled],
|
ceilometer_notification_driver => $ceilometer_hash['notification_driver'],
|
||||||
service_workers => $service_workers,
|
service_workers => $service_workers,
|
||||||
use_syslog => $use_syslog,
|
use_syslog => $use_syslog,
|
||||||
use_stderr => $use_stderr,
|
use_stderr => $use_stderr,
|
||||||
|
@ -14,7 +14,7 @@ if $use_neutron {
|
|||||||
]
|
]
|
||||||
|
|
||||||
$rabbit_hash = hiera_hash('rabbit_hash', { })
|
$rabbit_hash = hiera_hash('rabbit_hash', { })
|
||||||
$ceilometer_hash = hiera_hash('ceilometer', { })
|
$ceilometer_hash = hiera_hash('ceilometer_hash', { })
|
||||||
$network_scheme = hiera_hash('network_scheme')
|
$network_scheme = hiera_hash('network_scheme')
|
||||||
|
|
||||||
$verbose = pick($openstack_network_hash['verbose'], hiera('verbose', true))
|
$verbose = pick($openstack_network_hash['verbose'], hiera('verbose', true))
|
||||||
@ -27,7 +27,6 @@ if $use_neutron {
|
|||||||
$bind_host = get_network_role_property('neutron/api', 'ipaddr')
|
$bind_host = get_network_role_property('neutron/api', 'ipaddr')
|
||||||
|
|
||||||
$base_mac = $neutron_config['L2']['base_mac']
|
$base_mac = $neutron_config['L2']['base_mac']
|
||||||
$use_ceilometer = $ceilometer_hash['enabled']
|
|
||||||
$amqp_hosts = split(hiera('amqp_hosts', ''), ',')
|
$amqp_hosts = split(hiera('amqp_hosts', ''), ',')
|
||||||
$amqp_user = $rabbit_hash['user']
|
$amqp_user = $rabbit_hash['user']
|
||||||
$amqp_password = $rabbit_hash['password']
|
$amqp_password = $rabbit_hash['password']
|
||||||
@ -99,8 +98,8 @@ if $use_neutron {
|
|||||||
neutron_config { 'DEFAULT/use_syslog_rfc_format': value => true; }
|
neutron_config { 'DEFAULT/use_syslog_rfc_format': value => true; }
|
||||||
}
|
}
|
||||||
|
|
||||||
if $use_ceilometer {
|
neutron_config {
|
||||||
neutron_config { 'DEFAULT/notification_driver': value => 'messaging' }
|
'DEFAULT/notification_driver': value => $ceilometer_hash['notification_driver'];
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -299,7 +299,7 @@ class { 'openstack::cinder':
|
|||||||
max_pool_size => $max_pool_size,
|
max_pool_size => $max_pool_size,
|
||||||
max_overflow => $max_overflow,
|
max_overflow => $max_overflow,
|
||||||
idle_timeout => $idle_timeout,
|
idle_timeout => $idle_timeout,
|
||||||
ceilometer => $ceilometer_hash[enabled],
|
notification_driver => $ceilometer_hash['notification_driver'],
|
||||||
vmware_host_ip => $vcenter_hash['host_ip'],
|
vmware_host_ip => $vcenter_hash['host_ip'],
|
||||||
vmware_host_username => $vcenter_hash['vc_user'],
|
vmware_host_username => $vcenter_hash['vc_user'],
|
||||||
vmware_host_password => $vcenter_hash['vc_password'],
|
vmware_host_password => $vcenter_hash['vc_password'],
|
||||||
|
@ -278,7 +278,7 @@ class { 'openstack::compute':
|
|||||||
cinder_iscsi_bind_addr => get_network_role_property('cinder/iscsi', 'ipaddr'),
|
cinder_iscsi_bind_addr => get_network_role_property('cinder/iscsi', 'ipaddr'),
|
||||||
cinder_user_password => $cinder_hash[user_password],
|
cinder_user_password => $cinder_hash[user_password],
|
||||||
cinder_db_password => $cinder_hash[db_password],
|
cinder_db_password => $cinder_hash[db_password],
|
||||||
ceilometer => $ceilometer_hash[enabled],
|
notification_driver => $ceilometer_hash['notification_driver'],
|
||||||
ceilometer_metering_secret => $ceilometer_hash[metering_secret],
|
ceilometer_metering_secret => $ceilometer_hash[metering_secret],
|
||||||
ceilometer_user_password => $ceilometer_hash[user_password],
|
ceilometer_user_password => $ceilometer_hash[user_password],
|
||||||
db_host => $db_host,
|
db_host => $db_host,
|
||||||
|
@ -12,6 +12,25 @@ describe provider_class do
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
let :keys do
|
||||||
|
{
|
||||||
|
'access_key' => 'accEss',
|
||||||
|
'secret_key' => 'sEcrEt'
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
let :rgw_output do
|
||||||
|
{
|
||||||
|
'keys' => [
|
||||||
|
{ 'user' => 'ceilometer' }.merge(keys)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
let :cmd do
|
||||||
|
['user', 'info', "--uid=#{user_attrs[:name]}"]
|
||||||
|
end
|
||||||
|
|
||||||
let :resource do
|
let :resource do
|
||||||
Puppet::Type::Ceilometer_radosgw_user.new(user_attrs)
|
Puppet::Type::Ceilometer_radosgw_user.new(user_attrs)
|
||||||
end
|
end
|
||||||
@ -21,6 +40,10 @@ describe provider_class do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it 'checks that resource does not exist' do
|
it 'checks that resource does not exist' do
|
||||||
|
provider.class.stubs(:rgw_adm)
|
||||||
|
.with(cmd)
|
||||||
|
.raises(Puppet::ExecutionFailure, 'could not fetch user info: no user info saved')
|
||||||
|
|
||||||
expect(provider.exists?).to eq false
|
expect(provider.exists?).to eq false
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -29,21 +52,16 @@ describe provider_class do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it 'gets access keys from config' do
|
it 'gets access keys from config' do
|
||||||
keys = {'access_key' => 'accEss', 'secret_key' => 'sEcrEt'}
|
|
||||||
mock = {'rgw_admin_credentials' => keys}
|
mock = {'rgw_admin_credentials' => keys}
|
||||||
File.expects(:exists?).with('/etc/ceilometer/ceilometer.conf').returns(true)
|
File.expects(:exists?).with('/etc/ceilometer/ceilometer.conf').returns(true)
|
||||||
Puppet::Util::IniConfig::File.expects(:new).returns(mock)
|
Puppet::Util::IniConfig::File.expects(:new).returns(mock)
|
||||||
mock.expects(:read).with('/etc/ceilometer/ceilometer.conf')
|
mock.expects(:read).with('/etc/ceilometer/ceilometer.conf')
|
||||||
expect(provider.get_access_keys_from_config).to eq(keys)
|
expect(provider.access_keys_from_config).to eq(keys)
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'gets user keys' do
|
it 'gets radosgw user keys' do
|
||||||
keys = {'access_key' => 'accEss', 'secret_key' => 'sEcrEt'}
|
|
||||||
rgw_output = {'keys' => [{'user' => 'ceilometer'}.merge(keys)]}
|
|
||||||
cmd = ['user', 'info', "--uid=ceilometer"]
|
|
||||||
|
|
||||||
provider.class.stubs(:rgw_adm).with(cmd).returns(rgw_output)
|
provider.class.stubs(:rgw_adm).with(cmd).returns(rgw_output)
|
||||||
expect(provider.get_user_keys).to eq(keys)
|
expect(provider.radosgw_user_keys).to eq(keys)
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
@ -69,7 +69,7 @@ describe manifest do
|
|||||||
|
|
||||||
revoke_driver = 'keystone.contrib.revoke.backends.sql.Revoke'
|
revoke_driver = 'keystone.contrib.revoke.backends.sql.Revoke'
|
||||||
database_idle_timeout = '3600'
|
database_idle_timeout = '3600'
|
||||||
ceilometer_hash = Noop.hiera_structure 'ceilometer'
|
ceilometer_hash = Noop.hiera 'ceilometer_hash', { 'enabled' => false }
|
||||||
token_provider = Noop.hiera('token_provider')
|
token_provider = Noop.hiera('token_provider')
|
||||||
primary_controller = Noop.hiera 'primary_controller'
|
primary_controller = Noop.hiera 'primary_controller'
|
||||||
|
|
||||||
@ -214,9 +214,9 @@ describe manifest do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if ceilometer_hash and ceilometer_hash['enabled']
|
if ceilometer_hash['enabled']
|
||||||
it 'should configure notification driver' do
|
it 'should configure notification driver' do
|
||||||
should contain_keystone_config('DEFAULT/notification_driver').with(:value => 'messagingv2')
|
should contain_keystone_config('DEFAULT/notification_driver').with(:value => ceilometer_hash['notification_driver'])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -6,6 +6,7 @@ describe manifest do
|
|||||||
shared_examples 'catalog' do
|
shared_examples 'catalog' do
|
||||||
|
|
||||||
storage_hash = Noop.hiera 'storage_hash'
|
storage_hash = Noop.hiera 'storage_hash'
|
||||||
|
ceilometer_hash = Noop.hiera 'ceilometer_hash', { 'enabled' => false }
|
||||||
|
|
||||||
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') }
|
||||||
@ -63,6 +64,16 @@ describe manifest do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
let :ceilometer_hash do
|
||||||
|
Noop.hiera 'ceilometer_hash', { 'enabled' => false }
|
||||||
|
end
|
||||||
|
|
||||||
|
if ceilometer_hash['enabled']
|
||||||
|
it 'should contain notification_driver option' do
|
||||||
|
should contain_cinder_config('DEFAULT/notification_driver').with(:value => ceilometer_hash['notification_driver'])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
test_ubuntu_and_centos manifest
|
test_ubuntu_and_centos manifest
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user