vanagon 0.16.0 → 0.19.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.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +48 -23
  3. data/bin/build +3 -1
  4. data/bin/build_host_info +3 -1
  5. data/bin/build_requirements +3 -1
  6. data/bin/inspect +3 -1
  7. data/bin/render +3 -1
  8. data/bin/repo +3 -1
  9. data/bin/ship +3 -1
  10. data/bin/sign +3 -1
  11. data/extras/completions/vanagon.bash +38 -0
  12. data/extras/completions/vanagon.zsh +41 -0
  13. data/lib/vanagon/cli.rb +12 -2
  14. data/lib/vanagon/cli/build.rb +12 -3
  15. data/lib/vanagon/cli/build_host_info.rb +12 -3
  16. data/lib/vanagon/cli/build_requirements.rb +13 -5
  17. data/lib/vanagon/cli/completion.rb +44 -0
  18. data/lib/vanagon/cli/inspect.rb +12 -3
  19. data/lib/vanagon/cli/list.rb +74 -0
  20. data/lib/vanagon/cli/render.rb +11 -2
  21. data/lib/vanagon/cli/ship.rb +6 -5
  22. data/lib/vanagon/cli/sign.rb +3 -2
  23. data/lib/vanagon/component.rb +11 -9
  24. data/lib/vanagon/component/dsl.rb +6 -5
  25. data/lib/vanagon/component/source.rb +2 -1
  26. data/lib/vanagon/component/source/git.rb +7 -6
  27. data/lib/vanagon/component/source/http.rb +3 -2
  28. data/lib/vanagon/component/source/local.rb +2 -1
  29. data/lib/vanagon/component/source/rewrite.rb +3 -2
  30. data/lib/vanagon/driver.rb +35 -34
  31. data/lib/vanagon/engine/always_be_scheduling.rb +272 -1
  32. data/lib/vanagon/engine/docker.rb +2 -1
  33. data/lib/vanagon/engine/ec2.rb +5 -4
  34. data/lib/vanagon/engine/hardware.rb +4 -3
  35. data/lib/vanagon/engine/pooler.rb +13 -8
  36. data/lib/vanagon/environment.rb +3 -2
  37. data/lib/vanagon/logger.rb +31 -0
  38. data/lib/vanagon/platform.rb +6 -5
  39. data/lib/vanagon/platform/deb.rb +2 -0
  40. data/lib/vanagon/platform/dsl.rb +5 -4
  41. data/lib/vanagon/platform/windows.rb +3 -1
  42. data/lib/vanagon/project.rb +20 -14
  43. data/lib/vanagon/project/dsl.rb +6 -5
  44. data/lib/vanagon/utilities.rb +35 -12
  45. data/resources/deb/control.erb +1 -1
  46. data/resources/osx/postinstall.erb +5 -1
  47. data/resources/rpm/project.spec.erb +1 -1
  48. data/resources/solaris/10/depend.erb +2 -2
  49. data/resources/solaris/10/postinstall.erb +10 -2
  50. data/resources/solaris/11/p5m.erb +2 -2
  51. data/spec/lib/vanagon/cli_spec.rb +143 -0
  52. data/spec/lib/vanagon/component/dsl_spec.rb +9 -2
  53. data/spec/lib/vanagon/component_spec.rb +3 -2
  54. data/spec/lib/vanagon/driver_spec.rb +1 -1
  55. data/spec/lib/vanagon/engine/always_be_scheduling_spec.rb +113 -1
  56. data/spec/lib/vanagon/engine/ec2_spec.rb +2 -0
  57. data/spec/lib/vanagon/engine/pooler_spec.rb +1 -1
  58. data/spec/spec_helper.rb +1 -0
  59. metadata +32 -27
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2fff2c855cb0a9c8555e584f43fe29baa5cc6da9c9d2e938cc077c7049c8e2bf
4
- data.tar.gz: 1ee6759c62df9a9eb6c5bf1614c8543ab8a0ff625f444e67471499638745322c
3
+ metadata.gz: 607d97840532f0417fd81348a7decb7fbc8e86791fee5e11f8ef53350600d5b4
4
+ data.tar.gz: c03e5996707781aa956b29599e788b55c7c1cde5cfc707a261d4a22eec3c16f2
5
5
  SHA512:
