bosh-bootstrap 0.12.0 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. checksums.yaml +5 -13
  2. data/.travis.yml +1 -1
  3. data/ChangeLog.md +106 -87
  4. data/Gemfile +1 -0
  5. data/bosh-bootstrap.gemspec +2 -2
  6. data/lib/bosh-bootstrap/cli/commands/deploy.rb +3 -3
  7. data/lib/bosh-bootstrap/microbosh_providers/aws.rb +1 -5
  8. data/lib/bosh-bootstrap/microbosh_providers/base.rb +4 -0
  9. data/lib/bosh-bootstrap/microbosh_providers/openstack.rb +57 -12
  10. data/lib/bosh-bootstrap/network.rb +4 -5
  11. data/lib/bosh-bootstrap/network_providers/aws.rb +5 -9
  12. data/lib/bosh-bootstrap/network_providers/dummy.rb +1 -1
  13. data/lib/bosh-bootstrap/network_providers/openstack.rb +6 -18
  14. data/lib/bosh-bootstrap/version.rb +1 -1
  15. data/spec/assets/microbosh_yml/micro_bosh.aws_ec2.us-west-2a.yml +1 -5
  16. data/spec/assets/microbosh_yml/micro_bosh.aws_ec2.yml +1 -5
  17. data/spec/assets/microbosh_yml/micro_bosh.aws_vpc.yml +1 -5
  18. data/spec/assets/microbosh_yml/micro_bosh.openstack.boot_from_volume.yml +43 -0
  19. data/spec/assets/microbosh_yml/micro_bosh.openstack.neutron_manual.yml +43 -0
  20. data/spec/assets/microbosh_yml/{micro_bosh.openstack.yml → micro_bosh.openstack.neutron_vip.yml} +12 -13
  21. data/spec/assets/microbosh_yml/micro_bosh.openstack.nova_vip.yml +41 -0
  22. data/spec/spec_helper.rb +3 -3
  23. data/spec/support/rspec-fire.rb +9 -0
  24. data/spec/unit/commands/deploy_spec.rb +73 -60
  25. data/spec/unit/key_pair_spec.rb +3 -3
  26. data/spec/unit/microbosh_providers/openstack_spec.rb +87 -18
  27. data/spec/unit/microbosh_spec.rb +2 -2
  28. data/spec/unit/network_providers/aws_spec.rb +5 -9
  29. data/spec/unit/network_providers/openstack_spec.rb +5 -9
  30. data/spec/unit/network_spec.rb +5 -6
  31. metadata +28 -20
@@ -0,0 +1,43 @@
1
+ ---
2
+ name: test-bosh
3
+ logging:
4
+ level: DEBUG
5
+ network:
6
+ type: manual
7
+ ip: 10.10.10.3
8
+ cloud_properties:
9
+ net_id: 7b8788eb-b49e-4424-9065-75a6b07094ea
10
+ resources:
11
+ persistent_disk: 16384
12
+ cloud_properties:
13
+ instance_type: m1.medium
14
+ cloud:
15
+ plugin: openstack
16
+ properties:
17
+ openstack:
18
+ auth_url: http://10.0.0.2:5000/v2.0/tokens
19
+ username: USER
20
+ api_key: PASSWORD
21
+ tenant: TENANT
22
+ region: REGION
23
+ default_security_groups:
24
+ - ssh
25
+ - dns_server
26
+ - bosh
27
+ default_key_name: test-bosh
28
+ private_key: ~/.microbosh/ssh/test-bosh
29
+ boot_from_volume: false
30
+ apply_spec:
31
+ agent:
32
+ blobstore:
33
+ address: 10.10.10.3
34
+ nats:
35
+ address: 10.10.10.3
36
+ properties:
37
+ director:
38
+ max_threads: 3
39
+ hm:
40
+ resurrector_enabled: true
41
+ ntp:
42
+ - 0.north-america.pool.ntp.org
43
+ - 1.north-america.pool.ntp.org
@@ -1,33 +1,32 @@
1
- ---
1
+ ---
2
2
  name: test-bosh
