spec/unit/microbosh_providers/openstack_spec.rb in bosh-bootstrap-0.17.1 vs spec/unit/microbosh_providers/openstack_spec.rb in bosh-bootstrap-0.18.0

- old
+ new

@@ -2,184 +2,135 @@ require "bosh-bootstrap/microbosh_providers/openstack" describe Bosh::Bootstrap::MicroboshProviders::OpenStack do include Bosh::Bootstrap::Cli::Helpers::Settings - let(:microbosh_yml) { File.expand_path("~/.microbosh/deployments/micro_bosh.yml")} let(:fog_compute) { instance_double("Fog::Compute::OpenStack") } + let(:microbosh_yml) { File.expand_path("~/.microbosh/deployments/micro_bosh.yml")} - context "creates micro_bosh.yml manifest" do - it "on nova with floating IP" do - setting "provider.name", "openstack" - setting "provider.credentials.openstack_auth_url", "http://10.0.0.2:5000/v2.0/tokens" - setting "provider.credentials.openstack_username", "USER" - setting "provider.credentials.openstack_api_key", "PASSWORD" - setting "provider.credentials.openstack_tenant", "TENANT" - setting "provider.credentials.openstack_region", "REGION" - setting "address.ip", "1.2.3.4" - setting "key_pair.path", "~/.microbosh/ssh/test-bosh" - setting "bosh.name", "test-bosh" - setting "bosh.salted_password", "salted_password" - setting "bosh.persistent_disk", 32768 - - subject = Bosh::Bootstrap::MicroboshProviders::OpenStack.new(microbosh_yml, settings, fog_compute) - - subject.create_microbosh_yml(settings) - expect(File).to be_exists(microbosh_yml) - yaml_files_match(microbosh_yml, spec_asset("microbosh_yml/micro_bosh.openstack.nova_vip.yml")) + describe "microbosh yml" do + subject do + Bosh::Bootstrap::MicroboshProviders::OpenStack + .new(microbosh_yml, settings, fog_compute) end - - - it "on neutron with public gateway & floating IP" do + before do setting "provider.name", "openstack" setting "provider.credentials.openstack_auth_url", "http://10.0.0.2:5000/v2.0/tokens" setting "provider.credentials.openstack_username", "USER" setting "provider.credentials.openstack_api_key", "PASSWORD" setting "provider.credentials.openstack_tenant", "TENANT" setting "provider.credentials.openstack_region", "REGION" - setting "address.subnet_id", "7b8788eb-b49e-4424-9065-75a6b07094ea" - setting "address.pool_name", "INTERNET" - setting "address.ip", "1.2.3.4" # network.vip setting "key_pair.path", "~/.microbosh/ssh/test-bosh" setting "bosh.name", "test-bosh" setting "bosh.salted_password", "salted_password" setting "bosh.persistent_disk", 32768 + end - subject = Bosh::Bootstrap::MicroboshProviders::OpenStack.new(microbosh_yml, settings, fog_compute) + context "on nova with floating IP" do + before do + setting "address.ip", "1.2.3.4" + end - subject.create_microbosh_yml(settings) - expect(File).to be_exists(microbosh_yml) - yaml_files_match(microbosh_yml, spec_asset("microbosh_yml/micro_bosh.openstack.neutron_vip.yml")) + it "creates micro_bosh.yml manifest" do + subject.create_microbosh_yml(settings) + expect(File).to be_exists(microbosh_yml) + yaml_files_match(microbosh_yml, spec_asset("microbosh_yml/micro_bosh.openstack.nova_vip.yml")) + end + end - it "on neutron with internal static IP only" do - setting "provider.name", "openstack" - setting "provider.credentials.openstack_auth_url", "http://10.0.0.2:5000/v2.0/tokens" - setting "provider.credentials.openstack_username", "USER" - setting "provider.credentials.openstack_api_key", "PASSWORD" - setting "provider.credentials.openstack_tenant", "TENANT" - setting "provider.credentials.openstack_region", "REGION" - setting "address.subnet_id", "7b8788eb-b49e-4424-9065-75a6b07094ea" - setting "address.ip", "10.10.10.3" # network.ip - setting "key_pair.path", "~/.microbosh/ssh/test-bosh" - setting "bosh.name", "test-bosh" - setting "bosh.salted_password", "salted_password" - setting "bosh.persistent_disk", 32768 + context "on neutron with public gateway & floating IP" do + before do + setting "address.subnet_id", "7b8788eb-b49e-4424-9065-75a6b07094ea" + setting "address.pool_name", "INTERNET" + setting "address.ip", "1.2.3.4" # network.vip + end - subject = Bosh::Bootstrap::MicroboshProviders::OpenStack.new(microbosh_yml, settings, fog_compute) + it "creates micro_bosh.yml manifest" do + subject.create_microbosh_yml(settings) + expect(File).to be_exists(microbosh_yml) + yaml_files_match(microbosh_yml, spec_asset("microbosh_yml/micro_bosh.openstack.neutron_vip.yml")) + end - subject.create_microbosh_yml(settings) - expect(File).to be_exists(microbosh_yml) - yaml_files_match(microbosh_yml, spec_asset("microbosh_yml/micro_bosh.openstack.neutron_manual.yml")) end + context "on neutron with internal static IP only" do + before do + setting "address.subnet_id", "7b8788eb-b49e-4424-9065-75a6b07094ea" + setting "address.ip", "10.10.10.3" # network.ip + end - it "boot from volume" do - setting "provider.name", "openstack" - setting "provider.credentials.openstack_auth_url", "http://10.0.0.2:5000/v2.0/tokens" - setting "provider.credentials.openstack_username", "USER" - setting "provider.credentials.openstack_api_key", "PASSWORD" - setting "provider.credentials.openstack_tenant", "TENANT" - setting "provider.credentials.openstack_region", "REGION" - setting "address.subnet_id", "7b8788eb-b49e-4424-9065-75a6b07094ea" - setting "address.ip", "10.10.10.3" # network.ip - setting "key_pair.path", "~/.microbosh/ssh/test-bosh" - setting "bosh.name", "test-bosh" - setting "bosh.salted_password", "salted_password" - setting "bosh.persistent_disk", 32768 + it "creates micro_bosh.yml manifest" do + subject.create_microbosh_yml(settings) + expect(File).to be_exists(microbosh_yml) + yaml_files_match(microbosh_yml, spec_asset("microbosh_yml/micro_bosh.openstack.neutron_manual.yml")) + end - setting "provider.options.boot_from_volume", true + end + context "settings" do + before do + setting "address.ip", "10.10.10.3" # network.ip + setting "address.subnet_id", "7b8788eb-b49e-4424-9065-75a6b07094ea" + end - subject = Bosh::Bootstrap::MicroboshProviders::OpenStack.new(microbosh_yml, settings, fog_compute) + it "boot from volume" do + setting "provider.options.boot_from_volume", true - subject.create_microbosh_yml(settings) - expect(File).to be_exists(microbosh_yml) - yaml_files_match(microbosh_yml, spec_asset("microbosh_yml/micro_bosh.openstack.boot_from_volume.yml")) - end + subject.create_microbosh_yml(settings) + expect(File).to be_exists(microbosh_yml) + yaml_files_match(microbosh_yml, spec_asset("microbosh_yml/micro_bosh.openstack.boot_from_volume.yml")) + end - it "adds recursor if present" do - setting "provider.name", "openstack" - setting "provider.credentials.openstack_auth_url", "http://10.0.0.2:5000/v2.0/tokens" - setting "provider.credentials.openstack_username", "USER" - setting "provider.credentials.openstack_api_key", "PASSWORD" - setting "provider.credentials.openstack_tenant", "TENANT" - setting "provider.credentials.openstack_region", "REGION" - setting "address.subnet_id", "7b8788eb-b49e-4424-9065-75a6b07094ea" - setting "address.pool_name", "INTERNET" - setting "address.ip", "1.2.3.4" # network.vip - setting "key_pair.path", "~/.microbosh/ssh/test-bosh" - setting "bosh.name", "test-bosh" - setting "bosh.salted_password", "salted_password" - setting "bosh.persistent_disk", 32768 - setting "recursor", "4.5.6.7" + it "adds recursor if present" do + setting "recursor", "4.5.6.7" - subject = Bosh::Bootstrap::MicroboshProviders::OpenStack.new(microbosh_yml, settings, fog_compute) + subject.create_microbosh_yml(settings) + expect(File).to be_exists(microbosh_yml) + yaml_files_match(microbosh_yml, spec_asset("microbosh_yml/micro_bosh.openstack.with_recursor.yml")) + end - subject.create_microbosh_yml(settings) - expect(File).to be_exists(microbosh_yml) - yaml_files_match(microbosh_yml, spec_asset("microbosh_yml/micro_bosh.openstack.with_recursor.yml")) - end + it "adds proxy if present" do + setting "proxy.http_proxy", "http://192.168.1.100:8080" + setting "proxy.https_proxy", "https://192.168.1.100:8080" - it "adds proxy if present" do - setting "provider.name", "openstack" - setting "provider.credentials.openstack_auth_url", "http://10.0.0.2:5000/v2.0/tokens" - setting "provider.credentials.openstack_username", "USER" - setting "provider.credentials.openstack_api_key", "PASSWORD" - setting "provider.credentials.openstack_tenant", "TENANT" - setting "provider.credentials.openstack_region", "REGION" - setting "address.subnet_id", "7b8788eb-b49e-4424-9065-75a6b07094ea" - setting "address.pool_name", "INTERNET" - setting "address.ip", "1.2.3.4" # network.vip - setting "key_pair.path", "~/.microbosh/ssh/test-bosh" - setting "bosh.name", "test-bosh" - setting "bosh.salted_password", "salted_password" - setting "bosh.persistent_disk", 32768 - setting "proxy.http_proxy", "http://192.168.1.100:8080" - setting "proxy.https_proxy", "https://192.168.1.100:8080" + subject.create_microbosh_yml(settings) + expect(File).to be_exists(microbosh_yml) + yaml_files_match(microbosh_yml, spec_asset("microbosh_yml/micro_bosh.openstack.with_proxy.yml")) + end - subject = Bosh::Bootstrap::MicroboshProviders::OpenStack.new(microbosh_yml, settings, fog_compute) + it "adds state_timeout if provided" do + setting "provider.state_timeout", 600 - subject.create_microbosh_yml(settings) - expect(File).to be_exists(microbosh_yml) - yaml_files_match(microbosh_yml, spec_asset("microbosh_yml/micro_bosh.openstack.with_proxy.yml")) - end + subject.create_microbosh_yml(settings) + expect(File).to be_exists(microbosh_yml) + yaml_files_match(microbosh_yml, spec_asset("microbosh_yml/micro_bosh.openstack.with_state_timeout.yml")) + end - it "adds state_timeout if provided" do - setting "provider.name", "openstack" - setting "provider.credentials.openstack_auth_url", "http://10.0.0.2:5000/v2.0/tokens" - setting "provider.credentials.openstack_username", "USER" - setting "provider.credentials.openstack_api_key", "PASSWORD" - setting "provider.credentials.openstack_tenant", "TENANT" - setting "provider.credentials.openstack_region", "REGION" - setting "provider.state_timeout", 600 - setting "address.subnet_id", "7b8788eb-b49e-4424-9065-75a6b07094ea" - setting "address.pool_name", "INTERNET" - setting "address.ip", "1.2.3.4" # network.vip - setting "key_pair.path", "~/.microbosh/ssh/test-bosh" - setting "bosh.name", "test-bosh" - setting "bosh.salted_password", "salted_password" - setting "bosh.persistent_disk", 32768 + it "uses custom ntp if provided" do + setting "ntp", %w[1.1.2.2 1.1.2.3] - subject = Bosh::Bootstrap::MicroboshProviders::OpenStack.new(microbosh_yml, settings, fog_compute) - subject.create_microbosh_yml(settings) - expect(File).to be_exists(microbosh_yml) - yaml_files_match(microbosh_yml, spec_asset("microbosh_yml/micro_bosh.openstack.with_state_timeout.yml")) + + subject.create_microbosh_yml(settings) + expect(File).to be_exists(microbosh_yml) + yaml_files_match(microbosh_yml, spec_asset("microbosh_yml/micro_bosh.openstack.with_ntp.yml")) + end end end describe "existing stemcells as openstack images" do - it "finds match" do - subject = Bosh::Bootstrap::MicroboshProviders::OpenStack.new(microbosh_yml, settings, fog_compute) + subject = Bosh::Bootstrap::MicroboshProviders::OpenStack + .new(microbosh_yml, settings, fog_compute) expect(subject).to receive(:owned_images).and_return([ instance_double("Fog::Compute::OpenStack::Image", name: "BOSH-14c85f35-3dd3-4200-af85-ada65216b2de", metadata: [ instance_double("Fog::Compute::OpenStack::Metadata", key: "name", value: "bosh-openstack-kvm-ubuntu-trusty-go_agent"), instance_double("Fog::Compute::OpenStack::Metadata", key: "version", value: "2732"), - ]) + ] + ) ]) expect(subject.find_image_for_stemcell("bosh-openstack-kvm-ubuntu-trusty-go_agent", "2732")).to eq("BOSH-14c85f35-3dd3-4200-af85-ada65216b2de") end it "doesn't find match" do