6
- metadata.gz: 3fe34a4441dd96772e3c9e6b7a824090b27b898b059f7b08996d8ab8dc5ad695c889e91bbe322829fb2b2359a53a191cf78ac8cfba0ac68a0ce938cc12d5b5db
7
- data.tar.gz: 996e0265bfb18a929a44348ef287139fb076d9b351b80e4b99e3a26b16624efafb246bff9fb7a90fdc699b004f934df677a0fc0cee8fd71eee4cb8b984f1c353
6
+ metadata.gz: f59b39738804c83787514f2662a9ba40343d126de298b9b01b4a97cd4d5195ad6c14c0255049fdf002bcb72fa5fa8b27a57983853219a8eddd35dac9cf08030d
7
+ data.tar.gz: ea3ac00e2beb1919372cde8c74bacc22d68dab5911c0f7cd2c14091153cd0aff3592446bcfac21f77a4c7569299cd2927a3437ee2cfdc3814cb85dc480c42704
data/README.md CHANGED
@@ -45,9 +45,10 @@ Also, Vanagon ships with a number of engines which may include additional option
45
45
 
46
46
  ### Local Host:
47
47
 
48
- - [Ruby](https://www.ruby-lang.org/en/) (Ruby 2.1.x is the miniumum supported version)
48
+ - [Ruby](https://www.ruby-lang.org/en/) (Ruby 2.3.x is the miniumum supported version)
49
49
  - [fustigit](https://github.com/mckern/fustigit)
50
50
  - [ruby-git](https://github.com/schacon/ruby-git)
51
+ - [docopt](https://github.com/docopt/docopt.rb)
51
52
  - The command line tool `ssh` ([homepage](https://www.openssh.com/)) available on the local `${PATH}` (any modern version should suffice)
52
53
  - The command line tool `rsync` ([homepage](https://rsync.samba.org/)) available on the local `${PATH}` (At least rsync 2.6.x)
53
54
  - The command line tool `git` ([homepage](https://git-scm.com/)) available on the local `${PATH}` (Vanagon is tested against Git version 1.8.x but should work with any newer version)
@@ -84,10 +85,28 @@ wheezy and build my project against it.
84
85
  For more detailed examples of the DSLs available, please see the
85
86
  [examples](examples) directory and the YARD documentation for Vanagon.
86
87
 
87
- ### `build` usage
88
+ ### CLI changes and deprecations (from version 0.16.0)
89
+
90
+ Prior to 0.16.0, the vanagon command line contained these commands
91
+
92
+ * `build`
93
+ * `build_host_info`
94
+ * `build_requirements`
95
+ * `inspect`
96
+ * `render`
97
+ * `repo`
98
+ * `ship`
99
+ * `sign`
100
+
101
+ With the exception of `repo`, which calls `packaging` methods, the remaining commands
102
+ have been moved to a git-like pattern of `vanagon <subcommand>`. `vangon build` replaced `build`, `vanagon ship` replaced `ship` and so forth.
103
+
104
+ The older calling usage is deprecated.
105
+
106
+ ### `vanagon build` usage
88
107
  The build command has positional arguments and position independent flags.
89
108
 
90
- #### Arguments (position dependent)
109
+ #### Positional arguments
91
110
 
92
111
  ##### project name
93
112
  The name of the project to build; a file named `<project_name>.rb` must be
@@ -114,7 +133,8 @@ Build machines should be cleaned between builds.
114
133
 
115
134
  #### Flagged arguments
116
135
 
117
- **Note:** command flags can be used anywhere in the command.
136
+ **Note:** command flags currently can be used anywhere in the command. Recommended usages
137
+ is to use flagged arguments before the positional arguments.
118
138
 
119
139
  ##### -w DIR, --workdir DIR
120
140
  Specifies a directory on the local host where the sources should be placed and builds performed.
@@ -134,9 +154,10 @@ Currently supported engines are:
134
154
  * `base` - Pure ssh backend; no teardown currently defined
135
155
  * `local` - Build on the local machine; platform name must match the local machine
136
156
  * `docker` - Builds in a docker container
137
- * `pooler` - Selects a vm from Puppet Labs' vm pooler to build on
157
+ * `pooler` - Selects a vm from Puppet's internal vmpooler to build on
138
158
  * `hardware` - Build on a specific taget and lock it in redis
139
159
  * `ec2` - Build on a specific AWS instance.
160
+ * `ABS` - Selects a vm from Puppet's internal Always-be-scheduling service to build on
140
161
 
141
162
  #### Flags
142
163
 
@@ -147,9 +168,6 @@ Indicates that the host used for building the project should be left intact
147
168
  after the build instead of destroyed. The host is usually destroyed after a
148
169
  successful build, or left after a failed build.
149
170
 
150
- ##### -v, --verbose
151
- (Reserved for future implementation) Will increase the verbosity of output, when implemented.
152
-
153
171
  ##### -h, --help
154
172
  Display command-line help.
155
173
 
@@ -195,16 +213,16 @@ integer value these components to fail after the `VANAGON_TIMEOUT` count is reac
195
213
  Note that this value is expected to be in seconds.
196
214
 
197
215
  #### Example usage
198
- `build --preserve puppet-agent el-6-i386` will build the puppet-agent project
216
+ `vanagon build --preserve puppet-agent el-6-i386` will build the puppet-agent project
199
217
  on the el-6-i386 platform and leave the host intact afterward.
200
218
 
201
- `build --engine=docker puppet-agent el-6-i386` will build the puppet-agent
219
+ `vanagon build --engine=docker puppet-agent el-6-i386` will build the puppet-agent
202
220
  project on the el-6-i386 platform using the docker engine (the platform must
203
221
  have a docker\_image defined in its config).
204
222
 
205
223
  ---
206
224
 
207
- ### `inspect` usage
225
+ ### `vanagon inspect` usage
208
226
 
209
227
  The `inspect` command has positional arguments and position independent flags. It
210
228
  mirrors the `build` command, but exits with success after loading and interpolating
@@ -212,7 +230,7 @@ all of the components in the given project. No attempt is made to actually build
212
230
  the given project; instead, a JSON formatted array of hashes is returned and printed
213
231
  to `stdout`. This JSON array can be further processed by external tooling, such as `jq`.
214
232
 
215
- #### Arguments (position dependent)
233
+ #### Positional arguments
216
234
 
217
235
  ##### project name
218
236
  The name of the project to build, and a file named \<project\_name\>.rb must be
@@ -227,7 +245,8 @@ Platform can also be a comma separated list of platforms such as platform1,platf
227
245
 
228
246
  #### Flagged arguments
229
247
 
230
- **Note:** command flags can be used anywhere in the command.
248
+ **Note:** command flags currently can be used anywhere in the command. Recommended usages
249
+ is to use flagged arguments before the positional arguments.
231
250
 
232
251
  ##### -w DIR, --workdir DIR
233
252
  Specifies a directory where the sources should be placed and builds performed.
@@ -239,29 +258,24 @@ Specifies where project configuration is found. Defaults to $pwd/configs.
239
258
  ##### -e ENGINE, --engine ENGINE
240
259
  Choose a different virtualization engine to use to select the build target.
241
260
  Engines are respected, but only insofar as components and projects are
242
- rendered -- the `inspect` command performs no compilation.
261
+ rendered -- the `vanagon inspect` command performs no compilation.
243
262
 
244
- Supported engines are the same as the `build` command.
263
+ Supported engines are the same as the `vanagon build` command.
245
264
 
246
265
  #### Flags
247
266
 
248
- **Note:** command flags can be used anywhere in the command.
249
-
250
- ##### -v, --verbose (not yet implemented)
251
- Increase verbosity of output.
252
-
253
267
  ##### -h, --help
254
268
  Display command-line help.
255
269
 
256
270
  #### Environment variables
257
271
 
258
272
  Environment variables are respected, but only insofar as components and projects are
259
- rendered -- the `inspect` command has no behavior to alter.
273
+ rendered -- the `vanagon inspect` command has no behavior to alter.
260
274
 
261
- Supported environment variables are the same as the `build` command.
275
+ Supported environment variables are the same as the `vanagon build` command.
262
276
 
263
277
  #### Example usage
264
- `inspect puppet-agent el-6-i386` will load the puppet-agent project
278
+ `vanagon inspect puppet-agent el-6-i386` will load the puppet-agent project
265
279
  on the el-6-i386 platform and print the resulting list of dependencies,
266
280
  build-time configuration, environment variables, and expected artifacts.
267
281
 
@@ -297,6 +311,16 @@ platform "el-7-x86_64" do |plat|
297
311
  end
298
312
  ```
299
313
 
314
+ ### ABS (internal)
315
+ When using the ABS engine, there is a variety of ways you can specify your token:
316
+ - the environment variable ABS_TOKEN
317
+ - or vanagon token file ~/.vanagon-token (note this is the same file read by the pooler engine)
318
+ - or [vmfloaty](https://github.com/puppetlabs/vmfloaty)'s config file ~/.vmfloaty.yml
319
+
320
+ In order to modify or track the VM via floaty or bit-bar you can optionally add the vmpooler token (different from the ABS token) via
321
+ - VMPOOLER_TOKEN
322
+ - or as a second line to the file ~/.vanagon-token
323
+ - or by using the existing mechanism in floaty using a vmpooler_fallback
300
324
 
301
325
  Contributing
302
326
  ---
@@ -310,3 +334,4 @@ See [LICENSE](LICENSE) file.
310
334
 
311
335
  ## Maintainers
312
336
  See [MAINTAINERS](MAINTAINERS) file.
337
+
data/bin/build CHANGED
@@ -1,8 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ require 'vanagon/logger'
4
+
3
5
  script = File.basename($0)
4
6
 
5
- warn "#{script}: Warning: use of stand alone '#{script}' command is deprecated and may be removed.
7
+ VanagonLogger.info "#{script}: Warning: use of stand alone '#{script}' command is deprecated and may be removed.
6
8
  Use: 'vanagon #{script}' instead."
7
9
 
8
10
  exec "vanagon", script, *ARGV
@@ -1,8 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ require 'vanagon/logger'
4
+
3
5
  script = File.basename($0)
4
6
 
5
- warn "#{script}: Warning: use of stand alone '#{script}' command is deprecated and may be removed.
7
+ VanagonLogger.info "#{script}: Warning: use of stand alone '#{script}' command is deprecated and may be removed.
6
8
  Use: 'vanagon #{script}' instead."
7
9
 
8
10
  exec "vanagon", script, *ARGV
@@ -1,8 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ require 'vanagon/logger'
4
+
3
5
  script = File.basename($0)
4
6
 
5
- warn "#{script}: Warning: use of stand alone '#{script}' command is deprecated and may be removed.
7
+ VanagonLogger.info "#{script}: Warning: use of stand alone '#{script}' command is deprecated and may be removed.
6
8
  Use: 'vanagon #{script}' instead."
7
9
 
8
10
  exec "vanagon", script, *ARGV
@@ -1,8 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ require 'vanagon/logger'
4
+
3
5
  script = File.basename($0)
4
6
 
5
- warn "#{script}: Warning: use of stand alone '#{script}' command is deprecated and may be removed.
7
+ VanagonLogger.info "#{script}: Warning: use of stand alone '#{script}' command is deprecated and may be removed.
6
8
  Use: 'vanagon #{script}' instead."
7
9
 
8
10
  exec "vanagon", script, *ARGV
data/bin/render CHANGED
@@ -1,8 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ require 'vanagon/logger'
4
+
3
5
  script = File.basename($0)
4
6
 
5
- warn "#{script}: Warning: use of stand alone '#{script}' command is deprecated and may be removed.
7
+ VanagonLogger.info "#{script}: Warning: use of stand alone '#{script}' command is deprecated and may be removed.
6
8
  Use: 'vanagon #{script}' instead."
7
9
 
8
10
  exec "vanagon", script, *ARGV
data/bin/repo CHANGED
@@ -1,5 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ require 'vanagon/logger'
4
+
3
5
  ENV["PROJECT_ROOT"] = Dir.pwd
4
6
 
5
7
  # Begin warning: This ship script is an internal tool.
@@ -21,7 +23,7 @@ when 'rpm'
21
23
  when 'deb'
22
24
  Pkg::Util::RakeUtils.invoke_task('pl:jenkins:deb_repos')
23
25
  when 'none'
24
- $stdout.puts "Skipping repo generation since repo target is set to 'none'"
26
+ VanagonLogger.warn "Skipping repo generation since repo target is set to 'none'"
25
27
  else
26
28
  Pkg::Util::RakeUtils.invoke_task('pl:jenkins:rpm_repos')
27
29
  Pkg::Util::RakeUtils.invoke_task('pl:jenkins:deb_repos')
data/bin/ship CHANGED
@@ -1,8 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ require 'vanagon/logger'
4
+
3
5
  script = File.basename($0)
4
6
 
5
- warn "#{script}: Warning: use of stand alone '#{script}' command is deprecated and may be removed.
7
+ VanagonLogger.info "#{script}: Warning: use of stand alone '#{script}' command is deprecated and may be removed.
6
8
  Use: 'vanagon #{script}' instead."
7
9
 
8
10
  exec "vanagon", script, *ARGV
data/bin/sign CHANGED
@@ -1,8 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ require 'vanagon/logger'
4
+
3
5
  script = File.basename($0)
4
6
 
5
- warn "#{script}: Warning: use of stand alone '#{script}' command is deprecated and may be removed.
7
+ VanagonLogger.info "#{script}: Warning: use of stand alone '#{script}' command is deprecated and may be removed.
6
8
  Use: 'vanagon #{script}' instead."
7
9
 
8
10
  exec "vanagon", script, *ARGV
@@ -0,0 +1,38 @@
1
+ #!/usr/bin/env bash
2
+
3
+ _vanagon()
4
+ {
5
+ local cur prev projects commands template_arg_commands
6
+
7
+ # COMREPLY is an array variable used to store completions
8
+ # the completion mechanism uses COMPRELY to display its contents as completions
9
+ # COMP_WORDS is an array of all the words typed after the name of the program
10
+ # COMP_CWORD is an index of the COMP_WORDS array pointing to the current word
11
+ COMPREPLY=()
12
+ cur="${COMP_WORDS[COMP_CWORD]}"
13
+ prev="${COMP_WORDS[COMP_CWORD-1]}"
14
+ projects=($({ vanagon list -r | sed 1d; } 2>/dev/null))
15
+ commands="build build_host_info build_requirements completion inspect list render sign ship help"
16
+ template_arg_commands="build build_host_info build_requirements inspect render "
17
+
18
+ # completes with a project if the previous word was a command in template_arg_commands
19
+ if [[ $template_arg_commands =~ (^| )$prev($| ) ]] ; then
20
+ _vanagon_avail_templates_projects=$({ vanagon list -r | sed 1d; } 2>/dev/null)
21
+ # compgen generates completions filtered based on what has been typed by the user
22
+ COMPREPLY=( $(compgen -W "${_vanagon_avail_templates_projects}" -- "${cur}") )
23
+ fi
24
+
25
+ # allows multiple platforms to be tab completed
26
+ if [[ ${#COMP_WORDS[@]} -gt 3 ]] ; then
27
+ _vanagon_avail_templates_platforms=$({ vanagon list -l | sed 1d; } 2>/dev/null)
28
+ COMPREPLY=( $(compgen -W "${_vanagon_avail_templates_platforms}" -- "${cur}") )
29
+ fi
30
+
31
+ if [[ $1 == $prev ]] ; then
32
+ # only show top level commands we are at root
33
+ COMPREPLY=( $(compgen -W "${commands}" -- "${cur}") )
34
+ fi
35
+ }
36
+
37
+ # assign tab complete function `_vanagon ` to `vanagon` command
38
+ complete -F _vanagon vanagon
@@ -0,0 +1,41 @@
1
+ _vanagon()
2
+ {
3
+ local line commands template_arg_commands projects
4
+
5
+ commands="build build_host_info build_requirements completion inspect list render sign ship help"
6
+ template_arg_commands=("build" "build_host_info" "build_requirements" "inspect" "render")
7
+ projects=($({ vanagon list -r | sed 1d; } 2>/dev/null))
8
+
9
+ # '%p:globbed-files:' sets completion to only offer files matching a
10
+ # described pattern.
11
+ zstyle ':completion:*' file-patterns '%p:globbed-files:'
12
+
13
+ # arguments function provides potential completions to zsh
14
+ # specs are of the form n:message:action
15
+ _arguments -C \
16
+ ": :(${commands})" \
17
+ "*::arg:->args"
18
+
19
+ # (Ie)prevents "invalid subscript"
20
+ if ((template_arg_commands[(Ie)$line[1]])); then
21
+ _vanagon_template_sub_projects
22
+ fi
23
+ if [[ $projects =~ (^| )$line[2]($| ) ]]; then
24
+ _vanagon_template_sub_platforms
25
+ fi
26
+ }
27
+
28
+ _vanagon_template_sub_projects()
29
+ {
30
+ # -W look in certain path but don't append path to tab compelte
31
+ # -g enables file matching pattern
32
+ # (:r) removes the file extension `.rb` from the completion
33
+ _arguments "1: :_files -W $(PWD)/configs/projects/ -g '*.rb(:r)'"
34
+ }
35
+
36
+ _vanagon_template_sub_platforms()
37
+ {
38
+ _arguments "*: :_files -W $(PWD)/configs/platforms/ -g '*.rb(:r)'"
39
+ }
40
+ # compdef registeres the completion function: compdef <function-name> <program>
41
+ compdef _vanagon vanagon
@@ -8,11 +8,15 @@ require 'vanagon/extensions/hashable'
8
8
  require 'vanagon/cli/build'
9
9
  require 'vanagon/cli/build_host_info'
10
10
  require 'vanagon/cli/build_requirements'
11
+ require 'vanagon/cli/completion'
11
12
  require 'vanagon/cli/inspect'
13
+ require 'vanagon/cli/list'
12
14
  require 'vanagon/cli/render'
13
15
  require 'vanagon/cli/ship'
14
16
  require 'vanagon/cli/sign'
15
17
 
18
+ require 'vanagon/logger'
19
+
16
20
 
17
21
  class Vanagon
18
22
  class InvalidArgument < StandardError
@@ -27,7 +31,9 @@ class Vanagon
27
31
  build build a package given a project and platform
28
32
  build_host_info print information about build hosts
29
33
  build_requirements print external packages required to build project
34
+ completion outputs path to tab completion script
30
35
  inspect a build dry-run, printing lots of information about the build
36
+ list shows a list of available projects and platforms
31
37
  render create local versions of packaging artifacts for project
32
38
  sign sign a package
33
39
  ship upload a package to a distribution server
@@ -46,10 +52,14 @@ class Vanagon
46
52
  @sub_parser = Vanagon::CLI::BuildHostInfo.new
47
53
  when 'build_requirements'
48
54
  @sub_parser = Vanagon::CLI::BuildRequirements.new
55
+ when 'completion'
56
+ @sub_parser = Vanagon::CLI::Completion.new
49
57
  when 'inspect'
50
58
  @sub_parser = Vanagon::CLI::Inspect.new
51
59
  when 'render'
52
60
  @sub_parser = Vanagon::CLI::Render.new
61
+ when 'list'
62
+ @sub_parser = Vanagon::CLI::List.new
53
63
  when 'sign'
54
64
  @sub_parser = Vanagon::CLI::Sign.new
55
65
  when 'ship'
@@ -58,7 +68,7 @@ class Vanagon
58
68
  puts DOCUMENTATION
59
69
  exit 0
60
70
  else
61
- warn "vanagon: Error: unknown command: \"#{sub_command}\"\n\n#{DOCUMENTATION}"
71
+ VanagonLogger.error "vanagon: Error: unknown command: \"#{sub_command}\"\n\n#{DOCUMENTATION}"
62
72
  exit 1
63
73
  end
64
74
 
@@ -87,7 +97,7 @@ class Vanagon
87
97
  def parse_options(argv)
88
98
  Docopt.docopt(DOCUMENTATION, { argv: argv, options_first: true })
89
99
  rescue Docopt::Exit => e
90
- puts e.message
100
+ VanagonLogger.error e.message
91
101
  exit 1
92
102
  end
93
103
  end
@@ -1,4 +1,5 @@
1
1
  require 'docopt'
2
+ require 'vanagon/logger'
2
3
 
3
4
  class Vanagon
4
5
  class CLI
@@ -10,7 +11,7 @@ class Vanagon
10
11
  Options:
11
12
  -h, --help Display help
12
13
  -c, --configdir DIRECTORY Configuration directory [default: #{Dir.pwd}/configs]
13
- -e, --engine ENGINE Custom engine to use [base, local, docker, pooler] [default: pooler]
14
+ -e, --engine ENGINE Custom engine to use [default: always_be_scheduling]
14
15
  -o, --only-build COMPONENT,COMPONENT,...
15
16
  Only build listed COMPONENTs
16
17
  -p, --preserve [RULE] Rule for VM preservation: never, on-failure, always
@@ -19,12 +20,20 @@ class Vanagon
19
20
  -s, --skipcheck Skip the "check" stage when building components
20
21
  -w, --workdir DIRECTORY Working directory on the local host
21
22
  -v, --verbose Only here for backwards compatibility. Does nothing.
23
+
24
+ Engines:
25
+ always_be_scheduling: default engine using Puppet's ABS infrastructure
26
+ docker: a docker container on the local host
27
+ ec2: an Amazon EC2 instance
28
+ hardware: a dedicated hardware device
29
+ local: the local machine, cannot be used with a target
30
+ pooler: [deprecated] Puppet's vmpooler
22
31
  DOCOPT
23
32
 
24
33
  def parse(argv)
25
34
  Docopt.docopt(DOCUMENTATION, { argv: argv })
26
35
  rescue Docopt::Exit => e
27
- puts e.message
36
+ VanagonLogger.error e.message
28
37
  exit 1
29
38
  end
30
39
 
@@ -38,7 +47,7 @@ class Vanagon
38
47
 
39
48
  platform_list.zip(target_list).each do |pair|
40
49
  platform, target = pair
41
- artifact = Vanagon::Driver.new(platform, project, options.merge({ 'target' => target }))
50
+ artifact = Vanagon::Driver.new(platform, project, options.merge({ :target => target }))
42
51
  artifact.run
43
52
  end
44
53
  end