3
- logging:
3
+ logging:
4
4
  level: DEBUG
5
5
  network:
6
6
  type: dynamic
7
7
  vip: 1.2.3.4
8
- resources:
8
+ cloud_properties:
9
+ net_id: 7b8788eb-b49e-4424-9065-75a6b07094ea
10
+ resources:
9
11
  persistent_disk: 16384
10
- cloud_properties:
12
+ cloud_properties:
11
13
  instance_type: m1.medium
12
- cloud:
14
+ cloud:
13
15
  plugin: openstack
14
- properties:
15
- openstack:
16
+ properties:
17
+ openstack:
16
18
  auth_url: http://10.0.0.2:5000/v2.0/tokens
17
19
  username: USER
18
20
  api_key: PASSWORD
19
21
  tenant: TENANT
20
22
  region: REGION
21
- default_security_groups:
23
+ default_security_groups:
22
24
  - ssh
23
25
  - dns_server
24
- - bosh_agent_https
25
- - bosh_nats_server
26
- - bosh_blobstore
27
- - bosh_director
28
- - bosh_registry
26
+ - bosh
29
27
  default_key_name: test-bosh
30
28
  private_key: ~/.microbosh/ssh/test-bosh
29
+ boot_from_volume: false
31
30
  apply_spec:
32
31
  agent:
33
32
  blobstore:
@@ -0,0 +1,41 @@
1
+ ---
2
+ name: test-bosh
3
+ logging:
4
+ level: DEBUG
5
+ network:
6
+ type: dynamic
7
+ vip: 1.2.3.4
8
+ resources:
9
+ persistent_disk: 16384
10
+ cloud_properties:
11
+ instance_type: m1.medium
12
+ cloud:
13
+ plugin: openstack
14
+ properties:
15
+ openstack:
16
+ auth_url: http://10.0.0.2:5000/v2.0/tokens
17
+ username: USER
18
+ api_key: PASSWORD
19
+ tenant: TENANT
20
+ region: REGION
21
+ default_security_groups:
22
+ - ssh
23
+ - dns_server
24
+ - bosh
25
+ default_key_name: test-bosh
26
+ private_key: ~/.microbosh/ssh/test-bosh
27
+ boot_from_volume: false
28
+ apply_spec:
29
+ agent:
30
+ blobstore:
31
+ address: 1.2.3.4
32
+ nats:
33
+ address: 1.2.3.4
34
+ properties:
35
+ director:
36
+ max_threads: 3
37
+ hm:
38
+ resurrector_enabled: true
39
+ ntp:
40
+ - 0.north-america.pool.ntp.org
41
+ - 1.north-america.pool.ntp.org
data/spec/spec_helper.rb CHANGED
@@ -29,13 +29,13 @@ end
29
29
  def files_match(filename, expected_filename)
30
30
  file = File.read(filename)
31
31
  expected_file = File.read(expected_filename)
32
- file.should == expected_file
32
+ expect(file).to eq(expected_file)
33
33
  end
34
34
 
35
35
  def yaml_files_match(filename, expected_filename)
36
36
  yaml = YAML.load_file(filename)
37
37
  expected_yaml = YAML.load_file(expected_filename)
38
- yaml.should == expected_yaml
38
+ expect(yaml).to eq(expected_yaml)
39
39
  end
40
40
 
41
41
  def setup_home_dir
@@ -56,7 +56,7 @@ RSpec.configure do |c|
56
56
  setup_home_dir
57
57
  end
58
58
 
59
- c.color_enabled = true
59
+ c.color = true
60
60
  end
61
61
 
62
62
  def get_tmp_file_path(content)
