Initial msync run for all Puppet OpenStack modules
authorCody Herriges <cody@herriges.org>
Tue, 4 Aug 2015 18:53:56 +0000 (11:53 -0700)
committerSebastien Badia <sbadia@redhat.com>
Tue, 18 Aug 2015 12:30:54 +0000 (14:30 +0200)
This patch is the initial modulesync run, it impacts:

* gitignore: just a sync between projects
* gemfile:
  - update and allow to setup facter version and gem source
  - split beaker gems with a dedicated group
  - switch to rspec-puppet 2.2.0
* rakefile:
  - use the new syntax for lint configuration
  - add a acceptance target
* acceptance:
  - sync nodesets
  - update tests in order to use zuul-cloner
* spec: added rspec coverage report

Change-Id: Iadefbe2cc0525224e9917c6712712c67ce1e0fff

.gitignore
.sync.yml [new file with mode: 0644]
Gemfile
Rakefile
spec/acceptance/nodesets/centos-70-x64.yml [new file with mode: 0644]
spec/acceptance/nodesets/default.yml [new file with mode: 0644]
spec/acceptance/nodesets/nodepool-centos7.yml [new file with mode: 0644]
spec/acceptance/nodesets/nodepool-trusty.yml [new file with mode: 0644]
spec/acceptance/nodesets/ubuntu-server-1404-x64.yml [new file with mode: 0644]
spec/spec_helper.rb
spec/spec_helper_acceptance.rb [new file with mode: 0644]

