bosh-bootstrap 0.10.2 → 0.11.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.
- data/.rspec +1 -0
- data/.travis.yml +0 -1
- data/ChangeLog.md +23 -4
- data/Gemfile +5 -2
- data/Guardfile +2 -0
- data/README.md +209 -197
- data/TODO.md +55 -0
- data/bosh-bootstrap.gemspec +5 -12
- data/lib/bosh/cli/commands/bootstrap.rb +42 -0
- data/lib/bosh-bootstrap/cli/commands/delete.rb +26 -0
- data/lib/bosh-bootstrap/cli/commands/deploy.rb +89 -0
- data/lib/bosh-bootstrap/cli/commands/ssh.rb +32 -0
- data/lib/bosh-bootstrap/cli/helpers/bundle.rb +12 -0
- data/lib/bosh-bootstrap/cli/helpers/interactions.rb +15 -0
- data/lib/bosh-bootstrap/cli/helpers/settings.rb +61 -0
- data/lib/bosh-bootstrap/cli/helpers.rb +11 -0
- data/lib/bosh-bootstrap/key_pair.rb +21 -0
- data/lib/bosh-bootstrap/microbosh.rb +74 -0
- data/lib/bosh-bootstrap/microbosh_providers/aws.rb +104 -0
- data/lib/bosh-bootstrap/microbosh_providers/base.rb +50 -0
- data/lib/bosh-bootstrap/microbosh_providers/openstack.rb +61 -0
- data/lib/bosh-bootstrap/microbosh_providers/vsphere.rb +78 -0
- data/lib/bosh-bootstrap/microbosh_providers.rb +11 -0
- data/lib/bosh-bootstrap/network.rb +33 -0
- data/lib/bosh-bootstrap/network_providers/aws.rb +28 -0
- data/lib/bosh-bootstrap/network_providers/dummy.rb +10 -0
- data/lib/bosh-bootstrap/network_providers/openstack.rb +28 -0
- data/lib/bosh-bootstrap/network_providers.rb +11 -0
- data/lib/bosh-bootstrap/version.rb +1 -1
- data/lib/bosh-bootstrap.rb +3 -4
- data/spec/assets/microbosh_yml/micro_bosh.aws_ec2.yml +37 -0
- data/spec/assets/microbosh_yml/micro_bosh.aws_vpc.yml +39 -0
- data/spec/assets/microbosh_yml/micro_bosh.openstack.yml +30 -0
- data/spec/assets/microbosh_yml/micro_bosh.vsphere.yml +34 -0
- data/spec/integration/aws/aws_ec2_basic_spec.rb +39 -0
- data/spec/integration/aws/aws_helpers.rb +8 -61
- data/spec/spec_helper.rb +8 -3
- data/spec/support/capture_stdout.rb +18 -0
- data/spec/unit/cli/bootstrap_spec.rb +41 -0
- data/spec/unit/commands/delete_spec.rb +20 -0
- data/spec/unit/commands/deploy_spec.rb +64 -0
- data/spec/unit/commands/ssh_spec.rb +19 -0
- data/spec/unit/key_pair_spec.rb +13 -0
- data/spec/unit/microbosh_providers/aws_spec.rb +68 -0
- data/spec/unit/microbosh_providers/openstack_spec.rb +27 -0
- data/spec/unit/microbosh_providers/vsphere_spec.rb +42 -0
- data/spec/unit/microbosh_spec.rb +27 -0
- data/spec/unit/network_providers/aws_spec.rb +29 -0
- data/spec/unit/network_providers/openstack_spec.rb +29 -0
- data/spec/unit/network_spec.rb +17 -0
- metadata +71 -235
- data/CleanupCi.md +0 -8
- data/bin/bosh-bootstrap +0 -8
- data/docs/README.md +0 -3
- data/docs/devstack-openstack-tutorial.md +0 -215
- data/lib/bosh/providers/README.md +0 -5
- data/lib/bosh/providers/aws.rb +0 -258
- data/lib/bosh/providers/base_provider.rb +0 -48
- data/lib/bosh/providers/openstack.rb +0 -79
- data/lib/bosh/providers.rb +0 -21
- data/lib/bosh-bootstrap/cli.rb +0 -1347
- data/lib/bosh-bootstrap/commander/README.md +0 -47
- data/lib/bosh-bootstrap/commander/command.rb +0 -25
- data/lib/bosh-bootstrap/commander/commands.rb +0 -80
- data/lib/bosh-bootstrap/commander/local_server.rb +0 -68
- data/lib/bosh-bootstrap/commander/remote_script_command.rb +0 -51
- data/lib/bosh-bootstrap/commander/remote_server.rb +0 -137
- data/lib/bosh-bootstrap/commander/upload_command.rb +0 -17
- data/lib/bosh-bootstrap/commander.rb +0 -9
- data/lib/bosh-bootstrap/helpers/fog_setup.rb +0 -50
- data/lib/bosh-bootstrap/helpers/settings.rb +0 -99
- data/lib/bosh-bootstrap/helpers/settings_setter.rb +0 -41
- data/lib/bosh-bootstrap/helpers.rb +0 -3
- data/lib/bosh-bootstrap/stages/stage_micro_bosh_delete/bosh_micro_delete +0 -19
- data/lib/bosh-bootstrap/stages/stage_micro_bosh_delete.rb +0 -90
- data/lib/bosh-bootstrap/stages/stage_micro_bosh_deploy/bosh_micro_deploy +0 -79
- data/lib/bosh-bootstrap/stages/stage_micro_bosh_deploy/install_key_pair_for_user +0 -23
- data/lib/bosh-bootstrap/stages/stage_micro_bosh_deploy.rb +0 -146
- data/lib/bosh-bootstrap/stages/stage_micro_bosh_download/download_micro_bosh_stemcell +0 -93
- data/lib/bosh-bootstrap/stages/stage_micro_bosh_download.rb +0 -139
- data/lib/bosh-bootstrap/stages/stage_prepare_inception_vm/configure_git +0 -25
- data/lib/bosh-bootstrap/stages/stage_prepare_inception_vm/create_vcap_user +0 -79
- data/lib/bosh-bootstrap/stages/stage_prepare_inception_vm/install_base_packages +0 -30
- data/lib/bosh-bootstrap/stages/stage_prepare_inception_vm/install_bosh +0 -11
- data/lib/bosh-bootstrap/stages/stage_prepare_inception_vm/install_bosh_plugins +0 -25
- data/lib/bosh-bootstrap/stages/stage_prepare_inception_vm/install_hub +0 -26
- data/lib/bosh-bootstrap/stages/stage_prepare_inception_vm/install_ruby +0 -30
- data/lib/bosh-bootstrap/stages/stage_prepare_inception_vm/install_useful_gems +0 -29
- data/lib/bosh-bootstrap/stages/stage_prepare_inception_vm/validate_bosh_deployer +0 -18
- data/lib/bosh-bootstrap/stages/stage_prepare_inception_vm.rb +0 -69
- data/lib/bosh-bootstrap/stages/stage_salted_password/convert_salted_password +0 -11
- data/lib/bosh-bootstrap/stages/stage_salted_password.rb +0 -51
- data/lib/bosh-bootstrap/stages/stage_setup_new_bosh/setup_bosh_user +0 -29
- data/lib/bosh-bootstrap/stages/stage_setup_new_bosh.rb +0 -51
- data/lib/bosh-bootstrap/stages/stage_validate_inception_vm/validate_ubuntu +0 -6
- data/lib/bosh-bootstrap/stages/stage_validate_inception_vm.rb +0 -39
- data/lib/bosh-bootstrap/stages.rb +0 -10
- data/spec/assets/bosh/public_stemcells/aws_micro.out +0 -7
- data/spec/assets/micro_bosh_yml/micro_bosh.aws_ec2.yml +0 -35
- data/spec/assets/micro_bosh_yml/micro_bosh.aws_vpc.yml +0 -37
- data/spec/integration/aws/aws_basic_spec.rb +0 -39
- data/spec/integration/aws/aws_edge_prebuilt_ami_spec.rb +0 -46
- data/spec/integration/aws/aws_edge_prebuilt_spec.rb +0 -46
- data/spec/integration/aws/aws_edge_spec.rb +0 -45
- data/spec/unit/aws_spec.rb +0 -177
- data/spec/unit/bosh/providers/aws_spec.rb +0 -174
- data/spec/unit/cli_spec.rb +0 -134
- data/spec/unit/cli_ssh_spec.rb +0 -95
- data/spec/unit/cli_upgrade_inception_spec.rb +0 -29
- data/spec/unit/settings_setter_spec.rb +0 -29
- data/vendor/cache/POpen4-0.1.4.gem +0 -0
- data/vendor/cache/Platform-0.4.0.gem +0 -0
- data/vendor/cache/activesupport-3.2.8.gem +0 -0
- data/vendor/cache/awesome_print-1.1.0.gem +0 -0
- data/vendor/cache/aws-s3-0.6.3.gem +0 -0
- data/vendor/cache/blobstore_client-0.4.0.gem +0 -0
- data/vendor/cache/bosh_cli-1.0.3.gem +0 -0
- data/vendor/cache/bosh_common-0.5.4.gem +0 -0
- data/vendor/cache/builder-3.2.0.gem +0 -0
- data/vendor/cache/coderay-1.0.8.gem +0 -0
- data/vendor/cache/diff-lcs-1.1.3.gem +0 -0
- data/vendor/cache/escape-0.0.4.gem +0 -0
- data/vendor/cache/excon-0.20.1.gem +0 -0
- data/vendor/cache/fog-1.8.0.gem +0 -0
- data/vendor/cache/formatador-0.2.4.gem +0 -0
- data/vendor/cache/guard-1.6.2.gem +0 -0
- data/vendor/cache/guard-rspec-2.4.0.gem +0 -0
- data/vendor/cache/highline-1.6.18.gem +0 -0
- data/vendor/cache/httpclient-2.2.4.gem +0 -0
- data/vendor/cache/i18n-0.6.1.gem +0 -0
- data/vendor/cache/json_pure-1.6.8.gem +0 -0
- data/vendor/cache/listen-0.7.2.gem +0 -0
- data/vendor/cache/log4r-1.1.10.gem +0 -0
- data/vendor/cache/lumberjack-1.0.2.gem +0 -0
- data/vendor/cache/method_source-0.8.1.gem +0 -0
- data/vendor/cache/mime-types-1.22.gem +0 -0
- data/vendor/cache/multi_json-1.1.0.gem +0 -0
- data/vendor/cache/net-scp-1.0.4.gem +0 -0
- data/vendor/cache/net-ssh-2.2.2.gem +0 -0
- data/vendor/cache/net-ssh-gateway-1.1.0.gem +0 -0
- data/vendor/cache/netaddr-1.5.0.gem +0 -0
- data/vendor/cache/nokogiri-1.5.9.gem +0 -0
- data/vendor/cache/open4-1.3.0.gem +0 -0
- data/vendor/cache/progressbar-0.9.2.gem +0 -0
- data/vendor/cache/pry-0.9.11.4-java.gem +0 -0
- data/vendor/cache/pry-0.9.11.4.gem +0 -0
- data/vendor/cache/rake-10.0.3.gem +0 -0
- data/vendor/cache/rb-fsevent-0.9.3.gem +0 -0
- data/vendor/cache/redcard-1.0.0.gem +0 -0
- data/vendor/cache/rspec-2.12.0.gem +0 -0
- data/vendor/cache/rspec-core-2.12.2.gem +0 -0
- data/vendor/cache/rspec-expectations-2.12.1.gem +0 -0
- data/vendor/cache/rspec-mocks-2.12.2.gem +0 -0
- data/vendor/cache/ruby-atmos-pure-1.0.5.gem +0 -0
- data/vendor/cache/ruby-hmac-0.4.0.gem +0 -0
- data/vendor/cache/settingslogic-2.0.9.gem +0 -0
- data/vendor/cache/slop-3.4.3.gem +0 -0
- data/vendor/cache/spoon-0.0.1.gem +0 -0
- data/vendor/cache/terminal-table-1.4.5.gem +0 -0
- data/vendor/cache/thor-0.17.0.gem +0 -0
- data/vendor/cache/uuidtools-2.1.3.gem +0 -0
- data/vendor/cache/xml-simple-1.1.2.gem +0 -0
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
require File.expand_path("../../../spec_helper", __FILE__)
|
|
2
|
-
require File.expand_path("../aws_helpers", __FILE__)
|
|
3
|
-
|
|
4
|
-
require "active_support/core_ext/hash/keys"
|
|
5
|
-
|
|
6
|
-
describe "AWS deployment using Bosh edge from source" do
|
|
7
|
-
include FileUtils
|
|
8
|
-
include Bosh::Bootstrap::Helpers::SettingsSetter
|
|
9
|
-
include AwsHelpers
|
|
10
|
-
|
|
11
|
-
attr_reader :bosh_name
|
|
12
|
-
|
|
13
|
-
before { prepare_aws("bosh-edge", aws_region) }
|
|
14
|
-
# after { destroy_test_constructs(bosh_name) unless keep_after_test? }
|
|
15
|
-
|
|
16
|
-
def aws_region
|
|
17
|
-
ENV['AWS_REGION'] || "us-west-2"
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
it "creates an EC2 inception/microbosh with the associated resources" do
|
|
21
|
-
create_manifest("edge" => true)
|
|
22
|
-
|
|
23
|
-
manifest_file = home_file(".bosh_bootstrap", "manifest.yml")
|
|
24
|
-
File.should be_exists(manifest_file)
|
|
25
|
-
|
|
26
|
-
cmd.deploy
|
|
27
|
-
|
|
28
|
-
ip_adresses = fog.addresses
|
|
29
|
-
public_ips = ip_adresses.map(&:public_ip)
|
|
30
|
-
|
|
31
|
-
inception_vms = provider.servers_with_sg("#{bosh_name}-inception-vm")
|
|
32
|
-
inception_vms.size.should == 1
|
|
33
|
-
|
|
34
|
-
# TODO inception VM is not getting its IP address bound correctly
|
|
35
|
-
# https://github.com/StarkAndWayne/bosh-bootstrap/issues/174
|
|
36
|
-
# public_ips.include?(inception_vms.first.public_ip_address).should be_true
|
|
37
|
-
|
|
38
|
-
micrboshes = provider.servers_with_sg(bosh_name)
|
|
39
|
-
micrboshes.size.should == 1
|
|
40
|
-
public_ips.include?(micrboshes.first.public_ip_address).should be_true
|
|
41
|
-
|
|
42
|
-
# TODO - microbosh stemcell in /var/vcap/store/stemcells
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
end
|
data/spec/unit/aws_spec.rb
DELETED
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
require File.expand_path("../../spec_helper", __FILE__)
|
|
2
|
-
|
|
3
|
-
require "active_support/core_ext/hash/keys"
|
|
4
|
-
|
|
5
|
-
describe "AWS deployment" do
|
|
6
|
-
include FileUtils
|
|
7
|
-
include Bosh::Bootstrap::Helpers::SettingsSetter
|
|
8
|
-
|
|
9
|
-
before do
|
|
10
|
-
Fog.mock!
|
|
11
|
-
Fog::Mock.reset
|
|
12
|
-
@cmd = Bosh::Bootstrap::Cli.new
|
|
13
|
-
@fog_credentials = {
|
|
14
|
-
:provider => 'AWS',
|
|
15
|
-
:aws_secret_access_key => 'XXX',
|
|
16
|
-
:aws_access_key_id => 'YYY'
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
@region = "us-west-2"
|
|
20
|
-
setting "bosh_provider", "aws"
|
|
21
|
-
setting "region_code", @region
|
|
22
|
-
setting "bosh_name", "test-bosh"
|
|
23
|
-
setting "inception.create_new", true
|
|
24
|
-
setting "bosh_username", "testuser"
|
|
25
|
-
setting "bosh_password", "testpass"
|
|
26
|
-
setting "fog_credentials", @fog_credentials.stringify_keys
|
|
27
|
-
setting "bosh.salted_password", "pepper"
|
|
28
|
-
setting "bosh.persistent_disk", 16384
|
|
29
|
-
setting "git.name", "Dr Nic Williams"
|
|
30
|
-
setting "git.email", "drnicwilliams@gmail.com"
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
# used by +SettingsSetter+ to access the settings
|
|
34
|
-
def settings
|
|
35
|
-
@cmd.settings
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def fog
|
|
39
|
-
@fog ||= connection = Fog::Compute.new(@fog_credentials.merge(:region => @region))
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def expected_manifest_content(filename, public_ip, subnet_id = nil)
|
|
43
|
-
file = File.read(filename)
|
|
44
|
-
file.gsub!('$MICROBOSH_IP$', public_ip)
|
|
45
|
-
file.gsub!('$SUBNET_ID$', subnet_id) if subnet_id
|
|
46
|
-
YAML.load(file)
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
xit "creates a VPC inception/microbosh with the associated resources" do
|
|
50
|
-
# create a VPC
|
|
51
|
-
# create a BOSH subnet 10.10.0.0/24
|
|
52
|
-
# create BOSH security group
|
|
53
|
-
# create INCEPTION security group allowing only 22
|
|
54
|
-
# create NATS security group, allowing only 4222
|
|
55
|
-
# create DHCP options with 2 nameserver (1 amazon for public resolves, 1 for private resolves (.bosh)?)
|
|
56
|
-
# create Internet Gateway, attach to VPC
|
|
57
|
-
# create default route (0.0.0.0/0) to IG
|
|
58
|
-
|
|
59
|
-
# create inception VM (attaching elastic IP, sg of [BOSH, INCEPTION]) in BOSH subnet at 10.10.0.5
|
|
60
|
-
# create MB VM from inception VM (sg of [BOSH, NATS]) in BOSH subnet at 10.10.0.6
|
|
61
|
-
|
|
62
|
-
setting "use_vpc", true # TODO include in cli.rb
|
|
63
|
-
|
|
64
|
-
@cmd.should_receive(:provision_and_mount_volume)
|
|
65
|
-
@cmd.stub(:run_server).and_return(true)
|
|
66
|
-
@cmd.stub(:sleep)
|
|
67
|
-
@cmd.should_receive(:deploy_stage_8_setup_new_bosh)
|
|
68
|
-
@cmd.deploy
|
|
69
|
-
|
|
70
|
-
fog.addresses.should have(1).item # assigned to inception VM
|
|
71
|
-
inception_ip_address = fog.addresses.first
|
|
72
|
-
|
|
73
|
-
fog.vpcs.should have(1).item
|
|
74
|
-
vpc = fog.vpcs.first
|
|
75
|
-
vpc.cidr_block.should == "10.0.0.0/16"
|
|
76
|
-
|
|
77
|
-
fog.servers.should have(1).item
|
|
78
|
-
inception = fog.servers.first
|
|
79
|
-
inception_ip_address.domain.should == "vpc"
|
|
80
|
-
|
|
81
|
-
# TODO - fix fog so we can test public_ip_address
|
|
82
|
-
# inception.public_ip_address.should == inception_ip_address.public_ip
|
|
83
|
-
|
|
84
|
-
# TODO - fix fog so we can test private_ip_address
|
|
85
|
-
# inception.private_ip_address.should == "10.0.0.5"
|
|
86
|
-
|
|
87
|
-
fog.security_groups.should have(3).item
|
|
88
|
-
|
|
89
|
-
fog.internet_gateways.should have(1).item
|
|
90
|
-
ig = fog.internet_gateways.first
|
|
91
|
-
|
|
92
|
-
fog.subnets.should have(1).item
|
|
93
|
-
subnet = fog.subnets.first
|
|
94
|
-
subnet.vpc_id.should == vpc.id
|
|
95
|
-
subnet.cidr_block.should == "10.0.0.0/24"
|
|
96
|
-
|
|
97
|
-
# fog.route_tables.should have(1).item
|
|
98
|
-
# a IG that is assigned to the VPN
|
|
99
|
-
# a subnet (contains the inception VM; is included in micro_bosh_yml)
|
|
100
|
-
|
|
101
|
-
# TODO - fix fog so we can test private_ip_address
|
|
102
|
-
# settings["inception"]["ip_address"].should == "10.0.0.5"
|
|
103
|
-
|
|
104
|
-
inception_server = fog.servers.first
|
|
105
|
-
inception_server.dns_name.should == settings["inception"]["host"]
|
|
106
|
-
inception_server.groups.should == [settings["inception"]["security_group"]]
|
|
107
|
-
|
|
108
|
-
public_ip = settings["bosh"]["ip_address"]
|
|
109
|
-
public_ip.should == "10.0.0.6"
|
|
110
|
-
|
|
111
|
-
manifest_path = spec_asset("micro_bosh_yml/micro_bosh.aws_ec2.yml")
|
|
112
|
-
YAML.load(@cmd.micro_bosh_yml).should == expected_manifest_content(manifest_path, public_ip, subnet.subnet_id)
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
it "creates an EC2 inception/microbosh with the associated resources" do
|
|
116
|
-
setting "use_vpc", false
|
|
117
|
-
|
|
118
|
-
@cmd.should_receive(:provision_and_mount_volume)
|
|
119
|
-
@cmd.stub(:run_server).and_return(true)
|
|
120
|
-
@cmd.stub(:sleep)
|
|
121
|
-
@cmd.should_receive(:deploy_stage_8_setup_new_bosh)
|
|
122
|
-
@cmd.deploy
|
|
123
|
-
@settings = nil # reload settings file
|
|
124
|
-
|
|
125
|
-
# TODO we are temporarily using prebuilt stemcells by default for AWS
|
|
126
|
-
settings["micro_bosh_stemcell_type"].should == "edge-prebuilt"
|
|
127
|
-
|
|
128
|
-
fog.addresses.should have(2).item
|
|
129
|
-
inception_ip_address = fog.addresses.first
|
|
130
|
-
inception_ip_address.domain.should == "standard"
|
|
131
|
-
|
|
132
|
-
inception_kp = fog.key_pairs.find { |kp| kp.name == "inception" }
|
|
133
|
-
inception_kp.should_not be_nil
|
|
134
|
-
|
|
135
|
-
inception_kp = fog.key_pairs.find { |kp| kp.name == "fog_default" }
|
|
136
|
-
inception_kp.should be_nil
|
|
137
|
-
|
|
138
|
-
fog.key_pairs.should have(2).item
|
|
139
|
-
|
|
140
|
-
settings["inception"].should_not be_nil
|
|
141
|
-
settings["inception"]["key_pair"].should_not be_nil
|
|
142
|
-
settings["inception"]["key_pair"]["name"].should_not be_nil
|
|
143
|
-
settings["inception"]["key_pair"]["private_key"].should_not be_nil
|
|
144
|
-
settings["inception"]["local_private_key_path"].should == File.join(ENV['HOME'], ".bosh_bootstrap", "ssh", "inception")
|
|
145
|
-
File.should_not be_world_readable(settings["inception"]["local_private_key_path"])
|
|
146
|
-
|
|
147
|
-
fog.vpcs.should have(0).item
|
|
148
|
-
fog.servers.should have(1).item
|
|
149
|
-
fog.security_groups.should have(3).item
|
|
150
|
-
|
|
151
|
-
inception_server = fog.servers.first
|
|
152
|
-
inception_server.dns_name.should == settings["inception"]["host"]
|
|
153
|
-
inception_server.groups.should == [settings["inception"]["security_group"]]
|
|
154
|
-
|
|
155
|
-
public_ip = settings["bosh"]["ip_address"]
|
|
156
|
-
manifest_path = spec_asset("micro_bosh_yml/micro_bosh.aws_ec2.yml")
|
|
157
|
-
YAML.load(@cmd.micro_bosh_yml).should == expected_manifest_content(manifest_path, public_ip)
|
|
158
|
-
end
|
|
159
|
-
|
|
160
|
-
it "uses pre-built gems and AMIs for us-east-1 created from jenkins" do
|
|
161
|
-
@cmd.should_receive(:provision_and_mount_volume)
|
|
162
|
-
@cmd.stub(:run_server).and_return(true)
|
|
163
|
-
@cmd.stub(:sleep)
|
|
164
|
-
@cmd.should_receive(:deploy_stage_8_setup_new_bosh)
|
|
165
|
-
@cmd.should_receive(:latest_prebuilt_microbosh_ami).and_return("ami-123456")
|
|
166
|
-
|
|
167
|
-
setting "edge-prebuilt", true
|
|
168
|
-
@cmd.deploy
|
|
169
|
-
|
|
170
|
-
settings["micro_bosh_stemcell_type"].should == "ami"
|
|
171
|
-
settings["micro_bosh_stemcell_name"].should == "ami-123456"
|
|
172
|
-
|
|
173
|
-
public_ip = settings["bosh"]["ip_address"]
|
|
174
|
-
manifest_path = spec_asset("micro_bosh_yml/micro_bosh.aws_ec2.yml")
|
|
175
|
-
YAML.load(@cmd.micro_bosh_yml).should == expected_manifest_content(manifest_path, public_ip)
|
|
176
|
-
end
|
|
177
|
-
end
|
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
# Copyright (c) 2012-2013 Stark & Wayne, LLC
|
|
2
|
-
|
|
3
|
-
require File.expand_path("../../../../spec_helper", __FILE__)
|
|
4
|
-
|
|
5
|
-
# Specs for the aws provider
|
|
6
|
-
describe Bosh::Providers do
|
|
7
|
-
include FileUtils
|
|
8
|
-
|
|
9
|
-
describe "AWS" do
|
|
10
|
-
before do
|
|
11
|
-
Fog.mock!
|
|
12
|
-
@fog_compute = Fog::Compute.new(
|
|
13
|
-
:provider => 'AWS',
|
|
14
|
-
:aws_access_key_id => 'MOCK_AWS_ACCESS_KEY_ID',
|
|
15
|
-
:aws_secret_access_key => 'MOCK_AWS_SECRET_ACCESS_KEY')
|
|
16
|
-
@aws_provider = Bosh::Providers.for_bosh_provider_name("aws", @fog_compute)
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
describe "create security group" do
|
|
20
|
-
it "should open a single TCP port on a security group" do
|
|
21
|
-
ports = { ssh: 22 }
|
|
22
|
-
@aws_provider.create_security_group("sg1-name", "sg1-desc", ports)
|
|
23
|
-
created_sg = @fog_compute.security_groups.get("sg1-name")
|
|
24
|
-
created_sg.name.should == "sg1-name"
|
|
25
|
-
created_sg.description.should == "sg1-desc"
|
|
26
|
-
created_sg.ip_permissions.should == [
|
|
27
|
-
{
|
|
28
|
-
"ipProtocol"=>"tcp",
|
|
29
|
-
"fromPort"=>22,
|
|
30
|
-
"toPort"=>22,
|
|
31
|
-
"groups"=>[],
|
|
32
|
-
"ipRanges"=>[ { "cidrIp"=>"0.0.0.0/0" } ]
|
|
33
|
-
}
|
|
34
|
-
]
|
|
35
|
-
end
|
|
36
|
-
it "should open a range of TCP ports" do
|
|
37
|
-
ports = { ssh: (22..30) }
|
|
38
|
-
@aws_provider.create_security_group("sg-range-name", "sg-range-desc", ports)
|
|
39
|
-
created_sg = @fog_compute.security_groups.get("sg-range-name")
|
|
40
|
-
created_sg.ip_permissions.should == [
|
|
41
|
-
{
|
|
42
|
-
"ipProtocol"=>"tcp",
|
|
43
|
-
"fromPort"=>22,
|
|
44
|
-
"toPort"=>30,
|
|
45
|
-
"groups"=>[],
|
|
46
|
-
"ipRanges"=>[ { "cidrIp"=>"0.0.0.0/0" } ]
|
|
47
|
-
}
|
|
48
|
-
]
|
|
49
|
-
end
|
|
50
|
-
it "should open a range of UDP ports" do
|
|
51
|
-
ports = { ssh: { protocol: "udp", ports: (60000..600050) } }
|
|
52
|
-
@aws_provider.create_security_group("sg-range-udp-name", "sg-range-udp-name", ports)
|
|
53
|
-
created_sg = @fog_compute.security_groups.get("sg-range-udp-name")
|
|
54
|
-
created_sg.ip_permissions.should == [
|
|
55
|
-
{
|
|
56
|
-
"ipProtocol"=>"udp",
|
|
57
|
-
"fromPort"=>60000,
|
|
58
|
-
"toPort"=>600050,
|
|
59
|
-
"groups"=>[],
|
|
60
|
-
"ipRanges"=>[ { "cidrIp"=>"0.0.0.0/0" } ]
|
|
61
|
-
}
|
|
62
|
-
]
|
|
63
|
-
end
|
|
64
|
-
it "should open a range of ICMP ports" do
|
|
65
|
-
ports = { ping: { protocol: "icmp", ports: (3..4) } }
|
|
66
|
-
@aws_provider.create_security_group("sg-range-icmp-name", "sg-range-icmp-name", ports)
|
|
67
|
-
created_sg = @fog_compute.security_groups.get("sg-range-icmp-name")
|
|
68
|
-
created_sg.ip_permissions.should == [
|
|
69
|
-
{
|
|
70
|
-
"ipProtocol"=>"icmp",
|
|
71
|
-
"fromPort"=>3,
|
|
72
|
-
"toPort"=>4,
|
|
73
|
-
"groups"=>[],
|
|
74
|
-
"ipRanges"=>[ { "cidrIp"=>"0.0.0.0/0" } ]
|
|
75
|
-
}
|
|
76
|
-
]
|
|
77
|
-
end
|
|
78
|
-
it "should open not open ports if they are already open" do
|
|
79
|
-
@aws_provider.create_security_group("sg2", "", { ssh: { protocol: "udp", ports: (60000..600050) } })
|
|
80
|
-
@aws_provider.create_security_group("sg2", "", { ssh: { protocol: "udp", ports: (60010..600040) } })
|
|
81
|
-
@aws_provider.create_security_group("sg2", "", { ssh: { protocol: "udp", ports: (60000..600050) } })
|
|
82
|
-
created_sg = @fog_compute.security_groups.get("sg2")
|
|
83
|
-
created_sg.ip_permissions.should == [
|
|
84
|
-
{
|
|
85
|
-
"ipProtocol"=>"udp",
|
|
86
|
-
"fromPort"=>60000,
|
|
87
|
-
"toPort"=>600050,
|
|
88
|
-
"groups"=>[],
|
|
89
|
-
"ipRanges"=>[ { "cidrIp"=>"0.0.0.0/0" } ]
|
|
90
|
-
}
|
|
91
|
-
]
|
|
92
|
-
end
|
|
93
|
-
it "should open ports even if they are already open for a different protocol" do
|
|
94
|
-
@aws_provider.create_security_group("sg3", "", { ssh: { protocol: "udp", ports: (60000..600050) } })
|
|
95
|
-
@aws_provider.create_security_group("sg3", "", { ssh: { protocol: "tcp", ports: (60000..600050) } })
|
|
96
|
-
created_sg = @fog_compute.security_groups.get("sg3")
|
|
97
|
-
created_sg.ip_permissions.should == [
|
|
98
|
-
{
|
|
99
|
-
"ipProtocol"=>"udp",
|
|
100
|
-
"fromPort"=>60000,
|
|
101
|
-
"toPort"=>600050,
|
|
102
|
-
"groups"=>[],
|
|
103
|
-
"ipRanges"=>[ { "cidrIp"=>"0.0.0.0/0" } ]
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
"ipProtocol"=>"tcp",
|
|
107
|
-
"fromPort"=>60000,
|
|
108
|
-
"toPort"=>600050,
|
|
109
|
-
"groups"=>[],
|
|
110
|
-
"ipRanges"=>[ { "cidrIp"=>"0.0.0.0/0" } ]
|
|
111
|
-
}
|
|
112
|
-
]
|
|
113
|
-
end
|
|
114
|
-
it "should open ports even if they are already open for a different ip_range" do
|
|
115
|
-
default_ports = {
|
|
116
|
-
all_internal_tcp: { protocol: "tcp", ip_range: "1.1.1.1/32", ports: (0..65535) }
|
|
117
|
-
}
|
|
118
|
-
@aws_provider.create_security_group("sg6", "sg6", default_ports)
|
|
119
|
-
@aws_provider.create_security_group("sg6", "sg6", { mosh: { protocol: "tcp", ports: (15..30) } })
|
|
120
|
-
created_sg = @fog_compute.security_groups.get("sg6")
|
|
121
|
-
created_sg.ip_permissions.should == [
|
|
122
|
-
{
|
|
123
|
-
"ipProtocol"=>"tcp",
|
|
124
|
-
"fromPort"=>0,
|
|
125
|
-
"toPort"=>65535,
|
|
126
|
-
"groups"=>[],
|
|
127
|
-
"ipRanges"=>[ { "cidrIp"=>"1.1.1.1/32" } ]
|
|
128
|
-
},
|
|
129
|
-
{
|
|
130
|
-
"ipProtocol"=>"tcp",
|
|
131
|
-
"fromPort"=>15,
|
|
132
|
-
"toPort"=>30,
|
|
133
|
-
"groups"=>[],
|
|
134
|
-
"ipRanges"=>[ { "cidrIp"=>"0.0.0.0/0" } ]
|
|
135
|
-
}
|
|
136
|
-
]
|
|
137
|
-
end
|
|
138
|
-
it "should open ports on the default sg" do
|
|
139
|
-
@aws_provider.create_security_group("default", "default", { mosh: { protocol: "tcp", ports: (15..30) } })
|
|
140
|
-
created_sg = @fog_compute.security_groups.get("default")
|
|
141
|
-
expected_rule = {
|
|
142
|
-
"ipProtocol"=>"tcp",
|
|
143
|
-
"fromPort"=>15,
|
|
144
|
-
"toPort"=>30,
|
|
145
|
-
"groups"=>[],
|
|
146
|
-
"ipRanges"=>[ { "cidrIp"=>"0.0.0.0/0" } ]
|
|
147
|
-
}
|
|
148
|
-
created_sg.ip_permissions.should include expected_rule
|
|
149
|
-
end
|
|
150
|
-
#AWS allows overlapping port ranges, and it makes it easier to see the separate "rules" that were added
|
|
151
|
-
it "should create overlapping port ranges" do
|
|
152
|
-
@aws_provider.create_security_group("sg4", "", { ssh: { protocol: "udp", ports: (10..20) } })
|
|
153
|
-
@aws_provider.create_security_group("sg4", "", { ssh: { protocol: "udp", ports: (15..30) } })
|
|
154
|
-
created_sg = @fog_compute.security_groups.get("sg4")
|
|
155
|
-
created_sg.ip_permissions.should == [
|
|
156
|
-
{
|
|
157
|
-
"ipProtocol"=>"udp",
|
|
158
|
-
"fromPort"=>10,
|
|
159
|
-
"toPort"=>20,
|
|
160
|
-
"groups"=>[],
|
|
161
|
-
"ipRanges"=>[ { "cidrIp"=>"0.0.0.0/0" } ]
|
|
162
|
-
},
|
|
163
|
-
{
|
|
164
|
-
"ipProtocol"=>"udp",
|
|
165
|
-
"fromPort"=>15,
|
|
166
|
-
"toPort"=>30,
|
|
167
|
-
"groups"=>[],
|
|
168
|
-
"ipRanges"=>[ { "cidrIp"=>"0.0.0.0/0" } ]
|
|
169
|
-
}
|
|
170
|
-
]
|
|
171
|
-
end
|
|
172
|
-
end
|
|
173
|
-
end
|
|
174
|
-
end
|
data/spec/unit/cli_spec.rb
DELETED
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
# Copyright (c) 2012-2013 Stark & Wayne, LLC
|
|
2
|
-
|
|
3
|
-
require File.expand_path("../../spec_helper", __FILE__)
|
|
4
|
-
|
|
5
|
-
describe Bosh::Bootstrap do
|
|
6
|
-
include FileUtils
|
|
7
|
-
include Bosh::Bootstrap::Helpers::SettingsSetter
|
|
8
|
-
|
|
9
|
-
before do
|
|
10
|
-
@cmd = Bosh::Bootstrap::Cli.new
|
|
11
|
-
setting "git.name", "Dr Nic Williams"
|
|
12
|
-
setting "git.email", "drnicwilliams@gmail.com"
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
# stub out all stages except a specific one
|
|
16
|
-
# +stage+ can either be the stage number or name
|
|
17
|
-
def testing_stage(stage)
|
|
18
|
-
stage_methods = %w[
|
|
19
|
-
deploy_stage_1_choose_infrastructure_provider
|
|
20
|
-
deploy_stage_2_bosh_configuration
|
|
21
|
-
deploy_stage_3_create_allocate_inception_vm
|
|
22
|
-
deploy_stage_4_prepare_inception_vm
|
|
23
|
-
deploy_stage_5_salted_password
|
|
24
|
-
deploy_stage_6_download_micro_bosh
|
|
25
|
-
deploy_stage_7_deploy_micro_bosh
|
|
26
|
-
deploy_stage_8_setup_new_bosh
|
|
27
|
-
]
|
|
28
|
-
stage_methods.each do |method|
|
|
29
|
-
unless method =~ /#{stage}/
|
|
30
|
-
@cmd.should_receive(method.to_sym)
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
# used by +SettingsSetter+ to access the settings
|
|
36
|
-
def settings
|
|
37
|
-
@cmd.settings
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
describe "deploy" do
|
|
41
|
-
it "goes through stages" do
|
|
42
|
-
@cmd.should_receive(:deploy_stage_1_choose_infrastructure_provider)
|
|
43
|
-
@cmd.should_receive(:deploy_stage_2_bosh_configuration)
|
|
44
|
-
@cmd.should_receive(:deploy_stage_3_create_allocate_inception_vm)
|
|
45
|
-
@cmd.should_receive(:deploy_stage_4_prepare_inception_vm)
|
|
46
|
-
@cmd.should_receive(:deploy_stage_5_salted_password)
|
|
47
|
-
@cmd.should_receive(:deploy_stage_6_download_micro_bosh)
|
|
48
|
-
@cmd.should_receive(:deploy_stage_7_deploy_micro_bosh)
|
|
49
|
-
@cmd.should_receive(:deploy_stage_8_setup_new_bosh)
|
|
50
|
-
@cmd.deploy
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
it "stage 3 - create inception VM" do
|
|
54
|
-
testing_stage(3)
|
|
55
|
-
setting "inception.username", "ubuntu"
|
|
56
|
-
setting "inception.key_pair.private_key", "INCEPTION_PRIVATE_KEY"
|
|
57
|
-
setting "inception.key_pair.public_key", "INCEPTION_PUBLIC_KEY"
|
|
58
|
-
setting "inception.key_pair.name", "inception"
|
|
59
|
-
setting "fog_credentials.provider", "AWS"
|
|
60
|
-
@cmd.should_receive(:run_server).and_return(true)
|
|
61
|
-
@cmd.deploy
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
it "stage 4 - prepare inception VM" do
|
|
65
|
-
testing_stage(4)
|
|
66
|
-
@cmd.should_receive(:recreate_local_ssh_keys_for_inception_vm)
|
|
67
|
-
setting "inception.username", "ubuntu"
|
|
68
|
-
setting "bosh.password", "UNSALTED"
|
|
69
|
-
@cmd.should_receive(:run_server).and_return(true)
|
|
70
|
-
@cmd.deploy
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
it "stage 7 - deploy microbosh" do
|
|
74
|
-
testing_stage(7)
|
|
75
|
-
@cmd.should_receive(:recreate_local_ssh_keys_for_inception_vm)
|
|
76
|
-
setting "bosh_provider", "aws"
|
|
77
|
-
setting "micro_bosh_stemcell_name", "micro-bosh-stemcell-aws-0.8.1.tgz"
|
|
78
|
-
setting "bosh_username", "drnic"
|
|
79
|
-
setting "bosh_password", "password"
|
|
80
|
-
setting "bosh.salted_password", "SALTED"
|
|
81
|
-
setting "bosh.ip_address", "1.2.3.4"
|
|
82
|
-
setting "bosh.persistent_disk", 16384
|
|
83
|
-
setting "bosh_resources_cloud_properties", {}
|
|
84
|
-
setting "bosh_cloud_properties", {}
|
|
85
|
-
setting "bosh_key_pair.private_key", "PRIVATE_KEY"
|
|
86
|
-
setting "bosh_key_pair.name", "KEYNAME"
|
|
87
|
-
@cmd.should_receive(:run_server).and_return(true)
|
|
88
|
-
@cmd.deploy
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
it "stage 8 - sets up new microbosh" do
|
|
92
|
-
testing_stage(8)
|
|
93
|
-
setting "bosh_name", "microbosh-aws-us-east-1"
|
|
94
|
-
setting "bosh_username", "drnic"
|
|
95
|
-
setting "bosh_password", "password"
|
|
96
|
-
setting "bosh.ip_address", "1.2.3.4"
|
|
97
|
-
@cmd.should_receive(:sleep)
|
|
98
|
-
@cmd.should_receive(:run_server).and_return(true)
|
|
99
|
-
@cmd.should_receive(:sh).with("bosh -u drnic -p password target 1.2.3.4")
|
|
100
|
-
@cmd.should_receive(:sh).with("bosh login drnic password")
|
|
101
|
-
@cmd.deploy
|
|
102
|
-
end
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
describe "micro_bosh_stemcell_name" do
|
|
106
|
-
# The +bosh_stemcells_cmd+ has an output that looks like:
|
|
107
|
-
# +-----------------------------------+--------------------+
|
|
108
|
-
# | Name | Tags |
|
|
109
|
-
# +-----------------------------------+--------------------+
|
|
110
|
-
# | micro-bosh-stemcell-aws-0.6.4.tgz | aws, micro, stable |
|
|
111
|
-
# | micro-bosh-stemcell-aws-0.7.0.tgz | aws, micro, test |
|
|
112
|
-
# | micro-bosh-stemcell-aws-0.8.1.tgz | aws, micro, test |
|
|
113
|
-
# +-----------------------------------+--------------------+
|
|
114
|
-
#
|
|
115
|
-
# So to get the latest version for the filter tags,
|
|
116
|
-
# get the Name field, reverse sort, and return the first item
|
|
117
|
-
it "should return the latest stable stemcell by default for AWS" do
|
|
118
|
-
@cmd.settings["bosh_provider"] = "aws"
|
|
119
|
-
@cmd.settings["fog_credentials"] = {}
|
|
120
|
-
@cmd.settings["fog_credentials"]["provider"] = "aws"
|
|
121
|
-
@cmd.should_receive(:known_stable_micro_bosh_stemcell_version).and_return("0.8.1")
|
|
122
|
-
@cmd.micro_bosh_stemcell_name.should == "micro-bosh-stemcell-aws-0.8.1.tgz"
|
|
123
|
-
end
|
|
124
|
-
|
|
125
|
-
it "should return the latest stable stemcell by default for OpenStack" do
|
|
126
|
-
@cmd.settings["bosh_provider"] = "openstack"
|
|
127
|
-
@cmd.settings["fog_credentials"] = {}
|
|
128
|
-
@cmd.settings["fog_credentials"]["provider"] = "OpenStack"
|
|
129
|
-
@cmd.should_receive(:known_stable_micro_bosh_stemcell_version).and_return("0.8.1")
|
|
130
|
-
@cmd.micro_bosh_stemcell_name.should == "micro-bosh-stemcell-openstack-kvm-0.8.1.tgz"
|
|
131
|
-
end
|
|
132
|
-
end
|
|
133
|
-
|
|
134
|
-
end
|
data/spec/unit/cli_ssh_spec.rb
DELETED
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
# Copyright (c) 2012-2013 Stark & Wayne, LLC
|
|
2
|
-
|
|
3
|
-
require File.expand_path("../../spec_helper", __FILE__)
|
|
4
|
-
|
|
5
|
-
# Specs for 'ssh' related behavior. Includes CLI commands:
|
|
6
|
-
# * ssh
|
|
7
|
-
# * tmux
|
|
8
|
-
# * mosh
|
|
9
|
-
describe Bosh::Bootstrap do
|
|
10
|
-
include FileUtils
|
|
11
|
-
include Bosh::Bootstrap::Helpers::SettingsSetter
|
|
12
|
-
|
|
13
|
-
before do
|
|
14
|
-
@cmd = Bosh::Bootstrap::Cli.new
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
# used by +SettingsSetter+ to access the settings
|
|
18
|
-
def settings
|
|
19
|
-
@cmd.settings
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
describe "ssh" do
|
|
23
|
-
before do
|
|
24
|
-
setting "inception.host", "5.5.5.5"
|
|
25
|
-
setting "inception.key_pair.private_key", "PRIVATE"
|
|
26
|
-
setting "inception.key_pair.public_key", "PUBLIC"
|
|
27
|
-
@private_key_path = File.join(ENV['HOME'], ".bosh_bootstrap", "ssh", "inception")
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
describe "normal" do
|
|
31
|
-
it "launches ssh session" do
|
|
32
|
-
@cmd.should_receive(:exit)
|
|
33
|
-
@cmd.should_receive(:system).
|
|
34
|
-
with("ssh -i #{@private_key_path} vcap@5.5.5.5")
|
|
35
|
-
@cmd.ssh
|
|
36
|
-
end
|
|
37
|
-
it "runs ssh command" do
|
|
38
|
-
@cmd.should_receive(:exit)
|
|
39
|
-
@cmd.should_receive(:system).
|
|
40
|
-
with("ssh -i #{@private_key_path} vcap@5.5.5.5 'some command'")
|
|
41
|
-
@cmd.ssh("some command")
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
describe "tmux" do
|
|
46
|
-
it "launches ssh session" do
|
|
47
|
-
@cmd.should_receive(:exit)
|
|
48
|
-
@cmd.should_receive(:system).
|
|
49
|
-
with("ssh -i #{@private_key_path} vcap@5.5.5.5 -t 'tmux attach || tmux new-session'")
|
|
50
|
-
@cmd.tmux
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
describe "mosh" do
|
|
55
|
-
before do
|
|
56
|
-
@cmd.settings['bosh_provider'] = 'aws'
|
|
57
|
-
Fog.mock!
|
|
58
|
-
fog_compute = Fog::Compute.new(
|
|
59
|
-
:provider => 'AWS',
|
|
60
|
-
:aws_access_key_id => 'MOCK_AWS_ACCESS_KEY_ID',
|
|
61
|
-
:aws_secret_access_key => 'MOCK_AWS_SECRET_ACCESS_KEY')
|
|
62
|
-
@cmd.stub!(:provider).and_return(Bosh::Providers.for_bosh_provider_name('aws', fog_compute))
|
|
63
|
-
@cmd.stub!(:fog_compute).and_return(fog_compute)
|
|
64
|
-
@cmd.fog_compute.stub!(:servers).and_return(double(:get => double(:groups => ['default'])))
|
|
65
|
-
end
|
|
66
|
-
after do
|
|
67
|
-
Fog.unmock!
|
|
68
|
-
end
|
|
69
|
-
it "should check whether mosh is installed" do
|
|
70
|
-
@cmd.should_receive(:system).
|
|
71
|
-
with("mosh --version")
|
|
72
|
-
@cmd.stub!(:exit)
|
|
73
|
-
@cmd.ensure_mosh_installed
|
|
74
|
-
end
|
|
75
|
-
it "launches mosh session" do
|
|
76
|
-
@cmd.stub!(:ensure_mosh_installed).and_return(true)
|
|
77
|
-
@cmd.should_receive(:exit)
|
|
78
|
-
@cmd.should_receive(:system).
|
|
79
|
-
with("mosh vcap@5.5.5.5")
|
|
80
|
-
@cmd.mosh
|
|
81
|
-
end
|
|
82
|
-
it "should ensure that the mosh ports are opened" do
|
|
83
|
-
expected_ports = {
|
|
84
|
-
mosh: {
|
|
85
|
-
protocol: "udp",
|
|
86
|
-
ports: (60000..60050)
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
@cmd.provider.stub!(:create_security_group)
|
|
90
|
-
.with('default','not used', expected_ports)
|
|
91
|
-
@cmd.ensure_security_group_allows_mosh
|
|
92
|
-
end
|
|
93
|
-
end
|
|
94
|
-
end
|
|
95
|
-
end
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
# Copyright (c) 2012-2013 Stark & Wayne, LLC
|
|
2
|
-
|
|
3
|
-
require File.expand_path("../../spec_helper", __FILE__)
|
|
4
|
-
|
|
5
|
-
# Specs for 'upgrade' command
|
|
6
|
-
describe Bosh::Bootstrap do
|
|
7
|
-
include FileUtils
|
|
8
|
-
include Bosh::Bootstrap::Helpers::SettingsSetter
|
|
9
|
-
|
|
10
|
-
# used by +SettingsSetter+ to access the settings
|
|
11
|
-
def settings
|
|
12
|
-
@cmd.settings
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
before do
|
|
16
|
-
@cmd = Bosh::Bootstrap::Cli.new
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
it "runs 'upgrade' command on an existing inception VM" do
|
|
20
|
-
setting "inception.prepared", true
|
|
21
|
-
setting "inception.username", "ubuntu"
|
|
22
|
-
setting "git.name", "Dr Nic Williams"
|
|
23
|
-
setting "git.email", "drnicwilliams@gmail.com"
|
|
24
|
-
setting "bosh.password", "UNSALTED"
|
|
25
|
-
setting "bosh.salted_password", "SALTED"
|
|
26
|
-
@cmd.should_receive(:run_server).and_return(true)
|
|
27
|
-
@cmd.upgrade_inception
|
|
28
|
-
end
|
|
29
|
-
end
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
# Copyright (c) 2012-2013 Stark & Wayne, LLC
|
|
2
|
-
|
|
3
|
-
require File.expand_path("../../spec_helper", __FILE__)
|
|
4
|
-
|
|
5
|
-
describe Bosh::Bootstrap::Helpers::SettingsSetter do
|
|
6
|
-
include Bosh::Bootstrap::Helpers::SettingsSetter
|
|
7
|
-
|
|
8
|
-
attr_reader :settings
|
|
9
|
-
before do
|
|
10
|
-
@settings = {}
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def save_settings!
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
it "with_setting 'a'" do
|
|
17
|
-
with_setting "a" do |setting|
|
|
18
|
-
setting['value'] = "abc"
|
|
19
|
-
end
|
|
20
|
-
settings["a"]["value"].should == "abc"
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
it "with_setting 'a.b.c'" do
|
|
24
|
-
with_setting "a.b.c" do |setting|
|
|
25
|
-
setting['value'] = "abc"
|
|
26
|
-
end
|
|
27
|
-
settings["a"]["b"]["c"]["value"].should == "abc"
|
|
28
|
-
end
|
|
29
|
-
end
|
|
Binary file
|