@@ -0,0 +1,9 @@
1
+ require 'rspec/fire'
2
+
3
+ RSpec.configure do |config|
4
+ config.include(RSpec::Fire)
5
+ end
6
+
7
+ RSpec::Fire.configure do |config|
8
+ config.verify_constant_names = true
9
+ end
@@ -22,43 +22,51 @@ describe Bosh::Bootstrap::Cli::Commands::Deploy do
22
22
  # * create_microbosh_manifest
23
23
  # * microbosh_deploy
24
24
  describe "aws" do
25
- it "deploy creates provisions IP address micro_bosh.yml, discovers/downloads stemcell/AMI, runs 'bosh micro deploy'" do
25
+ before do
26
26
  setting "provider.name", "aws"
27
27
  setting "key_pair.name", "test-bosh"
28
28
  setting "key_pair.private_key", "PRIVATE"
29
+ end
29
30
 
30
- provider = double(Cyoi::Cli::Provider)
31
- provider.stub(:execute!)
32
- Cyoi::Cli::Provider.should_receive(:new).with([settings_dir]).and_return(provider)
33
-
34
- provider_client = double(Cyoi::Providers::Clients::AwsProviderClient)
35
- provider_client.stub(:create_security_group)
36
- cmd.stub(:provider_client).and_return(provider_client)
37
-
38
- address = double(Cyoi::Cli::Address)
39
- address.stub(:execute!)
40
- Cyoi::Cli::Address.should_receive(:new).with([settings_dir]).and_return(address)
41
-
42
- microbosh_provider = stub()
43
- microbosh_provider.should_receive(:stemcell).exactly(1).times.and_return("")
44
- microbosh_provider.should_receive(:stemcell).exactly(1).times.and_return("ami-123456")
45
- cmd.stub(:microbosh_provider).and_return(microbosh_provider)
46
-
47
- key_pair = double(Cyoi::Cli::KeyPair)
48
- key_pair.stub(:execute!)
49
- Cyoi::Cli::KeyPair.should_receive(:new).with(["test-bosh", settings_dir]).and_return(key_pair)
50
-
51
- keypair = double(Bosh::Bootstrap::KeyPair)
52
- keypair.should_receive(:execute!)
53
- keypair.should_receive(:path).and_return(home_file(".microbosh/ssh/test-bosh"))
54
- Bosh::Bootstrap::KeyPair.stub(:new).with(settings_dir, "test-bosh", "PRIVATE").and_return(keypair)
55
-
56
- microbosh = double(Bosh::Bootstrap::Microbosh)
57
- microbosh.stub(:deploy)
58
- Bosh::Bootstrap::Microbosh.stub(:new).with(settings_dir, microbosh_provider).and_return(microbosh)
31
+ it "deploy creates provisions IP address micro_bosh.yml, discovers/downloads stemcell/AMI, runs 'bosh micro deploy'" do
32
+ # select_provider
33
+ cli_provider = instance_double("Cyoi::Cli::Provider")
34
+ expect(cli_provider).to receive(:execute!)
35
+ expect(Cyoi::Cli::Provider).to receive(:new).with([settings_dir]).and_return(cli_provider)
36
+
37
+ cyoi_provider_client = instance_double("Cyoi::Providers::Clients::AwsProviderClient")
38
+ expect(cyoi_provider_client).to receive(:create_security_group).exactly(3).times
39
+ expect(Cyoi::Providers).to receive(:provider_client).with("name" => "aws").and_return(cyoi_provider_client)
40
+
41
+ # select_or_provision_public_networking
42
+ address = instance_double("Cyoi::Cli::Address")
43
+ expect(address).to receive(:execute!)
44
+ expect(Cyoi::Cli::Address).to receive(:new).with([settings_dir]).and_return(address)
45
+
46
+ # microbosh_provider & select_public_image_or_download_stemcell
47
+ microbosh_provider = instance_double("Bosh::Bootstrap::MicroboshProviders::AWS")
48
+ expect(microbosh_provider).to receive(:stemcell).exactly(1).times.and_return("")
49
+ expect(microbosh_provider).to receive(:stemcell).exactly(1).times.and_return("ami-123456")
50
+ expect(cmd).to receive(:microbosh_provider).and_return(microbosh_provider).exactly(3).times
51
+
52
+ # setup_keypair
53
+ key_pair = instance_double(Cyoi::Cli::KeyPair)
54
+ expect(key_pair).to receive(:execute!)
55
+ expect(Cyoi::Cli::KeyPair).to receive(:new).with(["test-bosh", settings_dir]).and_return(key_pair)
56
+
57
+ keypair = instance_double(Bosh::Bootstrap::KeyPair)
58
+ expect(keypair).to receive(:execute!)
59
+ expect(keypair).to receive(:path).and_return(home_file(".microbosh/ssh/test-bosh"))
60
+ expect(Bosh::Bootstrap::KeyPair).to receive(:new).with(settings_dir, "test-bosh", "PRIVATE").and_return(keypair)
61
+
62
+ # perform_microbosh_deploy
63
+ microbosh = instance_double(Bosh::Bootstrap::Microbosh)
64
+ expect(microbosh).to receive(:deploy)
65
+ expect(Bosh::Bootstrap::Microbosh).to receive(:new).with(settings_dir, microbosh_provider).and_return(microbosh)
59
66
 
