Refactor code of LB backends waiting pieces

This commit introduces a couple of classes and a function
to allow a user to specify for which load balancing checkers
to wait.

Change-Id: I9548ae440111fb0c2356ccb897318d30a8e264ff
Related-bug: #1533279
This commit is contained in:
Vladimir Kuklin 2016-01-21 20:22:36 +03:00
parent b19507b9a7
commit cbcb81d343
46 changed files with 422 additions and 300 deletions

View File

@ -212,6 +212,5 @@ class openstack::keystone (
}
Exec <| title == 'keystone-manage db_sync' |> -> Class['keystone::endpoint']
Haproxy_backend_status<||> -> Class['keystone::endpoint']
}
}

View File

@ -0,0 +1,32 @@
module Puppet::Parser::Functions
newfunction(:ensure_resource_with_default, :type => :statement,
:doc => <<-EOS
Gets a hash of resources and default params, merges default params
into each hash and calls ensure_resource puppet function
EOS
) do |arguments|
raise(Puppet::ParseError, 'Not enough arguments provided. Expected 2 Hashes') if
arguments.size < 3 or !arguments[1].is_a?(Hash) or !arguments[2].is_a?(Hash)
resource_type = arguments[0]
resources_hash = arguments[1]
defaults_hash = arguments[2]
debug("Defaults hash: #{defaults_hash.inspect}")
debug("Resources hash: #{resources_hash.inspect}")
resources_hash.each do |resource,resource_params|
merged_hash = defaults_hash.merge(resource_params) do |key, defval, val|
if val.to_sym == :undef or val.nil? or val.empty?
defval
else
val
end
end
debug("Merge results: #{merged_hash.inspect}")
resources_hash[resource] = merged_hash
function_ensure_resource([resource_type,resource,merged_hash])
end
end
end
# vim: set ts=2 sw=2 et :

View File

@ -0,0 +1,24 @@
# == Class: osnailyfacter::wait_for_backend
#
# Class which wraps around haproxy_backend_status
# and allows one to pass a hash to it and merge
# it with a default hash in order to create
# a set of similar checks for load balancer backends
#
# == Parameters
#
# [*lb_hash*]
# A hash of haproxy_backend_status resources to ensure
#
# [*lb_defaults*]
# A hash of load balancer default settings which should be merged
#
define osnailyfacter::wait_for_backend (
$lb_hash = {},
$lb_defaults = {},
)
{
ensure_resource_with_default('haproxy_backend_status',$lb_hash,$lb_defaults)
}

View File

@ -0,0 +1,56 @@
# == Class: osnailyfacter::wait_for_keystone_backends
#
# This class is created to introduce one entry
# point to check for keystone backends
#
class osnailyfacter::wait_for_keystone_backends
{
$management_vip = hiera('management_vip')
$service_endpoint = hiera('service_endpoint')
$external_lb = hiera('external_lb', false)
$ssl_hash = hiera_hash('use_ssl', {})
$admin_identity_protocol = get_ssl_property($ssl_hash, {}, 'keystone', 'admin', 'protocol', 'http')
$admin_identity_address = get_ssl_property($ssl_hash, {}, 'keystone', 'admin', 'hostname', [$service_endpoint, $management_vip])
$admin_identity_url = "${admin_identity_protocol}://${admin_identity_address}:35357/v3"
$internal_auth_protocol = get_ssl_property($ssl_hash, {}, 'keystone', 'internal', 'protocol', 'http')
$internal_auth_address = get_ssl_property($ssl_hash, {}, 'keystone', 'internal', 'hostname', [$service_endpoint, $management_vip])
$internal_auth_url = "${internal_auth_protocol}://${internal_auth_address}:5000/v3"
$haproxy_stats_url = "http://${service_endpoint}:10000/;csv"
$lb_defaults = {
step => 6,
count => 200,
provider => 'haproxy',
url => $haproxy_stats_url
}
if $external_lb {
$lb_keystone_admin =
{
provider => 'http',
url => $admin_identity_url
}
$lb_keystone_public = {
provider => 'http',
url => $internal_auth_url
}
}
$lb_hash = {
'keystone-admin' => merge(
{ name => 'keystone-2' },
$lb_keystone_admin
),
'keystone-public' => merge(
{ name => 'keystone-1' },
$lb_keystone_public
)
}
::osnailyfacter::wait_for_backend {'keystone':
lb_hash => $lb_hash,
lb_defaults => $lb_defaults
}
}

View File

