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