60
67
  capture_stdout { cmd.perform }
61
68
  end
69
+
62
70
  end
63
71
 
64
72
  describe "openstack" do
@@ -67,37 +75,42 @@ describe Bosh::Bootstrap::Cli::Commands::Deploy do
67
75
  setting "key_pair.name", "test-bosh"
68
76
  setting "key_pair.private_key", "PRIVATE"
69
77
 
70
- provider = double(Cyoi::Cli::Provider)
71
- provider.stub(:execute!)
72
- Cyoi::Cli::Provider.should_receive(:new).with([settings_dir]).and_return(provider)
73
-
74
- provider_client = double(Cyoi::Providers::Clients::OpenStackProviderClient)
75
- provider_client.stub(:create_security_group)
76
- cmd.stub(:provider_client).and_return(provider_client)
77
-
78
- address = double(Cyoi::Cli::Address)
79
- address.stub(:execute!)
80
- Cyoi::Cli::Address.should_receive(:new).with([settings_dir]).and_return(address)
81
-
82
- microbosh_provider = stub()
83
- microbosh_provider.should_receive(:stemcell).exactly(1).times.and_return("")
84
- microbosh_provider.should_receive(:stemcell).exactly(1).times.and_return("openstack.tgz")
85
- cmd.stub(:microbosh_provider).and_return(microbosh_provider)
86
-
87
- key_pair = double(Cyoi::Cli::KeyPair)
88
- key_pair.stub(:execute!)
89
- Cyoi::Cli::KeyPair.should_receive(:new).with(["test-bosh", settings_dir]).and_return(key_pair)
90
-
91
- keypair = double(Bosh::Bootstrap::KeyPair)
92
- keypair.should_receive(:execute!)
93
- keypair.should_receive(:path).and_return(home_file(".microbosh/ssh/test-bosh"))
94
- Bosh::Bootstrap::KeyPair.stub(:new).with(settings_dir, "test-bosh", "PRIVATE").and_return(keypair)
95
-
96
- microbosh = double(Bosh::Bootstrap::Microbosh)
97
- microbosh.stub(:deploy)
98
- Bosh::Bootstrap::Microbosh.stub(:new).with(settings_dir, microbosh_provider).and_return(microbosh)
78
+ # select_provider
79
+ cli_provider = instance_double("Cyoi::Cli::Provider")
80
+ expect(cli_provider).to receive(:execute!)
81
+ expect(Cyoi::Cli::Provider).to receive(:new).with([settings_dir]).and_return(cli_provider)
82
+
83
+ cyoi_provider_client = instance_double("Cyoi::Providers::Clients::OpenStackProviderClient")
84
+ expect(cyoi_provider_client).to receive(:create_security_group).exactly(3).times
85
+ expect(Cyoi::Providers).to receive(:provider_client).with("name" => "openstack").and_return(cyoi_provider_client)
86
+
87
+ # select_or_provision_public_networking
88
+ address = instance_double("Cyoi::Cli::Address")
89
+ expect(address).to receive(:execute!)
90
+ expect(Cyoi::Cli::Address).to receive(:new).with([settings_dir]).and_return(address)
91
+
92
+ # microbosh_provider & select_public_image_or_download_stemcell
93
+ microbosh_provider = instance_double("Bosh::Bootstrap::MicroboshProviders::OpenStack")
94
+ expect(microbosh_provider).to receive(:stemcell).exactly(1).times.and_return("")
95
+ expect(microbosh_provider).to receive(:stemcell).exactly(1).times.and_return("openstack.tgz")
96
+ expect(cmd).to receive(:microbosh_provider).and_return(microbosh_provider).exactly(3).times
97
+
98
+ # setup_keypair
99
+ key_pair = instance_double(Cyoi::Cli::KeyPair)
100
+ expect(key_pair).to receive(:execute!)
101
+ expect(Cyoi::Cli::KeyPair).to receive(:new).with(["test-bosh", settings_dir]).and_return(key_pair)
102
+
103
+ keypair = instance_double(Bosh::Bootstrap::KeyPair)
104
+ expect(keypair).to receive(:execute!)
105
+ expect(keypair).to receive(:path).and_return(home_file(".microbosh/ssh/test-bosh"))
106
+ expect(Bosh::Bootstrap::KeyPair).to receive(:new).with(settings_dir, "test-bosh", "PRIVATE").and_return(keypair)
107
+
108
+ # perform_microbosh_deploy
109
+ microbosh = instance_double(Bosh::Bootstrap::Microbosh)
110
+ expect(microbosh).to receive(:deploy)
111
+ expect(Bosh::Bootstrap::Microbosh).to receive(:new).with(settings_dir, microbosh_provider).and_return(microbosh)
99
112
 
