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.
Files changed (144) hide show
  1. data/bin/bosh +0 -9
  2. data/lib/cli.rb +69 -64
  3. data/lib/cli/backup_destination_path.rb +33 -0
  4. data/lib/cli/base_command.rb +57 -56
  5. data/lib/cli/blob_manager.rb +12 -12
  6. data/lib/cli/changeset_helper.rb +6 -7
  7. data/lib/cli/client/director.rb +724 -0
  8. data/lib/cli/command_handler.rb +6 -7
  9. data/lib/cli/commands/backup.rb +39 -0
  10. data/lib/cli/commands/biff.rb +42 -21
  11. data/lib/cli/commands/blob_management.rb +1 -1
  12. data/lib/cli/commands/cloudcheck.rb +11 -13
  13. data/lib/cli/commands/deployment.rb +53 -37
  14. data/lib/cli/commands/help.rb +3 -2
  15. data/lib/cli/commands/job_management.rb +67 -103
  16. data/lib/cli/commands/job_rename.rb +6 -8
  17. data/lib/cli/commands/log_management.rb +78 -55
  18. data/lib/cli/commands/maintenance.rb +36 -30
  19. data/lib/cli/commands/misc.rb +72 -51
  20. data/lib/cli/commands/package.rb +2 -2
  21. data/lib/cli/commands/property_management.rb +10 -12
  22. data/lib/cli/commands/release.rb +236 -133
  23. data/lib/cli/commands/snapshot.rb +93 -0
  24. data/lib/cli/commands/ssh.rb +216 -213
  25. data/lib/cli/commands/stemcell.rb +46 -34
  26. data/lib/cli/commands/task.rb +2 -2
  27. data/lib/cli/commands/user.rb +27 -3
  28. data/lib/cli/commands/vm.rb +28 -0
  29. data/lib/cli/commands/vms.rb +81 -23
  30. data/lib/cli/config.rb +6 -2
  31. data/lib/cli/core_ext.rb +31 -30
  32. data/lib/cli/deployment_helper.rb +134 -159
  33. data/lib/cli/deployment_manifest.rb +66 -0
  34. data/lib/cli/deployment_manifest_compiler.rb +0 -3
  35. data/lib/cli/event_log_renderer.rb +10 -10
  36. data/lib/cli/file_with_progress_bar.rb +52 -0
  37. data/lib/cli/job_builder.rb +1 -1
  38. data/lib/cli/job_command_args.rb +23 -0
  39. data/lib/cli/job_property_collection.rb +4 -7
  40. data/lib/cli/job_property_validator.rb +22 -12
  41. data/lib/cli/job_state.rb +54 -0
  42. data/lib/cli/line_wrap.rb +54 -0
  43. data/lib/cli/packaging_helper.rb +10 -10
  44. data/lib/cli/release.rb +18 -15
  45. data/lib/cli/release_builder.rb +9 -4
  46. data/lib/cli/release_compiler.rb +9 -9
  47. data/lib/cli/release_tarball.rb +3 -6
  48. data/lib/cli/resurrection.rb +31 -0
  49. data/lib/cli/runner.rb +56 -30
  50. data/lib/cli/stemcell.rb +25 -10
  51. data/lib/cli/task_log_renderer.rb +1 -1
  52. data/lib/cli/task_tracker.rb +10 -9
  53. data/lib/cli/validation.rb +3 -1
  54. data/lib/cli/version.rb +1 -1
  55. data/lib/cli/version_calc.rb +5 -18
  56. data/lib/cli/versions_index.rb +1 -1
  57. data/lib/cli/vm_state.rb +43 -0
  58. data/lib/cli/yaml_helper.rb +26 -35
  59. metadata +75 -208
  60. data/Rakefile +0 -56
  61. data/lib/cli/director.rb +0 -628
  62. data/spec/assets/biff/bad_gateway_config.yml +0 -28
  63. data/spec/assets/biff/good_simple_config.yml +0 -63
  64. data/spec/assets/biff/good_simple_golden_config.yml +0 -63
  65. data/spec/assets/biff/good_simple_template.erb +0 -69
  66. data/spec/assets/biff/ip_out_of_range.yml +0 -63
  67. data/spec/assets/biff/multiple_subnets_config.yml +0 -40
  68. data/spec/assets/biff/network_only_template.erb +0 -34
  69. data/spec/assets/biff/no_cc_config.yml +0 -27
  70. data/spec/assets/biff/no_range_config.yml +0 -27
  71. data/spec/assets/biff/no_subnet_config.yml +0 -16
  72. data/spec/assets/biff/ok_network_config.yml +0 -30
  73. data/spec/assets/biff/properties_template.erb +0 -6
  74. data/spec/assets/config/atmos/config/final.yml +0 -6
  75. data/spec/assets/config/atmos/config/private.yml +0 -4
  76. data/spec/assets/config/bad-providers/config/final.yml +0 -5
  77. data/spec/assets/config/bad-providers/config/private.yml +0 -4
  78. data/spec/assets/config/deprecation/config/final.yml +0 -5
  79. data/spec/assets/config/deprecation/config/private.yml +0 -2
  80. data/spec/assets/config/local/config/final.yml +0 -5
  81. data/spec/assets/config/local/config/private.yml +0 -1
  82. data/spec/assets/config/s3/config/final.yml +0 -5
  83. data/spec/assets/config/s3/config/private.yml +0 -5
  84. data/spec/assets/config/swift-hp/config/final.yml +0 -6
  85. data/spec/assets/config/swift-hp/config/private.yml +0 -7
  86. data/spec/assets/config/swift-rackspace/config/final.yml +0 -6
  87. data/spec/assets/config/swift-rackspace/config/private.yml +0 -6
  88. data/spec/assets/deployment.MF +0 -0
  89. data/spec/assets/plugins/bosh/cli/commands/echo.rb +0 -43
  90. data/spec/assets/plugins/bosh/cli/commands/ruby.rb +0 -24
  91. data/spec/assets/release/jobs/cacher.tgz +0 -0
  92. data/spec/assets/release/jobs/cacher/config/file1.conf +0 -0
  93. data/spec/assets/release/jobs/cacher/config/file2.conf +0 -0
  94. data/spec/assets/release/jobs/cacher/job.MF +0 -6
  95. data/spec/assets/release/jobs/cacher/monit +0 -1
  96. data/spec/assets/release/jobs/cleaner.tgz +0 -0
  97. data/spec/assets/release/jobs/cleaner/job.MF +0 -4
  98. data/spec/assets/release/jobs/cleaner/monit +0 -1
  99. data/spec/assets/release/jobs/sweeper.tgz +0 -0
  100. data/spec/assets/release/jobs/sweeper/config/test.conf +0 -1
  101. data/spec/assets/release/jobs/sweeper/job.MF +0 -5
  102. data/spec/assets/release/jobs/sweeper/monit +0 -1
  103. data/spec/assets/release/packages/mutator.tar.gz +0 -0
  104. data/spec/assets/release/packages/stuff.tgz +0 -0
  105. data/spec/assets/release/release.MF +0 -17
  106. data/spec/assets/release_invalid_checksum.tgz +0 -0
  107. data/spec/assets/release_invalid_jobs.tgz +0 -0
  108. data/spec/assets/release_no_name.tgz +0 -0
  109. data/spec/assets/release_no_version.tgz +0 -0
  110. data/spec/assets/stemcell/image +0 -1
  111. data/spec/assets/stemcell/stemcell.MF +0 -6
  112. data/spec/assets/stemcell_invalid_mf.tgz +0 -0
  113. data/spec/assets/stemcell_no_image.tgz +0 -0
  114. data/spec/assets/valid_release.tgz +0 -0
  115. data/spec/assets/valid_stemcell.tgz +0 -0
  116. data/spec/spec_helper.rb +0 -28
  117. data/spec/unit/base_command_spec.rb +0 -87
  118. data/spec/unit/biff_spec.rb +0 -172
  119. data/spec/unit/blob_manager_spec.rb +0 -288
  120. data/spec/unit/cache_spec.rb +0 -36
  121. data/spec/unit/cli_commands_spec.rb +0 -356
  122. data/spec/unit/config_spec.rb +0 -125
  123. data/spec/unit/core_ext_spec.rb +0 -81
  124. data/spec/unit/dependency_helper_spec.rb +0 -52
  125. data/spec/unit/deployment_manifest_compiler_spec.rb +0 -63
  126. data/spec/unit/deployment_manifest_spec.rb +0 -153
  127. data/spec/unit/director_spec.rb +0 -471
  128. data/spec/unit/director_task_spec.rb +0 -48
  129. data/spec/unit/event_log_renderer_spec.rb +0 -171
  130. data/spec/unit/hash_changeset_spec.rb +0 -73
  131. data/spec/unit/job_builder_spec.rb +0 -455
  132. data/spec/unit/job_property_collection_spec.rb +0 -111
  133. data/spec/unit/job_property_validator_spec.rb +0 -7
  134. data/spec/unit/job_rename_spec.rb +0 -200
  135. data/spec/unit/package_builder_spec.rb +0 -593
  136. data/spec/unit/release_builder_spec.rb +0 -120
  137. data/spec/unit/release_spec.rb +0 -173
  138. data/spec/unit/release_tarball_spec.rb +0 -29
  139. data/spec/unit/runner_spec.rb +0 -7
  140. data/spec/unit/ssh_spec.rb +0 -84
  141. data/spec/unit/stemcell_spec.rb +0 -17
  142. data/spec/unit/task_tracker_spec.rb +0 -131
  143. data/spec/unit/version_calc_spec.rb +0 -27
  144. 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