Cleanup docs, testing and missed things

The cookiecutter underwent a lot of cleanup in
docs and testing, unfortunately placement was
cut before those were merged so this applies
those changes. [1] [2] [3] [4] [5]

[1] https://review.openstack.org/#/c/624624/
[2] https://review.openstack.org/#/c/624338/
[3] https://review.openstack.org/#/c/614803/
[4] https://review.openstack.org/#/c/610859/
[5] https://review.openstack.org/#/c/622925/

Change-Id: I35903872a9cd3dcaafed4d03fc9b57f04474b087
This commit is contained in:
Tobias Urdin
2018-12-12 14:55:03 +01:00
parent d51cdf664a
commit 0c3813b05c
26 changed files with 479 additions and 490 deletions

12
examples/init.pp Normal file
View File

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

View File

@@ -5,45 +5,45 @@
# === Parameters # === Parameters
# #
# [*password*] # [*password*]
# (required) Password for connecting to Nova Placement API service in # (Required) Password for connecting to Nova Placement API service in
# admin context through the OpenStack Identity service. # admin context through the OpenStack Identity service.
# #
# [*auth_type*] # [*auth_type*]
# Name of the auth type to load (string value) # (Optional) Name of the auth type to load.
# Defaults to 'password' # Defaults to 'password'
# #
# [*project_name*] # [*project_name*]
# (optional) Project name for connecting to Nova Placement API service in # (Optional) Project name for connecting to Nova Placement API service in
# admin context through the OpenStack Identity service. # admin context through the OpenStack Identity service.
# Defaults to 'services' # Defaults to 'services'
# #
# [*project_domain_name*] # [*project_domain_name*]
# (optional) Project Domain name for connecting to Nova Placement API service in # (Optional) Project Domain name for connecting to Nova Placement API service in
# admin context through the OpenStack Identity service. # admin context through the OpenStack Identity service.
# Defaults to 'Default' # Defaults to 'Default'
# #
# [*user_domain_name*] # [*user_domain_name*]
# (optional) User Domain name for connecting to Nova Placement API service in # (Optional) User Domain name for connecting to Nova Placement API service in
# admin context through the OpenStack Identity service. # admin context through the OpenStack Identity service.
# Defaults to 'Default' # Defaults to 'Default'
# #
# [*region_name*] # [*region_name*]
# (optional) Region name for connecting to Nova Placement API service in admin context # (Optional) Region name for connecting to Nova Placement API service in admin context
# through the OpenStack Identity service. # through the OpenStack Identity service.
# Defaults to 'RegionOne' # Defaults to 'RegionOne'
# #
# [*valid_interfaces*] # [*valid_interfaces*]
# (optional) Interface names used for getting the keystone endpoint for # (Optional) Interface names used for getting the keystone endpoint for
# the placement API. Comma separated if multiple. # the placement API. Comma separated if multiple.
# Defaults to $::os_service_default # Defaults to $::os_service_default
# #
# [*username*] # [*username*]
# (optional) Username for connecting to Nova Placement API service in admin context # (Optional) Username for connecting to Nova Placement API service in admin context
# through the OpenStack Identity service. # through the OpenStack Identity service.
# Defaults to 'placement' # Defaults to 'placement'
# #
# [*auth_url*] # [*auth_url*]
# (optional) Points to the OpenStack Identity server IP and port. # (Optional) Points to the OpenStack Identity server IP and port.
# This is the Identity (keystone) admin API server IP and port value, # This is the Identity (keystone) admin API server IP and port value,
# and not the Identity service API IP and port. # and not the Identity service API IP and port.
# Defaults to 'http://127.0.0.1:5000/v3' # Defaults to 'http://127.0.0.1:5000/v3'

View File

