Implement tests for trove::api

This commit is contained in:
Emilien Macchi 2014-07-02 14:00:16 +02:00
parent d50774d9c1
commit dcef06f12d
7 changed files with 101 additions and 31 deletions

View File

@ -167,30 +167,18 @@ class trove::api(
$key_file = false,
$ca_file = false,
$manage_service = true,
$ensure_packages = 'present',
$ensure_package = 'present',
) inherits trove {
require keystone::python
ensure_packages($trove::params::api_package_name)
ensure_packages($::trove::params::api_package_name)
Package[$trove::params::api_package_name] -> File['/etc/trove/']
Package[$trove::params::api_package_name] -> Trove_config<||>
Trove_config<||> ~> Exec['post-trove_config']
Trove_config<||> ~> Service['trove-api']
Trove_config<||> ~> Exec<| title == 'trove-manage db_sync' |>
Exec<| title == 'trove-manage db_sync' |> ~> Service['trove-api']
Trove_config<||> ~> Service['trove-api']
File {
ensure => present,
owner => 'trove',
group => 'trove',
mode => '0640',
notify => Service['trove-api'],
require => Class['trove']
}
if $database_connection {
if $::trove::database_connection {
if($::trove::database_connection =~ /mysql:\/\/\S+:\S+@\S+\/\S+/) {
if ($::trove::mysql_module >= 2.2) {
require 'mysql::bindings'
@ -219,8 +207,6 @@ class trove::api(
'DEFAULT/bind_port': value => $bind_port;
'DEFAULT/backlog': value => $backlog;
'DEFAULT/trove_api_workers': value => $workers;
'DEFAULT/verbose': value => $verbose;
'DEFAULT/debug': value => $debug;
}
if $auth_uri {
@ -375,7 +361,7 @@ class trove::api(
}
}
if $rpc_backend == 'trove.openstack.common.rpc.impl_qpid' {
if $::trove::rpc_backend == 'nova.openstack.common.rpc.impl_qpid' {
trove_config {
'DEFAULT/qpid_hostname': value => $::trove::qpid_hostname;
'DEFAULT/qpid_port': value => $::trove::qpid_port;
@ -385,12 +371,12 @@ class trove::api(
'DEFAULT/qpid_protocol': value => $::trove::qpid_protocol;
'DEFAULT/qpid_tcp_nodelay': value => $::trove::qpid_tcp_nodelay;
}
if is_array($qpid_sasl_mechanisms) {
if is_array($::trove::qpid_sasl_mechanisms) {
trove_config {
'DEFAULT/qpid_sasl_mechanisms': value => join($::trove::qpid_sasl_mechanisms, ' ');
}
}
elsif $qpid_sasl_mechanisms {
elsif $::trove::qpid_sasl_mechanisms {
trove_config {
'DEFAULT/qpid_sasl_mechanisms': value => $::trove::qpid_sasl_mechanisms;
}

View File

@ -66,9 +66,9 @@ class trove::db::mysql(
$allowed_hosts = undef
) {
Class['trove::db::mysql'] -> Exec<| title == 'trove-manage db_sync' |>
Class['trove::db::mysql'] -> Exec<| title == 'trove-db-sync' |>
Mysql::Db[$dbname] -> Anchor<| title == 'trove-start' |>
Mysql::Db[$dbname] ~> Exec<| title == 'trove-manage db_sync' |>
Mysql::Db[$dbname] ~> Exec<| title == 'trove-db-sync' |>
if ($mysql_module >= 2.2) {
mysql::db { $dbname:
@ -106,7 +106,7 @@ class trove::db::mysql(
mysql_module => $mysql_module,
}
Trove::Db::Mysql::Host_access[$real_allowed_hosts] -> Exec<| title == 'trove-manage db_sync' |>
Trove::Db::Mysql::Host_access[$real_allowed_hosts] -> Exec<| title == 'trove-db-sync' |>
}

View File

@ -15,14 +15,14 @@
# License for the specific language governing permissions and limitations
# under the License.
#
# Class to execute "trove-manage db_sync"
# Class to execute "trove-manage db_sync
#
class trove::db::sync {
exec { 'trove-manage db_sync':
exec { 'trove-db-sync':
path => '/usr/bin',
user => 'trove',
refreshonly => true,
subscribe => [Package['trove'], Trove_config['database/connection']],
subscribe => [Package['trove'], Keystone_config['DEFAULT/sql_connection']],
require => User['trove'],
}
}

View File

@ -65,7 +65,6 @@ define trove::generic_service(
name => $service_name,
enable => $enabled,
hasstatus => true,
require => [Package['trove-common'], Package[$package_name]],
}
}
}

View File

@ -141,4 +141,9 @@ class trove(
$rpc_backend = 'trove.openstack.common.rpc.impl_kombu',
){
include trove::params
exec { 'post-trove_config':
command => '/bin/echo "Trove config has changed"',
refreshonly => true,
}
}

View File

@ -5,7 +5,6 @@ class trove::params {
case $::osfamily {
'RedHat': {
$client_package_name = 'openstack-trove'
$common_package_name = 'openstack-trove-common'
$conductor_package_name = 'openstack-trove-conductor'
$conductor_service_name = 'openstack-trove-conductor'
$api_package_name = 'openstack-trove-api'
@ -17,7 +16,6 @@ class trove::params {
}
'Debian': {
$client_package_name = 'python-troveclient'
$common_package_name = 'trove-common'
$conductor_package_name = 'trove-conductor'
$conductor_service_name = 'trove-conductor'
$api_package_name = 'trove-api'

View File

@ -0,0 +1,82 @@
#
# Copyright (C) 2014 eNovance SAS <licensing@etrovence.com>
#
# Author: Emilien Macchi <emilien.macchi@etrovence.com>
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
# Unit tests for trove::api
#
require 'spec_helper'
describe 'trove::api' do
let :pre_condition do
"class {'trove':}"
end
let :params do
{ :keystone_password => 'passw0rd' }
end
let :facts do
{ :processorcount => 5 }
end
shared_examples 'trove-api' do
context 'with default parameters' do
it 'installs trove-api package and service' do
should contain_service('trove-api').with(
:name => platform_params[:api_service_name],
:ensure => 'running',
:hasstatus => true,
:enable => true
)
should contain_package('trove-api').with(
:name => platform_params[:api_package_name],
:ensure => 'present',
:notify => 'Service[trove-api]'
)
end
end
end
context 'on Debian platforms' do
let :facts do
{ :osfamily => 'Debian' }
end
let :platform_params do
{ :api_package_name => 'trove-api',
:api_service_name => 'trove-api' }
end
it_configures 'trove-api'
end
context 'on RedHat platforms' do
let :facts do
{ :osfamily => 'RedHat' }
end
let :platform_params do
{ :api_package_name => 'openstack-trove-api',
:api_service_name => 'openstack-trove-api' }
end
it_configures 'trove-api'
end
end