diff --git a/.gitignore b/.gitignore index c6ba7b7..dcce510 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1 @@ .bundle/ -Berksfile.lock diff --git a/Berksfile.lock b/Berksfile.lock new file mode 100644 index 0000000..b570da0 --- /dev/null +++ b/Berksfile.lock @@ -0,0 +1,46 @@ +{ + "sha": "aa660f8ff6003966212f763dad49cf52c963a724", + "sources": { + "openstack-image": { + "locked_version": "7.0.0", + "constraint": "= 7.0.0", + "path": "." + }, + "openstack-identity": { + "locked_version": "7.0.0", + "git": "git://github.com/stackforge/cookbook-openstack-identity.git", + "ref": "a1ae0fd1d2bba23975b3c6852411383be982faa5" + }, + "openstack-common": { + "locked_version": "0.2.6", + "git": "git://github.com/stackforge/cookbook-openstack-common.git", + "ref": "f8781d13de30fb3a191e97e91b13a3ccac139d6f" + }, + "database": { + "locked_version": "1.4.0" + }, + "mysql": { + "locked_version": "3.0.0", + "constraint": ">= 1.3.0" + }, + "openssl": { + "locked_version": "1.0.2" + }, + "build-essential": { + "locked_version": "1.4.0" + }, + "postgresql": { + "locked_version": "3.0.0", + "constraint": ">= 1.0.0" + }, + "apt": { + "locked_version": "1.10.0" + }, + "aws": { + "locked_version": "0.101.0" + }, + "xfs": { + "locked_version": "1.1.0" + } + } +} diff --git a/Gemfile b/Gemfile index ffbff4a..04ef97e 100644 --- a/Gemfile +++ b/Gemfile @@ -2,7 +2,7 @@ source "https://rubygems.org" gem "chef", "~> 11.4.4" gem "json", "<= 1.7.7" # chef 11 dependency -gem "berkshelf", "~> 1.4.5" +gem "berkshelf", "~> 2.0.3" gem "chefspec", "~> 1.3.0" gem "foodcritic" gem "strainer" diff --git a/Gemfile.lock b/Gemfile.lock index fb9593e..4cc50ab 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -8,26 +8,25 @@ GEM akami (1.2.0) gyoku (>= 0.4.0) nokogiri (>= 1.4.0) - berkshelf (1.4.5) + berkshelf (2.0.3) activesupport (>= 3.2.0) - addressable + addressable (~> 2.3.4) celluloid (>= 0.14.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.12.4) - solve (>= 0.4.2) + minitar (~> 0.5.4) + retryable (~> 1.3.3) + ridley (~> 1.0.2) + solve (>= 0.4.4) + test-kitchen (>= 1.0.0.alpha7) thor (~> 0.18.0) - yajl-ruby builder (3.2.2) celluloid (0.14.1) timers (>= 1.0.0) + celluloid-io (0.14.1) + celluloid (>= 0.14.1) + nio4r (>= 0.4.5) chef (11.4.4) erubis highline (>= 1.6.9) @@ -42,7 +41,7 @@ GEM ohai (>= 0.6.0) rest-client (>= 1.0.4, < 1.7.0) yajl-ruby (~> 1.1) - chefspec (1.3.0) + chefspec (1.3.1) chef (>= 10.0) erubis fauxhai (>= 0.1.1, < 2.0) @@ -54,6 +53,7 @@ GEM multi_json (>= 1.3.0) ci_reporter (1.8.4) builder (>= 2.1.2) + coderay (1.0.9) diff-lcs (1.2.4) erubis (2.7.0) faraday (0.8.7) @@ -62,7 +62,7 @@ GEM httparty net-ssh ohai - ffi (1.8.1) + ffi (1.9.0) foodcritic (2.1.0) erubis gherkin (~> 2.11.7) @@ -91,6 +91,7 @@ GEM log_switch (0.4.0) logging (1.6.2) little-plugger (>= 1.1.3) + method_source (0.8.1) mime-types (1.23) minitar (0.5.4) minitest (4.7.4) @@ -108,12 +109,15 @@ GEM multi_xml (0.5.4) multipart-post (1.2.0) net-http-persistent (2.8) + net-scp (1.1.1) + net-ssh (>= 2.6.5) net-ssh (2.6.7) net-ssh-gateway (1.2.0) net-ssh (>= 2.6.5) net-ssh-multi (1.1) net-ssh (>= 2.1.4) net-ssh-gateway (>= 0.99.0) + nio4r (0.4.6) nokogiri (1.5.10) nori (1.1.5) ohai (6.16.0) @@ -125,22 +129,24 @@ GEM systemu yajl-ruby polyglot (0.3.3) + pry (0.9.12.2) + coderay (~> 1.0.5) + method_source (~> 0.8) + slop (~> 3.4) rack (1.5.2) rak (1.4) rest-client (1.6.7) mime-types (>= 1.16) retryable (1.3.3) - ridley (0.12.4) + ridley (1.0.2) addressable celluloid (~> 0.14.0) + celluloid-io (~> 0.14.0) chozo (>= 0.6.0) erubis faraday (>= 0.8.4) hashie (>= 2.0.2) mixlib-authentication (>= 1.3.0) - mixlib-config (>= 1.1.0) - mixlib-log (>= 1.3.0) - mixlib-shellout (>= 1.1.0) net-http-persistent (>= 2.8) net-ssh retryable @@ -155,6 +161,7 @@ GEM diff-lcs (>= 1.1.3, < 2.0) rspec-mocks (2.13.1) rubyntlm (0.1.1) + safe_yaml (0.9.3) savon (0.9.5) akami (~> 1.0) builder (>= 2.1.2) @@ -163,10 +170,11 @@ GEM nokogiri (>= 1.4.0) nori (~> 1.0) wasabi (~> 1.0) + slop (3.4.5) solve (0.4.4) json - strainer (2.1.0) - berkshelf (~> 1.3) + strainer (3.0.1) + berkshelf (~> 2.0) systemu (2.5.2) tailor (1.2.1) log_switch (>= 0.3.0) @@ -174,6 +182,14 @@ GEM text-table (>= 1.2.2) term-ansicolor (1.2.2) tins (~> 0.8) + test-kitchen (1.0.0.alpha.7) + celluloid + mixlib-shellout + net-scp + net-ssh + pry + safe_yaml + thor text-table (1.2.3) thor (0.18.1) timers (1.1.0) @@ -198,7 +214,7 @@ PLATFORMS ruby DEPENDENCIES - berkshelf (~> 1.4.5) + berkshelf (~> 2.0.3) chef (~> 11.4.4) chefspec (~> 1.3.0) foodcritic diff --git a/spec/identity_registration_spec.rb b/spec/identity_registration_spec.rb index dc673c7..ed0a313 100644 --- a/spec/identity_registration_spec.rb +++ b/spec/identity_registration_spec.rb @@ -3,132 +3,89 @@ require_relative "spec_helper" describe "openstack-image::identity_registration" do before do image_stubs - @identity_register_mock = double "identity_register" + @chef_run = ::ChefSpec::ChefRunner.new ::UBUNTU_OPTS + @chef_run.converge "openstack-image::identity_registration" end it "registers image service" do - ::Chef::Recipe.any_instance.stub(:openstack_identity_register) - ::Chef::Recipe.any_instance.should_receive(:openstack_identity_register). - with("Register Image Service") do |&arg| - @identity_register_mock.should_receive(:auth_uri). - with "https://127.0.0.1:35357/v2.0" - @identity_register_mock.should_receive(:bootstrap_token). - with "bootstrap-token" - @identity_register_mock.should_receive(:service_name). - with "glance" - @identity_register_mock.should_receive(:service_type). - with "image" - @identity_register_mock.should_receive(:service_description). - with "Glance Image Service" - @identity_register_mock.should_receive(:action). - with :create_service + resource = @chef_run.find_resource( + "openstack-identity_register", + "Register Image Service" + ).to_hash - @identity_register_mock.instance_eval &arg - end - - chef_run = ::ChefSpec::ChefRunner.new ::UBUNTU_OPTS - chef_run.converge "openstack-image::identity_registration" + expect(resource).to include( + :auth_uri => "https://127.0.0.1:35357/v2.0", + :bootstrap_token => "bootstrap-token", + :service_type => "image", + :service_description => "Glance Image Service", + :action => [:create_service] + ) end it "registers image endpoint" do - ::Chef::Recipe.any_instance.stub(:openstack_identity_register) - ::Chef::Recipe.any_instance.should_receive(:openstack_identity_register). - with("Register Image Endpoint") do |&arg| - @identity_register_mock.should_receive(:auth_uri). - with "https://127.0.0.1:35357/v2.0" - @identity_register_mock.should_receive(:bootstrap_token). - with "bootstrap-token" - @identity_register_mock.should_receive(:service_type). - with "image" - @identity_register_mock.should_receive(:endpoint_region). - with "RegionOne" - @identity_register_mock.should_receive(:endpoint_adminurl). - with "https://127.0.0.1:9292/v2" - @identity_register_mock.should_receive(:endpoint_internalurl). - with "https://127.0.0.1:9292/v2" - @identity_register_mock.should_receive(:endpoint_publicurl). - with "https://127.0.0.1:9292/v2" - @identity_register_mock.should_receive(:action). - with :create_endpoint + resource = @chef_run.find_resource( + "openstack-identity_register", + "Register Image Endpoint" + ).to_hash - @identity_register_mock.instance_eval &arg - end - - chef_run = ::ChefSpec::ChefRunner.new ::UBUNTU_OPTS - chef_run.converge "openstack-image::identity_registration" + expect(resource).to include( + :auth_uri => "https://127.0.0.1:35357/v2.0", + :bootstrap_token => "bootstrap-token", + :service_type => "image", + :endpoint_region => "RegionOne", + :endpoint_adminurl => "https://127.0.0.1:9292/v2", + :endpoint_internalurl => "https://127.0.0.1:9292/v2", + :endpoint_publicurl => "https://127.0.0.1:9292/v2", + :action => [:create_endpoint] + ) end it "registers service tenant" do - ::Chef::Recipe.any_instance.stub(:openstack_identity_register) - ::Chef::Recipe.any_instance.should_receive(:openstack_identity_register). - with("Register Service Tenant") do |&arg| - @identity_register_mock.should_receive(:auth_uri). - with "https://127.0.0.1:35357/v2.0" - @identity_register_mock.should_receive(:bootstrap_token). - with "bootstrap-token" - @identity_register_mock.should_receive(:tenant_name). - with "service" - @identity_register_mock.should_receive(:tenant_description). - with "Service Tenant" - @identity_register_mock.should_receive(:tenant_enabled). - with true - @identity_register_mock.should_receive(:action). - with :create_tenant + resource = @chef_run.find_resource( + "openstack-identity_register", + "Register Service Tenant" + ).to_hash - @identity_register_mock.instance_eval &arg - end - - chef_run = ::ChefSpec::ChefRunner.new ::UBUNTU_OPTS - chef_run.converge "openstack-image::identity_registration" + expect(resource).to include( + :auth_uri => "https://127.0.0.1:35357/v2.0", + :bootstrap_token => "bootstrap-token", + :tenant_name => "service", + :tenant_description => "Service Tenant", + :tenant_enabled => true, + :action => [:create_tenant] + ) end it "registers service user" do - ::Chef::Recipe.any_instance.stub(:openstack_identity_register) - ::Chef::Recipe.any_instance.should_receive(:openstack_identity_register). - with("Register glance User") do |&arg| - @identity_register_mock.should_receive(:auth_uri). - with "https://127.0.0.1:35357/v2.0" - @identity_register_mock.should_receive(:bootstrap_token). - with "bootstrap-token" - @identity_register_mock.should_receive(:tenant_name). - with "service" - @identity_register_mock.should_receive(:user_name). - with "glance" - @identity_register_mock.should_receive(:user_pass). - with "glance-pass" - @identity_register_mock.should_receive(:user_enabled). - with true - @identity_register_mock.should_receive(:action). - with :create_user + resource = @chef_run.find_resource( + "openstack-identity_register", + "Register glance User" + ).to_hash - @identity_register_mock.instance_eval &arg - end - - chef_run = ::ChefSpec::ChefRunner.new ::UBUNTU_OPTS - chef_run.converge "openstack-image::identity_registration" + expect(resource).to include( + :auth_uri => "https://127.0.0.1:35357/v2.0", + :bootstrap_token => "bootstrap-token", + :tenant_name => "service", + :user_name => "glance", + :user_pass => "glance-pass", + :user_enabled => true, + :action => [:create_user] + ) end it "grants admin role to service user for service tenant" do - ::Chef::Recipe.any_instance.stub(:openstack_identity_register) - ::Chef::Recipe.any_instance.should_receive(:openstack_identity_register). - with("Grant 'admin' Role to glance User for service Tenant") do |&arg| - @identity_register_mock.should_receive(:auth_uri). - with "https://127.0.0.1:35357/v2.0" - @identity_register_mock.should_receive(:bootstrap_token). - with "bootstrap-token" - @identity_register_mock.should_receive(:tenant_name). - with "service" - @identity_register_mock.should_receive(:role_name). - with "admin" - @identity_register_mock.should_receive(:user_name). - with "glance" - @identity_register_mock.should_receive(:action). - with :grant_role + resource = @chef_run.find_resource( + "openstack-identity_register", + "Grant 'admin' Role to glance User for service Tenant" + ).to_hash - @identity_register_mock.instance_eval &arg - end - - chef_run = ::ChefSpec::ChefRunner.new ::UBUNTU_OPTS - chef_run.converge "openstack-image::identity_registration" + expect(resource).to include( + :auth_uri => "https://127.0.0.1:35357/v2.0", + :bootstrap_token => "bootstrap-token", + :tenant_name => "service", + :role_name => "admin", + :user_name => "glance", + :action => [:grant_role] + ) end end