index 9897b6f..4dd84f0 100644 (file)
@@ -1,5 +1,10 @@
-*.swp
-spec/fixtures/modules/*
-pkg
+pkg/
 Gemfile.lock
-.vagrant/*
+vendor/
+spec/fixtures/
+.vagrant/
+.bundle/
+coverage/
+.idea/
+*.swp
+*.iml
diff --git a/.sync.yml b/.sync.yml
new file mode 100644 (file)
index 0000000..66a03c6
--- /dev/null
+++ b/.sync.yml
@@ -0,0 +1,3 @@
+---
+spec/spec_helper.rb:
+  unmanaged: true
diff --git a/Gemfile b/Gemfile
index 10b37ac..6d4ce9a 100644 (file)
--- a/Gemfile
+++ b/Gemfile
@@ -1,26 +1,30 @@
-source 'https://rubygems.org'
+source ENV['GEM_SOURCE'] || "https://rubygems.org"
 
 group :development, :test do
-  gem 'puppetlabs_spec_helper', :require => false
-  gem 'rspec-puppet', '~> 2.1.0', :require => false
-
-  gem 'metadata-json-lint'
-  gem 'puppet-lint-param-docs'
-  gem 'puppet-lint-absolute_classname-check'
-  gem 'puppet-lint-absolute_template_path'
-  gem 'puppet-lint-trailing_newline-check'
-
-  # Puppet 4.x related lint checks
-  gem 'puppet-lint-unquoted_string-check'
-  gem 'puppet-lint-leading_zero-check'
-  gem 'puppet-lint-variable_contains_upcase'
-  gem 'puppet-lint-numericvariable'
+  gem 'puppetlabs_spec_helper',               :require => 'false'
+  gem 'rspec-puppet', '~> 2.2.0',             :require => 'false'
+  gem 'metadata-json-lint',                   :require => 'false'
+  gem 'puppet-lint-param-docs',               :require => 'false'
+  gem 'puppet-lint-absolute_classname-check', :require => 'false'
+  gem 'puppet-lint-absolute_template_path',   :require => 'false'
+  gem 'puppet-lint-trailing_newline-check',   :require => 'false'
+  gem 'puppet-lint-unquoted_string-check',    :require => 'false'
+  gem 'puppet-lint-leading_zero-check',       :require => 'false'
+  gem 'puppet-lint-variable_contains_upcase', :require => 'false'
+  gem 'puppet-lint-numericvariable',          :require => 'false'
+  gem 'json',                                 :require => 'false'
+  gem 'webmock',                              :require => 'false'
+end
 
-  gem 'json'
-  gem 'webmock'
-  gem 'r10k'
-  gem 'librarian-puppet-simple', '~> 0.0.3'
+group :system_tests do
+  gem 'beaker-rspec',                 :require => 'false'
+  gem 'beaker-puppet_install_helper', :require => 'false'
+end
 
+if facterversion = ENV['FACTER_GEM_VERSION']
+  gem 'facter', facterversion, :require => false
+else
+  gem 'facter', :require => false
 end
 
 if puppetversion = ENV['PUPPET_GEM_VERSION']
index 56dc07d..bc08f43 100644 (file)
--- a/Rakefile
+++ b/Rakefile
@@ -1,7 +1,21 @@
 require 'puppetlabs_spec_helper/rake_tasks'
 require 'puppet-lint/tasks/puppet-lint'
+require 'puppet-syntax/tasks/puppet-syntax'
 
-PuppetLint.configuration.fail_on_warnings = true
-PuppetLint.configuration.send('disable_80chars')
-PuppetLint.configuration.send('disable_class_parameter_defaults')
-PuppetLint.configuration.send('disable_class_inherits_from_params_class')
+PuppetSyntax.exclude_paths ||= []
+PuppetSyntax.exclude_paths << "spec/fixtures/**/*"
+PuppetSyntax.exclude_paths << "pkg/**/*"
+PuppetSyntax.exclude_paths << "vendor/**/*"
+
+Rake::Task[:lint].clear
+PuppetLint::RakeTask.new :lint do |config|
+  config.ignore_paths = ["spec/**/*.pp", "vendor/**/*.pp"]
+  config.fail_on_warnings = true
+  config.log_format = '%{path}:%{linenumber}:%{KIND}: %{message}'
+  config.disable_checks = ["80chars", "class_inherits_from_params_class", "class_parameter_defaults", "only_variable_string"]
+end
+
+desc "Run acceptance tests"
+RSpec::Core::RakeTask.new(:acceptance) do |t|
+  t.pattern = 'spec/acceptance'
+end
diff --git a/spec/acceptance/nodesets/centos-70-x64.yml b/spec/acceptance/nodesets/centos-70-x64.yml
new file mode 100644 (file)
index 0000000..5f097e9
--- /dev/null
@@ -0,0 +1,11 @@
+HOSTS:
+  centos-server-70-x64:
+    roles:
+      - master
+    platform: el-7-x86_64
+    box: puppetlabs/centos-7.0-64-nocm
+    box_url: https://vagrantcloud.com/puppetlabs/centos-7.0-64-nocm
+    hypervisor: vagrant
+CONFIG:
+  log_level: debug
+  type: foss
diff --git a/spec/acceptance/nodesets/default.yml b/spec/acceptance/nodesets/default.yml
new file mode 100644 (file)
index 0000000..3bb3e62
--- /dev/null
@@ -0,0 +1,11 @@
+HOSTS:
+  ubuntu-server-1404-x64:
+    roles:
+      - master
+    platform: ubuntu-14.04-amd64
+    box: puppetlabs/ubuntu-14.04-64-nocm
+    box_url: https://vagrantcloud.com/puppetlabs/ubuntu-14.04-64-nocm
+    hypervisor: vagrant
+CONFIG:
+  log_level: debug
+  type: git
diff --git a/spec/acceptance/nodesets/nodepool-centos7.yml b/spec/acceptance/nodesets/nodepool-centos7.yml
new file mode 100644 (file)
index 0000000..c552874
--- /dev/null
@@ -0,0 +1,10 @@
+HOSTS:
+  centos-70-x64:
+    roles:
+      - master
+    platform: el-7-x86_64
+    hypervisor: none
+    ip: 127.0.0.1
+CONFIG:
+  type: foss
+  set_env: false
diff --git a/spec/acceptance/nodesets/nodepool-trusty.yml b/spec/acceptance/nodesets/nodepool-trusty.yml
new file mode 100644 (file)
index 0000000..7f503ca
--- /dev/null
@@ -0,0 +1,10 @@
+HOSTS:
+  ubuntu-1404-x64:
+    roles:
+      - master
+    platform: ubuntu-14.04-amd64
+    hypervisor: none
+    ip: 127.0.0.1
+CONFIG:
+  type: foss
+  set_env: false
diff --git a/spec/acceptance/nodesets/ubuntu-server-1404-x64.yml b/spec/acceptance/nodesets/ubuntu-server-1404-x64.yml
new file mode 100644 (file)
index 0000000..3bb3e62
--- /dev/null
@@ -0,0 +1,11 @@
+HOSTS:
+  ubuntu-server-1404-x64:
+    roles:
+      - master
+    platform: ubuntu-14.04-amd64
+    box: puppetlabs/ubuntu-14.04-64-nocm
+    box_url: https://vagrantcloud.com/puppetlabs/ubuntu-14.04-64-nocm
+    hypervisor: vagrant
+CONFIG:
+  log_level: debug
+  type: git
index 0171d5d..700be6a 100644 (file)
@@ -1,5 +1,6 @@
 require 'puppetlabs_spec_helper/module_spec_helper'
 require 'shared_examples'
