4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -1 +1,3 @@ | |||||||
| *.swp | .bundle | ||||||
|  | .cookbooks/ | ||||||
|  | Berksfile.lock | ||||||
|   | |||||||
							
								
								
									
										8
									
								
								Berksfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								Berksfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | |||||||
|  | metadata | ||||||
|  |  | ||||||
|  | cookbook "glance", | ||||||
|  |   git: "git@github.com:att-cloud/cookbook-glance.git" | ||||||
|  | cookbook "keystone", | ||||||
|  |   git: "git@github.com:att-cloud/cookbook-keystone.git" | ||||||
|  | cookbook "openstack-common", | ||||||
|  |   git: "git@github.com:att-cloud/cookbook-openstack-common.git" | ||||||
							
								
								
									
										6
									
								
								Gemfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								Gemfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | |||||||
|  | source "https://rubygems.org" | ||||||
|  |  | ||||||
|  | gem "chef", "~> 10.18.2" | ||||||
|  | gem "berkshelf",  "~> 1.4.0" | ||||||
|  | gem "chefspec", "~> 1.0.0" | ||||||
|  | gem "foodcritic", "~> 2.1.0" | ||||||
							
								
								
									
										165
									
								
								Gemfile.lock
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										165
									
								
								Gemfile.lock
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,165 @@ | |||||||
|  | GEM | ||||||
|  |   remote: https://rubygems.org/ | ||||||
|  |   specs: | ||||||
|  |     activesupport (3.2.13) | ||||||
|  |       i18n (= 0.6.1) | ||||||
|  |       multi_json (~> 1.0) | ||||||
|  |     addressable (2.3.4) | ||||||
|  |     berkshelf (1.4.2) | ||||||
|  |       activesupport (>= 3.2.0) | ||||||
|  |       addressable | ||||||
|  |       celluloid (>= 0.13.0) | ||||||
|  |       chozo (>= 0.6.1) | ||||||
|  |       faraday (>= 0.8.5) | ||||||
|  |       hashie (>= 2.0.2) | ||||||
|  |       json (>= 1.5.0) | ||||||
|  |       minitar | ||||||
|  |       mixlib-config (~> 1.1) | ||||||
|  |       mixlib-shellout (~> 1.1) | ||||||
|  |       multi_json (~> 1.5) | ||||||
|  |       retryable | ||||||
|  |       ridley (~> 0.9.0) | ||||||
|  |       solve (>= 0.4.2) | ||||||
|  |       thor (~> 0.18.0) | ||||||
|  |       yajl-ruby | ||||||
|  |     builder (3.2.0) | ||||||
|  |     bunny (0.7.9) | ||||||
|  |     celluloid (0.13.0) | ||||||
|  |       timers (>= 1.0.0) | ||||||
|  |     chef (10.18.2) | ||||||
|  |       bunny (>= 0.6.0, < 0.8.0) | ||||||
|  |       erubis | ||||||
|  |       highline (>= 1.6.9) | ||||||
|  |       json (>= 1.4.4, <= 1.6.1) | ||||||
|  |       mixlib-authentication (>= 1.3.0) | ||||||
|  |       mixlib-cli (>= 1.1.0) | ||||||
|  |       mixlib-config (>= 1.1.2) | ||||||
|  |       mixlib-log (>= 1.3.0) | ||||||
|  |       mixlib-shellout | ||||||
|  |       moneta (< 0.7.0) | ||||||
|  |       net-ssh (~> 2.2.2) | ||||||
|  |       net-ssh-multi (~> 1.1.0) | ||||||
|  |       ohai (>= 0.6.0) | ||||||
|  |       rest-client (>= 1.0.4, < 1.7.0) | ||||||
|  |       treetop (~> 1.4.9) | ||||||
|  |       uuidtools | ||||||
|  |       yajl-ruby (~> 1.1) | ||||||
|  |     chefspec (1.0.0) | ||||||
|  |       chef (>= 10.0) | ||||||
|  |       erubis | ||||||
|  |       fauxhai (~> 0.1) | ||||||
|  |       minitest-chef-handler (>= 0.6.0) | ||||||
|  |       rspec (~> 2.0) | ||||||
|  |     chozo (0.6.1) | ||||||
|  |       activesupport (>= 3.2.0) | ||||||
|  |       hashie (>= 2.0.2) | ||||||
|  |       multi_json (>= 1.3.0) | ||||||
|  |     ci_reporter (1.8.4) | ||||||
|  |       builder (>= 2.1.2) | ||||||
|  |     diff-lcs (1.2.4) | ||||||
|  |     erubis (2.7.0) | ||||||
|  |     faraday (0.8.7) | ||||||
|  |       multipart-post (~> 1.1) | ||||||
|  |     fauxhai (0.1.1) | ||||||
|  |       chef | ||||||
|  |       httparty | ||||||
|  |       net-ssh | ||||||
|  |     foodcritic (2.1.0) | ||||||
|  |       erubis | ||||||
|  |       gherkin (~> 2.11.7) | ||||||
|  |       nokogiri (~> 1.5.4) | ||||||
|  |       rak (~> 1.4) | ||||||
|  |       treetop (~> 1.4.10) | ||||||
|  |       yajl-ruby (~> 1.1.0) | ||||||
|  |     gherkin (2.11.8) | ||||||
|  |       multi_json (~> 1.3) | ||||||
|  |     hashie (2.0.4) | ||||||
|  |     highline (1.6.18) | ||||||
|  |     httparty (0.11.0) | ||||||
|  |       multi_json (~> 1.0) | ||||||
|  |       multi_xml (>= 0.5.2) | ||||||
|  |     i18n (0.6.1) | ||||||
|  |     ipaddress (0.8.0) | ||||||
|  |     json (1.6.1) | ||||||
|  |     mime-types (1.23) | ||||||
|  |     minitar (0.5.4) | ||||||
|  |     minitest (4.7.4) | ||||||
|  |     minitest-chef-handler (1.0.1) | ||||||
|  |       chef | ||||||
|  |       ci_reporter | ||||||
|  |       minitest (~> 4.7.3) | ||||||
|  |     mixlib-authentication (1.3.0) | ||||||
|  |       mixlib-log | ||||||
|  |     mixlib-cli (1.3.0) | ||||||
|  |     mixlib-config (1.1.2) | ||||||
|  |     mixlib-log (1.6.0) | ||||||
|  |     mixlib-shellout (1.1.0) | ||||||
|  |     moneta (0.6.0) | ||||||
|  |     multi_json (1.7.3) | ||||||
|  |     multi_xml (0.5.3) | ||||||
|  |     multipart-post (1.2.0) | ||||||
|  |     net-http-persistent (2.8) | ||||||
|  |     net-ssh (2.2.2) | ||||||
|  |     net-ssh-gateway (1.1.0) | ||||||
|  |       net-ssh (>= 1.99.1) | ||||||
|  |     net-ssh-multi (1.1) | ||||||
|  |       net-ssh (>= 2.1.4) | ||||||
|  |       net-ssh-gateway (>= 0.99.0) | ||||||
|  |     nokogiri (1.5.9) | ||||||
|  |     ohai (6.16.0) | ||||||
|  |       ipaddress | ||||||
|  |       mixlib-cli | ||||||
|  |       mixlib-config | ||||||
|  |       mixlib-log | ||||||
|  |       mixlib-shellout | ||||||
|  |       systemu | ||||||
|  |       yajl-ruby | ||||||
|  |     polyglot (0.3.3) | ||||||
|  |     rak (1.4) | ||||||
|  |     rest-client (1.6.7) | ||||||
|  |       mime-types (>= 1.16) | ||||||
|  |     retryable (1.3.2) | ||||||
|  |     ridley (0.9.1) | ||||||
|  |       activesupport (>= 3.2.0) | ||||||
|  |       addressable | ||||||
|  |       celluloid (~> 0.13.0) | ||||||
|  |       chozo (>= 0.6.0) | ||||||
|  |       erubis | ||||||
|  |       faraday (>= 0.8.4) | ||||||
|  |       json (>= 1.5.0) | ||||||
|  |       mixlib-authentication (>= 1.3.0) | ||||||
|  |       mixlib-config (>= 1.1.0) | ||||||
|  |       mixlib-log (>= 1.3.0) | ||||||
|  |       mixlib-shellout (>= 1.1.0) | ||||||
|  |       multi_json (>= 1.0.4) | ||||||
|  |       net-http-persistent (>= 2.8) | ||||||
|  |       net-ssh | ||||||
|  |       retryable | ||||||
|  |       solve (>= 0.4.1) | ||||||
|  |     rspec (2.13.0) | ||||||
|  |       rspec-core (~> 2.13.0) | ||||||
|  |       rspec-expectations (~> 2.13.0) | ||||||
|  |       rspec-mocks (~> 2.13.0) | ||||||
|  |     rspec-core (2.13.1) | ||||||
|  |     rspec-expectations (2.13.0) | ||||||
|  |       diff-lcs (>= 1.1.3, < 2.0) | ||||||
|  |     rspec-mocks (2.13.1) | ||||||
|  |     solve (0.4.2) | ||||||
|  |       json | ||||||
|  |     systemu (2.5.2) | ||||||
|  |     thor (0.18.1) | ||||||
|  |     timers (1.1.0) | ||||||
|  |     treetop (1.4.12) | ||||||
|  |       polyglot | ||||||
|  |       polyglot (>= 0.3.1) | ||||||
|  |     uuidtools (2.1.4) | ||||||
|  |     yajl-ruby (1.1.0) | ||||||
|  |  | ||||||
|  | PLATFORMS | ||||||
|  |   ruby | ||||||
|  |  | ||||||
|  | DEPENDENCIES | ||||||
|  |   berkshelf (~> 1.4.0) | ||||||
|  |   chef (~> 10.18.2) | ||||||
|  |   chefspec (~> 1.0.0) | ||||||
|  |   foodcritic (~> 2.1.0) | ||||||
							
								
								
									
										27
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										27
									
								
								README.md
									
									
									
									
									
								
							| @@ -10,12 +10,6 @@ Requirements | |||||||
