bosh-cloudfoundry 0.2.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/.gitignore +18 -0
- data/.rspec +2 -0
- data/.travis.yml +6 -0
- data/Gemfile +6 -0
- data/Guardfile +10 -0
- data/LICENSE.txt +22 -0
- data/README.md +242 -0
- data/Rakefile +33 -0
- data/bosh-cloudfoundry.gemspec +29 -0
- data/config/defaults.yml +6 -0
- data/lib/bosh-cloudfoundry.rb +34 -0
- data/lib/bosh-cloudfoundry/bosh_release_manager.rb +141 -0
- data/lib/bosh-cloudfoundry/config.rb +6 -0
- data/lib/bosh-cloudfoundry/config/common_config.rb +27 -0
- data/lib/bosh-cloudfoundry/config/dea_config.rb +150 -0
- data/lib/bosh-cloudfoundry/config/microbosh_config.rb +106 -0
- data/lib/bosh-cloudfoundry/config/postgresql_service_config.rb +185 -0
- data/lib/bosh-cloudfoundry/config/redis_service_config.rb +179 -0
- data/lib/bosh-cloudfoundry/config/system_config.rb +60 -0
- data/lib/bosh-cloudfoundry/config_options.rb +362 -0
- data/lib/bosh-cloudfoundry/gerrit_patches_helper.rb +47 -0
- data/lib/bosh-cloudfoundry/providers.rb +19 -0
- data/lib/bosh-cloudfoundry/providers/aws.rb +75 -0
- data/lib/bosh-cloudfoundry/system_deployment_manifest_renderer.rb +286 -0
- data/lib/bosh-cloudfoundry/version.rb +5 -0
- data/lib/bosh/cli/commands/cf.rb +668 -0
- data/spec/assets/.gitkeep +0 -0
- data/spec/assets/cf-release/jobs/cloud_controller/templates/runtimes.yml +150 -0
- data/spec/assets/deployments/aws-core-1-m1.small-free-redis.yml +221 -0
- data/spec/assets/deployments/aws-core-1-m1.xlarge-free-postgresql-2-m1.small-free-postgresql.yml +248 -0
- data/spec/assets/deployments/aws-core-2-m1.xlarge-dea.yml +195 -0
- data/spec/assets/deployments/aws-core-only.yml +178 -0
- data/spec/assets/deployments/aws-core-with-nfs.yml +192 -0
- data/spec/functional/.gitkeep +0 -0
- data/spec/spec_helper.rb +41 -0
- data/spec/unit/.gitkeep +0 -0
- data/spec/unit/bosh_release_manager_spec.rb +36 -0
- data/spec/unit/cf_command_spec.rb +280 -0
- data/spec/unit/config/common_config_spec.rb +21 -0
- data/spec/unit/config/dea_config_spec.rb +92 -0
- data/spec/unit/config/microbosh_config_spec.rb +11 -0
- data/spec/unit/config/postgresql_service_config_spec.rb +103 -0
- data/spec/unit/config/redis_service_config_spec.rb +103 -0
- data/spec/unit/config/system_config_spec.rb +29 -0
- data/spec/unit/config_options_spec.rb +64 -0
- data/spec/unit/system_deployment_manifest_renderer_spec.rb +93 -0
- metadata +246 -0
@@ -0,0 +1,11 @@
|
|
1
|
+
# Copyright (c) 2012-2013 Stark & Wayne, LLC
|
2
|
+
|
3
|
+
require File.expand_path("../../../spec_helper", __FILE__)
|
4
|
+
|
5
|
+
describe Bosh::CloudFoundry::Config::MicroboshConfig do
|
6
|
+
before(:each) do
|
7
|
+
@home = Dir.mktmpdir("home")
|
8
|
+
end
|
9
|
+
|
10
|
+
it "discovers fog connection properties in an AWS micro_bosh.yml"
|
11
|
+
end
|
@@ -0,0 +1,103 @@
|
|
1
|
+
# Copyright (c) 2012-2013 Stark & Wayne, LLC
|
2
|
+
|
3
|
+
require File.expand_path("../../../spec_helper", __FILE__)
|
4
|
+
|
5
|
+
# The specification of how a user's postgresql choices (count & flavor)
|
6
|
+
# are converted into deployment manifest configuration
|
7
|
+
describe Bosh::CloudFoundry::Config::PostgresqlServiceConfig do
|
8
|
+
include FileUtils
|
9
|
+
|
10
|
+
before do
|
11
|
+
@systems_dir = Dir.mktmpdir("system_config")
|
12
|
+
@system_dir = File.join(@systems_dir, "production")
|
13
|
+
mkdir_p(@system_dir)
|
14
|
+
@system_config = Bosh::CloudFoundry::Config::SystemConfig.new(@system_dir)
|
15
|
+
@system_config.bosh_provider = "aws"
|
16
|
+
@manifest = YAML.load_file(spec_asset("deployments/aws-core-only.yml"))
|
17
|
+
end
|
18
|
+
|
19
|
+
# find a specificly named job in the manifest
|
20
|
+
def job(name)
|
21
|
+
@manifest["jobs"].find { |job| job["name"] == name }
|
22
|
+
end
|
23
|
+
|
24
|
+
# find a specificly named resource pool in the manifest
|
25
|
+
def resource_pool(name)
|
26
|
+
@manifest["resource_pools"].find { |res| res["name"] == name }
|
27
|
+
end
|
28
|
+
|
29
|
+
describe "0 postgresqls" do
|
30
|
+
subject { Bosh::CloudFoundry::Config::PostgresqlServiceConfig.build_from_system_config(@system_config) }
|
31
|
+
it "has 0 postgresql servers" do
|
32
|
+
subject.total_service_nodes_count.should == 0
|
33
|
+
end
|
34
|
+
it "is not in the core job" do
|
35
|
+
subject.add_core_jobs_to_manifest(@manifest)
|
36
|
+
job("core")["template"].should_not be_include("postgresql")
|
37
|
+
end
|
38
|
+
it "should not add a resoure pool called 'postgresql'" do
|
39
|
+
subject.add_resource_pools_to_manifest(@manifest)
|
40
|
+
@manifest["resource_pools"].size.should == 1
|
41
|
+
resource_pool("postgresql").should be_nil
|
42
|
+
end
|
43
|
+
it "should not add a job called 'postgresql'" do
|
44
|
+
subject.add_jobs_to_manifest(@manifest)
|
45
|
+
@manifest["jobs"].size.should == 1
|
46
|
+
job("postgresql").should be_nil
|
47
|
+
end
|
48
|
+
it "does not set properties.postgresql_gateway" do
|
49
|
+
subject.merge_manifest_properties(@manifest)
|
50
|
+
@manifest["properties"]["postgresql_gateway"].should be_nil
|
51
|
+
end
|
52
|
+
it "does not set properties.postgresql_node" do
|
53
|
+
subject.merge_manifest_properties(@manifest)
|
54
|
+
@manifest["properties"]["postgresql_node"].should be_nil
|
55
|
+
end
|
56
|
+
it "does not set properties.service_plans.postgresql" do
|
57
|
+
subject.merge_manifest_properties(@manifest)
|
58
|
+
@manifest["properties"]["service_plans"]["postgresql"].should be_nil
|
59
|
+
end
|
60
|
+
end
|
61
|
+
describe "1 x m1.xlarge postgresql node on AWS" do
|
62
|
+
subject do
|
63
|
+
@system_config.postgresql = [{ "count" => 1, "flavor" => 'm1.xlarge' }]
|
64
|
+
Bosh::CloudFoundry::Config::PostgresqlServiceConfig.build_from_system_config(@system_config)
|
65
|
+
end
|
66
|
+
it "has 1 postgresql servers" do
|
67
|
+
subject.total_service_nodes_count.should == 1
|
68
|
+
end
|
69
|
+
it "does not add colocated job to core job" do
|
70
|
+
subject.add_core_jobs_to_manifest(@manifest)
|
71
|
+
job("core")["template"].should_not be_include("postgresql")
|
72
|
+
end
|
73
|
+
it "adds postgresql_gateway to core job" do
|
74
|
+
subject.add_core_jobs_to_manifest(@manifest)
|
75
|
+
job("core")["template"].should be_include("postgresql_gateway")
|
76
|
+
end
|
77
|
+
it "should add a resoure pool called 'postgresql'" do
|
78
|
+
subject.add_resource_pools_to_manifest(@manifest)
|
79
|
+
@manifest["resource_pools"].size.should == 2
|
80
|
+
resource_pool("postgresql_m1_xlarge_free").should_not be_nil
|
81
|
+
resource_pool("postgresql_m1_xlarge_free")["size"].should == 1
|
82
|
+
resource_pool("postgresql_m1_xlarge_free")["cloud_properties"]["instance_type"].should == "m1.xlarge"
|
83
|
+
end
|
84
|
+
it "converts 1 postgresql into an explicit postgresql job" do
|
85
|
+
subject.add_jobs_to_manifest(@manifest)
|
86
|
+
job("postgresql_m1_xlarge_free").should_not be_nil
|
87
|
+
job("postgresql_m1_xlarge_free")["template"].should == ["postgresql_node"]
|
88
|
+
job("postgresql_m1_xlarge_free")["instances"].should == 1
|
89
|
+
end
|
90
|
+
it "sets properties.postgresql_gateway" do
|
91
|
+
subject.merge_manifest_properties(@manifest)
|
92
|
+
@manifest["properties"]["postgresql_gateway"].should_not be_nil
|
93
|
+
end
|
94
|
+
it "sets properties.postgresql_node" do
|
95
|
+
subject.merge_manifest_properties(@manifest)
|
96
|
+
@manifest["properties"]["postgresql_node"].should_not be_nil
|
97
|
+
end
|
98
|
+
it "sets properties.service_plans.postgresql" do
|
99
|
+
subject.merge_manifest_properties(@manifest)
|
100
|
+
@manifest["properties"]["service_plans"]["postgresql"].should_not be_nil
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
@@ -0,0 +1,103 @@
|
|
1
|
+
# Copyright (c) 2012-2013 Stark & Wayne, LLC
|
2
|
+
|
3
|
+
require File.expand_path("../../../spec_helper", __FILE__)
|
4
|
+
|
5
|
+
# The specification of how a user's redis choices (count & flavor)
|
6
|
+
# are converted into deployment manifest configuration
|
7
|
+
describe Bosh::CloudFoundry::Config::RedisServiceConfig do
|
8
|
+
include FileUtils
|
9
|
+
|
10
|
+
before do
|
11
|
+
@systems_dir = Dir.mktmpdir("system_config")
|
12
|
+
@system_dir = File.join(@systems_dir, "production")
|
13
|
+
mkdir_p(@system_dir)
|
14
|
+
@system_config = Bosh::CloudFoundry::Config::SystemConfig.new(@system_dir)
|
15
|
+
@system_config.bosh_provider = "aws"
|
16
|
+
@manifest = YAML.load_file(spec_asset("deployments/aws-core-only.yml"))
|
17
|
+
end
|
18
|
+
|
19
|
+
# find a specificly named job in the manifest
|
20
|
+
def job(name)
|
21
|
+
@manifest["jobs"].find { |job| job["name"] == name }
|
22
|
+
end
|
23
|
+
|
24
|
+
# find a specificly named resource pool in the manifest
|
25
|
+
def resource_pool(name)
|
26
|
+
@manifest["resource_pools"].find { |res| res["name"] == name }
|
27
|
+
end
|
28
|
+
|
29
|
+
describe "0 redis servers" do
|
30
|
+
subject { Bosh::CloudFoundry::Config::RedisServiceConfig.build_from_system_config(@system_config) }
|
31
|
+
it "has 0 redis servers" do
|
32
|
+
subject.total_service_nodes_count.should == 0
|
33
|
+
end
|
34
|
+
it "is not in the core job" do
|
35
|
+
subject.add_core_jobs_to_manifest(@manifest)
|
36
|
+
job("core")["template"].should_not be_include("redis")
|
37
|
+
end
|
38
|
+
it "should not add a resoure pool called 'redis'" do
|
39
|
+
subject.add_resource_pools_to_manifest(@manifest)
|
40
|
+
@manifest["resource_pools"].size.should == 1
|
41
|
+
resource_pool("redis").should be_nil
|
42
|
+
end
|
43
|
+
it "should not add a job called 'redis'" do
|
44
|
+
subject.add_jobs_to_manifest(@manifest)
|
45
|
+
@manifest["jobs"].size.should == 1
|
46
|
+
job("redis").should be_nil
|
47
|
+
end
|
48
|
+
it "does not set properties.redis_gateway" do
|
49
|
+
subject.merge_manifest_properties(@manifest)
|
50
|
+
@manifest["properties"]["redis_gateway"].should be_nil
|
51
|
+
end
|
52
|
+
it "does not set properties.redis_node" do
|
53
|
+
subject.merge_manifest_properties(@manifest)
|
54
|
+
@manifest["properties"]["redis_node"].should be_nil
|
55
|
+
end
|
56
|
+
it "does not set properties.service_plans.redis" do
|
57
|
+
subject.merge_manifest_properties(@manifest)
|
58
|
+
@manifest["properties"]["service_plans"]["redis"].should be_nil
|
59
|
+
end
|
60
|
+
end
|
61
|
+
describe "1 x m1.xlarge redis node on AWS" do
|
62
|
+
subject do
|
63
|
+
@system_config.redis = [{ "count" => 1, "flavor" => 'm1.xlarge' }]
|
64
|
+
Bosh::CloudFoundry::Config::RedisServiceConfig.build_from_system_config(@system_config)
|
65
|
+
end
|
66
|
+
it "has 1 redis servers" do
|
67
|
+
subject.total_service_nodes_count.should == 1
|
68
|
+
end
|
69
|
+
it "does not add colocated job to core job" do
|
70
|
+
subject.add_core_jobs_to_manifest(@manifest)
|
71
|
+
job("core")["template"].should_not be_include("redis")
|
72
|
+
end
|
73
|
+
it "adds redis_gateway to core job" do
|
74
|
+
subject.add_core_jobs_to_manifest(@manifest)
|
75
|
+
job("core")["template"].should be_include("redis_gateway")
|
76
|
+
end
|
77
|
+
it "should add a resoure pool called 'redis'" do
|
78
|
+
subject.add_resource_pools_to_manifest(@manifest)
|
79
|
+
@manifest["resource_pools"].size.should == 2
|
80
|
+
resource_pool("redis_m1_xlarge_free").should_not be_nil
|
81
|
+
resource_pool("redis_m1_xlarge_free")["size"].should == 1
|
82
|
+
resource_pool("redis_m1_xlarge_free")["cloud_properties"]["instance_type"].should == "m1.xlarge"
|
83
|
+
end
|
84
|
+
it "converts 1 redis into an explicit redis job" do
|
85
|
+
subject.add_jobs_to_manifest(@manifest)
|
86
|
+
job("redis_m1_xlarge_free").should_not be_nil
|
87
|
+
job("redis_m1_xlarge_free")["template"].should == ["redis_node"]
|
88
|
+
job("redis_m1_xlarge_free")["instances"].should == 1
|
89
|
+
end
|
90
|
+
it "sets properties.redis_gateway" do
|
91
|
+
subject.merge_manifest_properties(@manifest)
|
92
|
+
@manifest["properties"]["redis_gateway"].should_not be_nil
|
93
|
+
end
|
94
|
+
it "sets properties.redis_node" do
|
95
|
+
subject.merge_manifest_properties(@manifest)
|
96
|
+
@manifest["properties"]["redis_node"].should_not be_nil
|
97
|
+
end
|
98
|
+
it "sets properties.service_plans.redis" do
|
99
|
+
subject.merge_manifest_properties(@manifest)
|
100
|
+
@manifest["properties"]["service_plans"]["redis"].should_not be_nil
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# Copyright (c) 2012-2013 Stark & Wayne, LLC
|
2
|
+
|
3
|
+
require File.expand_path("../../../spec_helper", __FILE__)
|
4
|
+
|
5
|
+
describe Bosh::CloudFoundry::Config::SystemConfig do
|
6
|
+
before(:each) do
|
7
|
+
@dir = Dir.mktmpdir("system_config_spec")
|
8
|
+
@config = Bosh::CloudFoundry::Config::SystemConfig.new(@dir)
|
9
|
+
end
|
10
|
+
|
11
|
+
after(:each) do
|
12
|
+
FileUtils.remove_entry_secure @dir
|
13
|
+
end
|
14
|
+
|
15
|
+
it("has system_name attribute") { @config.system_name.should_not == nil }
|
16
|
+
it("has system_dir attribute") { @config.system_dir.should_not == nil }
|
17
|
+
it("has release_name attribute") { @config.release_name.should == nil }
|
18
|
+
it("has stemcell_version attribute") { @config.stemcell_version.should == nil }
|
19
|
+
it("has runtimes attribute") { @config.runtimes.should == nil }
|
20
|
+
it("has common_password attribute") { @config.common_password.should == nil }
|
21
|
+
|
22
|
+
it "defaults system_name attribute based on basename of location of config file" do
|
23
|
+
@config.system_name == File.basename(@dir)
|
24
|
+
end
|
25
|
+
|
26
|
+
it "defaults system_dir attribute based on location of config file" do
|
27
|
+
@config.system_dir == @dir
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
# Copyright (c) 2012-2013 Stark & Wayne, LLC
|
2
|
+
|
3
|
+
require File.expand_path("../../spec_helper", __FILE__)
|
4
|
+
|
5
|
+
describe Bosh::CloudFoundry::ConfigOptions do
|
6
|
+
include Bosh::CloudFoundry::ConfigOptions
|
7
|
+
include FileUtils
|
8
|
+
attr_reader :options
|
9
|
+
|
10
|
+
before do
|
11
|
+
@options = {
|
12
|
+
common_config: File.join(Dir.mktmpdir, "bosh_common_config.yml"),
|
13
|
+
system: File.join(Dir.mktmpdir, "systems", "production"),
|
14
|
+
bosh_target: 'http://1.2.3.4:25555',
|
15
|
+
bosh_target_uuid: 'UUUUUIIIIIDDDD'
|
16
|
+
}
|
17
|
+
mkdir_p(@options[:system])
|
18
|
+
end
|
19
|
+
|
20
|
+
describe "common_config attribute" do
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
describe "system_config attribute" do
|
25
|
+
it "release_name can be overridden but is stored in system_config" do
|
26
|
+
options[:release_name] = "CHANGED"
|
27
|
+
release_name.should == "CHANGED"
|
28
|
+
system_config.release_name.should == "CHANGED"
|
29
|
+
end
|
30
|
+
|
31
|
+
it "stemcell_version can be overridden but is stored in system_config" do
|
32
|
+
options[:stemcell_version] = "CHANGED"
|
33
|
+
stemcell_version.should == "CHANGED"
|
34
|
+
system_config.stemcell_version.should == "CHANGED"
|
35
|
+
end
|
36
|
+
|
37
|
+
it "core_ip can be overridden but is stored in system_config" do
|
38
|
+
options[:core_ip] = "CHANGED"
|
39
|
+
core_ip.should == "CHANGED"
|
40
|
+
system_config.core_ip.should == "CHANGED"
|
41
|
+
end
|
42
|
+
|
43
|
+
it "root_dns can be overridden but is stored in system_config" do
|
44
|
+
options[:root_dns] = "CHANGED"
|
45
|
+
root_dns.should == "CHANGED"
|
46
|
+
system_config.root_dns.should == "CHANGED"
|
47
|
+
end
|
48
|
+
|
49
|
+
it "core_server_flavor can be overridden but is stored in system_config" do
|
50
|
+
options[:core_server_flavor] = "CHANGED"
|
51
|
+
core_server_flavor.should == "CHANGED"
|
52
|
+
system_config.core_server_flavor.should == "CHANGED"
|
53
|
+
end
|
54
|
+
|
55
|
+
it "common_password is 16 characters long" do
|
56
|
+
generate_common_password.size.should == 16
|
57
|
+
end
|
58
|
+
|
59
|
+
it "generate_security_group includes system name" do
|
60
|
+
security_group.should == "cloudfoundry-production"
|
61
|
+
generate_security_group.should == "cloudfoundry-production"
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
# Copyright (c) 2012-2013 Stark & Wayne, LLC
|
2
|
+
|
3
|
+
require File.expand_path("../../spec_helper", __FILE__)
|
4
|
+
|
5
|
+
describe Bosh::CloudFoundry::SystemDeploymentManifestRenderer do
|
6
|
+
include FileUtils
|
7
|
+
|
8
|
+
before(:each) do
|
9
|
+
@home_dir = Dir.mktmpdir("home")
|
10
|
+
common_config_file = File.join(@home_dir, "cf_config")
|
11
|
+
@common_config = Bosh::CloudFoundry::Config:: CommonConfig.new(common_config_file)
|
12
|
+
|
13
|
+
bosh_config_file = File.join(@home_dir, "bosh_config")
|
14
|
+
@bosh_config = Bosh::Cli::Config.new(bosh_config_file)
|
15
|
+
@bosh_config.target_uuid = "DIRECTOR_UUID"
|
16
|
+
@bosh_config.save
|
17
|
+
|
18
|
+
@systems_dir = Dir.mktmpdir("system_config")
|
19
|
+
@system_dir = File.join(@systems_dir, "production")
|
20
|
+
mkdir_p(@system_dir)
|
21
|
+
@system_config = Bosh::CloudFoundry::Config::SystemConfig.new(@system_dir)
|
22
|
+
@system_config.bosh_provider = 'aws'
|
23
|
+
@system_config.release_name = 'appcloud'
|
24
|
+
@system_config.release_version = 124 # TODO restore to 'latest' when #49 fixed
|
25
|
+
@system_config.stemcell_name = 'bosh-stemcell'
|
26
|
+
@system_config.stemcell_version = '0.6.4'
|
27
|
+
@system_config.core_server_flavor = 'm1.small'
|
28
|
+
@system_config.core_ip = '1.2.3.4'
|
29
|
+
@system_config.root_dns = 'mycompany.com'
|
30
|
+
@system_config.admin_emails = ['drnic@starkandwayne.com']
|
31
|
+
@system_config.common_password = 'c1oudc0wc1oudc0w'
|
32
|
+
@system_config.common_persistent_disk = 16192
|
33
|
+
@system_config.security_group = 'cloudfoundry-production'
|
34
|
+
|
35
|
+
@renderer = Bosh::CloudFoundry::SystemDeploymentManifestRenderer.new(
|
36
|
+
@system_config, @common_config, @bosh_config)
|
37
|
+
end
|
38
|
+
|
39
|
+
after(:each) do
|
40
|
+
FileUtils.remove_entry_secure @systems_dir
|
41
|
+
@renderer = nil
|
42
|
+
end
|
43
|
+
|
44
|
+
describe "rendering deployment manifest(s)" do
|
45
|
+
it "renders a base system without DEAs/services into a deployment manifest" do
|
46
|
+
@renderer.perform
|
47
|
+
|
48
|
+
chdir(@system_config.system_dir) do
|
49
|
+
File.should be_exist("deployments/production-core.yml")
|
50
|
+
files_match("deployments/production-core.yml", spec_asset("deployments/aws-core-only.yml"))
|
51
|
+
end
|
52
|
+
end
|
53
|
+
it "renders a simple system + DEAs into a deployment manifest" do
|
54
|
+
Bosh::CloudFoundry::Providers.should_receive(:for_bosh_provider_name).
|
55
|
+
and_return(Bosh::CloudFoundry::Providers::AWS.new)
|
56
|
+
@system_config.dea = { "count" => 2, "flavor" => "m1.xlarge" }
|
57
|
+
@renderer.perform
|
58
|
+
|
59
|
+
chdir(@system_config.system_dir) do
|
60
|
+
File.should be_exist("deployments/production-core.yml")
|
61
|
+
files_match("deployments/production-core.yml",
|
62
|
+
spec_asset("deployments/aws-core-2-m1.xlarge-dea.yml"))
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
it "renders a simple system + postgresql into a deployment manifest" do
|
67
|
+
@system_config.postgresql = [
|
68
|
+
{ "count" => 1, "flavor" => "m1.xlarge", "plan" =>"free" },
|
69
|
+
{ "count" => 2, "flavor" => "m1.small", "plan" =>"free" },
|
70
|
+
]
|
71
|
+
@renderer.perform
|
72
|
+
|
73
|
+
chdir(@system_config.system_dir) do
|
74
|
+
File.should be_exist("deployments/production-core.yml")
|
75
|
+
files_match("deployments/production-core.yml",
|
76
|
+
spec_asset("deployments/aws-core-1-m1.xlarge-free-postgresql-2-m1.small-free-postgresql.yml"))
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
it "renders a simple system + redis into a deployment manifest" do
|
81
|
+
@system_config.redis = [
|
82
|
+
{ "count" => 1, "flavor" => "m1.small", "plan" =>"free" },
|
83
|
+
]
|
84
|
+
@renderer.perform
|
85
|
+
|
86
|
+
chdir(@system_config.system_dir) do
|
87
|
+
File.should be_exist("deployments/production-core.yml")
|
88
|
+
files_match("deployments/production-core.yml",
|
89
|
+
spec_asset("deployments/aws-core-1-m1.small-free-redis.yml"))
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
metadata
ADDED
@@ -0,0 +1,246 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: bosh-cloudfoundry
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Dr Nic Williams
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-01-27 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: bosh_cli
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 1.0.3
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 1.0.3
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rake
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: net-dns
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: fog
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 1.8.0
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 1.8.0
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: rspec
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
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
|
+
description: Create and manage your Cloud Foundry deployments
|
143
|
+
email:
|
144
|
+
- drnicwilliams@gmail.com
|
145
|
+
executables: []
|
146
|
+
extensions: []
|
147
|
+
extra_rdoc_files: []
|
148
|
+
files:
|
149
|
+
- .gitignore
|
150
|
+
- .rspec
|
151
|
+
- .travis.yml
|
152
|
+
- Gemfile
|
153
|
+
- Guardfile
|
154
|
+
- LICENSE.txt
|
155
|
+
- README.md
|
156
|
+
- Rakefile
|
157
|
+
- bosh-cloudfoundry.gemspec
|
158
|
+
- config/defaults.yml
|
159
|
+
- lib/bosh-cloudfoundry.rb
|
160
|
+
- lib/bosh-cloudfoundry/bosh_release_manager.rb
|
161
|
+
- lib/bosh-cloudfoundry/config.rb
|
162
|
+
- lib/bosh-cloudfoundry/config/common_config.rb
|
163
|
+
- lib/bosh-cloudfoundry/config/dea_config.rb
|
164
|
+
- lib/bosh-cloudfoundry/config/microbosh_config.rb
|
165
|
+
- lib/bosh-cloudfoundry/config/postgresql_service_config.rb
|
166
|
+
- lib/bosh-cloudfoundry/config/redis_service_config.rb
|
167
|
+
- lib/bosh-cloudfoundry/config/system_config.rb
|
168
|
+
- lib/bosh-cloudfoundry/config_options.rb
|
169
|
+
- lib/bosh-cloudfoundry/gerrit_patches_helper.rb
|
170
|
+
- lib/bosh-cloudfoundry/providers.rb
|
171
|
+
- lib/bosh-cloudfoundry/providers/aws.rb
|
172
|
+
- lib/bosh-cloudfoundry/system_deployment_manifest_renderer.rb
|
173
|
+
- lib/bosh-cloudfoundry/version.rb
|
174
|
+
- lib/bosh/cli/commands/cf.rb
|
175
|
+
- spec/assets/.gitkeep
|
176
|
+
- spec/assets/cf-release/jobs/cloud_controller/templates/runtimes.yml
|
177
|
+
- spec/assets/deployments/aws-core-1-m1.small-free-redis.yml
|
178
|
+
- spec/assets/deployments/aws-core-1-m1.xlarge-free-postgresql-2-m1.small-free-postgresql.yml
|
179
|
+
- spec/assets/deployments/aws-core-2-m1.xlarge-dea.yml
|
180
|
+
- spec/assets/deployments/aws-core-only.yml
|
181
|
+
- spec/assets/deployments/aws-core-with-nfs.yml
|
182
|
+
- spec/functional/.gitkeep
|
183
|
+
- spec/spec_helper.rb
|
184
|
+
- spec/unit/.gitkeep
|
185
|
+
- spec/unit/bosh_release_manager_spec.rb
|
186
|
+
- spec/unit/cf_command_spec.rb
|
187
|
+
- spec/unit/config/common_config_spec.rb
|
188
|
+
- spec/unit/config/dea_config_spec.rb
|
189
|
+
- spec/unit/config/microbosh_config_spec.rb
|
190
|
+
- spec/unit/config/postgresql_service_config_spec.rb
|
191
|
+
- spec/unit/config/redis_service_config_spec.rb
|
192
|
+
- spec/unit/config/system_config_spec.rb
|
193
|
+
- spec/unit/config_options_spec.rb
|
194
|
+
- spec/unit/system_deployment_manifest_renderer_spec.rb
|
195
|
+
homepage: https://github.com/StarkAndWayne/bosh-cloudfoundry
|
196
|
+
licenses:
|
197
|
+
- MIT
|
198
|
+
post_install_message:
|
199
|
+
rdoc_options: []
|
200
|
+
require_paths:
|
201
|
+
- lib
|
202
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
203
|
+
none: false
|
204
|
+
requirements:
|
205
|
+
- - ! '>='
|
206
|
+
- !ruby/object:Gem::Version
|
207
|
+
version: '0'
|
208
|
+
segments:
|
209
|
+
- 0
|
210
|
+
hash: -3782934893958062180
|
211
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
212
|
+
none: false
|
213
|
+
requirements:
|
214
|
+
- - ! '>='
|
215
|
+
- !ruby/object:Gem::Version
|
216
|
+
version: '0'
|
217
|
+
segments:
|
218
|
+
- 0
|
219
|
+
hash: -3782934893958062180
|
220
|
+
requirements: []
|
221
|
+
rubyforge_project:
|
222
|
+
rubygems_version: 1.8.24
|
223
|
+
signing_key:
|
224
|
+
specification_version: 3
|
225
|
+
summary: Create and manage your Cloud Foundry deployments via the BOSH CLI
|
226
|
+
test_files:
|
227
|
+
- spec/assets/.gitkeep
|
228
|
+
- spec/assets/cf-release/jobs/cloud_controller/templates/runtimes.yml
|
229
|
+
- spec/assets/deployments/aws-core-1-m1.small-free-redis.yml
|
230
|
+
- spec/assets/deployments/aws-core-1-m1.xlarge-free-postgresql-2-m1.small-free-postgresql.yml
|
231
|
+
- spec/assets/deployments/aws-core-2-m1.xlarge-dea.yml
|
232
|
+
- spec/assets/deployments/aws-core-only.yml
|
233
|
+
- spec/assets/deployments/aws-core-with-nfs.yml
|
234
|
+
- spec/functional/.gitkeep
|
235
|
+
- spec/spec_helper.rb
|
236
|
+
- spec/unit/.gitkeep
|
237
|
+
- spec/unit/bosh_release_manager_spec.rb
|
238
|
+
- spec/unit/cf_command_spec.rb
|
239
|
+
- spec/unit/config/common_config_spec.rb
|
240
|
+
- spec/unit/config/dea_config_spec.rb
|
241
|
+
- spec/unit/config/microbosh_config_spec.rb
|
242
|
+
- spec/unit/config/postgresql_service_config_spec.rb
|
243
|
+
- spec/unit/config/redis_service_config_spec.rb
|
244
|
+
- spec/unit/config/system_config_spec.rb
|
245
|
+
- spec/unit/config_options_spec.rb
|
246
|
+
- spec/unit/system_deployment_manifest_renderer_spec.rb
|