125 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			125 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
#
 | 
						|
# Copyright (C) 2014 eNovance SAS <licensing@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 cloud::loadbalancer class
 | 
						|
#
 | 
						|
 | 
						|
require 'spec_helper'
 | 
						|
 | 
						|
describe 'cloud::loadbalancer' do
 | 
						|
 | 
						|
  shared_examples_for 'openstack loadbalancer' do
 | 
						|
 | 
						|
    let :params do
 | 
						|
      { :ceilometer_api                 => true,
 | 
						|
        :cinder_api                     => true,
 | 
						|
        :glance_api                     => true,
 | 
						|
        :neutron_api                    => true,
 | 
						|
        :heat_api                       => true,
 | 
						|
        :heat_cfn_api                   => true,
 | 
						|
        :heat_cloudwatch_api            => true,
 | 
						|
        :nova_api                       => true,
 | 
						|
        :ec2_api                        => true,
 | 
						|
        :metadata_api                   => true,
 | 
						|
        :swift_api                      => true,
 | 
						|
        :keystone_api_admin             => true,
 | 
						|
        :keystone_api                   => true,
 | 
						|
        :horizon                        => true,
 | 
						|
        :spice                          => true,
 | 
						|
        :haproxy_auth                   => 'root:secrete',
 | 
						|
        :keepalived_priority            => 50,
 | 
						|
        :keepalived_interface           => 'eth0',
 | 
						|
        :keepalived_ipvs                => ['10.0.0.1', '10.0.0.2'],
 | 
						|
        :keepalived_localhost_ip        => '127.0.0.1',
 | 
						|
        :horizon_port                   => '80',
 | 
						|
        :spice_port                     => '6082',
 | 
						|
        :openstack_vip                  => '10.0.0.3',
 | 
						|
        :mysql_vip                      => '10.0.0.4',
 | 
						|
        :ks_ceilometer_public_port      => '8777',
 | 
						|
        :ks_nova_public_port            => '8774',
 | 
						|
        :ks_ec2_public_port             => '8773',
 | 
						|
        :ks_metadata_public_port        => '8777',
 | 
						|
        :ks_glance_public_port          => '9292',
 | 
						|
        :ks_swift_public_port           => '8080',
 | 
						|
        :ks_keystone_public_port        => '5000',
 | 
						|
        :ks_keystone_admin_port         => '35357',
 | 
						|
        :ks_cinder_public_port          => '8776',
 | 
						|
        :ks_neutron_public_port         => '9696',
 | 
						|
        :ks_heat_public_port            => '8004',
 | 
						|
        :ks_heat_cfn_public_port        => '8000',
 | 
						|
        :ks_heat_cloudwatch_public_port => '8003' }
 | 
						|
    end
 | 
						|
 | 
						|
    it 'configure haproxy server' do
 | 
						|
      should contain_class('haproxy').with({
 | 
						|
        'manage_service' => 'false',
 | 
						|
      })
 | 
						|
    end
 | 
						|
 | 
						|
    it 'configure keepalived server' do
 | 
						|
      should contain_class('keepalived')
 | 
						|
    end
 | 
						|
 | 
						|
    context 'configure keepalived in backup' do
 | 
						|
      it 'configure vrrp_instance with BACKUP state' do
 | 
						|
        should contain_keepalived__instance('1').with({
 | 
						|
          'interface'     => 'eth0',
 | 
						|
          'track_script'  => ['haproxy'],
 | 
						|
          'state'         => 'BACKUP',
 | 
						|
          'priority'      => 50,
 | 
						|
          'notify_master' => '"/etc/init.d/haproxy start"',
 | 
						|
          'notify_backup' => '"/etc/init.d/haproxy stop"',
 | 
						|
        })
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
    context 'configure keepalived in master' do
 | 
						|
      before :each do
 | 
						|
        params.merge!( :keepalived_state => 'MASTER' )
 | 
						|
      end
 | 
						|
      it 'configure vrrp_instance with MASTER state' do
 | 
						|
        should contain_keepalived__instance('1').with({
 | 
						|
          'interface'     => 'eth0',
 | 
						|
          'track_script'  => ['haproxy'],
 | 
						|
          'state'         => 'MASTER',
 | 
						|
          'priority'      => 50,
 | 
						|
          'notify_master' => '"/etc/init.d/haproxy start"',
 | 
						|
          'notify_backup' => '"/etc/init.d/haproxy stop"',
 | 
						|
        })
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
  end
 | 
						|
 | 
						|
  context 'on Debian platforms' do
 | 
						|
    let :facts do
 | 
						|
      { :osfamily       => 'Debian',
 | 
						|
        :concat_basedir => '/var/lib/puppet/concat' }
 | 
						|
    end
 | 
						|
 | 
						|
    it_configures 'openstack loadbalancer'
 | 
						|
  end
 | 
						|
 | 
						|
  context 'on RedHat platforms' do
 | 
						|
    let :facts do
 | 
						|
      { :osfamily       => 'RedHat',
 | 
						|
        :concat_basedir => '/var/lib/puppet/concat' }
 | 
						|
    end
 | 
						|
 | 
						|
    it_configures 'openstack loadbalancer'
 | 
						|
  end
 | 
						|
 | 
						|
end
 |