+require 'webmock/rspec'
 
 RSpec.configure do |c|
   c.alias_it_should_behave_like_to :it_configures, 'configures'
@@ -14,3 +15,5 @@ RSpec.configure do |c|
     :uniqueid       => '123'
   }
 end
+
+at_exit { RSpec::Puppet::Coverage.report! }
diff --git a/spec/spec_helper_acceptance.rb b/spec/spec_helper_acceptance.rb
new file mode 100644 (file)
index 0000000..429e807
--- /dev/null
@@ -0,0 +1,56 @@
+require 'beaker-rspec'
+require 'beaker/puppet_install_helper'
+
+run_puppet_install_helper
+
+RSpec.configure do |c|
+  # Project root
+  proj_root = File.expand_path(File.join(File.dirname(__FILE__), '..'))
+  modname = JSON.parse(open('metadata.json').read)['name'].split('-')[1]
+
+  # Readable test descriptions
+  c.formatter = :documentation
+
+  # Configure all nodes in nodeset
+  c.before :suite do
+    # Install module and dependencies
+    hosts.each do |host|
+
+      # install git
+      install_package host, 'git'
+
+      zuul_ref = ENV['ZUUL_REF']
+      zuul_branch = ENV['ZUUL_BRANCH']
+      zuul_url = ENV['ZUUL_URL']
+
+      repo = 'openstack/puppet-openstack-integration'
+
+      # Start out with clean moduledir, don't trust r10k to purge it
+      on host, "rm -rf /etc/puppet/modules/*"
+      # Install dependent modules via git or zuul
+      r = on host, "test -e /usr/zuul-env/bin/zuul-cloner", { :acceptable_exit_codes => [0,1] }
+      if r.exit_code == 0
+        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}"
+        on host, zuul_clone_cmd
+      else
+        on host, "git clone https://git.openstack.org/#{repo} #{repo}"
+      end
+
+      on host, "ZUUL_REF=#{zuul_ref} ZUUL_BRANCH=#{zuul_branch} ZUUL_URL=#{zuul_url} bash #{repo}/install_modules.sh"
+
+      # Install the module being tested
+      on host, "rm -fr /etc/puppet/modules/#{modname}"
+      puppet_module_install(:source => proj_root, :module_name => modname)
+
+      on host, "rm -fr #{repo}"
+
+      # List modules installed to help with debugging
+      on host, puppet('module','list'), { :acceptable_exit_codes => 0 }
+    end
+  end
+end