bosh-cloudfoundry 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog.md +4 -0
- data/Gemfile +4 -2
- data/Guardfile +1 -1
- data/README.md +15 -25
- data/bosh-cloudfoundry.gemspec +0 -3
- data/lib/bosh-cloudfoundry/bosh_release_manager.rb +1 -1
- data/lib/bosh-cloudfoundry/config_options.rb +4 -0
- data/lib/bosh-cloudfoundry/version.rb +1 -1
- data/lib/bosh/cli/commands/cf.rb +22 -73
- data/spec/unit/cf_command_spec.rb +57 -29
- metadata +4 -52
data/ChangeLog.md
CHANGED
data/Gemfile
CHANGED
data/Guardfile
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# A sample Guardfile
|
2
2
|
# More info at https://github.com/guard/guard#readme
|
3
3
|
|
4
|
-
guard 'rspec'
|
4
|
+
guard 'rspec' do
|
5
5
|
watch(%r{^spec/.+_spec\.rb$})
|
6
6
|
watch(%r{^lib/bosh/cli/commands/cf.rb$}) { |m| "spec/unit/cf_command_spec.rb" }
|
7
7
|
watch(%r{^lib/bosh-cloudfoundry/(.+)\.rb$}) { |m| "spec/unit/#{m[1]}_spec.rb" }
|
data/README.md
CHANGED
@@ -1,53 +1,42 @@
|
|
1
1
|
# Bosh::CloudFoundry
|
2
2
|
|
3
|
-
You want
|
3
|
+
You want Cloud Foundry? You can now create, scale, upgrade and patch one or more Cloud Foundry deployments using very simple, easy to learn and remember CLI commands.
|
4
4
|
|
5
|
-
Currently supports AWS
|
5
|
+
Currently supports AWS and OpenStack only. vSphere and vCloud support will require someone to tell me that they really want it.
|
6
6
|
|
7
|
-
##
|
7
|
+
## Zero to Cloud Foundry in a few hours
|
8
8
|
|
9
|
-
|
9
|
+
If you have an AWS or OpenStack account then you can deploy a running Cloud Foundry VM by following this very simple tutorial. It first uses the very powerful [bosh-bootstrap](https://github.com/StarkAndWayne/bosh-bootstrap) tool to deploy a BOSH, and then using this project (a plugin for the BOSH CLI) it will do everything necessary to deploy Cloud Foundry via your shiny new, empty BOSH.
|
10
10
|
|
11
|
-
|
11
|
+
**You should not need to know anything before running this tutorial.** If you do this tutorial and you feel it was too complex or you needed to know something additional, please [create a ticket](https://github.com/StarkAndWayne/bosh-cloudfoundry/issues).
|
12
12
|
|
13
13
|
```
|
14
14
|
# on your laptop
|
15
15
|
gem install bosh-bootstrap
|
16
|
-
bosh-bootstrap deploy --
|
16
|
+
bosh-bootstrap deploy --edge-deployer
|
17
|
+
# prompts for AWS/OpenStack credentials
|
18
|
+
# and some other fields that you can
|
19
|
+
# just press Enter for.
|
17
20
|
|
21
|
+
# SSH into inception VM
|
18
22
|
bosh-bootstrap ssh
|
19
23
|
|
20
|
-
|
21
|
-
|
22
|
-
# TODO - restore gem installation when rubygem security issue resolved
|
23
|
-
# sudo gem install bosh-cloudfoundry
|
24
|
-
|
25
|
-
cd /var/vcap/store/repos
|
26
|
-
git clone git://github.com/StarkAndWayne/bosh-cloudfoundry.git
|
27
|
-
cd bosh-cloudfoundry
|
28
|
-
git checkout -b v0.3
|
29
|
-
git pull origin v0.3
|
30
|
-
rake install
|
31
|
-
|
24
|
+
sudo gem install bosh-cloudfoundry
|
32
25
|
export TMPDIR=/var/vcap/store/tmp
|
33
|
-
bosh cf
|
34
|
-
|
35
|
-
bosh cf prepare system production --release-name appcloud-dev
|
26
|
+
bosh cf prepare system production
|
36
27
|
# prompts for a DNS host for your CloudFoundry, such as mycompany.com
|
37
28
|
# will generate a new IP address
|
38
29
|
# now setup your DNS for *.mycompany.com => new IP address
|
39
30
|
# the re-run:
|
40
31
|
bosh cf prepare system production
|
41
32
|
|
42
|
-
bosh
|
43
|
-
bosh cf merge gerrit 37/13137/4 84/13084/4 83/13583/1 09/13609/2
|
44
|
-
bosh cf deploy
|
33
|
+
bosh deploy
|
45
34
|
|
46
35
|
# now we can grow our single VM deployment
|
47
36
|
|
48
37
|
bosh cf change deas 1
|
49
38
|
bosh cf add service postgresql
|
50
|
-
bosh
|
39
|
+
bosh deploy
|
51
40
|
```
|
52
41
|
|
53
42
|
Overtime, as you add more DEAs and other service nodes, your set of VMs might look like:
|
@@ -70,6 +59,7 @@ $ bosh vms
|
|
70
59
|
|
71
60
|
* Ruby 1.9
|
72
61
|
* BOSH running on AWS (other CPIs coming)
|
62
|
+
* Unix-based local system (Windows support for bosh-bootstrap is a priority)
|
73
63
|
|
74
64
|
## Usage
|
75
65
|
|
data/bosh-cloudfoundry.gemspec
CHANGED
@@ -23,7 +23,4 @@ Gem::Specification.new do |gem|
|
|
23
23
|
gem.add_dependency "net-dns"
|
24
24
|
gem.add_dependency "fog", ">= 1.8.0"
|
25
25
|
gem.add_development_dependency "rspec"
|
26
|
-
gem.add_development_dependency "ci_reporter"
|
27
|
-
gem.add_development_dependency "debugger"
|
28
|
-
gem.add_development_dependency "guard-rspec"
|
29
26
|
end
|
@@ -77,7 +77,7 @@ module Bosh::CloudFoundry::BoshReleaseManager
|
|
77
77
|
def create_and_upload_dev_release(release_name=default_dev_release_name)
|
78
78
|
chdir(cf_release_dir) do
|
79
79
|
write_dev_config_file(release_name)
|
80
|
-
sh "bosh create release --with-tarball --force"
|
80
|
+
sh "bosh -n --color create release --with-tarball --force"
|
81
81
|
sh "bosh -n --color upload release"
|
82
82
|
end
|
83
83
|
@bosh_releases = nil # reset cache
|
data/lib/bosh/cli/commands/cf.rb
CHANGED
@@ -39,6 +39,10 @@ module Bosh::Cli::Command
|
|
39
39
|
option "--admin-emails email1,email2", Array, "Admin email accounts in created CloudFoundry"
|
40
40
|
option "--skip-validations", "Skip all validations"
|
41
41
|
def prepare_system(name=nil)
|
42
|
+
# FUTURE remove this when cf-release has a final release with
|
43
|
+
# all patches in https://github.com/StarkAndWayne/bosh-cloudfoundry/issues/42
|
44
|
+
options[:dev] = true
|
45
|
+
|
42
46
|
setup_system_dir(name)
|
43
47
|
confirm_or_prompt_all_defaults
|
44
48
|
confirm_or_prompt_for_system_requirements
|
@@ -111,24 +115,30 @@ module Bosh::Cli::Command
|
|
111
115
|
|
112
116
|
usage "cf upload stemcell"
|
113
117
|
desc "download/create stemcell & upload to BOSH"
|
114
|
-
option "--
|
118
|
+
# option "--stable", "Use latest stemcell; possibly not tagged stable"
|
119
|
+
option "--latest", "Use latest stemcell; possibly not tagged stable [default]"
|
115
120
|
option "--custom", "Create custom stemcell from BOSH git source"
|
116
121
|
def upload_stemcell
|
117
|
-
stemcell_type = "stable"
|
118
|
-
stemcell_type = "latest" if options[:latest]
|
122
|
+
stemcell_type = "stable" if options[:stable]
|
119
123
|
stemcell_type = "custom" if options[:custom]
|
124
|
+
stemcell_type ||= "latest"
|
120
125
|
create_or_download_stemcell_then_upload(stemcell_type)
|
121
126
|
end
|
122
127
|
|
123
128
|
usage "cf upload release"
|
124
129
|
desc "fetch & upload latest public cloudfoundry release to BOSH"
|
125
|
-
option "--dev", "Create development release from very latest cf-release commits"
|
130
|
+
# option "--dev", "Create development release from very latest cf-release commits & specific patches"
|
131
|
+
option "--final", "Upload latest final release from very latest cf-release commits"
|
126
132
|
def upload_release
|
127
133
|
clone_or_update_cf_release
|
128
|
-
if options.delete(:
|
129
|
-
create_and_upload_dev_release
|
130
|
-
else
|
134
|
+
if options.delete(:final)
|
131
135
|
upload_final_release
|
136
|
+
else
|
137
|
+
# FUTURE once all patches from https://github.com/StarkAndWayne/bosh-cloudfoundry/issues/42
|
138
|
+
# are merged into cf-release, then no more gerrit merging required
|
139
|
+
options[:dev] = true
|
140
|
+
merge_gerrit(*%w[37/13137/4 84/13084/4])
|
141
|
+
# create_and_upload_dev_release
|
132
142
|
end
|
133
143
|
end
|
134
144
|
|
@@ -153,7 +163,7 @@ module Bosh::Cli::Command
|
|
153
163
|
end
|
154
164
|
end
|
155
165
|
apply_gerrit_patches
|
156
|
-
create_and_upload_dev_release
|
166
|
+
create_and_upload_dev_release(release_name)
|
157
167
|
end
|
158
168
|
|
159
169
|
usage "cf deploy"
|
@@ -249,32 +259,20 @@ module Bosh::Cli::Command
|
|
249
259
|
end
|
250
260
|
|
251
261
|
# @return [String] label for the CPI being used by the target BOSH
|
252
|
-
# * "aws" - AWS
|
253
|
-
#
|
254
|
-
# Yet to be supported by bosh-cloudfoundry:
|
255
|
-
# * "openstack" - VMWare vSphere
|
256
|
-
# * "vsphere" - VMWare vSphere
|
257
|
-
# * "vcloud" - VMWare vCloud
|
258
262
|
def bosh_provider
|
259
|
-
|
260
|
-
"aws"
|
261
|
-
elsif openstack?
|
262
|
-
"openstack"
|
263
|
-
else
|
264
|
-
err("Please implement cf.rb's bosh_provider for this IaaS")
|
265
|
-
end
|
263
|
+
system_config_setup? ? system_config.bosh_provider : bosh_cpi
|
266
264
|
end
|
267
265
|
|
268
266
|
# Deploying CloudFoundry to AWS?
|
269
267
|
# Is the target BOSH's IaaS using the AWS CPI?
|
270
268
|
def aws?
|
271
|
-
|
269
|
+
bosh_provider == "aws"
|
272
270
|
end
|
273
271
|
|
274
272
|
# Deploying CloudFoundry to OpenStack?
|
275
273
|
# Is the target BOSH's IaaS using the OpenStack CPI?
|
276
274
|
def openstack?
|
277
|
-
|
275
|
+
bosh_provider == "openstack"
|
278
276
|
end
|
279
277
|
|
280
278
|
# User is prompted for common values at the
|
@@ -550,7 +548,7 @@ module Bosh::Cli::Command
|
|
550
548
|
err("Server flavor '#{flavor}' is not a valid OpenStack compute flavor")
|
551
549
|
end
|
552
550
|
else
|
553
|
-
err("Please implemenet cf.rb's validate_compute_flavor for
|
551
|
+
err("Please implemenet cf.rb's validate_compute_flavor for #{bosh_provider.inspect}")
|
554
552
|
end
|
555
553
|
end
|
556
554
|
|
@@ -569,31 +567,6 @@ module Bosh::Cli::Command
|
|
569
567
|
renderer.perform
|
570
568
|
end
|
571
569
|
|
572
|
-
def generate_dea_servers(server_count, server_flavor)
|
573
|
-
director_uuid = "DIRECTOR_UUID"
|
574
|
-
release_name = "appcloud"
|
575
|
-
stemcell_version = "0.6.4"
|
576
|
-
if aws?
|
577
|
-
resource_pool_cloud_properties = "instance_type: #{server_flavor}"
|
578
|
-
else
|
579
|
-
err("Please implemenet cf.rb's generate_dea_servers for this IaaS")
|
580
|
-
end
|
581
|
-
dea_max_memory = 2048 # FIXME a value based on server flavor RAM?
|
582
|
-
nats_password = "mynats1234"
|
583
|
-
system_dir = File.join(base_systems_dir, system_name)
|
584
|
-
mkdir_p(system_dir)
|
585
|
-
chdir system_dir do
|
586
|
-
require 'bosh-cloudfoundry/generators/dea_generator'
|
587
|
-
Bosh::CloudFoundry::Generators::DeaGenerator.start([
|
588
|
-
system_name,
|
589
|
-
server_count, server_flavor,
|
590
|
-
director_uuid, release_name, stemcell_version,
|
591
|
-
resource_pool_cloud_properties,
|
592
|
-
dea_max_memory,
|
593
|
-
nats_password])
|
594
|
-
end
|
595
|
-
end
|
596
|
-
|
597
570
|
# Valdiate that +service_name+ is a known, supported service name
|
598
571
|
def validate_service_name(service_name)
|
599
572
|
return true if skip_validations?
|
@@ -618,30 +591,6 @@ module Bosh::Cli::Command
|
|
618
591
|
end
|
619
592
|
end
|
620
593
|
|
621
|
-
def generate_service_servers(service_name, server_count, server_flavor)
|
622
|
-
director_uuid = "DIRECTOR_UUID"
|
623
|
-
release_name = "appcloud"
|
624
|
-
stemcell_version = "0.6.4"
|
625
|
-
if aws?
|
626
|
-
resource_pool_cloud_properties = "instance_type: #{server_flavor}"
|
627
|
-
else
|
628
|
-
err("Please implemenet cf.rb's generate_service_servers for this IaaS")
|
629
|
-
end
|
630
|
-
persistent_disk = 16192
|
631
|
-
nats_password = "mynats1234"
|
632
|
-
system_dir = File.join(base_systems_dir, system_name)
|
633
|
-
mkdir_p(system_dir)
|
634
|
-
chdir system_dir do
|
635
|
-
require 'bosh-cloudfoundry/generators/service_generator'
|
636
|
-
Bosh::CloudFoundry::Generators::ServiceGenerator.start([
|
637
|
-
system_name,
|
638
|
-
service_name, server_count, server_flavor,
|
639
|
-
director_uuid, release_name, stemcell_version,
|
640
|
-
resource_pool_cloud_properties, persistent_disk,
|
641
|
-
nats_password])
|
642
|
-
end
|
643
|
-
end
|
644
|
-
|
645
594
|
def default_core_server_flavor
|
646
595
|
if aws?
|
647
596
|
"m1.large"
|
@@ -41,9 +41,14 @@ describe Bosh::Cli::Command::Base do
|
|
41
41
|
it "downloads stemcell and uploads it" do
|
42
42
|
@cmd.stub!(:bosh_target).and_return("http://9.8.7.6:25555")
|
43
43
|
@cmd.stub!(:bosh_target_uuid).and_return("DIRECTOR_UUID")
|
44
|
+
@cmd.stub!(:bosh_cpi).and_return("aws")
|
44
45
|
@cmd.should_receive(:`).
|
45
|
-
with("bosh public stemcells --tags aws
|
46
|
+
with("bosh public stemcells --tags aws | grep ' bosh-stemcell-' | awk '{ print $2 }' | sort -r | head -n 1").
|
46
47
|
and_return("bosh-stemcell-aws-0.6.7.tgz")
|
48
|
+
# FIXME default to stable stemcells when 0.8.1 is marked stable
|
49
|
+
# @cmd.should_receive(:`).
|
50
|
+
# with("bosh public stemcells --tags aws,stable | grep ' bosh-stemcell-' | awk '{ print $2 }' | sort -r | head -n 1").
|
51
|
+
# and_return("bosh-stemcell-aws-0.6.7.tgz")
|
47
52
|
@cmd.should_receive(:sh).
|
48
53
|
with("bosh -n --color download public stemcell bosh-stemcell-aws-0.6.7.tgz")
|
49
54
|
@cmd.should_receive(:sh).
|
@@ -58,6 +63,7 @@ describe Bosh::Cli::Command::Base do
|
|
58
63
|
mkdir_p(File.join(@repos_dir, "bosh", "agent"))
|
59
64
|
@cmd.stub!(:bosh_target).and_return("http://9.8.7.6:25555")
|
60
65
|
@cmd.stub!(:bosh_target_uuid).and_return("DIRECTOR_UUID")
|
66
|
+
@cmd.stub!(:bosh_cpi).and_return("aws")
|
61
67
|
@cmd.should_receive(:sh).with("git pull origin master")
|
62
68
|
@cmd.should_receive(:sh).with("bundle install --without development test")
|
63
69
|
@cmd.should_receive(:sh).with("sudo bundle exec rake stemcell:basic['aws']")
|
@@ -94,34 +100,38 @@ describe Bosh::Cli::Command::Base do
|
|
94
100
|
@cmd.should_receive(:`).with("tail -n 1 releases/index.yml | awk '{print $2}'").
|
95
101
|
and_return("126")
|
96
102
|
@cmd.should_receive(:sh).with("bosh -n --color upload release releases/appcloud-126.yml")
|
103
|
+
@cmd.add_option(:final, true)
|
97
104
|
@cmd.upload_release
|
98
105
|
end
|
99
106
|
|
100
|
-
it "updates/creates/uploads development/edge cf-release"
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
107
|
+
it "updates/creates/uploads development/edge cf-release (requires system setup)"
|
108
|
+
# TODO turn this into a unit test for the specific methods
|
109
|
+
# do
|
110
|
+
# cf_release_dir = File.join(@releases_dir, "cf-release")
|
111
|
+
# FileUtils.mkdir_p(cf_release_dir)
|
112
|
+
# @cmd.common_config.cf_release_dir = cf_release_dir
|
113
|
+
# @cmd.add_option(:dev, true)
|
114
|
+
#
|
115
|
+
# @cmd.should_receive(:sh).with("git pull origin master")
|
116
|
+
# script = <<-BASH.gsub(/^ /, '')
|
117
|
+
# grep -rI "github.com" * .gitmodules | awk 'BEGIN {FS=":"} { print($1) }' | uniq while read file
|
118
|
+
# do
|
119
|
+
# echo "changing - $file"
|
120
|
+
# sed -i 's#git://github.com#https://github.com#g' $file
|
121
|
+
# sed -i 's#git@github.com:#https://github.com:#g' $file
|
122
|
+
# done
|
123
|
+
# BASH
|
124
|
+
# @cmd.should_receive(:sh).with("sed -i 's#git@github.com:#https://github.com/#g' .gitmodules")
|
125
|
+
# @cmd.should_receive(:sh).with("sed -i 's#git://github.com#https://github.com#g' .gitmodules")
|
126
|
+
# @cmd.should_receive(:sh).with("git submodule update --init --recursive")
|
127
|
+
# @cmd.should_receive(:write_dev_config_file).with("appcloud-dev")
|
128
|
+
# @cmd.should_receive(:sh).with("bosh create release --with-tarball --force")
|
129
|
+
# @cmd.should_receive(:sh).with("bosh -n --color upload release")
|
130
|
+
# @cmd.upload_release
|
131
|
+
# end
|
123
132
|
|
124
133
|
def generate_new_system(cmd = nil)
|
134
|
+
needs_initial_release_uploaded = true
|
125
135
|
cmd ||= begin
|
126
136
|
cmd = Bosh::Cli::Command::CloudFoundry.new(nil)
|
127
137
|
cmd.add_option(:non_interactive, true)
|
@@ -134,13 +144,22 @@ describe Bosh::Cli::Command::Base do
|
|
134
144
|
|
135
145
|
cmd.stub!(:bosh_target).and_return("http://9.8.7.6:25555")
|
136
146
|
cmd.stub!(:bosh_target_uuid).and_return("DIRECTOR_UUID")
|
147
|
+
cmd.stub!(:bosh_cpi).and_return("aws")
|
137
148
|
cmd.should_receive(:generate_common_password).and_return('c1oudc0wc1oudc0w')
|
138
|
-
cmd.should_receive(:bosh_releases).exactly(1).times.and_return([
|
139
|
-
{"name"=>"appcloud", "versions"=>["124", "126"], "in_use"=>[]},
|
140
|
-
{"name"=>"appcloud-dev", "versions"=>["124.1-dev", "126.1-dev"], "in_use"=>[]},
|
141
|
-
])
|
142
149
|
cmd.should_receive(:validate_dns_a_record).with("api.mycompany.com", '1.2.3.4').and_return(true)
|
143
150
|
cmd.should_receive(:validate_dns_a_record).with("demoapp.mycompany.com", '1.2.3.4').and_return(true)
|
151
|
+
|
152
|
+
if needs_initial_release_uploaded
|
153
|
+
cmd.should_receive(:bosh_releases).exactly(1).times.and_return([])
|
154
|
+
cmd.should_receive(:clone_or_update_cf_release)
|
155
|
+
cmd.should_receive(:merge_gerrit).with(*%w[37/13137/4 84/13084/4 09/13609/2])
|
156
|
+
else
|
157
|
+
cmd.should_receive(:bosh_releases).exactly(1).times.and_return([
|
158
|
+
{"name"=>"appcloud", "versions"=>["124", "126"], "in_use"=>[]},
|
159
|
+
{"name"=>"appcloud-dev", "versions"=>["124.1-dev", "126.1-dev"], "in_use"=>[]},
|
160
|
+
])
|
161
|
+
end
|
162
|
+
|
144
163
|
cmd.should_receive(:bosh_stemcell_versions).exactly(4).times.and_return(['0.6.4'])
|
145
164
|
cmd.should_receive(:render_system)
|
146
165
|
|
@@ -155,7 +174,7 @@ describe Bosh::Cli::Command::Base do
|
|
155
174
|
|
156
175
|
cmd.add_option(:core_ip, '1.2.3.4')
|
157
176
|
cmd.add_option(:root_dns, 'mycompany.com')
|
158
|
-
cmd.add_option(:cf_release, 'appcloud')
|
177
|
+
# cmd.add_option(:cf_release, 'appcloud')
|
159
178
|
cmd.add_option(:core_server_flavor, 'm1.large')
|
160
179
|
cmd.add_option(:admin_emails, ['drnic@starkandwayne.com'])
|
161
180
|
|
@@ -174,6 +193,12 @@ describe Bosh::Cli::Command::Base do
|
|
174
193
|
File.basename(@cmd.system).should == "production"
|
175
194
|
end
|
176
195
|
|
196
|
+
it "temporarily uploads latest stemcell & patched cf-release by default" do
|
197
|
+
generate_new_system(@cmd)
|
198
|
+
File.basename(@cmd.system).should == "production"
|
199
|
+
@cmd.system_config.release_name.should == "appcloud-dev"
|
200
|
+
end
|
201
|
+
|
177
202
|
it "new system has common random password" do
|
178
203
|
generate_new_system(@cmd)
|
179
204
|
@cmd.system_config.common_password.should == "c1oudc0wc1oudc0w"
|
@@ -184,6 +209,7 @@ describe Bosh::Cli::Command::Base do
|
|
184
209
|
|
185
210
|
@cmd.should_receive(:render_system)
|
186
211
|
|
212
|
+
@cmd.stub!(:bosh_cpi).and_return("aws")
|
187
213
|
@cmd.stub!(:bosh_target).and_return("http://9.8.7.6:25555")
|
188
214
|
@cmd.add_option(:flavor, 'm1.xlarge')
|
189
215
|
@cmd.change_deas(3)
|
@@ -204,6 +230,7 @@ describe Bosh::Cli::Command::Base do
|
|
204
230
|
|
205
231
|
@cmd.should_receive(:render_system)
|
206
232
|
|
233
|
+
@cmd.stub!(:bosh_cpi).and_return("aws")
|
207
234
|
@cmd.stub!(:bosh_target).and_return("http://9.8.7.6:25555")
|
208
235
|
@cmd.add_option(:flavor, 'm1.large')
|
209
236
|
@cmd.add_service_node("postgresql", 4)
|
@@ -219,6 +246,7 @@ describe Bosh::Cli::Command::Base do
|
|
219
246
|
|
220
247
|
@cmd.should_receive(:render_system)
|
221
248
|
|
249
|
+
@cmd.stub!(:bosh_cpi).and_return("aws")
|
222
250
|
@cmd.stub!(:bosh_target).and_return("http://9.8.7.6:25555")
|
223
251
|
@cmd.add_option(:flavor, 'm1.large')
|
224
252
|
@cmd.add_service_node("redis", 2)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bosh-cloudfoundry
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-02-
|
12
|
+
date: 2013-02-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bosh_cli
|
@@ -91,54 +91,6 @@ dependencies:
|
|
91
91
|
- - ! '>='
|
92
92
|
- !ruby/object:Gem::Version
|
93
93
|
version: '0'
|
94
|
-
- !ruby/object:Gem::Dependency
|
95
|
-
name: ci_reporter
|
96
|
-
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
|
-
requirements:
|
99
|
-
- - ! '>='
|
100
|
-
- !ruby/object:Gem::Version
|
101
|
-
version: '0'
|
102
|
-
type: :development
|
103
|
-
prerelease: false
|
104
|
-
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
|
-
requirements:
|
107
|
-
- - ! '>='
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: '0'
|
110
|
-
- !ruby/object:Gem::Dependency
|
111
|
-
name: debugger
|
112
|
-
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
|
-
requirements:
|
115
|
-
- - ! '>='
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '0'
|
118
|
-
type: :development
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
|
-
requirements:
|
123
|
-
- - ! '>='
|
124
|
-
- !ruby/object:Gem::Version
|
125
|
-
version: '0'
|
126
|
-
- !ruby/object:Gem::Dependency
|
127
|
-
name: guard-rspec
|
128
|
-
requirement: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
|
-
requirements:
|
131
|
-
- - ! '>='
|
132
|
-
- !ruby/object:Gem::Version
|
133
|
-
version: '0'
|
134
|
-
type: :development
|
135
|
-
prerelease: false
|
136
|
-
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
|
-
requirements:
|
139
|
-
- - ! '>='
|
140
|
-
- !ruby/object:Gem::Version
|
141
|
-
version: '0'
|
142
94
|
description: Create and manage your Cloud Foundry deployments
|
143
95
|
email:
|
144
96
|
- drnicwilliams@gmail.com
|
@@ -209,7 +161,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
209
161
|
version: '0'
|
210
162
|
segments:
|
211
163
|
- 0
|
212
|
-
hash: -
|
164
|
+
hash: -44016591154602000
|
213
165
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
214
166
|
none: false
|
215
167
|
requirements:
|
@@ -218,7 +170,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
218
170
|
version: '0'
|
219
171
|
segments:
|
220
172
|
- 0
|
221
|
-
hash: -
|
173
|
+
hash: -44016591154602000
|
222
174
|
requirements: []
|
223
175
|
rubyforge_project:
|
224
176
|
rubygems_version: 1.8.24
|