123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- #
- # Copyright (C) 2013 eNovance SAS <licensing@enovance.com>
- #
- # Author: Emilien Macchi <emilien.macchi@enovance.com>
- # Francois Charlier <francois.charlier@enovance.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 nova::cells class
- #
- require 'spec_helper'
- describe 'nova::cells' do
- let :pre_condition do
- "include nova"
- end
- let :default_params do
- {:enabled => true,
- :bandwidth_update_interval => '600',
- :call_timeout => '60',
- :capabilities => ['hypervisor=xenserver;kvm','os=linux;windows'],
- :db_check_interval => '60',
- :instance_updated_at_threshold => '3600',
- :instance_update_num_instances => '1',
- :max_hop_count => '10',
- :mute_child_interval => '300',
- :mute_weight_multiplier => '-10.0',
- :mute_weight_value => '1000.0',
- :ram_weight_multiplier => '10.0',
- :reserve_percent => '10.0',
- :rpc_driver_queue_base => 'cells.intercell',
- :scheduler_filter_classes => 'nova.cells.filters.all_filters',
- :scheduler => 'nova.cells.scheduler.CellsScheduler',
- :scheduler_retries => '10',
- :scheduler_retry_delay => '2',
- :scheduler_weight_classes => 'nova.cells.weights.all_weighers',
- :weight_offset => '1.0',
- :weight_scale => '1.0'}
- end
- shared_examples_for 'nova-cells' do
- it { is_expected.to contain_class('nova::params') }
- it 'installs nova-cells package' do
- is_expected.to contain_package('nova-cells').with(
- :ensure => 'present',
- :name => platform_params[:cells_package_name],
- :tag => ['openstack', 'nova-package']
- )
- end
- it 'configures nova-cells service' do
- is_expected.to contain_service('nova-cells').with(
- :ensure => 'running',
- :name => platform_params[:cells_service_name],
- :tag => 'nova-service'
- )
- end
- it 'configures cell' do
- is_expected.to contain_nova_config('cells/bandwidth_update_interval').with(:value => '600')
- is_expected.to contain_nova_config('cells/call_timeout').with(:value => '60')
- is_expected.to contain_nova_config('cells/capabilities').with(:value => 'hypervisor=xenserver;kvm,os=linux;windows')
- is_expected.to contain_nova_config('cells/db_check_interval').with(:value => '60')
- is_expected.to contain_nova_config('cells/instance_updated_at_threshold').with(:value => '3600')
- is_expected.to contain_nova_config('cells/instance_update_num_instances').with(:value => '1')
- is_expected.to contain_nova_config('cells/max_hop_count').with(:value => '10')
- is_expected.to contain_nova_config('cells/mute_child_interval').with(:value => '300')
- is_expected.to contain_nova_config('cells/mute_weight_multiplier').with(:value => '-10.0')
- is_expected.to contain_nova_config('cells/mute_weight_value').with(:value => '1000.0')
- is_expected.to contain_nova_config('cells/ram_weight_multiplier').with(:value => '10.0')
- is_expected.to contain_nova_config('cells/reserve_percent').with(:value => '10.0')
- is_expected.to contain_nova_config('cells/rpc_driver_queue_base').with(:value => 'cells.intercell')
- is_expected.to contain_nova_config('cells/scheduler_filter_classes').with(:value => 'nova.cells.filters.all_filters')
- is_expected.to contain_nova_config('cells/scheduler_retries').with(:value => '10')
- is_expected.to contain_nova_config('cells/scheduler_retry_delay').with(:value => '2')
- is_expected.to contain_nova_config('cells/scheduler_weight_classes').with(:value => 'nova.cells.weights.all_weighers')
- is_expected.to contain_nova_config('cells/scheduler').with(:value => 'nova.cells.scheduler.CellsScheduler')
- end
- end
- shared_examples_for 'a parent cell' do
- let :params do
- { :enabled => true,
- :cell_type => 'parent',
- :cell_name => 'mommy' }
- end
- let :expected_params do
- default_params.merge(params)
- end
- it { is_expected.to contain_nova_config('cells/name').with_value(expected_params[:cell_name]) }
- it { is_expected.to contain_nova_config('DEFAULT/compute_api_class').with_value('nova.compute.cells_api.ComputeCellsAPI')}
- it { is_expected.to contain_nova_config('cells/cell_type').with_value('api')}
- it_configures 'nova-cells'
- end
- shared_examples_for 'a parent cell with manage_service as false' do
- let :params do
- { :enabled => true,
- :manage_service => false,
- :cell_type => 'parent',
- :cell_name => 'mommy' }
- end
- let :expected_params do
- default_params.merge(params)
- end
- it { is_expected.to contain_service(platform_params[:cells_service_name]).without_ensure }
- end
- shared_examples_for 'a child cell' do
- let :params do
- { :enabled => true,
- :cell_type => 'child',
- :cell_name => 'henry' }
- end
- let :expected_params do
- default_params.merge(params)
- end
- it { is_expected.to contain_nova_config('cells/name').with_value(expected_params[:cell_name]) }
- it { is_expected.to contain_nova_config('cells/cell_type').with_value('compute')}
- it_configures 'nova-cells'
- 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
- case facts[:osfamily]
- when 'Debian'
- let (:platform_params) do
- {
- :cells_package_name => 'nova-cells',
- :cells_service_name => 'nova-cells'
- }
- end
- it_configures 'a parent cell with manage_service as false'
- when 'RedHat'
- let (:platform_params) do
- {
- :cells_package_name => 'openstack-nova-cells',
- :cells_service_name => 'openstack-nova-cells'
- }
- end
- end
- it_configures 'a parent cell'
- it_configures 'a child cell'
- end
- end
- end
|