@ -6,6 +6,8 @@ $management_vip = hiera('management_vip')
$public_ssl_hash = hiera('public_ssl')
$ssl_hash = hiera_hash('use_ssl', {})
Class['::osnailyfacter::wait_for_keystone_backends'] -> Class['::ceilometer::keystone::auth']
$public_protocol = get_ssl_property($ssl_hash, $public_ssl_hash, 'ceilometer', 'public', 'protocol', 'http')
$public_address = get_ssl_property($ssl_hash, $public_ssl_hash, 'ceilometer', 'public', 'hostname', [$public_vip])
@ -23,7 +25,6 @@ $configure_user = pick($ceilometer_hash['configure_user'], true)
$configure_user_role = pick($ceilometer_hash['configure_user_role'], true)
$service_name = pick($ceilometer_hash['service_name'], 'ceilometer')
$tenant = pick($ceilometer_hash['tenant'], 'services')
validate_string($public_address)
validate_string($password)
@ -31,6 +32,8 @@ $public_url = "${public_protocol}://${public_address}:8777"
$internal_url = "${internal_protocol}://${internal_address}:8777"
$admin_url = "${admin_protocol}://${admin_address}:8777"
class {'::osnailyfacter::wait_for_keystone_backends':}
class { '::ceilometer::keystone::auth':
password => $password,
auth_name => $auth_name,

View File

@ -50,37 +50,14 @@ if $use_ceph and $storage_hash['objects_ceph'] {
$haproxy_stats_url = "http://${service_endpoint}:10000/;csv"
if $external_lb {
Haproxy_backend_status<||> {
provider => 'http',
}
$internal_auth_protocol = get_ssl_property($ssl_hash, {}, 'keystone', 'internal', 'protocol', 'http')
$internal_auth_address = get_ssl_property($ssl_hash, {}, 'keystone', 'internal', 'hostname', [$service_endpoint, $management_vip])
$internal_auth_url = "${internal_auth_protocol}://${internal_auth_address}:5000"
}
$internal_auth_protocol = get_ssl_property($ssl_hash, {}, 'keystone', 'internal', 'protocol', 'http')
$internal_auth_address = get_ssl_property($ssl_hash, {}, 'keystone', 'internal', 'hostname', [$service_endpoint, $management_vip])
$internal_auth_url = "${internal_auth_protocol}://${internal_auth_address}:5000"
haproxy_backend_status { 'keystone-admin' :
name => 'keystone-2',
count => '200',
step => '6',
url => $external_lb ? {
default => $haproxy_stats_url,
true => $admin_identity_url,
},
}
class { '::osnailyfacter::wait_for_keystone_backends': }
haproxy_backend_status { 'keystone-public' :
name => 'keystone-1',
count => '200',
step => '6',
url => $external_lb ? {
default => $haproxy_stats_url,
true => $internal_auth_url,
},
}
Haproxy_backend_status['keystone-admin'] -> Class['ceph::keystone']
Haproxy_backend_status['keystone-public'] -> Class['ceph::keystone']
Class[::Osnailyfacter::Wait_for_keystone_backends] -> Class['ceph::keystone']
class { 'ceph::radosgw':
# SSL

View File

@ -116,20 +116,24 @@ if $enabled {
only_from => "127.0.0.1 240.0.0.2 ${management_networks}",
}
$lb_defaults = { 'provider' => 'haproxy', 'url' => $haproxy_stats_url }
if $external_lb {
Haproxy_backend_status<||> {
provider => 'http',
$lb_backend_provider = 'http'
$lb_url = "http://${database_vip}:49000"
}
$lb_hash = {
mysql => {
name => 'mysqld',
provider => $lb_backend_provider,
url => $lb_url
}
}
haproxy_backend_status { 'mysql':
name => 'mysqld',
url => $external_lb ? {
default => $haproxy_stats_url,
# You should setup HTTP frontend for mysqld-status on yout external LB.
# Otherwise it's impossible to wait for mysql cluster to sync.
true => "http://${database_vip}:49000",
},
::osnailyfacter::wait_for_backend {'mysql':
lb_hash => $lb_hash,
lb_defaults => $lb_defaults
}
class { 'osnailyfacter::mysql_access':
@ -140,7 +144,7 @@ if $enabled {
Class['osnailyfacter::mysql_user'] ->
Exec['initial_access_config'] ->
Class['openstack::galera::status'] ->
Haproxy_backend_status['mysql'] ->
::Osnailyfacter::Wait_for_backend['mysql'] ->
Class['osnailyfacter::mysql_access']
}

View File

@ -14,6 +14,8 @@ $service_name = pick($glance_hash['service_name'], 'glance')
$tenant = pick($glance_hash['tenant'], 'services')
$ssl_hash = hiera_hash('use_ssl', {})
Class['::osnailyfacter::wait_for_keystone_backends'] -> Class['::glance::keystone::auth']
$public_protocol = get_ssl_property($ssl_hash, $public_ssl_hash, 'glance', 'public', 'protocol', 'http')
$public_address = get_ssl_property($ssl_hash, $public_ssl_hash, 'glance', 'public', 'hostname', [$public_vip])
$internal_protocol = get_ssl_property($ssl_hash, {}, 'glance', 'internal', 'protocol', 'http')
@ -28,6 +30,8 @@ $admin_url = "${admin_protocol}://${admin_address}:9292"
validate_string($public_address)
validate_string($password)
class {'::osnailyfacter::wait_for_keystone_backends':}
class { '::glance::keystone::auth':
password => $password,
auth_name => $auth_name,

View File

@ -172,21 +172,7 @@ if !$::os_package_type or $::os_package_type != 'ubuntu' {
$haproxy_stats_url = "http://${service_endpoint}:10000/;csv"
if $external_lb {
Haproxy_backend_status<||> {
provider => 'http',
}
}
haproxy_backend_status { 'keystone-admin' :
name => 'keystone-2',
count => '200',
step => '6',
url => $external_lb ? {
default => $haproxy_stats_url,
true => $identity_uri,
},
}
class {'::osnailyfacter::wait_for_keystone_backends':}
class { 'heat::keystone::domain' :
domain_name => 'heat',
@ -197,14 +183,14 @@ class { 'heat::keystone::domain' :
}
Class['heat'] ->
Haproxy_backend_status['keystone-admin'] ->
Class['heat::keystone::domain'] ~>
Service<| title == 'heat-engine' |>
Class['::osnailyfacter::wait_for_keystone_backends'] ->
Class['heat::keystone::domain'] ~>
Service<| title == 'heat-engine' |>
######################
exec { 'wait_for_heat_config' :
command => 'sync && sleep 3',
command => 'sync && sleep 3',
provider => 'shell',
}

View File

@ -24,6 +24,9 @@ $configure_user_role = pick($heat_hash['configure_user_role'], true)
$service_name = pick($heat_hash['service_name'], 'heat')
$tenant = pick($heat_hash['tenant'], 'services')
Class['::osnailyfacter::wait_for_keystone_backends'] -> Class['::heat::keystone::auth']
Class['::osnailyfacter::wait_for_keystone_backends'] -> Class['::heat::keystone::auth_cfn']
validate_string($public_address)
validate_string($password)
@ -34,6 +37,7 @@ $public_url_cfn = "${public_protocol}://${public_address}:8000/v1"
$internal_url_cfn = "${internal_protocol}://${internal_address}:8000/v1"
$admin_url_cfn = "${admin_protocol}://${admin_address}:8000/v1"
class {'::osnailyfacter::wait_for_keystone_backends': }
class { '::heat::keystone::auth' :
password => $password,
@ -60,3 +64,4 @@ class { '::heat::keystone::auth_cfn' :
internal_url => $internal_url_cfn,
admin_url => $admin_url_cfn,
}

View File

@ -79,39 +79,9 @@ class { 'openstack::horizon':
file_upload_max_size => $file_upload_max_size,
}
$haproxy_stats_url = "http://${service_endpoint}:10000/;csv"
if $external_lb {
Haproxy_backend_status<||> {
provider => 'http',
}
$admin_identity_protocol = get_ssl_property($ssl_hash, {}, 'keystone', 'admin', 'protocol', 'http')
$admin_identity_address = get_ssl_property($ssl_hash, {}, 'keystone', 'admin', 'hostname', [$service_endpoint, $management_vip])
$admin_identity_url = "${admin_identity_protocol}://${admin_identity_address}:35357"
}
haproxy_backend_status { 'keystone-public' :
name => 'keystone-1',
count => '30',
step => '3',
url => $external_lb ? {
default => $haproxy_stats_url,
true => $keystone_url,
},
}
haproxy_backend_status { 'keystone-admin' :
name => 'keystone-2',
count => '30',
step => '3',
url => $external_lb ? {
default => $haproxy_stats_url,
true => $admin_identity_url,
},
}
Class['openstack::horizon'] -> Haproxy_backend_status['keystone-admin']
Class['openstack::horizon'] -> Haproxy_backend_status['keystone-public']
class {'::osnailyfacter::wait_for_keystone_backends':}
Class['openstack::horizon'] -> Class['::osnailyfacter::wait_for_keystone_backends']
# TODO(aschultz): remove this if openstack-dashboard stops installing
# openstack-dashboard-apache

View File

@ -12,6 +12,8 @@ $configure_user = pick($ironic_hash['configure_user'], true)
$configure_user_role = pick($ironic_hash['configure_user_role'], true)
$service_name = pick($ironic_hash['service_name'], 'ironic')
Class['::osnailyfacter::wait_for_keystone_backends'] -> Class['ironic::keystone::auth']
$public_address = $public_ssl_hash['services'] ? {
true => $public_ssl_hash['hostname'],
default => $public_vip,
@ -27,6 +29,7 @@ $public_url = "${public_protocol}://${public_address}:6385"
$admin_url = "http://${management_vip}:6385"
$internal_url = "http://${management_vip}:6385"
class {'::osnailyfacter::wait_for_keystone_backends':}
class { 'ironic::keystone::auth':
password => $ironic_user_password,
region => $region,

View File

@ -235,31 +235,12 @@ Class['openstack::auth_file']
$haproxy_stats_url = "http://${service_endpoint}:10000/;csv"
if $external_lb {
Haproxy_backend_status<||> {
provider => 'http',
}
}
class {'::osnailyfacter::wait_for_keystone_backends':}
haproxy_backend_status { 'keystone-public' :
name => 'keystone-1',
url => $external_lb ? {
default => $haproxy_stats_url,
true => $internal_url,
},
}
haproxy_backend_status { 'keystone-admin' :
name => 'keystone-2',
url => $external_lb ? {
default => $haproxy_stats_url,
true => $admin_url,
},
}
Service['keystone'] -> Haproxy_backend_status<||>
Service<| title == 'httpd' |> -> Haproxy_backend_status<||>
Haproxy_backend_status<||> -> Class['keystone::roles::admin']
Service['keystone'] -> Class['::osnailyfacter::wait_for_keystone_backends']
Service<| title == 'httpd' |> -> Class['::osnailyfacter::wait_for_keystone_backends']
Class['::osnailyfacter::wait_for_keystone_backends'] -> Class['keystone::roles::admin']
Class['::osnailyfacter::wait_for_keystone_backends'] -> Class['keystone::endpoint']
####### Disable upstart startup on install #######
if ($::operatingsystem == 'Ubuntu') {

View File

@ -1,31 +1,13 @@
notice('MODULAR: keystone/workloads_collector_add.pp')
$workloads_hash = hiera('workloads_collector', {})
$service_endpoint = hiera('service_endpoint')
$external_lb = hiera('external_lb', false)
$ssl_hash = hiera_hash('use_ssl', {})
$management_vip = hiera('management_vip')
$haproxy_stats_url = "http://${service_endpoint}:10000/;csv"
class {'::osnailyfacter::wait_for_keystone_backends':}
if $external_lb {
Haproxy_backend_status<||> {
provider => 'http',
}
$admin_identity_protocol = get_ssl_property($ssl_hash, {}, 'keystone', 'admin', 'protocol', 'http')
$admin_identity_address = get_ssl_property($ssl_hash, {}, 'keystone', 'admin', 'hostname', [$service_endpoint, $management_vip])
$admin_identity_url = "${admin_identity_protocol}://${admin_identity_address}:35357"
}
haproxy_backend_status { 'keystone-admin' :
name => 'keystone-2',
count => '200',
step => '6',
url => $external_lb ? {
default => $haproxy_stats_url,
true => $admin_identity_url,
},
} ->
Class['::osnailyfacter::wait_for_keystone_backends'] -> Class['::openstack::workloads_collector']
class { 'openstack::workloads_collector':
enabled => $workloads_hash['enabled'],

View File

@ -1,33 +1,12 @@
notice('MODULAR: keystone/workloads_collector_remove.pp')
$workloads_hash = hiera('workloads_collector', {})
$service_endpoint = hiera('service_endpoint')
$external_lb = hiera('external_lb', false)
$ssl_hash = hiera_hash('use_ssl', {})
$management_vip = hiera('management_vip')
$haproxy_stats_url = "http://${service_endpoint}:10000/;csv"
$workloads_username = $workloads_hash['username']
$workloads_tenant = $workloads_hash['tenant']
if $external_lb {
Haproxy_backend_status<||> {
provider => 'http',
}
$admin_identity_protocol = get_ssl_property($ssl_hash, {}, 'keystone', 'admin', 'protocol', 'http')
$admin_identity_address = get_ssl_property($ssl_hash, {}, 'keystone', 'admin', 'hostname', [$service_endpoint, $management_vip])
$admin_identity_url = "${admin_identity_protocol}://${admin_identity_address}:35357"
}
class {'::osnailyfacter::wait_for_keystone_backends':}
haproxy_backend_status { 'keystone-admin' :
name => 'keystone-2',
count => '200',
step => '6',
url => $external_lb ? {
default => $haproxy_stats_url,
true => $admin_identity_url,
},
} ->
Class['::osnailyfacter::wait_for_keystone_backends'] -> Keystone_user_role <||>
Class['::osnailyfacter::wait_for_keystone_backends'] -> Keystone_user <||>
keystone_user_role { "$workloads_username@$workloads_tenant" :
ensure => 'absent',

View File

@ -46,25 +46,32 @@ if $murano_cfapi_hash['enabled'] {
$haproxy_stats_url = "http://${management_ip}:10000/;csv"
$murano_cfapi_protocol = get_ssl_property($ssl_hash, {}, 'murano', 'internal', 'protocol', 'http')
$murano_cfapi_address = get_ssl_property($ssl_hash, {}, 'murano', 'internal', 'hostname', [$service_endpoint, $management_vip])
$murano_cfapi_url = "${murano_cfapi_protocol}://${murano_cfapi_address}:${cfapi_bind_port}"
$lb_defaults = { 'provider' => 'haproxy', 'url' => $haproxy_stats_url }
if $external_lb {
Haproxy_backend_status<||> {
provider => 'http',
}
$murano_cfapi_protocol = get_ssl_property($ssl_hash, {}, 'murano', 'internal', 'protocol', 'http')
$murano_cfapi_address = get_ssl_property($ssl_hash, {}, 'murano', 'internal', 'hostname', [$service_endpoint, $management_vip])
$murano_cfapi_url = "${murano_cfapi_protocol}://${murano_cfapi_address}:${cfapi_bind_port}"
$lb_backend_provider = 'http'
$lb_url = $murano_cfapi_url
}
haproxy_backend_status { 'murano-cfapi' :
name => 'murano-cfapi',
url => $external_lb ? {
default => $haproxy_stats_url,
true => $murano_cfapi_url,
},
$lb_hash = {
'murano-cfapi' => {
name => 'murano-cfapi',
provider => $lb_backend_provider,
url => $lb_url
}
}
::osnailyfacter::wait_for_backend {'murano-cfapi':
lb_hash => $lb_hash,
lb_defaults => $lb_defaults
}
Firewall[$firewall_rule] -> Class['murano::cfapi']
Service['murano-cfapi'] -> Haproxy_backend_status['murano-cfapi']
Service['murano-cfapi'] -> ::Osnailyfacter::Wait_for_backend['murano-cfapi']
}
#########################

View File

@ -7,6 +7,8 @@ $region = hiera('region', 'RegionOne')
$public_ssl_hash = hiera('public_ssl')
$ssl_hash = hiera_hash('use_ssl', {})
Class['::osnailyfacter::wait_for_keystone_backends'] -> Class['murano::keystone::auth']
$public_protocol = get_ssl_property($ssl_hash, $public_ssl_hash, 'murano', 'public', 'protocol', 'http')
$public_address = get_ssl_property($ssl_hash, $public_ssl_hash, 'murano', 'public', 'hostname', [$public_ip])
@ -24,6 +26,7 @@ $admin_url = "${admin_protocol}://${admin_address}:${api_bind_port}"
#################################################################
class {'::osnailyfacter::wait_for_keystone_backends':}
class { 'murano::keystone::auth':
password => $murano_hash['user_password'],
service_type => 'application_catalog',

View File

@ -7,6 +7,8 @@ $region = hiera('region', 'RegionOne')
$public_ssl_hash = hiera('public_ssl')
$ssl_hash = hiera_hash('use_ssl', {})
Class['::osnailyfacter::wait_for_keystone_backends'] -> Class['murano::keystone::cfapi_auth']
$public_protocol = get_ssl_property($ssl_hash, $public_ssl_hash, 'murano', 'public', 'protocol', 'http')
$public_address = get_ssl_property($ssl_hash, $public_ssl_hash, 'murano', 'public', 'hostname', [$public_ip])
@ -24,6 +26,7 @@ $admin_url = "${admin_protocol}://${admin_address}:${api_bind_port}"
#################################################################
class {'::osnailyfacter::wait_for_keystone_backends':}
class { 'murano::keystone::cfapi_auth':
password => $murano_hash['user_password'],
service_type => 'service_broker',

View File

@ -170,21 +170,28 @@ if $murano_hash['enabled'] {
$haproxy_stats_url = "http://${management_ip}:10000/;csv"
$murano_protocol = get_ssl_property($ssl_hash, {}, 'murano', 'internal', 'protocol', 'http')
$murano_address = get_ssl_property($ssl_hash, {}, 'murano', 'internal', 'hostname', [$service_endpoint, $management_vip])
$murano_url = "${murano_protocol}://${murano_address}:${api_bind_port}"
$lb_defaults = { 'provider' => 'haproxy', 'url' => $haproxy_stats_url }
if $external_lb {
Haproxy_backend_status<||> {
provider => 'http',
}
$murano_protocol = get_ssl_property($ssl_hash, {}, 'murano', 'internal', 'protocol', 'http')
$murano_address = get_ssl_property($ssl_hash, {}, 'murano', 'internal', 'hostname', [$service_endpoint, $management_vip])
$murano_url = "${murano_protocol}://${murano_address}:${api_bind_port}"
$lb_backend_provider = 'http'
$lb_url = $murano_url
}
haproxy_backend_status { 'murano-api' :
name => 'murano-api',
url => $external_lb ? {
default => $haproxy_stats_url,
true => $murano_url,
},
$lb_hash = {
'murano-api' => {
name => 'murano-api',
provider => $lb_backend_provider,
url => $lb_url
}
}
::osnailyfacter::wait_for_backend {'murano-api':
lb_hash => $lb_hash,
lb_defaults => $lb_defaults
}
if roles_include('primary-controller') {
@ -192,33 +199,17 @@ if $murano_hash['enabled'] {
$internal_auth_url = "${internal_auth_protocol}://${internal_auth_address}:5000"
$admin_identity_url = "${admin_auth_protocol}://${admin_auth_address}:35357"
haproxy_backend_status { 'keystone-public' :
name => 'keystone-1',
url => $external_lb ? {
default => $haproxy_stats_url,
true => $internal_auth_url,
},
}
haproxy_backend_status { 'keystone-admin' :
name => 'keystone-2',
url => $external_lb ? {
default => $haproxy_stats_url,
true => $admin_identity_url,
},
}
class {'::osnailyfacter::wait_for_keystone_backends':}
murano::application { 'io.murano' : }
Haproxy_backend_status['keystone-admin'] -> Haproxy_backend_status['murano-api']
Haproxy_backend_status['keystone-public'] -> Haproxy_backend_status['murano-api']
Haproxy_backend_status['murano-api'] -> Murano::Application['io.murano']
Class['::osnailyfacter::wait_for_keystone_backends'] -> ::Osnailyfacter::Wait_for_backend['murano-api']
::Osnailyfacter::Wait_for_backend['murano-api'] -> Murano::Application['io.murano']
Service['murano-api'] -> Murano::Application['io.murano']
}
Firewall[$firewall_rule] -> Class['murano::api']
Service['murano-api'] -> Haproxy_backend_status['murano-api']
Service['murano-api'] -> ::Osnailyfacter::Wait_for_backend['murano-api']
}
#########################

View File

@ -6,6 +6,8 @@ $ssl_hash = hiera_hash('use_ssl', {})
$public_vip = hiera('public_vip')
$management_vip = hiera('management_vip')
Class['::osnailyfacter::wait_for_keystone_backends'] -> Class['::cinder::keystone::auth']
$public_protocol = get_ssl_property($ssl_hash, $public_ssl_hash, 'cinder', 'public', 'protocol', 'http')
$public_address = get_ssl_property($ssl_hash, $public_ssl_hash, 'cinder', 'public', 'hostname', [$public_vip])
@ -35,6 +37,7 @@ validate_string($internal_address)
validate_string($admin_address)
validate_string($password)
class {'::osnailyfacter::wait_for_keystone_backends':}
class { '::cinder::keystone::auth':
password => $password,
auth_name => $auth_name,

View File

@ -38,6 +38,7 @@ $tenant = pick($nova_hash['tenant'], 'services')
validate_string($public_address)
validate_string($password)
class {'::osnailyfacter::wait_for_keystone_backends':}->
class { '::nova::keystone::auth':
password => $password,
auth_name => $auth_name,

View File

@ -179,24 +179,37 @@ if $primary_controller {
$nova_internal_endpoint = get_ssl_property($ssl_hash, {}, 'nova', 'internal', 'hostname', [$nova_endpoint])
$nova_url = "${nova_internal_protocol}://${nova_internal_endpoint}:8774"
$lb_defaults = { 'provider' => 'haproxy', 'url' => $haproxy_stats_url }
if $external_lb {
Haproxy_backend_status<||> {
provider => 'http',
$lb_backend_provider = 'http'
$lb_url = $nova_url
}
$lb_hash = {
'nova-api' => {
name => 'nova-api',
provider => $lb_backend_provider,
url => $lb_url
}
}
haproxy_backend_status { 'nova-api' :
name => 'nova-api',
url => $external_lb ? {
default => $haproxy_stats_url,
true => $nova_url,
},
::osnailyfacter::wait_for_backend {'nova-api':
lb_hash => $lb_hash,
lb_defaults => $lb_defaults
}
Openstack::Ha::Haproxy_service <| |> -> Haproxy_backend_status <| |>
Class['nova::api'] -> Haproxy_backend_status['nova-api']
Class['nova::api'] -> ::Osnailyfacter::Wait_for_backend['nova-api']
::Osnailyfacter::Wait_for_backend['nova-api'] -> Exec<| title == 'create-m1.micro-flavor' |>
::Osnailyfacter::Wait_for_backend['nova-api'] -> Nova_floating <| |>
Class['::osnailyfacter::wait_for_keystone_backends'] -> Exec<| title == 'create-m1.micro-flavor' |>
Class['::osnailyfacter::wait_for_keystone_backends'] -> Nova_floating <| |>
class {"::osnailyfacter::wait_for_keystone_backends":}
exec { 'create-m1.micro-flavor' :
path => '/sbin:/usr/sbin:/bin:/usr/bin',
environment => [
@ -226,14 +239,12 @@ if $primary_controller {
require => Class['nova'],
}
Haproxy_backend_status <| |> -> Exec<| title == 'create-m1.micro-flavor' |>
if ! $use_neutron {
nova_floating { $floating_ips_range:
ensure => 'present',
pool => 'nova',
}
Haproxy_backend_status['nova-api'] -> Nova_floating <| |>
}
}

View File

@ -32,12 +32,15 @@ $public_url = "${public_protocol}://${public_address}:${port}"
$internal_url = "${internal_protocol}://${internal_address}:${port}"
$admin_url = "${admin_protocol}://${admin_address}:${port}"
validate_string($public_address)
validate_string($internal_address)
validate_string($password)
if $use_neutron {
Class['::osnailyfacter::wait_for_keystone_backends'] -> Class['::neutron::keystone::auth']
class {'::osnailyfacter::wait_for_keystone_backends':}
class { '::neutron::keystone::auth':
password => $password,
auth_name => $auth_name,

View File

@ -21,6 +21,9 @@ $public_protocol = $public_ssl_hash['services'] ? {
$public_url = "${public_protocol}://${public_address}:${api_bind_port}/v1.1/%(tenant_id)s"
$admin_url = "http://${admin_address}:${api_bind_port}/v1.1/%(tenant_id)s"
Class['::osnailyfacter::wait_for_keystone_backends'] -> Class['sahara::keystone::auth']
class {'::osnailyfacter::wait_for_keystone_backends':}
class { 'sahara::keystone::auth':
auth_name => $sahara_user,
password => $sahara_password,

View File

@ -142,42 +142,34 @@ if $sahara_hash['enabled'] {
}
$haproxy_stats_url = "http://${management_vip}:10000/;csv"
$sahara_protocol = get_ssl_property($ssl_hash, {}, 'sahara', 'internal', 'protocol', 'http')
$sahara_address = get_ssl_property($ssl_hash, {}, 'sahara', 'internal', 'hostname', [$service_endpoint, $management_vip])
$sahara_url = "${sahara_protocol}://${sahara_address}:${api_bind_port}"
$lb_defaults = { 'provider' => 'haproxy', 'url' => $haproxy_stats_url }
if $external_lb {
Haproxy_backend_status<||> {
provider => 'http',
}
$sahara_protocol = get_ssl_property($ssl_hash, {}, 'sahara', 'internal', 'protocol', 'http')
$sahara_address = get_ssl_property($ssl_hash, {}, 'sahara', 'internal', 'hostname', [$service_endpoint, $management_vip])
$sahara_url = "${sahara_protocol}://${sahara_address}:${api_bind_port}"
$lb_backend_provider = 'http'
$lb_url = $sahara_url
}
haproxy_backend_status { 'sahara' :
name => 'sahara',
url => $external_lb ? {
default => $haproxy_stats_url,
true => $sahara_url,
},
$lb_hash = {
sahara => {
name => 'sahara',
provider => $lb_backend_provider,
url => $lb_url
}
}
::osnailyfacter::wait_for_backend {'sahara':
lb_hash => $lb_hash,
lb_defaults => $lb_defaults
}
if $primary_controller {
haproxy_backend_status { 'keystone-public' :
name => 'keystone-1',
url => $external_lb ? {
default => $haproxy_stats_url,
true => $internal_auth_url,
},
}
haproxy_backend_status { 'keystone-admin' :
name => 'keystone-2',
url => $external_lb ? {
default => $haproxy_stats_url,
true => $admin_identity_uri,
},
}
class {'::osnailyfacter::wait_for_keystone_backends':} ->
class { 'sahara_templates::create_templates' :
use_neutron => $use_neutron,
auth_user => $access_admin['user'],
@ -187,13 +179,12 @@ if $sahara_hash['enabled'] {
internal_net => try_get_value($neutron_config, 'default_private_net', 'admin_internal_net'),
}
Haproxy_backend_status['keystone-admin'] -> Haproxy_backend_status['sahara']
Haproxy_backend_status['keystone-public'] -> Haproxy_backend_status['sahara']
Haproxy_backend_status['sahara'] -> Class['sahara_templates::create_templates']
Class['::osnailyfacter::wait_for_keystone_backends'] -> ::Osnailyfacter::Wait_for_backend['sahara']
::Osnailyfacter::Wait_for_backend['sahara'] -> Class['sahara_templates::create_templates']
}
Firewall[$firewall_rule] -> Class['sahara::service::api']
Service['sahara-api'] -> Haproxy_backend_status['sahara']
Service['sahara-api'] -> ::Osnailyfacter::Wait_for_backend['sahara']
}
#########################

View File

@ -23,6 +23,8 @@ $configure_endpoint = pick($swift_hash['configure_endpoint'], true)
$service_name = pick($swift_hash['service_name'], 'swift')
$tenant = pick($swift_hash['tenant'], 'services')
Class['::osnailyfacter::wait_for_keystone_backends'] -> Class['::swift::keystone::auth']
validate_string($public_address)
validate_string($password)
@ -35,6 +37,7 @@ $public_url_s3 = "${public_protocol}://${public_address}:8080"
$internal_url_s3 = "${internal_protocol}://${internal_address}:8080"
$admin_url_s3 = "${admin_protocol}://${admin_address}:8080"
class {'::osnailyfacter::wait_for_keystone_backends':}
class { '::swift::keystone::auth':
password => $password,
auth_name => $auth_name,

View File

@ -75,13 +75,17 @@ describe manifest do
)
end
it { should contain_haproxy_backend_status('keystone-public').that_comes_before('Class[ceph::keystone]') }
it { should contain_haproxy_backend_status('keystone-admin').that_comes_before('Class[ceph::keystone]') }
it 'should have explicit ordering between LB classes and particular actions' do
expect(graph).to ensure_transitive_dependency("Haproxy_backend_status[keystone-public]", "Class[ceph::keystone]")
expect(graph).to ensure_transitive_dependency("Haproxy_backend_status[keystone-admin]", "Class[ceph::keystone]")
end
it { should contain_service('httpd').with(
:hasrestart => true,
:restart => 'sleep 30 && apachectl graceful || apachectl restart',
)
}
it { should contain_exec("Create #{rgw_large_pool_name} pool").with(
:command => "ceph -n #{radosgw_auth_key} osd pool create #{rgw_large_pool_name} #{rgw_large_pool_pg_nums} #{rgw_large_pool_pg_nums}",
:unless => "rados lspools | grep '^#{rgw_large_pool_name}$'"
@ -94,7 +98,7 @@ describe manifest do
provider = 'http'
else
url = 'http://' + Noop.hiera('service_endpoint').to_s + ':10000/;csv'
provider = nil
provider = Puppet::Type.type(:haproxy_backend_status).defaultprovider.name
end
should contain_haproxy_backend_status('keystone-public').with(
:url => url,
@ -108,7 +112,7 @@ describe manifest do
provider = 'http'
else
url = 'http://' + Noop.hiera('service_endpoint').to_s + ':10000/;csv'
provider = nil
provider = Puppet::Type.type(:haproxy_backend_status).defaultprovider.name
end
should contain_haproxy_backend_status('keystone-admin').with(
:url => url,

View File

@ -53,9 +53,12 @@ describe manifest do
).that_comes_before('Osnailyfacter::Mysql_user')
end
it 'should have explicit ordering between LB classes and particular actions' do
expect(graph).to ensure_transitive_dependency("Class[openstack::galera::status]", "Haproxy_backend_status[mysql]")
expect(graph).to ensure_transitive_dependency("Haproxy_backend_status[mysql]", "Class[osnailyfacter::mysql_access]")
end
it { should contain_class('osnailyfacter::mysql_access') }
it { should contain_class('openstack::galera::status').that_comes_before('Haproxy_backend_status[mysql]') }
it { should contain_haproxy_backend_status('mysql').that_comes_before('Class[osnailyfacter::mysql_access]') }
it 'should create grant with right privileges' do
should contain_database_grant("clustercheck@#{galera_node_address}/*.*").with(
@ -69,7 +72,7 @@ describe manifest do
provider = 'http'
else
url = 'http://' + Noop.hiera('service_endpoint').to_s + ':10000/;csv'
provider = nil
provider = Puppet::Type.type(:haproxy_backend_status).defaultprovider.name
end
it {

View File

@ -134,12 +134,18 @@ describe manifest do
)
end
it 'should have explicit ordering between LB classes and particular actions' do
expect(graph).to ensure_transitive_dependency("Haproxy_backend_status[keystone-public]",
"Class[heat::keystone::domain]")
expect(graph).to ensure_transitive_dependency("Haproxy_backend_status[keystone-admin]",
"Class[heat::keystone::domain]")
end
if Noop.hiera('external_lb', false)
url = "#{admin_auth_protocol}://#{admin_auth_address}:35357/"
provider = 'http'
else
url = 'http://' + Noop.hiera('service_endpoint').to_s + ':10000/;csv'
provider = nil
provider = Puppet::Type.type(:haproxy_backend_status).defaultprovider.name
end
it {

View File

@ -50,6 +50,17 @@ describe manifest do
should contain_class('heat::keystone::auth_cfn').with('admin_url' => admin_url_cfn)
end
it 'should have explicit ordering between LB classes and particular actions' do
expect(graph).to ensure_transitive_dependency("Haproxy_backend_status[keystone-public]",
"Class[heat::keystone::auth]")
expect(graph).to ensure_transitive_dependency("Haproxy_backend_status[keystone-admin]",
"Class[heat::keystone::auth]")
expect(graph).to ensure_transitive_dependency("Haproxy_backend_status[keystone-public]",
"Class[heat::keystone::auth_cfn]")
expect(graph).to ensure_transitive_dependency("Haproxy_backend_status[keystone-admin]",
"Class[heat::keystone::auth_cfn]")
end
it 'class heat::keystone::auth should contain tenant' do
should contain_class('heat::keystone::auth').with('tenant' => tenant)
end

View File

@ -115,6 +115,13 @@ describe manifest do
end
end
it 'should have explicit ordering between LB classes and particular actions' do
expect(graph).to ensure_transitive_dependency("Class[openstack::horizon]", "Haproxy_backend_status[keystone-public]")
expect(graph).to ensure_transitive_dependency("Class[openstack::horizon]", "Haproxy_backend_status[keystone-admin]")
end
it {
should contain_service('httpd').with(
'hasrestart' => true,
@ -122,18 +129,6 @@ describe manifest do
)
}
it {
should contain_class('openstack::horizon').that_comes_before(
'Haproxy_backend_status[keystone-admin]'
)
}
it {
should contain_class('openstack::horizon').that_comes_before(
'Haproxy_backend_status[keystone-public]'
)
}
it "should handle openstack-dashboard-apache package based on osfamily" do
if facts[:osfamily] == 'Debian'
should contain_package('openstack-dashboard-apache').with_ensure('absent')

View File

@ -30,6 +30,13 @@ describe manifest do
public_url = "#{public_protocol}://#{public_address}:6385"
admin_url = "http://#{admin_address}:6385"
it 'should have explicit ordering between LB classes and particular actions' do
expect(graph).to ensure_transitive_dependency("Haproxy_backend_status[keystone-public]",
"Class[ironic::keystone::auth]")
expect(graph).to ensure_transitive_dependency("Haproxy_backend_status[keystone-admin]",
"Class[ironic::keystone::auth]")
end
it 'should declare ironic::keystone::auth class correctly' do
should contain_class('ironic::keystone::auth').with(
'auth_name' => auth_name,

View File

@ -274,13 +274,20 @@ describe manifest do
should contain_keystone_config('DEFAULT/secure_proxy_ssl_header').with(:value => 'HTTP_X_FORWARDED_PROTO')
end
it 'should have explicit ordering between LB classes and particular actions' do
expect(graph).to ensure_transitive_dependency("Haproxy_backend_status[keystone-public]",
"Class[keystone::roles::admin]")
expect(graph).to ensure_transitive_dependency("Haproxy_backend_status[keystone-admin]",
"Class[keystone::endpoint]")
end
it {
if Noop.hiera('external_lb', false)
url = internal_url
provider = 'http'
else
url = 'http://' + Noop.hiera('service_endpoint').to_s + ':10000/;csv'
provider = nil
provider = Puppet::Type.type(:haproxy_backend_status).defaultprovider.name
end
should contain_haproxy_backend_status('keystone-public').with(
:url => url,

View File

@ -20,13 +20,19 @@ describe manifest do
let(:admin_url) { "#{admin_auth_protocol}://#{admin_auth_address}:35357" }
it 'should have explicit ordering between LB classes and particular actions' do
expect(graph).to ensure_transitive_dependency("Haproxy_backend_status[keystone-public]",
"Class[openstack::workloads_collector]")
expect(graph).to ensure_transitive_dependency("Haproxy_backend_status[keystone-admin]",
"Class[openstack::workloads_collector]")
end
it {
if Noop.hiera('external_lb', false)
url = admin_url
provider = 'http'
else
url = 'http://' + Noop.hiera('service_endpoint').to_s + ':10000/;csv'
provider = nil
provider = Puppet::Type.type(:haproxy_backend_status).defaultprovider.name
end
should contain_haproxy_backend_status('keystone-admin').with(
:url => url,

View File

@ -26,7 +26,7 @@ describe manifest do
provider = 'http'
else
url = 'http://' + Noop.hiera('service_endpoint').to_s + ':10000/;csv'
provider = nil
provider = Puppet::Type.type(:haproxy_backend_status).defaultprovider.name
end
should contain_haproxy_backend_status('keystone-admin').with(
:url => url,

View File

@ -80,7 +80,7 @@ describe manifest do
provider = 'http'
else
url = 'http://' + Noop.hiera('service_endpoint').to_s + ':10000/;csv'
provider = nil
provider = Puppet::Type.type(:haproxy_backend_status).defaultprovider.name
end
should contain_haproxy_backend_status('murano-cfapi').with(
:url => url,

View File

@ -32,6 +32,12 @@ describe manifest do
internal_url = "#{internal_protocol}://#{internal_address}:#{api_bind_port}"
admin_url = "#{admin_protocol}://#{admin_address}:#{api_bind_port}"
it 'should have explicit ordering between LB classes and particular actions' do
expect(graph).to ensure_transitive_dependency("Haproxy_backend_status[keystone-public]",
"Class[murano::keystone::cfapi_auth]")
expect(graph).to ensure_transitive_dependency("Haproxy_backend_status[keystone-admin]",
"Class[murano::keystone::cfapi_auth]")
end
let(:region) { Noop.hiera('region', 'RegionOne') }
let(:tenant) { Noop.hiera_structure('murano_hash/tenant', 'services') }

View File

@ -40,6 +40,13 @@ describe manifest do
##########################################################################
it 'should have explicit ordering between LB classes and particular actions' do
expect(graph).to ensure_transitive_dependency("Haproxy_backend_status[keystone-public]",
"Class[murano::keystone::auth]")
expect(graph).to ensure_transitive_dependency("Haproxy_backend_status[keystone-admin]",
"Class[murano::keystone::auth]")
end
it 'should declare murano::keystone::auth class correctly' do
should contain_class('murano::keystone::auth').with(
'password' => murano_password,

View File

@ -206,25 +206,22 @@ describe manifest do
should contain_murano__application('io.murano')
end
it {
should contain_haproxy_backend_status('keystone-public').that_comes_before('Haproxy_backend_status[murano-api]')
}
it {
should contain_haproxy_backend_status('keystone-admin').that_comes_before('Haproxy_backend_status[murano-api]')
}
it {
should contain_haproxy_backend_status('murano-api').that_comes_before('Murano::Application[io.murano]')
}
# Test for non-haproxy backend
it 'should have explicit ordering between LB classes and particular actions' do
expect(graph).to ensure_transitive_dependency("Haproxy_backend_status[keystone-public]",
"Haproxy_backend_status[murano-api]")
expect(graph).to ensure_transitive_dependency("Haproxy_backend_status[keystone-admin]",
"Haproxy_backend_status[murano-api]")
expect(graph).to ensure_transitive_dependency("Haproxy_backend_status[murano-api]",
"Murano::Application[io.murano]")
end
# Test for non-haproxy backend
it {
if Noop.hiera('external_lb', false)
url = admin_url
provider = 'http'
else
url = 'http://' + Noop.hiera('service_endpoint').to_s + ':10000/;csv'
provider = nil
provider = Puppet::Type.type(:haproxy_backend_status).defaultprovider.name
end
should contain_haproxy_backend_status('keystone-admin').with(
:url => url,
@ -239,7 +236,7 @@ describe manifest do
provider = 'http'
else
url = 'http://' + Noop.hiera('service_endpoint').to_s + ':10000/;csv'
provider = nil
provider = Puppet::Type.type(:haproxy_backend_status).defaultprovider.name
end
should contain_haproxy_backend_status('murano-api').with(
:url => url,

View File

@ -43,6 +43,13 @@ describe manifest do
region = Noop.hiera_structure 'cinder/region', 'RegionOne'
tenant = Noop.hiera_structure 'cinder/tenant', 'services'
it 'should have explicit ordering between LB classes and particular actions' do
expect(graph).to ensure_transitive_dependency("Haproxy_backend_status[keystone-public]",
"Class[cinder::keystone::auth]")
expect(graph).to ensure_transitive_dependency("Haproxy_backend_status[keystone-admin]",
"Class[cinder::keystone::auth]")
end
it 'should declare cinder::keystone::auth class with propper parameters' do
should contain_class('cinder::keystone::auth').with(
'password' => password,

View File

@ -41,6 +41,13 @@ describe manifest do
ec2_internal_url = "#{internal_protocol}://#{internal_address}:#{ec2_port}/services/Cloud"
ec2_admin_url = "#{admin_protocol}://#{admin_address}:#{ec2_port}/services/Admin"
it 'should have explicit ordering between LB classes and particular actions' do
expect(graph).to ensure_transitive_dependency("Haproxy_backend_status[keystone-public]",
"Class[nova::keystone::auth]")
expect(graph).to ensure_transitive_dependency("Haproxy_backend_status[keystone-admin]",
"Class[nova::keystone::auth]")
end
it 'class nova::keystone::auth should contain correct *_url' do
should contain_class('nova::keystone::auth').with(
'public_url' => "#{public_base_url}/v2/%(tenant_id)s",

View File

@ -206,12 +206,29 @@ describe manifest do
end
if primary_controller
it 'should have explicit ordering between LB classes and particular actions' do
expect(graph).to ensure_transitive_dependency("Class[nova::api]","Haproxy_backend_status[nova-api]")
expect(graph).to ensure_transitive_dependency("Haproxy_backend_status[nova-api]",
"Exec[create-m1.micro-flavor]")
expect(graph).to ensure_transitive_dependency("Haproxy_backend_status[keystone-public]","Exec[create-m1.micro-flavor]")
expect(graph).to ensure_transitive_dependency("Haproxy_backend_status[keystone-admin]","Exec[create-m1.micro-flavor]")
franges = graph.vertices.find_all {|v| v.type == :nova_floating_range }
if !franges.to_a.empty?
franges.each do
|frange|
expect(graph).to ensure_transitive_dependency("Haproxy_backend_status[nova-api]",frange.ref)
expect(graph).to ensure_transitive_dependency("Haproxy_backend_status[keystone-public]",frange.ref)
expect(graph).to ensure_transitive_dependency("Haproxy_backend_status[keystone-admin]",frange.ref)
end
end
end
if Noop.hiera('external_lb', false)
url = "#{nova_internal_protocol}://#{nova_internal_endpoint}:8774"
provider = 'http'
else
url = 'http://' + Noop.hiera('service_endpoint').to_s + ':10000/;csv'
provider = nil
provider = Puppet::Type.type(:haproxy_backend_status).defaultprovider.name
end
it {

View File

@ -37,6 +37,13 @@ describe manifest do
use_neutron = Noop.hiera('use_neutron', false)
if use_neutron
it 'should have explicit ordering between LB classes and particular actions' do
expect(graph).to ensure_transitive_dependency("Haproxy_backend_status[keystone-public]",
"Class[neutron::keystone::auth]")
expect(graph).to ensure_transitive_dependency("Haproxy_backend_status[keystone-admin]",
"Class[neutron::keystone::auth]")
end
it 'should declare neutron::keystone::auth class' do
should contain_class('neutron::keystone::auth').with(
'password' => password,

View File

@ -21,6 +21,13 @@ describe manifest do
let(:public_url) { "#{public_protocol}://#{public_address}:#{api_bind_port}/v1.1/%(tenant_id)s" }
let(:admin_url) { "http://#{admin_address}:#{api_bind_port}/v1.1/%(tenant_id)s" }
it 'should have explicit ordering between LB classes and particular actions' do
expect(graph).to ensure_transitive_dependency("Haproxy_backend_status[keystone-public]",
"Class[sahara::keystone::auth]")
expect(graph).to ensure_transitive_dependency("Haproxy_backend_status[keystone-admin]",
"Class[sahara::keystone::auth]")
end
it 'should declare sahara::keystone::auth class correctly' do
should contain_class('sahara::keystone::auth').with(
'auth_name' => sahara_user,

View File

@ -187,17 +187,14 @@ describe manifest do
)
end
it {
should contain_haproxy_backend_status('keystone-public').that_comes_before('Haproxy_backend_status[sahara]')
}
it {
should contain_haproxy_backend_status('keystone-admin').that_comes_before('Haproxy_backend_status[sahara]')
}
it {
should contain_haproxy_backend_status('sahara').that_comes_before('Class[sahara_templates::create_templates]')
}
it 'should have explicit ordering between LB classes and particular actions' do
expect(graph).to ensure_transitive_dependency("Haproxy_backend_status[keystone-public]",
"Haproxy_backend_status[sahara]")
expect(graph).to ensure_transitive_dependency("Haproxy_backend_status[keystone-admin]",
"Haproxy_backend_status[sahara]")
expect(graph).to ensure_transitive_dependency("Haproxy_backend_status[sahara]",
"Class[sahara_templates::create_templates]")
end
end
it {
@ -206,7 +203,7 @@ describe manifest do
provider = 'http'
else
url = 'http://' + Noop.hiera('service_endpoint').to_s + ':10000/;csv'
provider = nil
provider = Puppet::Type.type(:haproxy_backend_status).defaultprovider.name
end
should contain_haproxy_backend_status('sahara').with(
:url => url,

View File

@ -68,6 +68,13 @@ describe manifest do
should contain_class('swift::keystone::auth').with('internal_url' => internal_url)
end
it 'should have explicit ordering between LB classes and particular actions' do
expect(graph).to ensure_transitive_dependency("Haproxy_backend_status[keystone-public]",
"Class[swift::keystone::auth]")
expect(graph).to ensure_transitive_dependency("Haproxy_backend_status[keystone-admin]",
"Class[swift::keystone::auth]")
end
it 'class swift::keystone::auth should contain correct S3 endpoints' do
should contain_class('swift::keystone::auth').with('public_url_s3' => public_url_s3)
should contain_class('swift::keystone::auth').with('admin_url_s3' => admin_url_s3)