@@ -33,15 +33,6 @@
# Only used with mysql modules >= 2.2. # Only used with mysql modules >= 2.2.
# Defaults to 'utf8_general_ci' # Defaults to 'utf8_general_ci'
# #
# == Dependencies
# Class['mysql::server']
#
# == Examples
#
# == Authors
#
# == Copyright
#
class placement::db::mysql( class placement::db::mysql(
$password, $password,
$dbname = 'placement', $dbname = 'placement',

View File

@@ -24,14 +24,6 @@
# (Optional) Privileges given to the database user. # (Optional) Privileges given to the database user.
# Default to 'ALL' # Default to 'ALL'
# #
# == Dependencies
#
# == Examples
#
# == Authors
#
# == Copyright
#
class placement::db::postgresql( class placement::db::postgresql(
$password, $password,
$dbname = 'placement', $dbname = 'placement',

View File

@@ -13,21 +13,21 @@
# === Parameters: # === Parameters:
# #
# [*package_name*] # [*package_name*]
# (mandatory) The package name (for the generic_service) # (Required) The package name (for the generic_service)
# #
# [*service_name*] # [*service_name*]
# (mandatory) The service name (for the generic_service) # (Required) The service name (for the generic_service)
# #
# [*enabled*] # [*enabled*]
# (optional) Define if the service must be enabled or not # (Optional) Define if the service must be enabled or not
# Defaults to false. # Defaults to false.
# #
# [*manage_service*] # [*manage_service*]
# (optional) Manage or not the service (if a service_name is provided). # (Optional) Manage or not the service (if a service_name is provided).
# Defaults to true. # Defaults to true.
# #
# [*ensure_package*] # [*ensure_package*]
# (optional) Control the ensure parameter for the package resource. # (Optional) Control the ensure parameter for the package resource.
# Defaults to 'present'. # Defaults to 'present'.
# #
define placement::generic_service( define placement::generic_service(

View File

@@ -5,7 +5,7 @@
# === Parameters # === Parameters
# #
# [*ensure_package*] # [*ensure_package*]
# (optional) The state of nova packages # (Optional) The state of nova packages
# Defaults to 'present' # Defaults to 'present'
# #
# [*sync_db*] # [*sync_db*]
@@ -15,7 +15,6 @@
class placement( class placement(
$ensure_package = 'present', $ensure_package = 'present',
$sync_db = true, $sync_db = true,
) inherits placement::params { ) inherits placement::params {
include ::placement::deps include ::placement::deps

View File

@@ -5,22 +5,27 @@
# === Parameters # === Parameters
# #
# [*password*] # [*password*]
# (required) Password for placement user. # (Required) Password for placement user.
# #
# [*ensure*] # [*ensure*]
# (optional) Ensure state of keystone service identity. Defaults to 'present'. # (Optional) Ensure state of keystone service identity.
# Defaults to 'present'.
# #
# [*auth_name*] # [*auth_name*]
# Username for placement service. Defaults to 'placement'. # (Optional) Username for placement service.
# Defaults to 'placement'.
# #
# [*email*] # [*email*]
# Email for placement user. Defaults to 'placement@localhost'. # (Optional) Email for placement user.
# Defaults to 'placement@localhost'.
# #
# [*tenant*] # [*tenant*]
# Tenant for placement user. Defaults to 'services'. # (Optional) Tenant for placement user.
# Defaults to 'services'.
# #
# [*configure_endpoint*] # [*configure_endpoint*]
# Should placement endpoint be configured? Defaults to 'true'. # (Optional) Should placement endpoint be configured?
# Defaults to true.
# #
# [*configure_user*] # [*configure_user*]
# (Optional) Should the service user be configured? # (Optional) Should the service user be configured?
@@ -31,29 +36,34 @@
# Defaults to 'true'. # Defaults to 'true'.
# #
# [*service_type*] # [*service_type*]
# Type of service. Defaults to 'placement'. # (Optional) Type of service.
# Defaults to 'placement'.
# #
# [*region*] # [*region*]
# Region for endpoint. Defaults to 'RegionOne'. # (Optional) Region for endpoint.
# Defaults to 'RegionOne'.
# #
# [*service_name*] # [*service_name*]
# (optional) Name of the service. # (Optional) Name of the service.
# Defaults to the value of 'placement'. # Defaults to the value of 'placement'.
# #
# [*service_description*] # [*service_description*]
# (optional) Description of the service. # (Optional) Description of the service.
# Default to 'Placement Service' # Defaults to 'Placement Service'
# #
# [*public_url*] # [*public_url*]
# (optional) The endpoint's public url. (Defaults to 'http://127.0.0.1/placement') # (Optional) The endpoint's public url.
# Defaults to 'http://127.0.0.1/placement'
# This url should *not* contain any trailing '/'. # This url should *not* contain any trailing '/'.
# #
# [*admin_url*] # [*admin_url*]
# (optional) The endpoint's admin url. (Defaults to 'http://127.0.0.1/placement') # (Optional) The endpoint's admin url.
# Defaults to 'http://127.0.0.1/placement'
# This url should *not* contain any trailing '/'. # This url should *not* contain any trailing '/'.
# #
# [*internal_url*] # [*internal_url*]
# (optional) The endpoint's internal url. (Defaults to 'http://127.0.0.1/placement') # (Optional) The endpoint's internal url.
# Defaults to 'http://127.0.0.1/placement'
# #
class placement::keystone::auth ( class placement::keystone::auth (
$password, $password,

View File

@@ -232,4 +232,3 @@ class placement::keystone::authtoken(
token_cache_time => $token_cache_time, token_cache_time => $token_cache_time,
} }
} }

View File

@@ -21,7 +21,7 @@
# Defaults to $::os_service_default # Defaults to $::os_service_default
# #
# [*use_stderr*] # [*use_stderr*]
# (optional) Use stderr for logging # (Optional) Use stderr for logging
# Defaults to $::os_service_default # Defaults to $::os_service_default
# #
# [*syslog_log_facility*] # [*syslog_log_facility*]
@@ -29,43 +29,43 @@
# Defaults to $::os_service_default # Defaults to $::os_service_default
# #
# [*log_dir*] # [*log_dir*]
# (optional) Directory where logs should be stored. # (Optional) Directory where logs should be stored.
# If set to boolean false, it will not log to any directory. # If set to boolean false, it will not log to any directory.
# Defaults to '/var/log/placement'. # Defaults to '/var/log/placement'.
# #
# [*log_file*] # [*log_file*]
# (optional) File where logs should be stored. # (Optional) File where logs should be stored.
# Defaults to '/var/log/placement/placement.log' # Defaults to '/var/log/placement/placement.log'
# #
# [*logging_context_format_string*] # [*logging_context_format_string*]
# (optional) Format string to use for log messages with context. # (Optional) Format string to use for log messages with context.
# Defaults to $::os_service_default # Defaults to $::os_service_default
# Example: '%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s\ # Example: '%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s\
# [%(request_id)s %(user_identity)s] %(instance)s%(message)s' # [%(request_id)s %(user_identity)s] %(instance)s%(message)s'
# #
# [*logging_default_format_string*] # [*logging_default_format_string*]
# (optional) Format string to use for log messages without context. # (Optional) Format string to use for log messages without context.
# Defaults to $::os_service_default # Defaults to $::os_service_default
# Example: '%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s\ # Example: '%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s\
# [-] %(instance)s%(message)s' # [-] %(instance)s%(message)s'
# #
# [*logging_debug_format_suffix*] # [*logging_debug_format_suffix*]
# (optional) Formatted data to append to log format when level is DEBUG. # (Optional) Formatted data to append to log format when level is DEBUG.
# Defaults to $::os_service_default # Defaults to $::os_service_default
# Example: '%(funcName)s %(pathname)s:%(lineno)d' # Example: '%(funcName)s %(pathname)s:%(lineno)d'
# #
# [*logging_exception_prefix*] # [*logging_exception_prefix*]
# (optional) Prefix each line of exception output with this format. # (Optional) Prefix each line of exception output with this format.
# Defaults to $::os_service_default # Defaults to $::os_service_default
# Example: '%(asctime)s.%(msecs)03d %(process)d TRACE %(name)s %(instance)s' # Example: '%(asctime)s.%(msecs)03d %(process)d TRACE %(name)s %(instance)s'
# #
# [*log_config_append*] # [*log_config_append*]
# (optional) The name of an additional logging configuration file. # (Optional) The name of an additional logging configuration file.
# Defaults to $::os_service_default # Defaults to $::os_service_default
# See https://docs.python.org/2/howto/logging.html # See https://docs.python.org/2/howto/logging.html
# #
# [*default_log_levels*] # [*default_log_levels*]
# (optional) Hash of logger (keys) and level (values) pairs. # (Optional) Hash of logger (keys) and level (values) pairs.
# Defaults to $::os_service_default # Defaults to $::os_service_default
# Example: # Example:
# { 'amqp' => 'WARN', 'amqplib' => 'WARN', 'boto' => 'WARN', # { 'amqp' => 'WARN', 'amqplib' => 'WARN', 'boto' => 'WARN',
@@ -77,30 +77,30 @@
# 'routes.middleware' => 'WARN', stevedore => 'WARN' } # 'routes.middleware' => 'WARN', stevedore => 'WARN' }
# #
# [*publish_errors*] # [*publish_errors*]
# (optional) Publish error events (boolean value). # (Optional) Publish error events (boolean value).
# Defaults to $::os_service_default # Defaults to $::os_service_default
# #
# [*fatal_deprecations*] # [*fatal_deprecations*]
# (optional) Make deprecations fatal (boolean value) # (Optional) Make deprecations fatal (boolean value)
# Defaults to $::os_service_default # Defaults to $::os_service_default
# #
# [*instance_format*] # [*instance_format*]
# (optional) If an instance is passed with the log message, format it # (Optional) If an instance is passed with the log message, format it
# like this (string value). # like this (string value).
# Defaults to undef. # Defaults to undef.
# Example: '[instance: %(uuid)s] ' # Example: '[instance: %(uuid)s] '
# #
# [*instance_uuid_format*] # [*instance_uuid_format*]
# (optional) If an instance UUID is passed with the log message, format # (Optional) If an instance UUID is passed with the log message, format
# it like this (string value). # it like this (string value).
# Defaults to $::os_service_default # Defaults to $::os_service_default
# Example: instance_uuid_format='[instance: %(uuid)s] ' # Example: instance_uuid_format='[instance: %(uuid)s] '
# #
# [*log_date_format*] # [*log_date_format*]
# (optional) Format string for %%(asctime)s in log records. # (Optional) Format string for %%(asctime)s in log records.
# Defaults to $::os_service_default # Defaults to $::os_service_default
# Example: 'Y-%m-%d %H:%M:%S' # Example: 'Y-%m-%d %H:%M:%S'
#
class placement::logging( class placement::logging(
$use_syslog = $::os_service_default, $use_syslog = $::os_service_default,
$use_json = $::os_service_default, $use_json = $::os_service_default,

View File

@@ -3,13 +3,14 @@
class placement::params { class placement::params {
include ::placement::deps include ::placement::deps
include ::openstacklib::defaults include ::openstacklib::defaults
if ($::os_package_type == 'debian') or ($::operatingsystem == 'Fedora') { if ($::os_package_type == 'debian') or ($::operatingsystem == 'Fedora') {
$pyvers = '3' $pyvers = '3'
} else { } else {
$pyvers = '2' $pyvers = '2'
} }
$group = 'placement' $group = 'placement'
case $::osfamily { case $::osfamily {
@@ -25,7 +26,6 @@ class placement::params {
$wsgi_script_source = '/usr/bin/placement-api' $wsgi_script_source = '/usr/bin/placement-api'
$wsgi_script_path = '/var/www/cgi-bin/placement' $wsgi_script_path = '/var/www/cgi-bin/placement'
$httpd_config_file = '/etc/httpd/conf.d/00-placement-api.conf' $httpd_config_file = '/etc/httpd/conf.d/00-placement-api.conf'
} }
'Debian': { 'Debian': {
$package_name = 'placement-api' $package_name = 'placement-api'

View File

@@ -5,7 +5,7 @@
# === Parameters # === Parameters
# #
# [*policies*] # [*policies*]
# (optional) Set of policies to configure for placement # (Optional) Set of policies to configure for placement
# Example : # Example :
# { # {
# 'placement-context_is_admin' => { # 'placement-context_is_admin' => {
@@ -20,7 +20,7 @@
# Defaults to empty hash. # Defaults to empty hash.
# #
# [*policy_path*] # [*policy_path*]
# (optional) Path to the nova policy.json file # (Optional) Path to the nova policy.json file
# Defaults to /etc/placement/policy.json # Defaults to /etc/placement/policy.json
# #
class placement::policy ( class placement::policy (

View File

@@ -23,43 +23,43 @@
# == Parameters # == Parameters
# #
# [*servername*] # [*servername*]
# The servername for the virtualhost. # (Optional) The servername for the virtualhost.
# Optional. Defaults to $::fqdn # Defaults to $::fqdn
# #
# [*api_port*] # [*api_port*]
# The port for Placement API service. # (Optional) The port for Placement API service.
# Optional. Defaults to 80 # Defaults to 80
# #
# [*bind_host*] # [*bind_host*]
# The host/ip address Apache will listen on. # (Optional) The host/ip address Apache will listen on.
# Optional. Defaults to undef (listen on all ip addresses). # Defaults to undef (listen on all ip addresses).
# #
# [*path*] # [*path*]
# The prefix for the endpoint. # (Optional) The prefix for the endpoint.
# Optional. Defaults to '/placement' # Defaults to '/placement'
# #
# [*ssl*] # [*ssl*]
# Use ssl ? (boolean) # (Optional) Use ssl ? (boolean)
# Optional. Defaults to true # Defaults to true
# #
# [*workers*] # [*workers*]
# Number of WSGI workers to spawn. # (Optional) Number of WSGI workers to spawn.
# Optional. Defaults to 1 # Defaults to 1
# #
# [*priority*] # [*priority*]
# (optional) The priority for the vhost. # (Optional) The priority for the vhost.
# Defaults to '10' # Defaults to '10'
# #
# [*threads*] # [*threads*]
# (optional) The number of threads for the vhost. # (Optional) The number of threads for the vhost.
# Defaults to $::os_workers # Defaults to $::os_workers
# #
# [*wsgi_process_display_name*] # [*wsgi_process_display_name*]
# (optional) Name of the WSGI process display-name. # (Optional) Name of the WSGI process display-name.
# Defaults to undef # Defaults to undef
# #
# [*ensure_package*] # [*ensure_package*]
# (optional) Control the ensure parameter for the Placement API package ressource. # (Optional) Control the ensure parameter for the Placement API package ressource.
# Defaults to 'present' # Defaults to 'present'
# #
# [*ssl_cert*] # [*ssl_cert*]
@@ -69,8 +69,8 @@
# [*ssl_crl_path*] # [*ssl_crl_path*]
# [*ssl_crl*] # [*ssl_crl*]
# [*ssl_certs_dir*] # [*ssl_certs_dir*]
# apache::vhost ssl parameters. # (Optional) apache::vhost ssl parameters.
# Optional. Default to apache::vhost 'ssl_*' defaults. # Default to apache::vhost 'ssl_*' defaults.
# #
# == Examples # == Examples
# #

View File

@@ -7,23 +7,23 @@
}, },
{ {
"name": "puppetlabs/stdlib", "name": "puppetlabs/stdlib",
"version_requirement": ">=4.0.0 <5.0.0" "version_requirement": ">=5.0.0 <6.0.0"
}, },
{ {
"name": "openstack/keystone", "name": "openstack/keystone",
"version_requirement": ">=11.0.0 <12.0.0" "version_requirement": ">=14.1.0 <15.0.0"
}, },
{ {
"name": "openstack/openstacklib", "name": "openstack/openstacklib",
"version_requirement": ">=11.0.0 <12.0.0" "version_requirement": ">=14.1.0 <15.0.0"
}, },
{ {
"name": "openstack/oslo", "name": "openstack/oslo",
"version_requirement": ">=11.0.0 <12.0.0" "version_requirement": ">=14.1.0 <15.0.0"
}, },
{ {
"name": "puppetlabs/apache", "name": "puppetlabs/apache",
"version_requirement": ">=1.0.0 <2.0.0" "version_requirement": ">=3.0.0"
} }
], ],
"description": "Installs and configures OpenStack Placement.", "description": "Installs and configures OpenStack Placement.",

View File

@@ -4,7 +4,7 @@ summary = Puppet module for OpenStack placement
description-file = description-file =
README.md README.md
author = OpenStack author = OpenStack
author-email = openstack-dicuss@lists.openstack.org author-email = openstack-discuss@lists.openstack.org
home-page = https://docs.openstack.org/puppet-openstack-guide/latest home-page = https://docs.openstack.org/puppet-openstack-guide/latest
classifier = classifier =
Intended Audience :: Developers Intended Audience :: Developers

View File

@@ -1,9 +1,9 @@
require 'spec_helper' require 'spec_helper'
describe 'placement::config' do describe 'placement::config' do
let :default_params do let :default_params do
{ :auth_type => 'password', {
:auth_type => 'password',
:project_name => 'services', :project_name => 'services',
:project_domain_name => 'Default', :project_domain_name => 'Default',
:region_name => 'RegionOne', :region_name => 'RegionOne',
@@ -14,23 +14,24 @@ describe 'placement::config' do
end end
let :params do let :params do
{ :password => 's3cr3t' } {
:password => 's3cr3t'
}
end end
shared_examples 'placement::config' do shared_examples 'placement::config' do
context 'with required parameters' do context 'with required parameters' do
it 'configures [placement] parameters in placement.conf' do it {
is_expected.to contain_placement_config('placement/password').with_value(params[:password]).with_secret(true) should contain_placement_config('placement/password').with_value(params[:password]).with_secret(true)
is_expected.to contain_placement_config('placement/auth_type').with_value(default_params[:auth_type]) should contain_placement_config('placement/auth_type').with_value(default_params[:auth_type])
is_expected.to contain_placement_config('placement/project_name').with_value(default_params[:project_name]) should contain_placement_config('placement/project_name').with_value(default_params[:project_name])
is_expected.to contain_placement_config('placement/project_domain_name').with_value(default_params[:project_domain_name]) should contain_placement_config('placement/project_domain_name').with_value(default_params[:project_domain_name])
is_expected.to contain_placement_config('placement/region_name').with_value(default_params[:region_name]) should contain_placement_config('placement/region_name').with_value(default_params[:region_name])
is_expected.to contain_placement_config('placement/valid_interfaces').with_value('<SERVICE DEFAULT>') should contain_placement_config('placement/valid_interfaces').with_value('<SERVICE DEFAULT>')
is_expected.to contain_placement_config('placement/username').with_value(default_params[:username]) should contain_placement_config('placement/username').with_value(default_params[:username])
is_expected.to contain_placement_config('placement/user_domain_name').with_value(default_params[:user_domain_name]) should contain_placement_config('placement/user_domain_name').with_value(default_params[:user_domain_name])
is_expected.to contain_placement_config('placement/auth_url').with_value(default_params[:auth_url]) should contain_placement_config('placement/auth_url').with_value(default_params[:auth_url])
end }
end end
context 'when overriding class parameters' do context 'when overriding class parameters' do
@@ -47,17 +48,17 @@ describe 'placement::config' do
) )
end end
it 'configures [placement] parameters in placement.conf' do it {
is_expected.to contain_placement_config('placement/password').with_value(params[:password]).with_secret(true) should contain_placement_config('placement/password').with_value(params[:password]).with_secret(true)
is_expected.to contain_placement_config('placement/auth_type').with_value(params[:auth_type]) should contain_placement_config('placement/auth_type').with_value(params[:auth_type])
is_expected.to contain_placement_config('placement/project_name').with_value(params[:project_name]) should contain_placement_config('placement/project_name').with_value(params[:project_name])
is_expected.to contain_placement_config('placement/project_domain_name').with_value(params[:project_domain_name]) should contain_placement_config('placement/project_domain_name').with_value(params[:project_domain_name])
is_expected.to contain_placement_config('placement/region_name').with_value(params[:region_name]) should contain_placement_config('placement/region_name').with_value(params[:region_name])
is_expected.to contain_placement_config('placement/valid_interfaces').with_value(params[:valid_interfaces]) should contain_placement_config('placement/valid_interfaces').with_value(params[:valid_interfaces])
is_expected.to contain_placement_config('placement/username').with_value(params[:username]) should contain_placement_config('placement/username').with_value(params[:username])
is_expected.to contain_placement_config('placement/user_domain_name').with_value(params[:user_domain_name]) should contain_placement_config('placement/user_domain_name').with_value(params[:user_domain_name])
is_expected.to contain_placement_config('placement/auth_url').with_value(params[:auth_url]) should contain_placement_config('placement/auth_url').with_value(params[:auth_url])
end }
end end
end end

View File

@@ -1,22 +1,19 @@
require 'spec_helper' require 'spec_helper'
describe 'placement::db::mysql' do describe 'placement::db::mysql' do
let :pre_condition do let :pre_condition do
'include mysql::server' 'include mysql::server'
end end
let :required_params do
{ :password => 'fooboozoo_default_password', }
end
shared_examples_for 'placement-db-mysql' do
context 'with only required params' do
let :params do let :params do
required_params {
:password => 'fooboozoo_default_password',
}
end end
it { is_expected.to contain_openstacklib__db__mysql('placement').with( shared_examples 'placement::db::mysql' do
context 'with only required params' do
it { should contain_openstacklib__db__mysql('placement').with(
:user => 'placement', :user => 'placement',
:password_hash => '*3DDF34A86854A312A8E2C65B506E21C91800D206', :password_hash => '*3DDF34A86854A312A8E2C65B506E21C91800D206',
:dbname => 'placement', :dbname => 'placement',
@@ -27,11 +24,11 @@ describe 'placement::db::mysql' do
end end
context 'overriding allowed_hosts param to array' do context 'overriding allowed_hosts param to array' do
let :params do before do
{ :allowed_hosts => ['127.0.0.1','%'] }.merge(required_params) params.merge!( :allowed_hosts => ['127.0.0.1', '%'] )
end end
it { is_expected.to contain_openstacklib__db__mysql('placement').with( it { should contain_openstacklib__db__mysql('placement').with(
:user => 'placement', :user => 'placement',
:password_hash => '*3DDF34A86854A312A8E2C65B506E21C91800D206', :password_hash => '*3DDF34A86854A312A8E2C65B506E21C91800D206',
:dbname => 'placement', :dbname => 'placement',
@@ -43,11 +40,11 @@ describe 'placement::db::mysql' do
end end
describe 'overriding allowed_hosts param to string' do describe 'overriding allowed_hosts param to string' do
let :params do before do
{ :allowed_hosts => '192.168.1.1' }.merge(required_params) params.merge!( :allowed_hosts => '192.168.1.1' )
end end
it { is_expected.to contain_openstacklib__db__mysql('placement').with( it { should contain_openstacklib__db__mysql('placement').with(
:user => 'placement', :user => 'placement',
:password_hash => '*3DDF34A86854A312A8E2C65B506E21C91800D206', :password_hash => '*3DDF34A86854A312A8E2C65B506E21C91800D206',
:dbname => 'placement', :dbname => 'placement',
@@ -67,7 +64,7 @@ describe 'placement::db::mysql' do
facts.merge!(OSDefaults.get_facts()) facts.merge!(OSDefaults.get_facts())
end end
it_behaves_like 'placement-db-mysql' it_behaves_like 'placement::db::mysql'
end end
end end
end end

View File

@@ -1,22 +1,19 @@
require 'spec_helper' require 'spec_helper'
describe 'placement::db::postgresql' do describe 'placement::db::postgresql' do
let :pre_condition do let :pre_condition do
'include postgresql::server' 'include postgresql::server'
end end
let :required_params do
{ :password => 'pw' }
end
shared_examples_for 'placement-db-postgresql' do
context 'with only required parameters' do
let :params do let :params do
required_params {
:password => 'pw'
}
end end
it { is_expected.to contain_postgresql__server__db('placement').with( shared_examples 'placement::db::postgresql' do
context 'with only required parameters' do
it { should contain_postgresql__server__db('placement').with(
:user => 'placement', :user => 'placement',
:password => 'md51c1dd6fb4863b046eecc6a6b91f53f7f' :password => 'md51c1dd6fb4863b046eecc6a6b91f53f7f'
)} )}
@@ -28,10 +25,10 @@ describe 'placement::db::postgresql' do
}).each do |os,facts| }).each do |os,facts|
context "on #{os}" do context "on #{os}" do
let (:facts) do let (:facts) do
facts.merge!(OSDefaults.get_facts({ :concat_basedir => '/var/lib/puppet/concat' })) facts.merge!(OSDefaults.get_facts( :concat_basedir => '/var/lib/puppet/concat' ))
end end
it_behaves_like 'placement-db-postgresql' it_behaves_like 'placement::db::postgresql'
end end
end end
end end

View File

@@ -3,43 +3,47 @@ require 'spec_helper'
describe 'placement::db' do describe 'placement::db' do
shared_examples 'placement::db' do shared_examples 'placement::db' do
context 'with default parameters' do context 'with default parameters' do
it 'configures placement_database' do it { should contain_placement_config('placement_database/connection').with_value('sqlite:////var/lib/placement/placement.sqlite') }
is_expected.to contain_placement_config('placement_database/connection').with_value('sqlite:////var/lib/placement/placement.sqlite')
end
end end
context 'with specific parameters' do context 'with specific parameters' do
let :params do let :params do
{ :database_connection => 'mysql+pymysql://placement:placement@localhost/placement', {
:database_connection => 'mysql+pymysql://placement:placement@localhost/placement',
} }
end end
it 'configures placement_database' do
is_expected.to contain_placement_config('placement_database/connection').with_value('mysql+pymysql://placement:placement@localhost/placement') it { should contain_placement_config('placement_database/connection').with_value('mysql+pymysql://placement:placement@localhost/placement') }
end
end end
context 'with incorrect database_connection string' do context 'with incorrect database_connection string' do
let :params do let :params do
{ :database_connection => 'foodb://placement:placement@localhost/placement', } {
:database_connection => 'foodb://placement:placement@localhost/placement',
}
end end
it_raises 'a Puppet::Error', /validate_re/ it { should raise_error(Puppet::Error, /validate_re/) }
end end
context 'with incorrect pymysql database_connection string' do context 'with incorrect pymysql database_connection string' do
let :params do let :params do
{ :database_connection => 'foo+pymysql://placement:placement@localhost/placement', } {
:database_connection => 'foo+pymysql://placement:placement@localhost/placement',
}
end end
it_raises 'a Puppet::Error', /validate_re/ it { should raise_error(Puppet::Error, /validate_re/) }
end end
end end
shared_examples_for 'placement::db on Debian' do shared_examples 'placement::db on Debian' do
context 'using pymysql driver' do context 'using pymysql driver' do
let :params do let :params do
{ :database_connection => 'mysql+pymysql://placement:placement@localhost/placement', } {
:database_connection => 'mysql+pymysql://placement:placement@localhost/placement',
}
end end
end end
end end
@@ -47,7 +51,9 @@ describe 'placement::db' do
shared_examples_for 'placement::db on RedHat' do shared_examples_for 'placement::db on RedHat' do
context 'using pymysql driver' do context 'using pymysql driver' do
let :params do let :params do
{ :database_connection => 'mysql+pymysql://placement:placement@localhost/placement', } {
:database_connection => 'mysql+pymysql://placement:placement@localhost/placement',
}
end end
end end
end end
@@ -60,8 +66,8 @@ describe 'placement::db' do
facts.merge!(OSDefaults.get_facts()) facts.merge!(OSDefaults.get_facts())
end end
it_configures 'placement::db' it_behaves_like 'placement::db'
it_configures "placement::db on #{facts[:osfamily]}" it_behaves_like "placement::db on #{facts[:osfamily]}"
end end
end end
end end

View File

@@ -1,11 +1,8 @@
require 'spec_helper' require 'spec_helper'
describe 'placement::db::sync' do describe 'placement::db::sync' do
shared_examples 'placement::db::sync' do
shared_examples_for 'placement-manage-db-sync' do it { is_expected.to contain_exec('placement-manage-db-sync').with(
it 'runs placement-manage-db-sync' do
is_expected.to contain_exec('placement-manage-db-sync').with(
:command => 'placement-manage db sync', :command => 'placement-manage db sync',
:path => [ '/bin', '/usr/bin', '/usr/local/bin'], :path => [ '/bin', '/usr/bin', '/usr/local/bin'],
:refreshonly => 'true', :refreshonly => 'true',
@@ -19,9 +16,7 @@ describe 'placement::db::sync' do
'Anchor[placement::dbsync::begin]'], 'Anchor[placement::dbsync::begin]'],
:notify => 'Anchor[placement::dbsync::end]', :notify => 'Anchor[placement::dbsync::end]',
:tag => ['placement-exec', 'openstack-db'] :tag => ['placement-exec', 'openstack-db']
) )}
end
end end
on_supported_os({ on_supported_os({
@@ -29,14 +24,10 @@ describe 'placement::db::sync' do
}).each do |os,facts| }).each do |os,facts|
context "on #{os}" do context "on #{os}" do
let (:facts) do let (:facts) do
facts.merge(OSDefaults.get_facts({ facts.merge(OSDefaults.get_facts())
:os_workers => 8,
:concat_basedir => '/var/lib/puppet/concat'
}))
end end
it_configures 'placement-manage-db-sync' it_behaves_like 'placement::db::sync'
end end
end end
end end

View File

@@ -1,83 +1,86 @@
#
# Unit tests for placement::keystone::auth
#
require 'spec_helper' require 'spec_helper'
describe 'placement::keystone::auth' do describe 'placement::keystone::auth' do
shared_examples_for 'placement-keystone-auth' do shared_examples 'placement::keystone::auth' do
context 'with default class parameters' do context 'with default class parameters' do
let :params do let :params do
{ :password => 'placement_password', {
:tenant => 'foobar' } :password => 'placement_password',
:tenant => 'foobar'
}
end end
it { is_expected.to contain_keystone_user('placement').with( it { should contain_keystone_user('placement').with(
:ensure => 'present', :ensure => 'present',
:password => 'placement_password', :password => 'placement_password',
) } )}
it { is_expected.to contain_keystone_user_role('placement@foobar').with( it { should contain_keystone_user_role('placement@foobar').with(
:ensure => 'present', :ensure => 'present',
:roles => ['admin'] :roles => ['admin']
)} )}
it { is_expected.to contain_keystone_service('placement::placement').with( it { should contain_keystone_service('placement::placement').with(
:ensure => 'present', :ensure => 'present',
:description => 'Placement Service' :description => 'Placement Service'
) } )}
it { is_expected.to contain_keystone_endpoint('RegionOne/placement::placement').with( it { should contain_keystone_endpoint('RegionOne/placement::placement').with(
:ensure => 'present', :ensure => 'present',
:public_url => 'http://127.0.0.1/placement', :public_url => 'http://127.0.0.1/placement',
:admin_url => 'http://127.0.0.1/placement', :admin_url => 'http://127.0.0.1/placement',
:internal_url => 'http://127.0.0.1/placement', :internal_url => 'http://127.0.0.1/placement',
) } )}
end end
context 'when overriding URL parameters' do context 'when overriding URL parameters' do
let :params do let :params do
{ :password => 'placement_password', {
:password => 'placement_password',
:public_url => 'https://10.10.10.10:80', :public_url => 'https://10.10.10.10:80',
:internal_url => 'http://10.10.10.11:81', :internal_url => 'http://10.10.10.11:81',
:admin_url => 'http://10.10.10.12:81', } :admin_url => 'http://10.10.10.12:81',
}
end end
it { is_expected.to contain_keystone_endpoint('RegionOne/placement::placement').with( it { should contain_keystone_endpoint('RegionOne/placement::placement').with(
:ensure => 'present', :ensure => 'present',
:public_url => 'https://10.10.10.10:80', :public_url => 'https://10.10.10.10:80',
:internal_url => 'http://10.10.10.11:81', :internal_url => 'http://10.10.10.11:81',
:admin_url => 'http://10.10.10.12:81', :admin_url => 'http://10.10.10.12:81',
) } )}
end end
context 'when overriding auth name' do context 'when overriding auth name' do
let :params do let :params do
{ :password => 'foo', {
:auth_name => 'placementy' } :password => 'foo',
:auth_name => 'placementy'
}
end end
it { is_expected.to contain_keystone_user('placementy') } it { should contain_keystone_user('placementy') }
it { is_expected.to contain_keystone_user_role('placementy@services') } it { should contain_keystone_user_role('placementy@services') }
it { is_expected.to contain_keystone_service('placement::placement') } it { should contain_keystone_service('placement::placement') }
it { is_expected.to contain_keystone_endpoint('RegionOne/placement::placement') } it { should contain_keystone_endpoint('RegionOne/placement::placement') }
end end
context 'when overriding service name' do context 'when overriding service name' do
let :params do let :params do
{ :service_name => 'placement_service', {
:service_name => 'placement_service',
:auth_name => 'placement', :auth_name => 'placement',
:password => 'placement_password' } :password => 'placement_password'
}
end end
it { is_expected.to contain_keystone_user('placement') } it { should contain_keystone_user('placement') }
it { is_expected.to contain_keystone_user_role('placement@services') } it { should contain_keystone_user_role('placement@services') }
it { is_expected.to contain_keystone_service('placement_service::placement') } it { should contain_keystone_service('placement_service::placement') }
it { is_expected.to contain_keystone_endpoint('RegionOne/placement_service::placement') } it { should contain_keystone_endpoint('RegionOne/placement_service::placement') }
end end
context 'when disabling user configuration' do context 'when disabling user configuration' do
let :params do let :params do
{ {
:password => 'placement_password', :password => 'placement_password',
@@ -85,17 +88,16 @@ describe 'placement::keystone::auth' do
} }
end end
it { is_expected.not_to contain_keystone_user('placement') } it { should_not contain_keystone_user('placement') }
it { is_expected.to contain_keystone_user_role('placement@services') } it { should contain_keystone_user_role('placement@services') }
it { is_expected.to contain_keystone_service('placement::placement').with(
it { should contain_keystone_service('placement::placement').with(
:ensure => 'present', :ensure => 'present',
:description => 'Placement Service' :description => 'Placement Service'
) } )}
end end
context 'when disabling user and user role configuration' do context 'when disabling user and user role configuration' do
let :params do let :params do
{ {
:password => 'placement_password', :password => 'placement_password',
@@ -104,17 +106,16 @@ describe 'placement::keystone::auth' do
} }
end end
it { is_expected.not_to contain_keystone_user('placement') } it { should_not contain_keystone_user('placement') }
it { is_expected.not_to contain_keystone_user_role('placement@services') } it { should_not contain_keystone_user_role('placement@services') }
it { is_expected.to contain_keystone_service('placement::placement').with(
it { should contain_keystone_service('placement::placement').with(
:ensure => 'present', :ensure => 'present',
:description => 'Placement Service' :description => 'Placement Service'
) } )}
end end
context 'when using ensure absent' do context 'when using ensure absent' do
let :params do let :params do
{ {
:password => 'placement_password', :password => 'placement_password',
@@ -122,8 +123,7 @@ describe 'placement::keystone::auth' do
} }
end end
it { is_expected.to contain_keystone__resource__service_identity('placement').with_ensure('absent') } it { should contain_keystone__resource__service_identity('placement').with_ensure('absent') }
end end
end end
@@ -135,7 +135,7 @@ describe 'placement::keystone::auth' do
facts.merge!(OSDefaults.get_facts()) facts.merge!(OSDefaults.get_facts())
end end
it_behaves_like 'placement-keystone-auth' it_behaves_like 'placement::keystone::auth'
end end
end end
end end

View File

@@ -1,16 +1,15 @@
require 'spec_helper' require 'spec_helper'
describe 'placement::keystone::authtoken' do describe 'placement::keystone::authtoken' do
let :params do let :params do
{ :password => 'secrete', } {
:password => 'secrete',
}
end end
shared_examples 'placement authtoken' do shared_examples 'placement::keystone::authtoken' do
context 'with default parameters' do context 'with default parameters' do
it {
it 'configure keystone_authtoken' do
is_expected.to contain_placement_config('keystone_authtoken/username').with_value('placement') is_expected.to contain_placement_config('keystone_authtoken/username').with_value('placement')
is_expected.to contain_placement_config('keystone_authtoken/password').with_value('secrete') is_expected.to contain_placement_config('keystone_authtoken/password').with_value('secrete')
is_expected.to contain_placement_config('keystone_authtoken/auth_url').with_value('http://localhost:5000') is_expected.to contain_placement_config('keystone_authtoken/auth_url').with_value('http://localhost:5000')
@@ -42,7 +41,7 @@ describe 'placement::keystone::authtoken' do
is_expected.to contain_placement_config('keystone_authtoken/memcached_servers').with_value('<SERVICE DEFAULT>') is_expected.to contain_placement_config('keystone_authtoken/memcached_servers').with_value('<SERVICE DEFAULT>')
is_expected.to contain_placement_config('keystone_authtoken/region_name').with_value('<SERVICE DEFAULT>') is_expected.to contain_placement_config('keystone_authtoken/region_name').with_value('<SERVICE DEFAULT>')
is_expected.to contain_placement_config('keystone_authtoken/token_cache_time').with_value('<SERVICE DEFAULT>') is_expected.to contain_placement_config('keystone_authtoken/token_cache_time').with_value('<SERVICE DEFAULT>')
end }
end end
context 'when overriding parameters' do context 'when overriding parameters' do
@@ -83,7 +82,7 @@ describe 'placement::keystone::authtoken' do
}) })
end end
it 'configure keystone_authtoken' do it {
is_expected.to contain_placement_config('keystone_authtoken/www_authenticate_uri').with_value('https://10.0.0.1:9999/') is_expected.to contain_placement_config('keystone_authtoken/www_authenticate_uri').with_value('https://10.0.0.1:9999/')
is_expected.to contain_placement_config('keystone_authtoken/username').with_value(params[:username]) is_expected.to contain_placement_config('keystone_authtoken/username').with_value(params[:username])
is_expected.to contain_placement_config('keystone_authtoken/password').with_value(params[:password]).with_secret(true) is_expected.to contain_placement_config('keystone_authtoken/password').with_value(params[:password]).with_secret(true)
@@ -115,11 +114,9 @@ describe 'placement::keystone::authtoken' do
is_expected.to contain_placement_config('keystone_authtoken/memcached_servers').with_value('memcached01:11211,memcached02:11211') is_expected.to contain_placement_config('keystone_authtoken/memcached_servers').with_value('memcached01:11211,memcached02:11211')
is_expected.to contain_placement_config('keystone_authtoken/region_name').with_value(params[:region_name]) is_expected.to contain_placement_config('keystone_authtoken/region_name').with_value(params[:region_name])
is_expected.to contain_placement_config('keystone_authtoken/token_cache_time').with_value(params[:token_cache_time]) is_expected.to contain_placement_config('keystone_authtoken/token_cache_time').with_value(params[:token_cache_time])
end }
it 'installs python memcache package' do it { is_expected.to contain_package('python-memcache') }
is_expected.to contain_package('python-memcache')
end
end end
end end
@@ -131,8 +128,7 @@ describe 'placement::keystone::authtoken' do
facts.merge!(OSDefaults.get_facts()) facts.merge!(OSDefaults.get_facts())
end end
it_configures 'placement authtoken' it_behaves_like 'placement::keystone::authtoken'
end end
end end
end end

View File

@@ -1,7 +1,6 @@
require 'spec_helper' require 'spec_helper'
describe 'placement::logging' do describe 'placement::logging' do
let :params do let :params do
{ {
} }
@@ -34,31 +33,34 @@ describe 'placement::logging' do
} }
end end
shared_examples_for 'placement-logging' do shared_examples 'placement::logging' do
context 'with basic logging options and default settings' do context 'with basic logging options and default settings' do
it_configures 'basic default logging settings' it_behaves_like 'basic default logging settings'
end end
context 'with basic logging options and non-default settings' do context 'with basic logging options and non-default settings' do
before { params.merge!( log_params ) } before do
it_configures 'basic non-default logging settings' params.merge!( log_params )
end
it_behaves_like 'basic non-default logging settings'
end end
context 'with extended logging options' do context 'with extended logging options' do
before { params.merge!( log_params ) } before do
it_configures 'logging params set' params.merge!( log_params )
end
it_behaves_like 'logging params set'
end end
context 'without extended logging options' do context 'without extended logging options' do
it_configures 'logging params unset' it_behaves_like 'logging params unset'
end end
end end
shared_examples 'basic default logging settings' do shared_examples 'basic default logging settings' do
it 'configures placement logging settings with default values' do it { should contain_oslo__log('placement_config').with(
is_expected.to contain_oslo__log('placement_config').with(
:use_syslog => '<SERVICE DEFAULT>', :use_syslog => '<SERVICE DEFAULT>',
:use_json => '<SERVICE DEFAULT>', :use_json => '<SERVICE DEFAULT>',
:use_journal => '<SERVICE DEFAULT>', :use_journal => '<SERVICE DEFAULT>',
@@ -67,13 +69,11 @@ describe 'placement::logging' do
:log_dir => '/var/log/placement', :log_dir => '/var/log/placement',
:log_file => '/var/log/placement/placement.log', :log_file => '/var/log/placement/placement.log',
:debug => '<SERVICE DEFAULT>', :debug => '<SERVICE DEFAULT>',
) )}
end
end end
shared_examples 'basic non-default logging settings' do shared_examples 'basic non-default logging settings' do
it 'configures placement logging settings with non-default values' do it { should contain_oslo__log('placement_config').with(
is_expected.to contain_oslo__log('placement_config').with(
:use_syslog => true, :use_syslog => true,
:use_json => true, :use_json => true,
:use_journal => true, :use_journal => true,
@@ -82,13 +82,11 @@ describe 'placement::logging' do
:log_dir => '/var/log', :log_dir => '/var/log',
:log_file => '/var/tmp/placement_random.log', :log_file => '/var/tmp/placement_random.log',
:debug => true, :debug => true,
) )}
end
end end
shared_examples_for 'logging params set' do shared_examples 'logging params set' do
it 'enables logging params' do it { should contain_oslo__log('placement_config').with(
is_expected.to contain_oslo__log('placement_config').with(
:logging_context_format_string => :logging_context_format_string =>
'%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [%(request_id)s %(user_identity)s] %(instance)s%(message)s', '%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [%(request_id)s %(user_identity)s] %(instance)s%(message)s',
:logging_default_format_string => '%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [-] %(instance)s%(message)s', :logging_default_format_string => '%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [-] %(instance)s%(message)s',
@@ -104,18 +102,17 @@ describe 'placement::logging' do
:instance_format => '[instance: %(uuid)s] ', :instance_format => '[instance: %(uuid)s] ',
:instance_uuid_format => '[instance: %(uuid)s] ', :instance_uuid_format => '[instance: %(uuid)s] ',
:log_date_format => '%Y-%m-%d %H:%M:%S', :log_date_format => '%Y-%m-%d %H:%M:%S',
) )}
end
end end
shared_examples_for 'logging params unset' do shared_examples 'logging params unset' do
[ :logging_context_format_string, :logging_default_format_string, [ :logging_context_format_string, :logging_default_format_string,
:logging_debug_format_suffix, :logging_exception_prefix, :logging_debug_format_suffix, :logging_exception_prefix,
:log_config_append, :publish_errors, :log_config_append, :publish_errors,
:default_log_levels, :fatal_deprecations, :default_log_levels, :fatal_deprecations,
:instance_format, :instance_uuid_format, :instance_format, :instance_uuid_format,
:log_date_format, ].each { |param| :log_date_format, ].each { |param|
it { is_expected.to contain_oslo__log('placement_config').with("#{param}" => '<SERVICE DEFAULT>') } it { should contain_oslo__log('placement_config').with("#{param}" => '<SERVICE DEFAULT>') }
} }
end end
@@ -127,7 +124,7 @@ describe 'placement::logging' do
facts.merge!(OSDefaults.get_facts()) facts.merge!(OSDefaults.get_facts())
end end
it_behaves_like 'placement-logging' it_behaves_like 'placement::logging'
end end
end end
end end

View File

@@ -1,7 +1,7 @@
require 'spec_helper' require 'spec_helper'
describe 'placement::policy' do describe 'placement::policy' do
shared_examples_for 'placement-policies' do shared_examples 'placement::policy' do
let :params do let :params do
{ {
:policy_path => '/etc/placement/policy.json', :policy_path => '/etc/placement/policy.json',
@@ -14,14 +14,12 @@ describe 'placement::policy' do
} }
end end
it 'set up the policies' do it { is_expected.to contain_openstacklib__policy__base('context_is_admin').with(
is_expected.to contain_openstacklib__policy__base('context_is_admin').with({
:key => 'context_is_admin', :key => 'context_is_admin',
:value => 'foo:bar', :value => 'foo:bar',
:file_user => 'root', :file_user => 'root',
:file_group => 'placement', :file_group => 'placement',
}) )}
end
end end
on_supported_os({ on_supported_os({
@@ -32,7 +30,7 @@ describe 'placement::policy' do
facts.merge!(OSDefaults.get_facts()) facts.merge!(OSDefaults.get_facts())
end end
it_behaves_like 'placement-policies' it_behaves_like 'placement::policy'
end end
end end
end end

View File

@@ -1,7 +1,7 @@
require 'spec_helper' require 'spec_helper'
describe 'placement::generic_service' do describe 'placement::generic_service' do
describe 'package should come before service' do shared_examples 'placement::generic_service' do
let :pre_condition do let :pre_condition do
'include placement' 'include placement'
end end
@@ -13,25 +13,33 @@ describe 'placement::generic_service' do
} }
end end
let :facts do
@default_facts.merge({ :osfamily => 'Debian' })
end
let :title do let :title do
'foo' 'foo'
end end
it { is_expected.to contain_service('placement-foo').with( it { should contain_service('placement-foo').with(
'name' => 'food', :name => 'food',
'ensure' => 'running', :ensure => 'running',
'enable' => true :enable => true,
)} )}
it { is_expected.to contain_service('placement-foo').that_subscribes_to( it { should contain_service('placement-foo').that_subscribes_to(
'Anchor[placement::service::begin]', 'Anchor[placement::service::begin]',
)} )}
it { is_expected.to contain_service('placement-foo').that_notifies( it { should contain_service('placement-foo').that_notifies(
'Anchor[placement::service::end]', 'Anchor[placement::service::end]',
)} )}
end end
on_supported_os({
:supported_os => OSDefaults.get_supported_os
}).each do |os,facts|
context "on #{os}" do
let (:facts) do
facts.merge!(OSDefaults.get_facts())
end
it_behaves_like 'placement::generic_service'
end
end
end end

View File

@@ -4,9 +4,4 @@ require 'puppetlabs_spec_helper/module_spec_helper'
require 'shared_examples' require 'shared_examples'
require 'puppet-openstack_spec_helper/facts' require 'puppet-openstack_spec_helper/facts'
RSpec.configure do |c|
c.alias_it_should_behave_like_to :it_configures, 'configures'
c.alias_it_should_behave_like_to :it_raises, 'raises'
end
at_exit { RSpec::Puppet::Coverage.report! } at_exit { RSpec::Puppet::Coverage.report! }

View File

@@ -1,5 +1,5 @@
[tox] [tox]
minversion = 1.6 minversion = 2.0
skipsdist = True skipsdist = True
envlist = releasenotes envlist = releasenotes