Skip to content

Instantly share code, notes, and snippets.

@bltavares
Forked from bobdanilo/util-openstack.sh
Created September 23, 2015 15:45
Show Gist options
  • Save bltavares/db59406d14f93f02a24e to your computer and use it in GitHub Desktop.
Save bltavares/db59406d14f93f02a24e to your computer and use it in GitHub Desktop.
#!/bin/bash
# Run in directory project
comment_spec(){
spec_helper=$(cat <<\EOF
require 'beaker-rspec'
hosts.each do |host|
#install_puppet
#on host, "mkdir -p #{host['distmoduledir']}"
end
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|
## Clean out any module cruft
#shell('rm -fr /etc/puppet/modules/*')
## install git
#install_package host, 'git'
#zuul_ref = ENV['ZUUL_REF']
#zuul_branch = ENV['ZUUL_BRANCH']
#zuul_url = ENV['ZUUL_URL']
## Install dependent modules via git or zuul
#r = on host, "test -e /usr/zuul-env/bin/zuul-cloner", { :acceptable_exit_codes => [0,1] }
#repo = 'openstack-infra/system-config'
#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}/tools/install_modules_acceptance.sh"
on host, "rm -fr /etc/puppet/modules/#{modname}"
# Install the module being tested
puppet_module_install(:source => proj_root, :module_name => modname)
#on host, "rm -fr #{repo}"
# List modules installed to help with debugging
on hosts[0], puppet('module','list'), { :acceptable_exit_codes => 0 }
end
end
end
EOF
)
cat > spec/spec_helper_acceptance.rb <<<"$spec_helper"
}
echo "Enter Option: "
echo "1)New Project "
echo "2)Run Test Centos"
echo "3)Run Test Ubuntu"
read option
case $option in
1)
echo "Project: "
read project_name
git clone https://review.openstack.org/openstack-infra/puppet-${project_name}
pushd puppet-$project_name
# git checkout -b add-acceptance-tests
gem_file_addition=$(cat <<\EOF
group :system_tests do
gem 'beaker-rspec', :require => false
end
EOF
)
gitignore=$(cat <<\EOF
Gemfile.lock
.bundled_gems/
log/
junit/
.vagrant/
EOF
)
basic_spec=$(cat <<\EOF
require 'spec_helper_acceptance'
describe 'puppet-'${project_name}' module' do
def pp_path
base_path = File.dirname(__FILE__)
File.join(base_path, 'fixtures')
end
def preconditions_puppet_module
module_path = File.join(pp_path, 'preconditions.pp')
File.read(module_path)
end
def default_puppet_module
module_path = File.join(pp_path, 'default.pp')
File.read(module_path)
end
before(:all) do
apply_manifest(preconditions_puppet_module, catch_failures: true)
end
it 'should work with no errors' do
apply_manifest(default_puppet_module, catch_failures: true)
end
it 'should be idempotent' do
apply_manifest(default_puppet_module, catch_failures: true)
apply_manifest(default_puppet_module, catch_changes: true)
end
end
EOF
)
cat > .gitignore <<<"$gitignore"
cat > spec/acceptance/basic_spec.rb <<<"$basic_spec"
cat >> Gemfile <<<"$gem_file_addition"
mkdir -p spec/acceptance/fixtures/
touch spec/acceptance/fixtures/{default,preconditions}.pp
bundle install
;;
2)
platform='platform: el-7-x86_64'
box='box: glauco\/openstack-infra-development-centos'
sed -i '' -e "s/platform.*/${platform}/" spec/acceptance/nodesets/default.yml
sed -i '' -e "s/box:.*/${box}/" spec/acceptance/nodesets/default.yml
comment_spec
;;
3)
platform='platform: ubuntu-14.04-amd64'
box='box: glauco\/openstack-infra-development-ubuntu'
sed -i '' -e "s/platform.*/${platform}/" spec/acceptance/nodesets/default.yml
sed -i '' -e "s/box:.*/${box}/" spec/acceptance/nodesets/default.yml
comment_spec
;;
*) echo "INVALID NUMBER!" ;;
esac
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment