From 8b1f918da2d31ec2ab6781c0e9891656e890aa30 Mon Sep 17 00:00:00 2001 From: Emilien Macchi Date: Thu, 8 Oct 2015 14:37:08 -0700 Subject: [PATCH] Try to use zuul-cloner to prepare fixtures In OpenStack Infra, we would like to run Puppet unit tests that sometimes depends on other Puppet OpenStack modules. Example: a patch in puppet-openstacklib that needs to be tested in puppet-nova. This patch modifies the Rakefile to: * clean spec_prep and spec_clean Rake tasks * use openstack/puppet-openstack-integration/install_modules_unit.sh script to clone modules. * do not use .fixtures.yaml file to clone modules and rely on zuul-cloner or git. * Add openstack/ in gitignore so we never commit the puppet-openstack-integration repository (can happen when spec_clean did not run but you want to submit the patch anyway) * Allow to run a custom Puppetfile if PUPPETFILE env is exported. It will allow people to test the module with the dependencies they like, feature we had with .fixtures.yaml. Also add 'r10k' to Gemfile. That way, we will be able to use zuul dependencies and run tests accross modules like we do with functional testing. Change-Id: I8b884ef477bbc031da6bd3955ed308679e0380f6 release: prepare 7.0.0 (liberty) This patch prepares this Puppet module to be released in 7.x series (Liberty) with 7.0.0. Change-Id: I4d892d41a8d7c8ed1f1a00712afced944c821f92 Update rspec tests for keystone https://review.openstack.org/#/c/228744/ has been merged, we need to drop the 'tenant' parameter to Keystone_user resource. Change-Id: I515769d73b26b21b2a18914411a9d9aee27f95c9 --- .fixtures.yml | 15 ----- .gitignore | 1 + CHANGELOG.md | 58 +++++++++++++++++ Gemfile | 1 + README.md | 2 +- Rakefile | 64 +++++++++++++++++++ metadata.json | 6 +- spec/classes/ceilometer_keystone_auth_spec.rb | 2 - spec/spec_helper_acceptance.rb | 2 +- 9 files changed, 129 insertions(+), 22 deletions(-) delete mode 100644 .fixtures.yml diff --git a/.fixtures.yml b/.fixtures.yml deleted file mode 100644 index 7f0c8e3..0000000 --- a/.fixtures.yml +++ /dev/null @@ -1,15 +0,0 @@ -fixtures: - repositories: - 'apache': 'git://github.com/puppetlabs/puppetlabs-apache.git' - 'concat': - 'repo': 'git://github.com/puppetlabs/puppetlabs-concat.git' - 'ref': '1.2.1' - 'inifile': 'git://github.com/puppetlabs/puppetlabs-inifile' - 'keystone': 'git://github.com/openstack/puppet-keystone.git' - 'mysql': 'git://github.com/puppetlabs/puppetlabs-mysql.git' - 'nova': 'git://github.com/openstack/puppet-nova.git' - 'openstacklib': 'git://github.com/openstack/puppet-openstacklib.git' - 'postgresql': 'git://github.com/puppetlabs/puppet-postgresql.git' - 'stdlib': 'git://github.com/puppetlabs/puppetlabs-stdlib.git' - symlinks: - 'ceilometer': "#{source_dir}" diff --git a/.gitignore b/.gitignore index 4dd84f0..15c55ef 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ coverage/ .idea/ *.swp *.iml +openstack/ diff --git a/CHANGELOG.md b/CHANGELOG.md index e29904b..3bd9edc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,61 @@ +##2015-11-25 - 7.0.0 +###Summary + +This is a backwards-incompatible major release for OpenStack Liberty. + +####Backwards-incompatible changes +- change section name for AMQP qpid parameters +- remove deprecated mysql_module + +####Features +- keystone/auth: make service description configurable +- add support for RabbitMQ connection heartbeat +- simplify parameters for rpc_backend +- add tag to package and service resources +- enable support for memcached_servers +- add ability to specify ttl and timeout parameters +- add ability to manage use_stderr parameter +- creation of ceilometer::db::sync +- reflect provider change in puppet-openstacklib +- make 'alarm_history_time_to_live' parameter configurable +- update ceilometer::db class to match other module pattern +- implement auth_endpoint_type parameter +- stop managing File resources +- put all the logging related parameters to the logging class +- add mongodb_replica_set option +- allow customization of db sync command line + +####Bugfixes +- rely on autorequire for config resource ordering +- compute agent: do not try to configure nova.conf +- agent/auth: bring consistent how we manage empty parameters +- remove the api service subscription on db sync +- wsgi: make sure eventlet process is stopped before httpd +- auth: drop service dependency for Keystone_user_role + +####Maintenance +- fix rspec 3.x syntax +- initial msync run for all Puppet OpenStack modules +- acceptance: enable debug & verbosity for OpenStack logs +- acceptance/eventlet: make sure apache is stopped +- acceptance: use common bits from puppet-openstack-integration +- rspec: run tests for ::ceilometer::agent::auth +- try to use zuul-cloner to prepare fixtures +- spec: Enable webmock connect to IPv4 link-local +- db: Use postgresql lib class for psycopg package +- remove class_parameter_defaults puppet-lint check + +##2015-10-10 - 6.1.0 +###Summary + +This is a feature and bugfix release in the Kilo series. + +####Bugfixes +- WSGI: make it work, and test it with acceptance + +####Maintenance +- acceptance: checkout stable/kilo puppet modules + ##2015-07-08 - 6.0.0 ###Summary diff --git a/Gemfile b/Gemfile index 6d4ce9a..fc22143 100644 --- a/Gemfile +++ b/Gemfile @@ -19,6 +19,7 @@ end group :system_tests do gem 'beaker-rspec', :require => 'false' gem 'beaker-puppet_install_helper', :require => 'false' + gem 'r10k', :require => 'false' end if facterversion = ENV['FACTER_GEM_VERSION'] diff --git a/README.md b/README.md index f94759b..b9cf4b2 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ Ceilometer ========== -6.0.0 - 2015.1 - Kilo +7.0.0 - 2015.2 - Liberty #### Table of Contents diff --git a/Rakefile b/Rakefile index bc08f43..3049244 100644 --- a/Rakefile +++ b/Rakefile @@ -1,6 +1,9 @@ require 'puppetlabs_spec_helper/rake_tasks' require 'puppet-lint/tasks/puppet-lint' require 'puppet-syntax/tasks/puppet-syntax' +require 'json' + +modname = JSON.parse(open('metadata.json').read)['name'].split('-')[1] PuppetSyntax.exclude_paths ||= [] PuppetSyntax.exclude_paths << "spec/fixtures/**/*" @@ -19,3 +22,64 @@ desc "Run acceptance tests" RSpec::Core::RakeTask.new(:acceptance) do |t| t.pattern = 'spec/acceptance' end + +Rake::Task[:spec_prep].clear +desc 'Create the fixtures directory' +task :spec_prep do + # Allow to test the module with custom dependencies + # like you could do with .fixtures file + if ENV['PUPPETFILE'] + puppetfile = ENV['PUPPETFILE'] + if ENV['GEM_HOME'] + gem_home = ENV['GEM_HOME'] + gem_bin_dir = "#{gem_home}" + '/bin/' + else + gem_bin_dir = '' + end + r10k = ['env'] + r10k += ["PUPPETFILE=#{puppetfile}"] + r10k += ["PUPPETFILE_DIR=#{Dir.pwd}/spec/fixtures/modules"] + r10k += ["#{gem_bin_dir}r10k"] + r10k += ['puppetfile', 'install', '-v'] + sh(*r10k) + else + # otherwise, use official OpenStack Puppetfile + zuul_ref = ENV['ZUUL_REF'] + zuul_branch = ENV['ZUUL_BRANCH'] + zuul_url = ENV['ZUUL_URL'] + repo = 'openstack/puppet-openstack-integration' + rm_rf(repo) + if File.exists?('/usr/zuul-env/bin/zuul-cloner') + zuul_clone_cmd = ['/usr/zuul-env/bin/zuul-cloner'] + zuul_clone_cmd += ['--cache-dir', '/opt/git'] + zuul_clone_cmd += ['--zuul-ref', "#{zuul_ref}"] + zuul_clone_cmd += ['--zuul-branch', "#{zuul_branch}"] + zuul_clone_cmd += ['--zuul-url', "#{zuul_url}"] + zuul_clone_cmd += ['git://git.openstack.org', "#{repo}"] + sh(*zuul_clone_cmd) + else + sh("git clone https://git.openstack.org/#{repo} -b stable/liberty #{repo}") + end + script = ['env'] + script += ["PUPPETFILE_DIR=#{Dir.pwd}/spec/fixtures/modules"] + script += ["ZUUL_REF=#{zuul_ref}"] + script += ["ZUUL_BRANCH=#{zuul_branch}"] + script += ["ZUUL_URL=#{zuul_url}"] + script += ['bash', "#{repo}/install_modules_unit.sh"] + sh(*script) + end + rm_rf("spec/fixtures/modules/#{modname}") + ln_s(Dir.pwd, "spec/fixtures/modules/#{modname}") + mkdir_p('spec/fixtures/manifests') + touch('spec/fixtures/manifests/site.pp') +end + +Rake::Task[:spec_clean].clear +desc 'Clean up the fixtures directory' +task :spec_clean do + rm_rf('spec/fixtures/modules') + rm_rf('openstack') + if File.zero?('spec/fixtures/manifests/site.pp') + rm_f('spec/fixtures/manifests/site.pp') + end +end diff --git a/metadata.json b/metadata.json index c7d82fc..c7fc20a 100644 --- a/metadata.json +++ b/metadata.json @@ -1,6 +1,6 @@ { "name": "openstack-ceilometer", - "version": "6.0.0", + "version": "7.0.0", "author": "eNovance and OpenStack Contributors", "summary": "Puppet module for OpenStack Ceilometer", "license": "Apache-2.0", @@ -33,8 +33,8 @@ "dependencies": [ { "name": "puppetlabs/apache", "version_requirement": ">=1.0.0 <2.0.0" }, { "name": "puppetlabs/inifile", "version_requirement": ">=1.0.0 <2.0.0" }, - { "name": "openstack/keystone", "version_requirement": ">=6.0.0 <7.0.0" }, + { "name": "openstack/keystone", "version_requirement": ">=7.0.0 <8.0.0" }, { "name": "puppetlabs/stdlib", "version_requirement": ">=4.0.0 <5.0.0" }, - { "name": "openstack/openstacklib", "version_requirement": ">=6.0.0 <7.0.0" } + { "name": "openstack/openstacklib", "version_requirement": ">=7.0.0 <8.0.0" } ] } diff --git a/spec/classes/ceilometer_keystone_auth_spec.rb b/spec/classes/ceilometer_keystone_auth_spec.rb index a0302db..649b55a 100644 --- a/spec/classes/ceilometer_keystone_auth_spec.rb +++ b/spec/classes/ceilometer_keystone_auth_spec.rb @@ -32,7 +32,6 @@ describe 'ceilometer::keystone::auth' do :ensure => 'present', :password => params[:password], :email => default_params[:email], - :tenant => default_params[:tenant] ) end @@ -80,7 +79,6 @@ describe 'ceilometer::keystone::auth' do :ensure => 'present', :password => params[:password], :email => params[:email], - :tenant => params[:tenant] ) end diff --git a/spec/spec_helper_acceptance.rb b/spec/spec_helper_acceptance.rb index 429e807..15e8cc9 100644 --- a/spec/spec_helper_acceptance.rb +++ b/spec/spec_helper_acceptance.rb @@ -38,7 +38,7 @@ RSpec.configure do |c| zuul_clone_cmd += "git://git.openstack.org #{repo}" on host, zuul_clone_cmd else - on host, "git clone https://git.openstack.org/#{repo} #{repo}" + on host, "git clone https://git.openstack.org/#{repo} -b stable/liberty #{repo}" end on host, "ZUUL_REF=#{zuul_ref} ZUUL_BRANCH=#{zuul_branch} ZUUL_URL=#{zuul_url} bash #{repo}/install_modules.sh" -- 2.45.2