diff options
author | Tim Rozet <trozet@redhat.com> | 2017-01-25 15:09:32 -0500 |
---|---|---|
committer | Tim Rozet <trozet@redhat.com> | 2017-03-16 16:13:10 -0400 |
commit | 0cec9b6f4936a056573a69257095fd56b69a816f (patch) | |
tree | 5addedcae5a92e647bb5403d93345558261a6d66 /spec/classes | |
parent | 4c07c75d5b77fd146ada9c464769822a828b4601 (diff) |
Enables OpenDaylight Clustering in HA deployments
Previously ODL was restricted to only running on the first node in an
tripleO HA deployment. This patches enables clustering for ODL and
allows multiple ODL instances (minimum 3 for HA).
Partially-implements: blueprint opendaylight-ha
Change-Id: Ic9a955a1c2afc040b2f9c6fb86573c04a60f9f31
Signed-off-by: Tim Rozet <trozet@redhat.com>
Diffstat (limited to 'spec/classes')
-rw-r--r-- | spec/classes/tripleo_profile_base_neutron_opendaylight_spec.rb | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/spec/classes/tripleo_profile_base_neutron_opendaylight_spec.rb b/spec/classes/tripleo_profile_base_neutron_opendaylight_spec.rb new file mode 100644 index 0000000..1eb79ae --- /dev/null +++ b/spec/classes/tripleo_profile_base_neutron_opendaylight_spec.rb @@ -0,0 +1,88 @@ +# +# Copyright (C) 2017 Red Hat, Inc. +# +# 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. +# + +require 'spec_helper' + +describe 'tripleo::profile::base::neutron::opendaylight' do + let :params do + { :step => 1, + :node_name => 'overcloud-controller-0', + } + end + shared_examples_for 'tripleo::profile::base::neutron::opendaylight' do + before :each do + facts.merge!({ :step => params[:step] }) + end + + context 'with noha' do + before do + params.merge!({ + :odl_api_ips => ['192.0.2.5'] + }) + end + it 'should install and configure opendaylight' do + is_expected.to contain_class('opendaylight') + end + end + + context 'with empty OpenDaylight API IPs' do + before do + params.merge!({ + :odl_api_ips => [] + }) + end + it 'should fail to install OpenDaylight' do + is_expected.to compile.and_raise_error(/No IPs assigned to OpenDaylight Api Service/) + end + end + + context 'with 2 OpenDaylight API IPs' do + before do + params.merge!({ + :odl_api_ips => ['192.0.2.5', '192.0.2.6'] + }) + end + it 'should fail to install OpenDaylight' do + is_expected.to compile.and_raise_error(/2 node OpenDaylight deployments are unsupported. Use 1 or greater than 2/) + end + end + + context 'with HA and 3 OpenDaylight API IPs' do + before do + params.merge!({ + :odl_api_ips => ['192.0.2.5', '192.0.2.6', '192.0.2.7'] + }) + end + it 'should install and configure OpenDaylight in HA' do + is_expected.to contain_class('opendaylight').with( + :enable_ha => true, + :ha_node_ips => params[:odl_api_ips], + :ha_node_index => '1', + ) + end + end + end + + on_supported_os.each do |os, facts| + context "on #{os}" do + let(:facts) do + facts.merge({ :hostname => 'node.example.com' }) + end + + it_behaves_like 'tripleo::profile::base::neutron::opendaylight' + end + end +end |