100
113
  capture_stdout { cmd.perform }
101
114
  end
102
115
  end
103
- end
116
+ end
@@ -7,9 +7,9 @@ describe Bosh::Bootstrap::KeyPair do
7
7
 
8
8
  it "creates local private key file" do
9
9
  setup_home_dir
10
- File.should_not be_exists(home_file(".microbosh", "ssh", "keyname"))
10
+ expect(File.exists?(home_file(".microbosh", "ssh", "keyname"))).to eq false
11
11
  subject.execute!
12
12
  keyfile = home_file(".microbosh", "ssh", "keyname")
13
- File.read(keyfile).should == "PRIVATE"
13
+ expect(File.read(keyfile)).to eq "PRIVATE"
14
14
  end
15
- end
15
+ end
@@ -6,23 +6,92 @@ describe Bosh::Bootstrap::MicroboshProviders::OpenStack do
6
6
 
7
7
  let(:microbosh_yml) { File.expand_path("~/.microbosh/deployments/micro_bosh.yml")}
8
8
 
9
- it "creates micro_bosh.yml manifest" do
10
- setting "provider.name", "openstack"
11
- setting "provider.credentials.openstack_auth_url", "http://10.0.0.2:5000/v2.0/tokens"
12
- setting "provider.credentials.openstack_username", "USER"
13
- setting "provider.credentials.openstack_api_key", "PASSWORD"
14
- setting "provider.credentials.openstack_tenant", "TENANT"
15
- setting "provider.credentials.openstack_region", "REGION"
16
- setting "address.ip", "1.2.3.4"
17
- setting "key_pair.path", "~/.microbosh/ssh/test-bosh"
18
- setting "bosh.name", "test-bosh"
19
- setting "bosh.salted_password", "salted_password"
20
- setting "bosh.persistent_disk", 16384
21
-
22
- subject = Bosh::Bootstrap::MicroboshProviders::OpenStack.new(microbosh_yml, settings)
23
-
24
- subject.create_microbosh_yml(settings)
25
- File.should be_exists(microbosh_yml)
26
- yaml_files_match(microbosh_yml, spec_asset("microbosh_yml/micro_bosh.openstack.yml"))
9
+ context "creates micro_bosh.yml manifest" do
10
+ it "on nova with floating IP" do
11
+ setting "provider.name", "openstack"
12
+ setting "provider.credentials.openstack_auth_url", "http://10.0.0.2:5000/v2.0/tokens"
13
+ setting "provider.credentials.openstack_username", "USER"
14
+ setting "provider.credentials.openstack_api_key", "PASSWORD"
15
+ setting "provider.credentials.openstack_tenant", "TENANT"
16
+ setting "provider.credentials.openstack_region", "REGION"
17
+ setting "address.ip", "1.2.3.4"
18
+ setting "key_pair.path", "~/.microbosh/ssh/test-bosh"
19
+ setting "bosh.name", "test-bosh"
20
+ setting "bosh.salted_password", "salted_password"
21
+ setting "bosh.persistent_disk", 16384
22
+
23
+ subject = Bosh::Bootstrap::MicroboshProviders::OpenStack.new(microbosh_yml, settings)
24
+
25
+ subject.create_microbosh_yml(settings)
26
+ File.should be_exists(microbosh_yml)
27
+ yaml_files_match(microbosh_yml, spec_asset("microbosh_yml/micro_bosh.openstack.nova_vip.yml"))
28
+ end
29
+
30
+
31
+ it "on neutron with public gateway & floating IP" do
32
+ setting "provider.name", "openstack"
33
+ setting "provider.credentials.openstack_auth_url", "http://10.0.0.2:5000/v2.0/tokens"
34
+ setting "provider.credentials.openstack_username", "USER"
35
+ setting "provider.credentials.openstack_api_key", "PASSWORD"
36
+ setting "provider.credentials.openstack_tenant", "TENANT"
37
+ setting "provider.credentials.openstack_region", "REGION"
38
+ setting "address.subnet_id", "7b8788eb-b49e-4424-9065-75a6b07094ea"
39
+ setting "address.pool_name", "INTERNET"
40
+ setting "address.ip", "1.2.3.4" # network.vip
41
+ setting "key_pair.path", "~/.microbosh/ssh/test-bosh"
42
+ setting "bosh.name", "test-bosh"
43
+ setting "bosh.salted_password", "salted_password"
44
+ setting "bosh.persistent_disk", 16384
45
+
46
+ subject = Bosh::Bootstrap::MicroboshProviders::OpenStack.new(microbosh_yml, settings)
47
+
48
+ subject.create_microbosh_yml(settings)
49
+ File.should be_exists(microbosh_yml)
50
+ yaml_files_match(microbosh_yml, spec_asset("microbosh_yml/micro_bosh.openstack.neutron_vip.yml"))
51
+ end
52
+
53
+ it "on neutron with internal static IP only" do
54
+ setting "provider.name", "openstack"
55
+ setting "provider.credentials.openstack_auth_url", "http://10.0.0.2:5000/v2.0/tokens"
56
+ setting "provider.credentials.openstack_username", "USER"
57
+ setting "provider.credentials.openstack_api_key", "PASSWORD"
58
+ setting "provider.credentials.openstack_tenant", "TENANT"
59
+ setting "provider.credentials.openstack_region", "REGION"
60
+ setting "address.subnet_id", "7b8788eb-b49e-4424-9065-75a6b07094ea"
61
+ setting "address.ip", "10.10.10.3" # network.ip
62
+ setting "key_pair.path", "~/.microbosh/ssh/test-bosh"
63
+ setting "bosh.name", "test-bosh"
64
+ setting "bosh.salted_password", "salted_password"
65
+ setting "bosh.persistent_disk", 16384
66
+
67
+ subject = Bosh::Bootstrap::MicroboshProviders::OpenStack.new(microbosh_yml, settings)
68
+
69
+ subject.create_microbosh_yml(settings)
70
+ File.should be_exists(microbosh_yml)
71
+ yaml_files_match(microbosh_yml, spec_asset("microbosh_yml/micro_bosh.openstack.neutron_manual.yml"))
72
+ end
73
+
74
+ it "boot from volume" do
75
+ setting "provider.name", "openstack"
76
+ setting "provider.credentials.openstack_auth_url", "http://10.0.0.2:5000/v2.0/tokens"
77
+ setting "provider.credentials.openstack_username", "USER"
78
+ setting "provider.credentials.openstack_api_key", "PASSWORD"
79
+ setting "provider.credentials.openstack_tenant", "TENANT"
80
+ setting "provider.credentials.openstack_region", "REGION"
81
+ setting "address.subnet_id", "7b8788eb-b49e-4424-9065-75a6b07094ea"
82
+ setting "address.ip", "10.10.10.3" # network.ip
83
+ setting "key_pair.path", "~/.microbosh/ssh/test-bosh"
84
+ setting "bosh.name", "test-bosh"
85
+ setting "bosh.salted_password", "salted_password"
86
+ setting "bosh.persistent_disk", 16384
87
+
88
+ setting "provider.options.boot_from_volume", true
89
+
90
+ subject = Bosh::Bootstrap::MicroboshProviders::OpenStack.new(microbosh_yml, settings)
91
+
92
+ subject.create_microbosh_yml(settings)
93
+ File.should be_exists(microbosh_yml)
94
+ yaml_files_match(microbosh_yml, spec_asset("microbosh_yml/micro_bosh.openstack.boot_from_volume.yml"))
95
+ end
27
96
  end
