diff --git a/attributes/default.rb b/attributes/default.rb index ae435c8f..350ff8a0 100644 --- a/attributes/default.rb +++ b/attributes/default.rb @@ -79,6 +79,7 @@ default['openstack']['apt']['components'] = ["precise-updates/#{node['openstack' default['openstack']['zypp']['repo-key'] = 'd85f9316' # 32 bit key ID default['openstack']['zypp']['uri'] = 'http://download.opensuse.org/repositories/Cloud:/OpenStack:/%release%/%suse-release%/' +default['openstack']['yum']['rdo_enabled'] = true default['openstack']['yum']['uri'] = 'http://repos.fedorapeople.org/repos/openstack/openstack-havana/epel-6' default['openstack']['yum']['repo-key'] = 'https://raw.github.com/redhat-openstack/rdo-release/master/RPM-GPG-KEY-RDO-Havana' diff --git a/recipes/default.rb b/recipes/default.rb index 73a574e4..7b4044ab 100644 --- a/recipes/default.rb +++ b/recipes/default.rb @@ -39,9 +39,15 @@ when 'debian' when 'rhel' + if node['openstack']['yum']['rdo_enabled'] + repo_action = :add + else + repo_action = :remove + end + yum_key "RPM-GPG-KEY-RDO-#{node['openstack']['release']}" do url node['openstack']['yum']['repo-key'] - action :add + action repo_action end yum_repository "RDO-#{node['openstack']['release']}" do @@ -49,6 +55,7 @@ when 'rhel' key "RPM-GPG-KEY-RDO-#{node['openstack']['release']}" url node['openstack']['yum']['uri'] enabled 1 + action repo_action end when 'suse' diff --git a/spec/default-redhat_spec.rb b/spec/default-redhat_spec.rb new file mode 100644 index 00000000..05386ebb --- /dev/null +++ b/spec/default-redhat_spec.rb @@ -0,0 +1,44 @@ +# encoding: UTF-8 + +require_relative 'spec_helper' + +describe 'openstack-common::default' do + describe 'rhel-rdo' do + before do + @chef_run = ::ChefSpec::Runner.new(::REDHAT_OPTS) do |n| + n.set['openstack']['release'] = 'testrelease' + end + @chef_run.converge 'openstack-common::default' + end + + it 'installs RDO repo GPG key' do + key_name = 'RPM-GPG-KEY-RDO-testrelease' + expect(@chef_run).to add_yum_key(key_name) + end + + it 'configures RDO yum repository' do + repo_name = 'RDO-testrelease' + expect(@chef_run).to add_yum_repository(repo_name) + end + end + + describe 'rhel-no-rdo' do + before do + @chef_run = ::ChefSpec::Runner.new(::REDHAT_OPTS) do |n| + n.set['openstack']['release'] = 'testrelease' + n.set['openstack']['yum']['rdo_enabled'] = false + end + @chef_run.converge 'openstack-common::default' + end + + it 'installs RDO repo GPG key' do + key_name = 'RPM-GPG-KEY-RDO-testrelease' + expect(@chef_run).to remove_yum_key(key_name) + end + + it 'configures RDO yum repository' do + repo_name = 'RDO-testrelease' + expect(@chef_run).to remove_yum_repository(repo_name) + end + end +end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 394e9c96..cf8eac2f 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -3,12 +3,19 @@ require 'chefspec' require 'chefspec/berkshelf' +require_relative 'support/matchers' + ::LOG_LEVEL = :fatal ::UBUNTU_OPTS = { platform: 'ubuntu', version: '12.04', log_level: ::LOG_LEVEL } +::REDHAT_OPTS = { + platform: 'redhat', + version: '6.3', + log_level: ::LOG_LEVEL +} ::CHEFSPEC_OPTS = { log_level: ::LOG_LEVEL } diff --git a/spec/support/matchers.rb b/spec/support/matchers.rb new file mode 100644 index 00000000..bddc8299 --- /dev/null +++ b/spec/support/matchers.rb @@ -0,0 +1,28 @@ +# encoding: UTF-8 + +# for yum cookbook LWRPs +# yum_key +def add_yum_key(resource_name) + ChefSpec::Matchers::ResourceMatcher.new(:yum_key, :add, resource_name) +end + +def remove_yum_key(resource_name) + ChefSpec::Matchers::ResourceMatcher.new(:yum_key, :remove, resource_name) +end + +# yum_repository +def add_yum_repository(resource_name) + ChefSpec::Matchers::ResourceMatcher.new(:yum_repository, :add, resource_name) +end + +def remove_yum_repository(resource_name) + ChefSpec::Matchers::ResourceMatcher.new(:yum_repository, :remove, resource_name) +end + +def update_yum_repository(resource_name) + ChefSpec::Matchers::ResourceMatcher.new(:yum_repository, :update, resource_name) +end + +def create_yum_repository(resource_name) + ChefSpec::Matchers::ResourceMatcher.new(:yum_repository, :create, resource_name) +end