Filling out initial rubocop support for metadata.rb and the Gemfile.
https://blueprints.launchpad.net/openstack-chef/+spec/lint-and-unit-testing-for-havana Removing tailor, cleaning up metadata and Gemfile and adding TESTING.md. Will remove the .rubocop-todo.yml once the rest of the Rubocop support is filled out * updating chefspec to 3.1.4 (for chefspec coverage) Addresses: blueprint rubocop-for-network Change-Id: I9c9c5b48f3e1174b1e7ec7b5451a6ad9fd82b5e0
This commit is contained in:
parent
e10b15c783
commit
0a3e03b14b
|
@ -1,2 +1,7 @@
|
||||||
inherit_from:
|
# UTF-8 headers not generally in these files
|
||||||
- .rubocop-todo.yml
|
Encoding:
|
||||||
|
Enabled: false
|
||||||
|
|
||||||
|
# ignore long lines
|
||||||
|
LineLength:
|
||||||
|
Enabled: false
|
||||||
|
|
18
Gemfile
18
Gemfile
|
@ -1,11 +1,9 @@
|
||||||
# A sample Gemfile
|
source 'https://rubygems.org'
|
||||||
source "https://rubygems.org"
|
|
||||||
|
|
||||||
gem "chef", "~> 11.4.4"
|
gem 'chef', '~> 11.8'
|
||||||
gem "json", "<= 1.7.7" # chef dependency
|
gem 'json', '<= 1.7.7' # chef 11 dependency
|
||||||
gem "berkshelf", "~> 2.0.10"
|
gem 'berkshelf', '~> 2.0.10'
|
||||||
gem "chefspec", "~> 3.1.0"
|
gem 'chefspec', '~> 3.1.4'
|
||||||
gem "foodcritic", "~> 3.0.3"
|
gem 'foodcritic', '~> 3.0.3'
|
||||||
gem "strainer"
|
gem 'strainer'
|
||||||
gem "webmock", "~> 1.11.0"
|
gem 'rubocop', '>= 0.16.0'
|
||||||
gem "rubocop"
|
|
||||||
|
|
84
Gemfile.lock
84
Gemfile.lock
|
@ -9,12 +9,12 @@ GEM
|
||||||
gyoku (>= 0.4.0)
|
gyoku (>= 0.4.0)
|
||||||
nokogiri (>= 1.4.0)
|
nokogiri (>= 1.4.0)
|
||||||
ast (1.1.0)
|
ast (1.1.0)
|
||||||
berkshelf (2.0.10)
|
berkshelf (2.0.12)
|
||||||
activesupport (~> 3.2.0)
|
activesupport (~> 3.2.0)
|
||||||
addressable (~> 2.3.4)
|
addressable (~> 2.3.4)
|
||||||
buff-shell_out (~> 0.1)
|
buff-shell_out (~> 0.1)
|
||||||
chozo (>= 0.6.1)
|
chozo (>= 0.6.1)
|
||||||
faraday (>= 0.8.5)
|
faraday (~> 0.8.5)
|
||||||
hashie (>= 2.0.2)
|
hashie (>= 2.0.2)
|
||||||
minitar (~> 0.5.4)
|
minitar (~> 0.5.4)
|
||||||
rbzip2 (~> 0.2.0)
|
rbzip2 (~> 0.2.0)
|
||||||
|
@ -37,30 +37,41 @@ GEM
|
||||||
celluloid-io (0.14.1)
|
celluloid-io (0.14.1)
|
||||||
celluloid (>= 0.14.1)
|
celluloid (>= 0.14.1)
|
||||||
nio4r (>= 0.4.5)
|
nio4r (>= 0.4.5)
|
||||||
chef (11.4.4)
|
chef (11.8.2)
|
||||||
erubis
|
chef-zero (~> 1.6, >= 1.6.2)
|
||||||
highline (>= 1.6.9)
|
diff-lcs (~> 1.2, >= 1.2.4)
|
||||||
|
erubis (~> 2.7)
|
||||||
|
highline (~> 1.6, >= 1.6.9)
|
||||||
json (>= 1.4.4, <= 1.7.7)
|
json (>= 1.4.4, <= 1.7.7)
|
||||||
mixlib-authentication (>= 1.3.0)
|
mime-types (~> 1.16)
|
||||||
mixlib-cli (~> 1.3.0)
|
mixlib-authentication (~> 1.3)
|
||||||
mixlib-config (>= 1.1.2)
|
mixlib-cli (~> 1.3)
|
||||||
mixlib-log (>= 1.3.0)
|
mixlib-config (~> 2.0)
|
||||||
mixlib-shellout
|
mixlib-log (~> 1.3)
|
||||||
|
mixlib-shellout (~> 1.2)
|
||||||
net-ssh (~> 2.6)
|
net-ssh (~> 2.6)
|
||||||
net-ssh-multi (~> 1.1.0)
|
net-ssh-multi (~> 1.1.0)
|
||||||
ohai (>= 0.6.0)
|
ohai (~> 6.0)
|
||||||
|
pry (~> 0.9)
|
||||||
|
puma (~> 1.6)
|
||||||
rest-client (>= 1.0.4, < 1.7.0)
|
rest-client (>= 1.0.4, < 1.7.0)
|
||||||
yajl-ruby (~> 1.1)
|
yajl-ruby (~> 1.1)
|
||||||
chefspec (3.0.2)
|
chef-zero (1.7.2)
|
||||||
|
hashie (~> 2.0)
|
||||||
|
json
|
||||||
|
mixlib-log (~> 1.3)
|
||||||
|
moneta (< 0.7.0)
|
||||||
|
rack
|
||||||
|
chefspec (3.1.4)
|
||||||
chef (~> 11.0)
|
chef (~> 11.0)
|
||||||
fauxhai (~> 2.0)
|
fauxhai (~> 2.0)
|
||||||
|
i18n (>= 0.6.9, < 1.0.0)
|
||||||
rspec (~> 2.14)
|
rspec (~> 2.14)
|
||||||
chozo (0.6.1)
|
chozo (0.6.1)
|
||||||
activesupport (>= 3.2.0)
|
activesupport (>= 3.2.0)
|
||||||
hashie (>= 2.0.2)
|
hashie (>= 2.0.2)
|
||||||
multi_json (>= 1.3.0)
|
multi_json (>= 1.3.0)
|
||||||
crack (0.4.0)
|
coderay (1.1.0)
|
||||||
safe_yaml (~> 0.9.0)
|
|
||||||
diff-lcs (1.2.5)
|
diff-lcs (1.2.5)
|
||||||
erubis (2.7.0)
|
erubis (2.7.0)
|
||||||
faraday (0.8.8)
|
faraday (0.8.8)
|
||||||
|
@ -80,10 +91,11 @@ GEM
|
||||||
multi_json (~> 1.3)
|
multi_json (~> 1.3)
|
||||||
gssapi (1.0.3)
|
gssapi (1.0.3)
|
||||||
ffi (>= 1.0.1)
|
ffi (>= 1.0.1)
|
||||||
gyoku (1.1.0)
|
gyoku (1.1.1)
|
||||||
builder (>= 2.1.2)
|
builder (>= 2.1.2)
|
||||||
hashie (2.0.5)
|
hashie (2.0.5)
|
||||||
highline (1.6.20)
|
highline (1.6.20)
|
||||||
|
hitimes (1.2.1)
|
||||||
httpclient (2.3.4.1)
|
httpclient (2.3.4.1)
|
||||||
httpi (0.9.7)
|
httpi (0.9.7)
|
||||||
rack
|
rack
|
||||||
|
@ -94,15 +106,17 @@ GEM
|
||||||
logging (1.8.1)
|
logging (1.8.1)
|
||||||
little-plugger (>= 1.1.3)
|
little-plugger (>= 1.1.3)
|
||||||
multi_json (>= 1.3.6)
|
multi_json (>= 1.3.6)
|
||||||
mime-types (2.0)
|
method_source (0.8.2)
|
||||||
|
mime-types (1.25.1)
|
||||||
minitar (0.5.4)
|
minitar (0.5.4)
|
||||||
mixlib-authentication (1.3.0)
|
mixlib-authentication (1.3.0)
|
||||||
mixlib-log
|
mixlib-log
|
||||||
mixlib-cli (1.3.0)
|
mixlib-cli (1.4.0)
|
||||||
mixlib-config (2.1.0)
|
mixlib-config (2.1.0)
|
||||||
mixlib-log (1.6.0)
|
mixlib-log (1.6.0)
|
||||||
mixlib-shellout (1.3.0)
|
mixlib-shellout (1.3.0)
|
||||||
multi_json (1.8.2)
|
moneta (0.6.0)
|
||||||
|
multi_json (1.8.3)
|
||||||
multipart-post (1.2.0)
|
multipart-post (1.2.0)
|
||||||
net-http-persistent (2.9)
|
net-http-persistent (2.9)
|
||||||
net-ssh (2.7.0)
|
net-ssh (2.7.0)
|
||||||
|
@ -112,7 +126,7 @@ GEM
|
||||||
net-ssh (>= 2.1.4)
|
net-ssh (>= 2.1.4)
|
||||||
net-ssh-gateway (>= 0.99.0)
|
net-ssh-gateway (>= 0.99.0)
|
||||||
nio4r (0.5.0)
|
nio4r (0.5.0)
|
||||||
nokogiri (1.5.10)
|
nokogiri (1.5.11)
|
||||||
nori (1.1.5)
|
nori (1.1.5)
|
||||||
ohai (6.20.0)
|
ohai (6.20.0)
|
||||||
ipaddress
|
ipaddress
|
||||||
|
@ -122,18 +136,24 @@ GEM
|
||||||
mixlib-shellout
|
mixlib-shellout
|
||||||
systemu (~> 2.5.2)
|
systemu (~> 2.5.2)
|
||||||
yajl-ruby
|
yajl-ruby
|
||||||
parser (2.0.0)
|
parser (2.1.2)
|
||||||
ast (~> 1.1)
|
ast (~> 1.1)
|
||||||
slop (~> 3.4, >= 3.4.5)
|
slop (~> 3.4, >= 3.4.5)
|
||||||
polyglot (0.3.3)
|
polyglot (0.3.3)
|
||||||
powerpack (0.0.9)
|
powerpack (0.0.9)
|
||||||
|
pry (0.9.12.4)
|
||||||
|
coderay (~> 1.0)
|
||||||
|
method_source (~> 0.8)
|
||||||
|
slop (~> 3.4)
|
||||||
|
puma (1.6.3)
|
||||||
|
rack (~> 1.2)
|
||||||
rack (1.5.2)
|
rack (1.5.2)
|
||||||
rainbow (1.1.4)
|
rainbow (1.99.1)
|
||||||
rake (10.1.0)
|
rake (10.1.1)
|
||||||
rbzip2 (0.2.0)
|
rbzip2 (0.2.0)
|
||||||
rest-client (1.6.7)
|
rest-client (1.6.7)
|
||||||
mime-types (>= 1.16)
|
mime-types (>= 1.16)
|
||||||
retryable (1.3.3)
|
retryable (1.3.4)
|
||||||
ridley (1.5.3)
|
ridley (1.5.3)
|
||||||
addressable
|
addressable
|
||||||
buff-config (~> 0.2)
|
buff-config (~> 0.2)
|
||||||
|
@ -162,12 +182,11 @@ GEM
|
||||||
rspec-expectations (2.14.4)
|
rspec-expectations (2.14.4)
|
||||||
diff-lcs (>= 1.1.3, < 2.0)
|
diff-lcs (>= 1.1.3, < 2.0)
|
||||||
rspec-mocks (2.14.4)
|
rspec-mocks (2.14.4)
|
||||||
rubocop (0.15.0)
|
rubocop (0.16.0)
|
||||||
parser (~> 2.0)
|
parser (~> 2.1)
|
||||||
powerpack (~> 0.0.6)
|
powerpack (~> 0.0.6)
|
||||||
rainbow (>= 1.1.4)
|
rainbow (>= 1.1.4)
|
||||||
rubyntlm (0.1.1)
|
rubyntlm (0.1.1)
|
||||||
safe_yaml (0.9.3)
|
|
||||||
savon (0.9.5)
|
savon (0.9.5)
|
||||||
akami (~> 1.0)
|
akami (~> 1.0)
|
||||||
builder (>= 2.1.2)
|
builder (>= 2.1.2)
|
||||||
|
@ -183,7 +202,8 @@ GEM
|
||||||
buff-platform (~> 0.1)
|
buff-platform (~> 0.1)
|
||||||
systemu (2.5.2)
|
systemu (2.5.2)
|
||||||
thor (0.18.1)
|
thor (0.18.1)
|
||||||
timers (1.1.0)
|
timers (2.0.0)
|
||||||
|
hitimes
|
||||||
treetop (1.4.15)
|
treetop (1.4.15)
|
||||||
polyglot
|
polyglot
|
||||||
polyglot (>= 0.3.1)
|
polyglot (>= 0.3.1)
|
||||||
|
@ -193,9 +213,6 @@ GEM
|
||||||
hashie (>= 2.0.2)
|
hashie (>= 2.0.2)
|
||||||
wasabi (1.0.0)
|
wasabi (1.0.0)
|
||||||
nokogiri (>= 1.4.0)
|
nokogiri (>= 1.4.0)
|
||||||
webmock (1.11.0)
|
|
||||||
addressable (>= 2.2.7)
|
|
||||||
crack (>= 0.3.2)
|
|
||||||
winrm (1.1.3)
|
winrm (1.1.3)
|
||||||
gssapi (~> 1.0.0)
|
gssapi (~> 1.0.0)
|
||||||
httpclient (~> 2.2, >= 2.2.0.2)
|
httpclient (~> 2.2, >= 2.2.0.2)
|
||||||
|
@ -211,10 +228,9 @@ PLATFORMS
|
||||||
|
|
||||||
DEPENDENCIES
|
DEPENDENCIES
|
||||||
berkshelf (~> 2.0.10)
|
berkshelf (~> 2.0.10)
|
||||||
chef (~> 11.4.4)
|
chef (~> 11.8)
|
||||||
chefspec (~> 3.0.2)
|
chefspec (~> 3.1.4)
|
||||||
foodcritic (~> 3.0.3)
|
foodcritic (~> 3.0.3)
|
||||||
json (<= 1.7.7)
|
json (<= 1.7.7)
|
||||||
rubocop
|
rubocop (>= 0.16.0)
|
||||||
strainer
|
strainer
|
||||||
webmock (~> 1.11.0)
|
|
||||||
|
|
10
README.md
10
README.md
|
@ -93,15 +93,7 @@ Templates
|
||||||
Testing
|
Testing
|
||||||
=======
|
=======
|
||||||
|
|
||||||
This cookbook uses [bundler](http://gembundler.com/), [berkshelf](http://berkshelf.com/), and [strainer](https://github.com/customink/strainer) to isolate dependencies and run tests.
|
Please refer to the [TESTING.md](TESTING.md) for instructions for testing the cookbook.
|
||||||
|
|
||||||
Tests are defined in Strainerfile.
|
|
||||||
|
|
||||||
To run tests:
|
|
||||||
|
|
||||||
$ bundle install # install gem dependencies
|
|
||||||
$ bundle exec berks install # install cookbook dependencies
|
|
||||||
$ bundle exec strainer test # run tests
|
|
||||||
|
|
||||||
License and Author
|
License and Author
|
||||||
==================
|
==================
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
# Strainerfile
|
# Strainerfile
|
||||||
rubocop: bundle exec rubocop $SANDBOX/$COOKBOOK
|
rubocop: bundle exec rubocop $SANDBOX/$COOKBOOK/Gemfile $SANDBOX/$COOKBOOK/metadata.rb --config $SANDBOX/$COOKBOOK/.rubocop.yml
|
||||||
|
# rubocop: bundle exec rubocop $SANDBOX/$COOKBOOK
|
||||||
knife test: bundle exec knife cookbook test $COOKBOOK
|
knife test: bundle exec knife cookbook test $COOKBOOK
|
||||||
foodcritic: bundle exec foodcritic -f any -t ~FC003 -t ~FC023 $SANDBOX/$COOKBOOK
|
foodcritic: bundle exec foodcritic -f any -t ~FC003 -t ~FC023 $SANDBOX/$COOKBOOK
|
||||||
chefspec: bundle exec rspec $SANDBOX/$COOKBOOK/spec
|
chefspec: bundle exec rspec $SANDBOX/$COOKBOOK/spec
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
# Testing the Cookbook #
|
||||||
|
|
||||||
|
This cookbook uses [bundler](http://gembundler.com/), [berkshelf](http://berkshelf.com/), and [strainer](https://github.com/customink/strainer) to isolate dependencies and run tests.
|
||||||
|
|
||||||
|
Tests are defined in [Strainerfile](Strainerfile), which in turn calls rubocop, knife, foodcritic and chefspec.
|
||||||
|
|
||||||
|
To run all of the tests with Strainer:
|
||||||
|
|
||||||
|
$ bundle exec strainer test -s Strainerfile
|
||||||
|
|
||||||
|
Or you may run the tests individually:
|
||||||
|
|
||||||
|
$ bundle install --path=.bundle # install gem dependencies
|
||||||
|
$ bundle exec berks install --path=.cookbooks # install cookbook dependencies
|
||||||
|
$ bundle exec strainer test -s Strainerfile # run tests
|
||||||
|
|
||||||
|
## Rubocop ##
|
||||||
|
|
||||||
|
[Rubocop](https://github.com/bbatsov/rubocop) is a static Ruby code analyzer, based on the community [Ruby style guide](https://github.com/bbatsov/ruby-style-guide). We are attempting to adhere to this where applicable, slowly cleaning up the cookbooks until we can turn on Rubocop for gating the commits.
|
||||||
|
|
||||||
|
### Attribute Rules ###
|
||||||
|
|
||||||
|
Since there are slight style differences between the coding of attributes, recipes and metadata files there are specific `.rubocop.yml` files for each of:
|
||||||
|
|
||||||
|
[Gemfile and metadata.rb](.rubocop.yml)
|
||||||
|
[attributes/*.rb](attributes/.rubocop.yml)
|
||||||
|
[recipes/.rubocop.yml](recipes/.rubocop.yml)
|
||||||
|
[spec/.rubocop.yml](spec/.rubocop.yml)
|
||||||
|
|
||||||
|
## Knife ##
|
||||||
|
|
||||||
|
[knife cookbook test](http://docs.opscode.com/chef/knife.html#test) is used to check the cookbook's Ruby and ERB files for basic syntax errors.
|
||||||
|
|
||||||
|
## Foodcritic ##
|
||||||
|
|
||||||
|
[Foodcritic](http://acrmp.github.io/foodcritic/) is a lint tool for Chef cookbooks. We ignore the following rules:
|
||||||
|
|
||||||
|
[FC003](http://acrmp.github.io/foodcritic/#FC003) these cookbooks are not intended for Chef Solo.
|
||||||
|
|
||||||
|
## Chefspec
|
||||||
|
|
||||||
|
[ChefSpec](http://code.sethvargo.com/chefspec/) is a unit testing framework for testing Chef cookbooks. ChefSpec makes it easy to write examples and get fast feedback on cookbook changes without the need for virtual machines or cloud servers.
|
26
metadata.rb
26
metadata.rb
|
@ -1,19 +1,19 @@
|
||||||
name "openstack-network"
|
name 'openstack-network'
|
||||||
maintainer "Jay Pipes <jaypipes@gmail.com>"
|
maintainer 'Jay Pipes <jaypipes@gmail.com>'
|
||||||
license "Apache 2.0"
|
license 'Apache 2.0'
|
||||||
description "Installs and configures the OpenStack Network API Service and various agents and plugins"
|
description 'Installs and configures the OpenStack Network API Service and various agents and plugins'
|
||||||
long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
|
long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
|
||||||
version "8.0.0"
|
version '8.0.0'
|
||||||
recipe "openstack-network::server", "Installs packages required for a OpenStack Network server"
|
recipe 'openstack-network::server', 'Installs packages required for a OpenStack Network server'
|
||||||
recipe "openstack-network::openvswitch", "Installs packages required for OVS"
|
recipe 'openstack-network::openvswitch', 'Installs packages required for OVS'
|
||||||
recipe "openstack-network::metadata_agent", "Installs packages required for a OpenStack Network Metadata Agent"
|
recipe 'openstack-network::metadata_agent', 'Installs packages required for a OpenStack Network Metadata Agent'
|
||||||
recipe "openstack-network::identity_registration", "Registers OpenStack Network endpoints and service user with Keystone"
|
recipe 'openstack-network::identity_registration', 'Registers OpenStack Network endpoints and service user with Keystone'
|
||||||
|
|
||||||
%w{ ubuntu fedora redhat centos suse }.each do |os|
|
%w{ ubuntu fedora redhat centos suse }.each do |os|
|
||||||
supports os
|
supports os
|
||||||
end
|
end
|
||||||
|
|
||||||
depends "openstack-identity", "~> 8.0"
|
depends 'openstack-identity', '~> 8.0'
|
||||||
depends "openstack-common", "~> 8.0"
|
depends 'openstack-common', '~> 8.0'
|
||||||
depends "mysql"
|
depends 'mysql'
|
||||||
depends "postgresql"
|
depends 'postgresql'
|
||||||
|
|
Loading…
Reference in New Issue