bosh_cli 1.0.3 → 1.5.0.pre.1113

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.
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