bosh_cli 1.0.3 → 1.5.0.pre.1113
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/bosh +0 -9
- data/lib/cli.rb +69 -64
- data/lib/cli/backup_destination_path.rb +33 -0
- data/lib/cli/base_command.rb +57 -56
- data/lib/cli/blob_manager.rb +12 -12
- data/lib/cli/changeset_helper.rb +6 -7
- data/lib/cli/client/director.rb +724 -0
- data/lib/cli/command_handler.rb +6 -7
- data/lib/cli/commands/backup.rb +39 -0
- data/lib/cli/commands/biff.rb +42 -21
- data/lib/cli/commands/blob_management.rb +1 -1
- data/lib/cli/commands/cloudcheck.rb +11 -13
- data/lib/cli/commands/deployment.rb +53 -37
- data/lib/cli/commands/help.rb +3 -2
- data/lib/cli/commands/job_management.rb +67 -103
- data/lib/cli/commands/job_rename.rb +6 -8
- data/lib/cli/commands/log_management.rb +78 -55
- data/lib/cli/commands/maintenance.rb +36 -30
- data/lib/cli/commands/misc.rb +72 -51
- data/lib/cli/commands/package.rb +2 -2
- data/lib/cli/commands/property_management.rb +10 -12
- data/lib/cli/commands/release.rb +236 -133
- data/lib/cli/commands/snapshot.rb +93 -0
- data/lib/cli/commands/ssh.rb +216 -213
- data/lib/cli/commands/stemcell.rb +46 -34
- data/lib/cli/commands/task.rb +2 -2
- data/lib/cli/commands/user.rb +27 -3
- data/lib/cli/commands/vm.rb +28 -0
- data/lib/cli/commands/vms.rb +81 -23
- data/lib/cli/config.rb +6 -2
- data/lib/cli/core_ext.rb +31 -30
- data/lib/cli/deployment_helper.rb +134 -159
- data/lib/cli/deployment_manifest.rb +66 -0
- data/lib/cli/deployment_manifest_compiler.rb +0 -3
- data/lib/cli/event_log_renderer.rb +10 -10
- data/lib/cli/file_with_progress_bar.rb +52 -0
- data/lib/cli/job_builder.rb +1 -1
- data/lib/cli/job_command_args.rb +23 -0
- data/lib/cli/job_property_collection.rb +4 -7
- data/lib/cli/job_property_validator.rb +22 -12
- data/lib/cli/job_state.rb +54 -0
- data/lib/cli/line_wrap.rb +54 -0
- data/lib/cli/packaging_helper.rb +10 -10
- data/lib/cli/release.rb +18 -15
- data/lib/cli/release_builder.rb +9 -4
- data/lib/cli/release_compiler.rb +9 -9
- data/lib/cli/release_tarball.rb +3 -6
- data/lib/cli/resurrection.rb +31 -0
- data/lib/cli/runner.rb +56 -30
- data/lib/cli/stemcell.rb +25 -10
- data/lib/cli/task_log_renderer.rb +1 -1
- data/lib/cli/task_tracker.rb +10 -9
- data/lib/cli/validation.rb +3 -1
- data/lib/cli/version.rb +1 -1
- data/lib/cli/version_calc.rb +5 -18
- data/lib/cli/versions_index.rb +1 -1
- data/lib/cli/vm_state.rb +43 -0
- data/lib/cli/yaml_helper.rb +26 -35
- metadata +75 -208
- data/Rakefile +0 -56
- data/lib/cli/director.rb +0 -628
- data/spec/assets/biff/bad_gateway_config.yml +0 -28
- data/spec/assets/biff/good_simple_config.yml +0 -63
- data/spec/assets/biff/good_simple_golden_config.yml +0 -63
- data/spec/assets/biff/good_simple_template.erb +0 -69
- data/spec/assets/biff/ip_out_of_range.yml +0 -63
- data/spec/assets/biff/multiple_subnets_config.yml +0 -40
- data/spec/assets/biff/network_only_template.erb +0 -34
- data/spec/assets/biff/no_cc_config.yml +0 -27
- data/spec/assets/biff/no_range_config.yml +0 -27
- data/spec/assets/biff/no_subnet_config.yml +0 -16
- data/spec/assets/biff/ok_network_config.yml +0 -30
- data/spec/assets/biff/properties_template.erb +0 -6
- data/spec/assets/config/atmos/config/final.yml +0 -6
- data/spec/assets/config/atmos/config/private.yml +0 -4
- data/spec/assets/config/bad-providers/config/final.yml +0 -5
- data/spec/assets/config/bad-providers/config/private.yml +0 -4
- data/spec/assets/config/deprecation/config/final.yml +0 -5
- data/spec/assets/config/deprecation/config/private.yml +0 -2
- data/spec/assets/config/local/config/final.yml +0 -5
- data/spec/assets/config/local/config/private.yml +0 -1
- data/spec/assets/config/s3/config/final.yml +0 -5
- data/spec/assets/config/s3/config/private.yml +0 -5
- data/spec/assets/config/swift-hp/config/final.yml +0 -6
- data/spec/assets/config/swift-hp/config/private.yml +0 -7
- data/spec/assets/config/swift-rackspace/config/final.yml +0 -6
- data/spec/assets/config/swift-rackspace/config/private.yml +0 -6
- data/spec/assets/deployment.MF +0 -0
- data/spec/assets/plugins/bosh/cli/commands/echo.rb +0 -43
- data/spec/assets/plugins/bosh/cli/commands/ruby.rb +0 -24
- data/spec/assets/release/jobs/cacher.tgz +0 -0
- data/spec/assets/release/jobs/cacher/config/file1.conf +0 -0
- data/spec/assets/release/jobs/cacher/config/file2.conf +0 -0
- data/spec/assets/release/jobs/cacher/job.MF +0 -6
- data/spec/assets/release/jobs/cacher/monit +0 -1
- data/spec/assets/release/jobs/cleaner.tgz +0 -0
- data/spec/assets/release/jobs/cleaner/job.MF +0 -4
- data/spec/assets/release/jobs/cleaner/monit +0 -1
- data/spec/assets/release/jobs/sweeper.tgz +0 -0
- data/spec/assets/release/jobs/sweeper/config/test.conf +0 -1
- data/spec/assets/release/jobs/sweeper/job.MF +0 -5
- data/spec/assets/release/jobs/sweeper/monit +0 -1
- data/spec/assets/release/packages/mutator.tar.gz +0 -0
- data/spec/assets/release/packages/stuff.tgz +0 -0
- data/spec/assets/release/release.MF +0 -17
- data/spec/assets/release_invalid_checksum.tgz +0 -0
- data/spec/assets/release_invalid_jobs.tgz +0 -0
- data/spec/assets/release_no_name.tgz +0 -0
- data/spec/assets/release_no_version.tgz +0 -0
- data/spec/assets/stemcell/image +0 -1
- data/spec/assets/stemcell/stemcell.MF +0 -6
- data/spec/assets/stemcell_invalid_mf.tgz +0 -0
- data/spec/assets/stemcell_no_image.tgz +0 -0
- data/spec/assets/valid_release.tgz +0 -0
- data/spec/assets/valid_stemcell.tgz +0 -0
- data/spec/spec_helper.rb +0 -28
- data/spec/unit/base_command_spec.rb +0 -87
- data/spec/unit/biff_spec.rb +0 -172
- data/spec/unit/blob_manager_spec.rb +0 -288
- data/spec/unit/cache_spec.rb +0 -36
- data/spec/unit/cli_commands_spec.rb +0 -356
- data/spec/unit/config_spec.rb +0 -125
- data/spec/unit/core_ext_spec.rb +0 -81
- data/spec/unit/dependency_helper_spec.rb +0 -52
- data/spec/unit/deployment_manifest_compiler_spec.rb +0 -63
- data/spec/unit/deployment_manifest_spec.rb +0 -153
- data/spec/unit/director_spec.rb +0 -471
- data/spec/unit/director_task_spec.rb +0 -48
- data/spec/unit/event_log_renderer_spec.rb +0 -171
- data/spec/unit/hash_changeset_spec.rb +0 -73
- data/spec/unit/job_builder_spec.rb +0 -455
- data/spec/unit/job_property_collection_spec.rb +0 -111
- data/spec/unit/job_property_validator_spec.rb +0 -7
- data/spec/unit/job_rename_spec.rb +0 -200
- data/spec/unit/package_builder_spec.rb +0 -593
- data/spec/unit/release_builder_spec.rb +0 -120
- data/spec/unit/release_spec.rb +0 -173
- data/spec/unit/release_tarball_spec.rb +0 -29
- data/spec/unit/runner_spec.rb +0 -7
- data/spec/unit/ssh_spec.rb +0 -84
- data/spec/unit/stemcell_spec.rb +0 -17
- data/spec/unit/task_tracker_spec.rb +0 -131
- data/spec/unit/version_calc_spec.rb +0 -27
- data/spec/unit/versions_index_spec.rb +0 -144
@@ -1,27 +0,0 @@
|
|
1
|
-
# Copyright (c) 2009-2012 VMware, Inc.
|
2
|
-
|
3
|
-
require "spec_helper"
|
4
|
-
|
5
|
-
describe Bosh::Cli::VersionCalc do
|
6
|
-
|
7
|
-
before :each do
|
8
|
-
@obj = Object.new.extend(Bosh::Cli::VersionCalc)
|
9
|
-
end
|
10
|
-
|
11
|
-
it "can compare versions" do
|
12
|
-
@obj.version_cmp("1.2", "1.2").should == 0
|
13
|
-
@obj.version_cmp("1.3", "1.2").should == 1
|
14
|
-
@obj.version_cmp("0.1.7", "0.9.2").should == -1
|
15
|
-
@obj.version_cmp("0.1.7.5", "0.1.7").should == 1
|
16
|
-
@obj.version_cmp("0.1.7.4.9.9", "0.1.7.5").should == -1
|
17
|
-
|
18
|
-
@obj.version_cmp(10, 11).should == -1
|
19
|
-
@obj.version_cmp(43, 42).should == 1
|
20
|
-
@obj.version_cmp(7, 7).should == 0
|
21
|
-
|
22
|
-
@obj.version_cmp("10.9-dev", "10.10-dev").should == -1
|
23
|
-
@obj.version_cmp("0.2.3", "0.2.3.0.8").should == -1
|
24
|
-
@obj.version_cmp("0.2.3-dev", "0.2.3.0.3-dev").should == -1
|
25
|
-
end
|
26
|
-
|
27
|
-
end
|
@@ -1,144 +0,0 @@
|
|
1
|
-
# Copyright (c) 2009-2012 VMware, Inc.
|
2
|
-
|
3
|
-
require "spec_helper"
|
4
|
-
|
5
|
-
describe Bosh::Cli::VersionsIndex do
|
6
|
-
|
7
|
-
before :each do
|
8
|
-
@dir = Dir.mktmpdir
|
9
|
-
@index_file = File.join(@dir, "index.yml")
|
10
|
-
@index = Bosh::Cli::VersionsIndex.new(@dir)
|
11
|
-
end
|
12
|
-
|
13
|
-
after :each do
|
14
|
-
FileUtils.rm_rf(@dir)
|
15
|
-
end
|
16
|
-
|
17
|
-
it "only creates directory structure on writes to index" do
|
18
|
-
File.exists?(@index_file).should be_false
|
19
|
-
@index.version_exists?(1).should be_false
|
20
|
-
@index["deadbeef"].should be_nil
|
21
|
-
@index.latest_version.should be_nil
|
22
|
-
File.exists?(@index_file).should be_false
|
23
|
-
|
24
|
-
@index.add_version("deadcafe",
|
25
|
-
{ "version" => 2 },
|
26
|
-
get_tmp_file_path("payload2"))
|
27
|
-
File.exists?(@index_file).should be_true
|
28
|
-
end
|
29
|
-
|
30
|
-
it "chokes on malformed index file" do
|
31
|
-
File.open(@index_file, "w") { |f| f.write("deadbeef") }
|
32
|
-
|
33
|
-
lambda {
|
34
|
-
@index = Bosh::Cli::VersionsIndex.new(@dir)
|
35
|
-
}.should raise_error(Bosh::Cli::InvalidIndex,
|
36
|
-
"Invalid versions index data type, " +
|
37
|
-
"String given, Hash expected")
|
38
|
-
end
|
39
|
-
|
40
|
-
it "doesn't choke on empty index file" do
|
41
|
-
File.open(@index_file, "w") { |f| f.write("") }
|
42
|
-
@index = Bosh::Cli::VersionsIndex.new(@dir)
|
43
|
-
@index.latest_version.should be_nil
|
44
|
-
end
|
45
|
-
|
46
|
-
it "can be used to add versioned payloads to index" do
|
47
|
-
item1 = { "a" => 1, "b" => 2, "version" => 1 }
|
48
|
-
item2 = { "a" => 3, "b" => 4, "version" => 2 }
|
49
|
-
|
50
|
-
@index.add_version("deadbeef",
|
51
|
-
item1,
|
52
|
-
get_tmp_file_path("payload1"))
|
53
|
-
@index.add_version("deadcafe",
|
54
|
-
item2,
|
55
|
-
get_tmp_file_path("payload2"))
|
56
|
-
|
57
|
-
@index.latest_version.should == 2
|
58
|
-
@index["deadbeef"].should ==
|
59
|
-
item1.merge("sha1" => Digest::SHA1.hexdigest("payload1"))
|
60
|
-
@index["deadcafe"].should ==
|
61
|
-
item2.merge("sha1" => Digest::SHA1.hexdigest("payload2"))
|
62
|
-
@index.version_exists?(1).should be_true
|
63
|
-
@index.version_exists?(2).should be_true
|
64
|
-
@index.version_exists?(3).should be_false
|
65
|
-
|
66
|
-
@index.filename(1).should == File.join(@dir, "1.tgz")
|
67
|
-
@index.filename(2).should == File.join(@dir, "2.tgz")
|
68
|
-
end
|
69
|
-
|
70
|
-
it "you shall not pass without version" do
|
71
|
-
item_noversion = { "a" => 1, "b" => 2 }
|
72
|
-
lambda {
|
73
|
-
@index.add_version("deadbeef", item_noversion, "payload1")
|
74
|
-
}.should raise_error(Bosh::Cli::InvalidIndex,
|
75
|
-
"Cannot save index entry without knowing its version")
|
76
|
-
end
|
77
|
-
|
78
|
-
it "latest version only gets updated if it's greater than current latest" do
|
79
|
-
item1 = { "a" => 1, "b" => 2, "version" => 1 }
|
80
|
-
item2 = { "a" => 3, "b" => 4, "version" => 2 }
|
81
|
-
item3 = { "a" => 3, "b" => 4, "version" => 3 }
|
82
|
-
|
83
|
-
@index.add_version("deadbeef", item1, get_tmp_file_path("payload1"))
|
84
|
-
@index.add_version("deadcafe", item2, get_tmp_file_path("payload2"))
|
85
|
-
@index.latest_version.should == 2
|
86
|
-
@index.add_version("addedface", item3, get_tmp_file_path("payload2"))
|
87
|
-
@index.latest_version.should == 3
|
88
|
-
@index.add_version("facedbeef",
|
89
|
-
item1.merge("version" => "1.5"),
|
90
|
-
get_tmp_file_path("payload3"))
|
91
|
-
@index.latest_version.should == 3
|
92
|
-
end
|
93
|
-
|
94
|
-
it "supports dev versions and proper version comparison when updating latest version" do
|
95
|
-
item1 = { "a" => 1, "b" => 2, "version" => "1.9-dev" }
|
96
|
-
item2 = { "a" => 3, "b" => 4, "version" => "1.8-dev" }
|
97
|
-
item3 = { "a" => 3, "b" => 4, "version" => "1.10-dev" }
|
98
|
-
|
99
|
-
@index.add_version("deadbeef", item1, get_tmp_file_path("payload1"))
|
100
|
-
@index.add_version("deadcafe", item2, get_tmp_file_path("payload2"))
|
101
|
-
@index.latest_version.should == "1.9-dev"
|
102
|
-
@index.add_version("facedead", item3, get_tmp_file_path("payload2"))
|
103
|
-
@index.latest_version.should == "1.10-dev"
|
104
|
-
@index.add_version("badbed",
|
105
|
-
item1.merge("version" => "2.15-dev"),
|
106
|
-
get_tmp_file_path("payload3"))
|
107
|
-
@index.latest_version.should == "2.15-dev"
|
108
|
-
end
|
109
|
-
|
110
|
-
it "doesn't allow duplicate fingerprints or versions" do
|
111
|
-
item1 = { "a" => 1, "b" => 2, "version" => "1.9-dev" }
|
112
|
-
item2 = { "a" => 3, "b" => 4, "version" => "1.8-dev" }
|
113
|
-
|
114
|
-
@index.add_version("deadbeef", item1, get_tmp_file_path("payload1"))
|
115
|
-
|
116
|
-
lambda {
|
117
|
-
@index.add_version("deadcafe", item1, get_tmp_file_path("payload3"))
|
118
|
-
}.should raise_error("Trying to add duplicate version `1.9-dev' " +
|
119
|
-
"into index `#{File.join(@dir, "index.yml")}'")
|
120
|
-
end
|
121
|
-
|
122
|
-
it "supports finding entries by checksum" do
|
123
|
-
item1 = { "a" => 1, "b" => 2, "version" => 1 }
|
124
|
-
item2 = { "a" => 3, "b" => 4, "version" => 2 }
|
125
|
-
|
126
|
-
@index.add_version("deadbeef", item1, get_tmp_file_path("payload1"))
|
127
|
-
@index.add_version("deadcafe", item2, get_tmp_file_path("payload2"))
|
128
|
-
|
129
|
-
checksum1 = Digest::SHA1.hexdigest("payload1")
|
130
|
-
checksum2 = Digest::SHA1.hexdigest("payload2")
|
131
|
-
|
132
|
-
@index.find_by_checksum(checksum1).should == item1.merge("sha1" => checksum1)
|
133
|
-
@index.find_by_checksum(checksum2).should == item2.merge("sha1" => checksum2)
|
134
|
-
end
|
135
|
-
|
136
|
-
it "supports name prefix" do
|
137
|
-
item = { "a" => 1, "b" => 2, "version" => 1 }
|
138
|
-
|
139
|
-
@index = Bosh::Cli::VersionsIndex.new(@dir, "foobar")
|
140
|
-
@index.add_version("deadbeef", item, get_tmp_file_path("payload1"))
|
141
|
-
@index.filename(1).should == File.join(@dir, "foobar-1.tgz")
|
142
|
-
end
|
143
|
-
|
144
|
-
end
|