28
97
  end
@@ -6,7 +6,7 @@ describe Bosh::Bootstrap::Microbosh do
6
6
  let(:path_or_ami) { "/path/to/stemcell.tgz" }
7
7
  let(:base_path) { File.expand_path("~/.microbosh") }
8
8
  let(:settings_dir) { base_path }
9
- let(:microbosh_provider) { stub(create_microbosh_yml: {}) }
9
+ let(:microbosh_provider) { instance_double("Bosh::Bootstrap::MicroboshProviders::AWS", create_microbosh_yml: {}) }
10
10
  subject { Bosh::Bootstrap::Microbosh.new(base_path, microbosh_provider) }
11
11
 
12
12
  it "deploys new microbosh" do
@@ -24,4 +24,4 @@ describe Bosh::Bootstrap::Microbosh do
24
24
  xit "re-deploys failed microbosh deployment" do
25
25
  subject.deploy
26
26
  end
27
- end
27
+ end
@@ -6,25 +6,21 @@ require "bosh-bootstrap/network_providers/aws"
6
6
  describe Bosh::Bootstrap::NetworkProviders::AWS do
7
7
  include Bosh::Bootstrap::Cli::Helpers::Settings
8
8
 
9
- let(:provider_client) { stub() }
10
- subject { Bosh::Bootstrap::NetworkProviders::AWS.new(provider_client) }
9
+ let(:cyoi_provider_client) { instance_double("Cyoi::Providers::Clients::AwsProviderClient") }
10
+ subject { Bosh::Bootstrap::NetworkProviders::AWS.new(cyoi_provider_client) }
11
11
 