|  |  | ||||||
| Chef 0.10.0 or higher required (for Chef environment use). | Chef 0.10.0 or higher required (for Chef environment use). | ||||||
|  |  | ||||||
| Platforms |  | ||||||
| -------- |  | ||||||
|  |  | ||||||
| * Ubuntu-12.04 |  | ||||||
| * Fedora-17 |  | ||||||
|  |  | ||||||
| Cookbooks | Cookbooks | ||||||
| --------- | --------- | ||||||
|  |  | ||||||
| @@ -31,8 +25,8 @@ The following cookbooks are dependencies: | |||||||
| * rabbitmq | * rabbitmq | ||||||
| * selinux (Fedora) | * selinux (Fedora) | ||||||
|  |  | ||||||
| Recipes | Usage | ||||||
| ======= | ===== | ||||||
|  |  | ||||||
| api | api | ||||||
| ---- | ---- | ||||||
| @@ -72,11 +66,14 @@ Attributes | |||||||
| * `cinder["volume"]["iscsi_helper"]` - ISCSI target user-land tool to use | * `cinder["volume"]["iscsi_helper"]` - ISCSI target user-land tool to use | ||||||
| * `cinder["netapp"]["enabled"]` - Enable netapp-specific options | * `cinder["netapp"]["enabled"]` - Enable netapp-specific options | ||||||
|  |  | ||||||
| Templates | Testing | ||||||
| ===== | ===== | ||||||
| * `api-paste.ini.erb` - Paste config for cinder API middleware |  | ||||||
| * `cinder.conf.erb` - Basic cinder.conf file | This cookbook is using [ChefSpec](https://github.com/acrmp/chefspec) for  | ||||||
| * `targets.conf.erb` - config file for tgt (iscsi target software) | testing. Run the following before commiting. It will run your tests, | ||||||
|  | and check for lint errors. | ||||||
|  |  | ||||||
|  |     $ ./run_tests.bash | ||||||
|  |  | ||||||
| License and Author | License and Author | ||||||
| ================== | ================== | ||||||
| @@ -88,10 +85,12 @@ Author:: Joseph Breu (<joseph.breu@rackspace.com>) | |||||||
| Author:: William Kelly (<william.kelly@rackspace.com>) | Author:: William Kelly (<william.kelly@rackspace.com>) | ||||||
| Author:: Darren Birkett (<darren.birkett@rackspace.co.uk>) | Author:: Darren Birkett (<darren.birkett@rackspace.co.uk>) | ||||||
| Author:: Evan Callicoat (<evan.callicoat@rackspace.com>) | Author:: Evan Callicoat (<evan.callicoat@rackspace.com>) | ||||||
| Author:: Jay Pipes (<jaypipes@gmail.com>)   | Author:: Jay Pipes (<jaypipes@att.com>) | ||||||
|  | Author:: John Dewey (<jdewey@att.com>) | ||||||
|  | Author:: Abel Lopez (<al592b@att.com>) | ||||||
|  |  | ||||||
| Copyright 2012, Rackspace US, Inc. | Copyright 2012, Rackspace US, Inc. | ||||||
| Copyright 2012, AT&T, Inc. | Copyright 2012-2013, AT&T Services, Inc. | ||||||
|  |  | ||||||
| Licensed under the Apache License, Version 2.0 (the "License"); | Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
| you may not use this file except in compliance with the License. | you may not use this file except in compliance with the License. | ||||||
|   | |||||||
| @@ -4,6 +4,7 @@ | |||||||
| # | # | ||||||
| # Copyright 2012, DreamHost | # Copyright 2012, DreamHost | ||||||
| # Copyright 2012, Rackspace US, Inc. | # Copyright 2012, Rackspace US, Inc. | ||||||
|  | # Copyright 2012-2013, AT&T Services, Inc. | ||||||
| # | # | ||||||
| # Licensed under the Apache License, Version 2.0 (the "License"); | # Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
| # you may not use this file except in compliance with the License. | # you may not use this file except in compliance with the License. | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| name             "cinder" | name             "cinder" | ||||||
| maintainer       "AT&T, Inc." | maintainer       "AT&T Services, Inc." | ||||||
| maintainer_email "jaypipes@gmail.com" | maintainer_email "cookbooks@lists.tfoundry.com" | ||||||
| license          "Apache 2.0" | license          "Apache 2.0" | ||||||
| description      "The OpenStack Advanced Volume Management service Cinder." | description      "The OpenStack Advanced Volume Management service Cinder." | ||||||
| long_description IO.read(File.join(File.dirname(__FILE__), 'README.md')) | long_description IO.read(File.join(File.dirname(__FILE__), 'README.md')) | ||||||
|   | |||||||
| @@ -3,7 +3,7 @@ | |||||||
| # Recipe:: api | # Recipe:: api | ||||||
| # | # | ||||||
| # Copyright 2012, Rackspace US, Inc. | # Copyright 2012, Rackspace US, Inc. | ||||||
| # Copyright 2012, AT&T, Inc. | # Copyright 2012-2013, AT&T Services, Inc. | ||||||
| # | # | ||||||
| # Licensed under the Apache License, Version 2.0 (the "License"); | # Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
| # you may not use this file except in compliance with the License. | # you may not use this file except in compliance with the License. | ||||||
|   | |||||||
| @@ -2,7 +2,7 @@ | |||||||
| # Cookbook Name:: cinder | # Cookbook Name:: cinder | ||||||
| # Recipe:: db | # Recipe:: db | ||||||
| # | # | ||||||
| # Copyright 2012, AT&T | # Copyright 2012-2013, AT&T Services, Inc. | ||||||
| # | # | ||||||
| # Licensed under the Apache License, Version 2.0 (the "License"); | # Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
| # you may not use this file except in compliance with the License. | # you may not use this file except in compliance with the License. | ||||||
|   | |||||||
| @@ -3,7 +3,7 @@ | |||||||
| # Recipe:: api | # Recipe:: api | ||||||
| # | # | ||||||
| # Copyright 2012, Rackspace US, Inc. | # Copyright 2012, Rackspace US, Inc. | ||||||
| # Copyright 2012, AT&T, Inc. | # Copyright 2012-2013, AT&T Services, Inc. | ||||||
| # | # | ||||||
| # Licensed under the Apache License, Version 2.0 (the "License"); | # Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
| # you may not use this file except in compliance with the License. | # you may not use this file except in compliance with the License. | ||||||
|   | |||||||
| @@ -3,7 +3,7 @@ | |||||||
| # Recipe:: scheduler | # Recipe:: scheduler | ||||||
| # | # | ||||||
| # Copyright 2012, Rackspace US, Inc. | # Copyright 2012, Rackspace US, Inc. | ||||||
| # Copyright 2012, AT&T, Inc. | # Copyright 2012-2013, AT&T Services, Inc. | ||||||
| # | # | ||||||
| # Licensed under the Apache License, Version 2.0 (the "License"); | # Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
| # you may not use this file except in compliance with the License. | # you may not use this file except in compliance with the License. | ||||||
|   | |||||||
| @@ -3,7 +3,7 @@ | |||||||
| # Recipe:: volume | # Recipe:: volume | ||||||
| # | # | ||||||
| # Copyright 2012, Rackspace US, Inc. | # Copyright 2012, Rackspace US, Inc. | ||||||
| # Copyright 2012, AT&T, Inc. | # Copyright 2012-2013, AT&T Services, Inc. | ||||||
| # | # | ||||||
| # Licensed under the Apache License, Version 2.0 (the "License"); | # Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
| # you may not use this file except in compliance with the License. | # you may not use this file except in compliance with the License. | ||||||
|   | |||||||
							
								
								
									
										19
									
								
								run_tests.bash
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										19
									
								
								run_tests.bash
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,19 @@ | |||||||
|  | #!/usr/bin/env bash | ||||||
|  |  | ||||||
|  | # A script to run tests locally before committing. | ||||||
|  |  | ||||||
|  | set -e | ||||||
|  |  | ||||||
|  | COOKBOOK=$(awk '/^name/ {print $NF}' metadata.rb |tr -d \"\') | ||||||
|  | if [ -z $COOKBOOK ]; then | ||||||
|  |     echo "Cookbook name not defined in metadata.rb" | ||||||
|  |     exit 1 | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | BUNDLE_PATH=${BUNDLE_PATH:-.bundle} | ||||||
|  | BERKSHELF_PATH=${BERKSHELF_PATH:-.cookbooks} | ||||||
|  |  | ||||||
|  | bundle install --path=${BUNDLE_PATH} | ||||||
|  | bundle exec berks install --path=${BERKSHELF_PATH} | ||||||
|  | bundle exec foodcritic -f any -t ~FC003 -t ~FC023 ${BERKSHELF_PATH}/${COOKBOOK} | ||||||
|  | bundle exec rspec ${BERKSHELF_PATH}/${COOKBOOK} | ||||||
							
								
								
									
										21
									
								
								spec/api-redhat_spec.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								spec/api-redhat_spec.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | |||||||
|  | require "spec_helper" | ||||||
|  |  | ||||||
|  | describe "cinder::api" do | ||||||
|  |   describe "redhat" do | ||||||
|  |     before do | ||||||
|  |       glance_stubs | ||||||
|  |       @chef_run = ::ChefSpec::ChefRunner.new ::REDHAT_OPTS | ||||||
|  |       @chef_run.converge "cinder::api" | ||||||
|  |     end | ||||||
|  |  | ||||||
|  |     it "installs cinder api packages" do | ||||||
|  |       expect(@chef_run).to upgrade_package "openstack-cinder" | ||||||
|  |       expect(@chef_run).to upgrade_package "python-cinderclient" | ||||||
|  |       expect(@chef_run).to upgrade_package "MySQL-python" | ||||||
|  |     end | ||||||
|  |  | ||||||
|  |     it "starts cinder api on boot" do | ||||||
|  |       expect(@chef_run).to set_service_to_start_on_boot "openstack-cinder-api" | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | end | ||||||
							
								
								
									
										72
									
								
								spec/api_spec.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								spec/api_spec.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,72 @@ | |||||||
|  | require "spec_helper" | ||||||
|  |  | ||||||
|  | describe "cinder::api" do | ||||||
|  |   describe "ubuntu" do | ||||||
|  |     before do | ||||||
|  |       glance_stubs | ||||||
|  |       @chef_run = ::ChefSpec::ChefRunner.new ::UBUNTU_OPTS | ||||||
|  |       @node = @chef_run.node | ||||||
|  |       @node.set["cinder"]["syslog"]["use"] = true | ||||||
|  |       @chef_run.converge "cinder::api" | ||||||
|  |     end | ||||||
|  |  | ||||||
|  |     expect_runs_openstack_common_logging_recipe | ||||||
|  |  | ||||||
|  |     it "installs cinder api packages" do | ||||||
|  |       expect(@chef_run).to upgrade_package "cinder-common" | ||||||
|  |       expect(@chef_run).to upgrade_package "cinder-api" | ||||||
|  |       expect(@chef_run).to upgrade_package "python-cinderclient" | ||||||
|  |       expect(@chef_run).to upgrade_package "python-mysqldb" | ||||||
|  |     end | ||||||
|  |  | ||||||
|  |     ## | ||||||
|  |     #TODO: ChefSpec needs to handle guards better.  This | ||||||
|  |     #      should only be created when pki is enabled. | ||||||
|  |     describe "/var/cache/cinder" do | ||||||
|  |       before do | ||||||
|  |         @dir = @chef_run.directory "/var/cache/cinder" | ||||||
|  |       end | ||||||
|  |  | ||||||
|  |       it "has proper owner" do | ||||||
|  |         expect(@dir).to be_owned_by "cinder", "cinder" | ||||||
|  |       end | ||||||
|  |  | ||||||
|  |       it "has proper modes" do | ||||||
|  |         expect(sprintf("%o", @dir.mode)).to eq "700" | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  |  | ||||||
|  |     it "starts cinder api on boot" do | ||||||
|  |       expect(@chef_run).to set_service_to_start_on_boot "cinder-api" | ||||||
|  |     end | ||||||
|  |  | ||||||
|  |     expect_creates_cinder_conf "service[cinder-api]" | ||||||
|  |  | ||||||
|  |     it "runs db migrations" do | ||||||
|  |       cmd = "cinder-manage db sync" | ||||||
|  |       expect(@chef_run).to execute_command cmd | ||||||
|  |     end | ||||||
|  |  | ||||||
|  |     describe "api-paste.ini" do | ||||||
|  |       before do | ||||||
|  |         @file = @chef_run.template "/etc/cinder/api-paste.ini" | ||||||
|  |       end | ||||||
|  |  | ||||||
|  |       it "has proper owner" do | ||||||
|  |         expect(@file).to be_owned_by "cinder", "cinder" | ||||||
|  |       end | ||||||
|  |  | ||||||
|  |       it "has proper modes" do | ||||||
|  |         expect(sprintf("%o", @file.mode)).to eq "644" | ||||||
|  |       end | ||||||
|  |  | ||||||
|  |       it "template contents" do | ||||||
|  |         pending "TODO: implement" | ||||||
|  |       end | ||||||
|  |  | ||||||
|  |       it "notifies nova-api-ec2 restart" do | ||||||
|  |         expect(@file).to notify "service[cinder-api]", :restart | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | end | ||||||
							
								
								
									
										24
									
								
								spec/db_spec.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								spec/db_spec.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | |||||||
|  | require "spec_helper" | ||||||
|  |  | ||||||
|  | describe "cinder::db" do | ||||||
|  |   it "installs mysql packages" do | ||||||
|  |     @chef_run = converge | ||||||
|  |  | ||||||
|  |     expect(@chef_run).to include_recipe "mysql::client" | ||||||
|  |     expect(@chef_run).to include_recipe "mysql::ruby" | ||||||
|  |   end | ||||||
|  |  | ||||||
|  |   it "creates database and user" do | ||||||
|  |     ::Chef::Recipe.any_instance.should_receive(:db_create_with_user). | ||||||
|  |       with "volume", "cinder", "test-pass" | ||||||
|  |  | ||||||
|  |     converge | ||||||
|  |   end | ||||||
|  |  | ||||||
|  |   def converge | ||||||
|  |     ::Chef::Recipe.any_instance.stub(:db_password).with("cinder"). | ||||||
|  |       and_return "test-pass" | ||||||
|  |  | ||||||
|  |     ::ChefSpec::ChefRunner.new(::UBUNTU_OPTS).converge "cinder::db" | ||||||
|  |   end | ||||||
|  | end | ||||||
							
								
								
									
										5
									
								
								spec/keystone_registration_spec.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								spec/keystone_registration_spec.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | |||||||
|  | require "spec_helper" | ||||||
|  |  | ||||||
|  | describe "cinder::keystone_registration" do | ||||||
|  |   #TODO: implement | ||||||
|  | end | ||||||
							
								
								
									
										24
									
								
								spec/scheduler-redhat_spec.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								spec/scheduler-redhat_spec.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | |||||||
|  | require "spec_helper" | ||||||
|  |  | ||||||
|  | describe "cinder::scheduler" do | ||||||
|  |   describe "redhat" do | ||||||
|  |     before do | ||||||
|  |       glance_stubs | ||||||
|  |       @chef_run = ::ChefSpec::ChefRunner.new ::REDHAT_OPTS | ||||||
|  |       @chef_run.converge "cinder::scheduler" | ||||||
|  |     end | ||||||
|  |  | ||||||
|  |     it "installs cinder api packages" do | ||||||
|  |       expect(@chef_run).to upgrade_package "openstack-cinder" | ||||||
|  |       expect(@chef_run).to upgrade_package "MySQL-python" | ||||||
|  |     end | ||||||
|  |  | ||||||
|  |     it "starts cinder scheduler" do | ||||||
|  |       expect(@chef_run).to start_service "openstack-cinder-scheduler" | ||||||
|  |     end | ||||||
|  |  | ||||||
|  |     it "starts cinder scheduler on boot" do | ||||||
|  |       expect(@chef_run).to set_service_to_start_on_boot "openstack-cinder-scheduler" | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | end | ||||||
							
								
								
									
										52
									
								
								spec/scheduler_spec.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								spec/scheduler_spec.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,52 @@ | |||||||
|  | require "spec_helper" | ||||||
|  |  | ||||||
|  | describe "cinder::scheduler" do | ||||||
|  |   describe "ubuntu" do | ||||||
|  |     before do | ||||||
|  |       glance_stubs | ||||||
|  |       @chef_run = ::ChefSpec::ChefRunner.new ::UBUNTU_OPTS | ||||||
|  |       @node = @chef_run.node | ||||||
|  |       @node.set["cinder"]["syslog"]["use"] = true | ||||||
|  |       @chef_run.converge "cinder::scheduler" | ||||||
|  |     end | ||||||
|  |  | ||||||
|  |     expect_runs_openstack_common_logging_recipe | ||||||
|  |  | ||||||
|  |     it "installs cinder api packages" do | ||||||
|  |       expect(@chef_run).to upgrade_package "cinder-scheduler" | ||||||
|  |       expect(@chef_run).to upgrade_package "python-mysqldb" | ||||||
|  |     end | ||||||
|  |  | ||||||
|  |     it "starts cinder scheduler" do | ||||||
|  |       expect(@chef_run).to start_service "cinder-scheduler" | ||||||
|  |     end | ||||||
|  |  | ||||||
|  |     it "starts cinder scheduler on boot" do | ||||||
|  |       expect(@chef_run).to set_service_to_start_on_boot "cinder-scheduler" | ||||||
|  |     end | ||||||
|  |  | ||||||
|  |     describe "cinder-volume-usage-audit" do | ||||||
|  |       before do | ||||||
|  |         f = "/usr/local/bin/cinder-volume-usage-audit" | ||||||
|  |         @file = @chef_run.cookbook_file f | ||||||
|  |       end  | ||||||
|  |  | ||||||
|  |       it "has proper owner" do | ||||||
|  |         expect(@file).to be_owned_by "root", "root" | ||||||
|  |       end  | ||||||
|  |  | ||||||
|  |       it "has proper modes" do | ||||||
|  |         expect(sprintf("%o", @file.mode)).to eq "755" | ||||||
|  |       end  | ||||||
|  |     end  | ||||||
|  |  | ||||||
|  |     it "has cinder-volume-usage-audit cronjob" do | ||||||
|  |       cron = @chef_run.cron "cinder-volume-usage-audit" | ||||||
|  |       cmd = "/usr/local/bin/cinder-volume-usage-audit > " \ | ||||||
|  |             "/var/log/cinder/audit.log 2>&1" | ||||||
|  |       expect(cron.command).to eq cmd | ||||||
|  |     end | ||||||
|  |  | ||||||
|  |     expect_creates_cinder_conf "service[cinder-scheduler]" | ||||||
|  |   end | ||||||
|  | end | ||||||
							
								
								
									
										54
									
								
								spec/spec_helper.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								spec/spec_helper.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,54 @@ | |||||||
|  | require "chefspec" | ||||||
|  |  | ||||||
|  | ::LOG_LEVEL = :fatal | ||||||
|  | ::REDHAT_OPTS = { | ||||||
|  |     :platform  => "redhat", | ||||||
|  |     :log_level => ::LOG_LEVEL | ||||||
|  | } | ||||||
|  | ::UBUNTU_OPTS = { | ||||||
|  |     :platform  => "ubuntu", | ||||||
|  |     :version   => "12.04", | ||||||
|  |     :log_level => ::LOG_LEVEL | ||||||
|  | } | ||||||
|  |  | ||||||
|  | def glance_stubs | ||||||
|  |   ::Chef::Recipe.any_instance.stub(:config_by_role). | ||||||
|  |     with("rabbitmq-server", "queue").and_return( | ||||||
|  |       {'host' => 'rabbit-host', 'port' => 'rabbit-port'} | ||||||
|  |     ) | ||||||
|  |   ::Chef::Recipe.any_instance.stub(:config_by_role). | ||||||
|  |     with("glance-api", "glance").and_return [] | ||||||
|  |   ::Chef::Recipe.any_instance.stub(:db_password).and_return String.new | ||||||
|  |   ::Chef::Recipe.any_instance.stub(:user_password).and_return String.new | ||||||
|  |   ::Chef::Recipe.any_instance.stub(:service_password).and_return String.new | ||||||
|  | end | ||||||
|  |  | ||||||
|  | def expect_runs_openstack_common_logging_recipe | ||||||
|  |   it "runs logging recipe if node attributes say to" do | ||||||
|  |     expect(@chef_run).to include_recipe "openstack-common::logging" | ||||||
|  |   end | ||||||
|  | end | ||||||
|  |  | ||||||
|  | def expect_creates_cinder_conf service, action=:restart | ||||||
|  |   describe "cinder.conf" do | ||||||
|  |     before do | ||||||
|  |       @file = @chef_run.template "/etc/cinder/cinder.conf" | ||||||
|  |     end  | ||||||
|  |  | ||||||
|  |     it "has proper owner" do | ||||||
|  |       expect(@file).to be_owned_by "cinder", "cinder" | ||||||
|  |     end  | ||||||
|  |  | ||||||
|  |     it "has proper modes" do | ||||||
|  |       expect(sprintf("%o", @file.mode)).to eq "644" | ||||||
|  |     end  | ||||||
|  |  | ||||||
|  |     it "template contents" do | ||||||
|  |       pending "TODO: implement" | ||||||
|  |     end  | ||||||
|  |  | ||||||
|  |     it "notifies nova-api-ec2 restart" do | ||||||
|  |       expect(@file).to notify service, action | ||||||
|  |     end | ||||||
|  |   end  | ||||||
|  | end | ||||||
							
								
								
									
										33
									
								
								spec/volume-redhat_spec.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								spec/volume-redhat_spec.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,33 @@ | |||||||
|  | require "spec_helper" | ||||||
|  |  | ||||||
|  | describe "cinder::volume" do | ||||||
|  |   describe "redhat" do | ||||||
|  |     before do | ||||||
|  |       glance_stubs | ||||||
|  |       @chef_run = ::ChefSpec::ChefRunner.new ::REDHAT_OPTS | ||||||
|  |       @chef_run.converge "cinder::volume" | ||||||
|  |     end | ||||||
|  |  | ||||||
|  |     it "installs cinder volume packages" do | ||||||
|  |       expect(@chef_run).to upgrade_package "openstack-cinder" | ||||||
|  |       expect(@chef_run).to upgrade_package "MySQL-python" | ||||||
|  |     end | ||||||
|  |  | ||||||
|  |     it "installs cinder iscsi packages" do | ||||||
|  |       expect(@chef_run).to upgrade_package "scsi-target-utils" | ||||||
|  |     end | ||||||
|  |  | ||||||
|  |     it "starts cinder volume" do | ||||||
|  |       expect(@chef_run).to start_service "openstack-cinder-volume" | ||||||
|  |     end | ||||||
|  |  | ||||||
|  |     it "starts cinder volume on boot" do | ||||||
|  |       expected = "openstack-cinder-volume" | ||||||
|  |       expect(@chef_run).to set_service_to_start_on_boot expected | ||||||
|  |     end | ||||||
|  |  | ||||||
|  |     it "starts iscsi target on boot" do | ||||||
|  |       expect(@chef_run).to set_service_to_start_on_boot "tgtd" | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | end | ||||||
							
								
								
									
										137
									
								
								spec/volume_spec.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										137
									
								
								spec/volume_spec.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,137 @@ | |||||||
|  | require "spec_helper" | ||||||
|  |  | ||||||
|  | describe "cinder::volume" do | ||||||
|  |   describe "ubuntu" do | ||||||
|  |     before do | ||||||
|  |       glance_stubs | ||||||
|  |       @chef_run = ::ChefSpec::ChefRunner.new ::UBUNTU_OPTS | ||||||
|  |       @node = @chef_run.node | ||||||
|  |       @node.set["cinder"]["syslog"]["use"] = true | ||||||
|  |       @chef_run.converge "cinder::volume" | ||||||
|  |     end | ||||||
|  |  | ||||||
|  |     expect_runs_openstack_common_logging_recipe | ||||||
|  |  | ||||||
|  |     it "installs cinder volume packages" do | ||||||
|  |       expect(@chef_run).to upgrade_package "cinder-volume" | ||||||
|  |       expect(@chef_run).to upgrade_package "python-mysqldb" | ||||||
|  |     end | ||||||
|  |  | ||||||
|  |     it "installs cinder iscsi packages" do | ||||||
|  |       expect(@chef_run).to upgrade_package "tgt" | ||||||
|  |     end | ||||||
|  |  | ||||||
|  |     it "starts cinder volume" do | ||||||
|  |       expect(@chef_run).to start_service "cinder-volume" | ||||||
|  |     end | ||||||
|  |  | ||||||
|  |     it "starts cinder volume on boot" do | ||||||
|  |       expect(@chef_run).to set_service_to_start_on_boot "cinder-volume" | ||||||
|  |     end | ||||||
|  |  | ||||||
|  |     expect_creates_cinder_conf "service[cinder-volume]" | ||||||
|  |  | ||||||
|  |     it "starts iscsi target on boot" do | ||||||
|  |       expect(@chef_run).to set_service_to_start_on_boot "tgt" | ||||||
|  |     end | ||||||
|  |  | ||||||
|  |     describe "targets.conf" do | ||||||
|  |       before do | ||||||
|  |         @file = @chef_run.template "/etc/tgt/targets.conf" | ||||||
|  |       end  | ||||||
|  |  | ||||||
|  |       it "has proper modes" do | ||||||
|  |         expect(sprintf("%o", @file.mode)).to eq "600" | ||||||
|  |       end  | ||||||
|  |  | ||||||
|  |       it "notifies nova-api-ec2 restart" do | ||||||
|  |         expect(@file).to notify "service[iscsitarget]", :restart | ||||||
|  |       end | ||||||
|  |     end  | ||||||
|  |  | ||||||
|  |     describe "patches" do | ||||||
|  |       before do | ||||||
|  |         @os_dir = "/usr/share/pyshared/cinder/openstack/common" | ||||||
|  |         @dist_dir = "/usr/lib/python2.7/dist-packages/cinder/openstack/common" | ||||||
|  |       end | ||||||
|  |  | ||||||
|  |       describe "fileutils.py" do | ||||||
|  |         before do | ||||||
|  |           @source = ::File.join @os_dir, "fileutils.py" | ||||||
|  |           @file = @chef_run.cookbook_file @source | ||||||
|  |         end  | ||||||
|  |  | ||||||
|  |         it "has proper owner" do | ||||||
|  |           expect(@file).to be_owned_by "root", "root" | ||||||
|  |         end  | ||||||
|  |  | ||||||
|  |         it "has proper modes" do | ||||||
|  |           expect(sprintf("%o", @file.mode)).to eq "644" | ||||||
|  |         end  | ||||||
|  |  | ||||||
|  |         it "symlinks fileutils.py" do | ||||||
|  |           ln = ::File.join @dist_dir, "fileutils.py" | ||||||
|  |           expect(@chef_run.link(ln)).to link_to @source | ||||||
|  |         end | ||||||
|  |       end  | ||||||
|  |  | ||||||
|  |       describe "gettextutils.py" do | ||||||
|  |         before do | ||||||
|  |           @source = ::File.join @os_dir, "gettextutils.py" | ||||||
|  |           @file = @chef_run.cookbook_file @source | ||||||
|  |         end  | ||||||
|  |  | ||||||
|  |         it "has proper owner" do | ||||||
|  |           expect(@file).to be_owned_by "root", "root" | ||||||
|  |         end  | ||||||
|  |  | ||||||
|  |         it "has proper modes" do | ||||||
|  |           expect(sprintf("%o", @file.mode)).to eq "644" | ||||||
|  |         end  | ||||||
|  |  | ||||||
|  |         it "symlinks gettextutils.py" do | ||||||
|  |           pending "TODO: should there be a gettextutils symlink?" | ||||||
|  |         end | ||||||
|  |       end | ||||||
|  |  | ||||||
|  |       describe "lockutils.py" do | ||||||
|  |         before do | ||||||
|  |           @source = ::File.join @os_dir, "lockutils.py" | ||||||
|  |           @file = @chef_run.cookbook_file @source | ||||||
|  |         end  | ||||||
|  |  | ||||||
|  |         it "has proper owner" do | ||||||
|  |           expect(@file).to be_owned_by "root", "root" | ||||||
|  |         end  | ||||||
|  |  | ||||||
|  |         it "has proper modes" do | ||||||
|  |           expect(sprintf("%o", @file.mode)).to eq "644" | ||||||
|  |         end  | ||||||
|  |  | ||||||
|  |         it "symlinks gettextutils.py" do | ||||||
|  |           ln = ::File.join @dist_dir, "lockutils.py" | ||||||
|  |           expect(@chef_run.link(ln)).to link_to @source | ||||||
|  |         end | ||||||
|  |       end | ||||||
|  |  | ||||||
|  |       describe "netapp.py" do | ||||||
|  |         before do | ||||||
|  |           f = "/usr/share/pyshared/cinder/volume/netapp.py" | ||||||
|  |           @file = @chef_run.cookbook_file f | ||||||
|  |         end  | ||||||
|  |  | ||||||
|  |         it "has proper owner" do | ||||||
|  |           expect(@file).to be_owned_by "root", "root" | ||||||
|  |         end  | ||||||
|  |  | ||||||
|  |         it "has proper modes" do | ||||||
|  |           expect(sprintf("%o", @file.mode)).to eq "644" | ||||||
|  |         end  | ||||||
|  |  | ||||||
|  |         it "notifies nova-api-ec2 restart" do | ||||||
|  |           expect(@file).to notify "service[cinder-volume]", :restart | ||||||
|  |         end | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | end | ||||||
		Reference in New Issue
	
	Block a user
	 jaypipes
					jaypipes