
* Add pacemaker service provider and unit tests * Add generic OCF handler script for RA scripts * Add service class and docs for pacemaker primitives creation with default OCF type = pacemaker * Add specs for pacemaker service define Implements step 1 of blueprint pacemaker-provider-for-openstack Change-Id: I5d98d8f9494bb7df4466022b3d49ac6392deb1a5 Co-Author: Dmitry Ilyin (idv1985 <dilyin@mirantis.com>) Signed-off-by: Bogdan Dobrelya <bdobrelia@mirantis.com>
140 lines
4.6 KiB
Ruby
140 lines
4.6 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe 'openstack_extras::pacemaker::service', :type => :define do
|
|
|
|
let :pre_condition do
|
|
"class { 'foo': }"
|
|
end
|
|
|
|
let (:title) { 'foo-api' }
|
|
|
|
let :default_params do
|
|
{
|
|
:ensure => 'present',
|
|
:ocf_root_path => '/usr/lib/ocf',
|
|
:primitive_class => 'ocf',
|
|
:primitive_provider => 'pacemaker',
|
|
:primitive_type => false,
|
|
:parameters => false,
|
|
:operations => false,
|
|
:metadata => false,
|
|
:ms_metadata => false,
|
|
:use_handler => true,
|
|
:handler_root_path => '/usr/local/bin',
|
|
:ocf_script_template => false,
|
|
:ocf_script_file => false,
|
|
:create_primitive => true
|
|
}
|
|
end
|
|
|
|
context 'with defaults' do
|
|
it 'should contain openstack_extras::pacemaker::service definition' do
|
|
should contain_openstack_extras__pacemaker__service(title).with(default_params)
|
|
end
|
|
|
|
it 'should override existing service provider' do
|
|
should contain_service('foo-api').with(
|
|
{
|
|
:provider => 'pacemaker'
|
|
})
|
|
end
|
|
|
|
it 'should create a pacemaker primitive' do
|
|
should contain_cs_primitive('p_foo-api').with(
|
|
{
|
|
'ensure' => default_params[:ensure],
|
|
'primitive_class' => default_params[:primitive_class],
|
|
'primitive_type' => default_params[:primitive_type],
|
|
'provided_by' => default_params[:primitive_provider],
|
|
'parameters' => default_params[:parameters],
|
|
'operations' => default_params[:operations],
|
|
'metadata' => default_params[:metadata],
|
|
'ms_metadata' => default_params[:ms_metadata],
|
|
})
|
|
end
|
|
end
|
|
|
|
context 'with custom OCF file' do
|
|
let :params do
|
|
default_params.merge(
|
|
{
|
|
:ocf_script_file => 'foo/scripts/foo.ocf'
|
|
}
|
|
)
|
|
end
|
|
let (:ocf_dir_path) { "#{params[:ocf_root_path]}/resource.d" }
|
|
let (:ocf_script_path) { "#{ocf_dir_path}/#{params[:primitive_provider]}/#{params[:primitive_type]}" }
|
|
let (:ocf_handler_name) { "ocf_handler_#{title}" }
|
|
let (:ocf_handler_path) { "#{params[:handler_root_path]}/#{ocf_handler_name}" }
|
|
|
|
it 'should create an OCF file' do
|
|
should contain_file("#{title}-ocf-file").with(
|
|
{
|
|
'ensure' => 'present',
|
|
'path' => ocf_script_path,
|
|
'mode' => '0755',
|
|
'owner' => 'root',
|
|
'group' => 'root',
|
|
'source' => "puppet:///modules/#{params[:ocf_script_file]}"
|
|
})
|
|
end
|
|
|
|
it 'should create a handler file' do
|
|
should contain_file("#{ocf_handler_name}").with(
|
|
{
|
|
'ensure' => 'present',
|
|
'path' => ocf_handler_path,
|
|
'owner' => 'root',
|
|
'group' => 'root',
|
|
'mode' => '0700',
|
|
}).with_content(/OCF_ROOT/)
|
|
end
|
|
|
|
end
|
|
|
|
context 'with custom OCF path, provider, erb and w/o a wrapper' do
|
|
let(:params) do
|
|
default_params.merge(
|
|
{
|
|
:ocf_script_template => 'foo/foo.ocf.erb',
|
|
:use_handler => false,
|
|
:primitive_provider => 'some_provider',
|
|
:ocf_root_path => '/usr/lib/some_path',
|
|
})
|
|
end
|
|
let (:ocf_dir_path) { "#{params[:ocf_root_path]}/resource.d" }
|
|
let (:ocf_script_path) {
|
|
"#{ocf_dir_path}/#{params[:primitive_provider]}/#{params[:primitive_type]}"
|
|
}
|
|
|
|
it 'should create an OCF file from template' do
|
|
should contain_file("#{title}-ocf-file").with(
|
|
{
|
|
'path' => ocf_script_path,
|
|
'mode' => '0755',
|
|
'owner' => 'root',
|
|
'group' => 'root'
|
|
}).with_content(/erb/)
|
|
end
|
|
|
|
it 'should not create a handler file' do
|
|
should_not contain_file("#{params[:ocf_handler_name]}")
|
|
end
|
|
|
|
it 'should create a pacemaker primitive' do
|
|
should contain_cs_primitive('p_foo-api').with(
|
|
{
|
|
'ensure' => params[:ensure],
|
|
'primitive_class' => params[:primitive_class],
|
|
'primitive_type' => params[:primitive_type],
|
|
'provided_by' => params[:primitive_provider],
|
|
'parameters' => params[:parameters],
|
|
'operations' => params[:operations],
|
|
'metadata' => params[:metadata],
|
|
'ms_metadata' => params[:ms_metadata],
|
|
})
|
|
end
|
|
end
|
|
|
|
end
|