12
12
  it "is registered" do
13
- Bosh::Bootstrap::NetworkProviders.provider_class("aws").should == subject.class
13
+ expect(Bosh::Bootstrap::NetworkProviders.provider_class("aws")).to eq(subject.class)
14
14
  end
15
15
 
16
16
  it "creates security groups it needs" do
17
17
  expected_groups = [
18
18
  ["ssh", "ssh", ports: 22],
19
19
  ["dns_server", "dns_server", ports: { protocol: "udp", ports: (53..53) }],
20
- ["bosh_nats_server", "bosh_nats_server", ports: 4222],
21
- ["bosh_agent_https", "bosh_agent_https", ports: 6868],
22
- ["bosh_blobstore", "bosh_blobstore", ports: 25250],
23
- ["bosh_director", "bosh_director", ports: 25555],
24
- ["bosh_registry", "bosh_registry", ports: 25777],
20
+ ["bosh", "bosh", ports: [4222, 6868, 25250, 25555, 25777]]
25
21
  ]
26
22
  expected_groups.each do |security_group_name, description, ports|
27
- provider_client.stub(:create_security_group).with(security_group_name, description, ports)
23
+ expect(cyoi_provider_client).to receive(:create_security_group).with(security_group_name, description, ports)
28
24
  end
29
25
  subject.perform
30
26
  end
@@ -5,7 +5,7 @@ require "bosh-bootstrap/network_providers/openstack"
5
5
  describe Bosh::Bootstrap::NetworkProviders::OpenStack do
6
6
  include Bosh::Bootstrap::Cli::Helpers::Settings
7
7
 
8
- let(:provider_client) { stub() }
8
+ let(:provider_client) { instance_double("Cyoi::Providers::Clients::OpenStackProviderClient") }
9
9
  subject { Bosh::Bootstrap::NetworkProviders::OpenStack.new(provider_client) }
10
10
 
11
11
  it "is registered" do
@@ -14,16 +14,12 @@ describe Bosh::Bootstrap::NetworkProviders::OpenStack do
14
14
 
15
15
  it "creates security groups it needs" do
16
16
  expected_groups = [
17
- ["ssh", "ssh", ports: 22],
18
- ["dns_server", "dns_server", ports: { protocol: "udp", ports: (53..53) }],
19
- ["bosh_nats_server", "bosh_nats_server", ports: 4222],
20
- ["bosh_agent_https", "bosh_agent_https", ports: 6868],
21
- ["bosh_blobstore", "bosh_blobstore", ports: 25250],
22
- ["bosh_director", "bosh_director", ports: 25555],
23
- ["bosh_registry", "bosh_registry", ports: 25777],
17
+ ["ssh", "ssh", 22],
18
+ ["dns_server", "dns_server", { protocol: "udp", ports: (53..53) }],
19
+ ["bosh", "bosh", [4222, 6868, 25250, 25555, 25777]]
24
20
  ]
25
21
  expected_groups.each do |security_group_name, description, ports|
26
- provider_client.stub(:create_security_group).with(security_group_name, description, ports)
22
+ expect(provider_client).to receive(:create_security_group).with(security_group_name, description, ports)
27
23
  end
28
24
  subject.perform
29
25
  end
@@ -3,17 +3,16 @@ require "bosh-bootstrap/network"
3
3
  describe Bosh::Bootstrap::Network do
4
4
  include Bosh::Bootstrap::Cli::Helpers::Settings
5
5
 
6
- let(:aws_provider_client) { stub() }
7
- let(:vsphere_provider_client) { stub() }
6
+ let(:aws_cyoi_provider_client) { instance_double("Cyoi::Providers::Clients::AwsProviderClient") }
8
7
 
9
8
  it "uses NetworkProvider if available" do
10
- network = Bosh::Bootstrap::Network.new("aws", aws_provider_client)
11
- aws_provider_client.should_receive(:create_security_group).exactly(7).times
9
+ network = Bosh::Bootstrap::Network.new("aws", aws_cyoi_provider_client)
10
+ expect(aws_cyoi_provider_client).to receive(:create_security_group).exactly(3).times
12
11
  network.deploy
13
12
  end
14
13
 
15
14
  it "does nothing if no NetworkProvider for the infrastructure" do
16
- network = Bosh::Bootstrap::Network.new("vsphere", vsphere_provider_client)
15
+ network = Bosh::Bootstrap::Network.new("vsphere", nil)
17
16
  network.deploy
18
17
  end
19
- end
18
+ end