vanagon 0.6.1 → 0.6.2
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.
- checksums.yaml +4 -4
- data/README.md +130 -23
- data/bin/build +0 -4
- data/bin/build_host_info +21 -0
- data/bin/inspect +25 -0
- data/lib/vanagon/driver.rb +17 -8
- data/lib/vanagon/engine/base.rb +11 -2
- data/lib/vanagon/engine/docker.rb +21 -6
- data/lib/vanagon/engine/ec2.rb +75 -0
- data/lib/vanagon/engine/hardware.rb +20 -3
- data/lib/vanagon/engine/local.rb +18 -3
- data/lib/vanagon/engine/pooler.rb +22 -7
- data/lib/vanagon/extensions/hashable.rb +41 -0
- data/lib/vanagon/extensions/ostruct/json.rb +12 -0
- data/lib/vanagon/extensions/set/json.rb +12 -0
- data/lib/vanagon/extensions/string.rb +1 -1
- data/lib/vanagon/platform.rb +2 -0
- data/lib/vanagon/platform/dsl.rb +63 -0
- data/lib/vanagon/platform/osx.rb +6 -0
- data/lib/vanagon/project/dsl.rb +1 -1
- data/lib/vanagon/utilities.rb +10 -4
- data/resources/osx/uninstaller.tool.erb +24 -0
- data/resources/rpm/project.spec.erb +6 -0
- data/spec/lib/vanagon/driver_spec.rb +88 -0
- data/spec/lib/vanagon/engine/docker_spec.rb +6 -0
- data/spec/lib/vanagon/engine/ec2_spec.rb +33 -0
- data/spec/lib/vanagon/engine/hardware_spec.rb +4 -0
- data/spec/lib/vanagon/engine/local_spec.rb +5 -0
- data/spec/lib/vanagon/engine/pooler_spec.rb +5 -0
- data/spec/lib/vanagon/extensions/ostruct/json_spec.rb +16 -0
- data/spec/lib/vanagon/extensions/set/json_spec.rb +17 -0
- data/spec/lib/vanagon/extensions/string_spec.rb +30 -0
- data/spec/lib/vanagon/utilities_spec.rb +1 -1
- metadata +22 -6
- data/resources/windows/wix/componentgroup.wxs.erb +0 -33
- data/resources/windows/wix/project.wxs.erb +0 -34
- data/resources/windows/wix/registryEntries.wxs.erb +0 -47
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f994fbe98407e4e849e71d44ad56a8f6a0ce4946
|
4
|
+
data.tar.gz: 03f24c4388823870073e63f32a653701658cd0aa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a65988af487b4e29e440afaab76e67eb5dec9fc231a87ff86688227d9104b7e2a6c1089da1daac5f03692181758f595ecb705686faf271245a8dbd66fa23e7a6
|
7
|
+
data.tar.gz: fffaf35d8867478976545d26c0ccdfd4b3dc55edcd7e7817a4ac9f4ef4b23ef4513bfc173ebf7bf1da8ae8725abf17fc6955ba283f8655db86e05899dd608af6
|
data/README.md
CHANGED
@@ -42,31 +42,32 @@ define any platforms you want to build for. Vanagon ships with some simple
|
|
42
42
|
binaries to use, but the one you probably care about is named 'build'.
|
43
43
|
|
44
44
|
### `build` usage
|
45
|
-
|
46
45
|
The build command has positional arguments and position independent flags.
|
47
46
|
|
47
|
+
|
48
48
|
#### Arguments (position dependent)
|
49
49
|
|
50
50
|
##### project name
|
51
|
-
The name of the project to build
|
52
|
-
present
|
51
|
+
The name of the project to build; a file named `<project_name>.rb` must be
|
52
|
+
present under `configs/projects` in the working directory.
|
53
53
|
|
54
54
|
##### platform name
|
55
|
-
The name of the platform to build against
|
56
|
-
|
57
|
-
directory.
|
58
|
-
|
59
|
-
Platform can also be a comma separated list of platforms such as platform1,platform2.
|
55
|
+
The name of the target platform to build `<project_name>` against; a file named
|
56
|
+
`<platform_name>.rb` must be present under `configs/platforms` in the working
|
57
|
+
directory. This can also be a comma separated list of platforms such as `platform1,platform2`;
|
58
|
+
note that there are no spaces after the comma.
|
60
59
|
|
61
60
|
##### target host [optional]
|
62
61
|
Target host is an optional argument to override the host selection. Instead of using
|
63
|
-
a
|
64
|
-
root user.
|
62
|
+
a random VM collected from the pooler (Vanagon's default build engine), the build will
|
63
|
+
attempt connect to the target host over SSH as the `root` user.
|
65
64
|
|
66
65
|
If building on multiple platforms, multiple targets can also be specified using
|
67
|
-
a comma separated list such as host1,host2
|
68
|
-
|
69
|
-
target. If more targets are specified
|
66
|
+
a comma separated list such as `host1,host2` (note that there are no spaces after
|
67
|
+
the comma). If less targets are specified than platforms, the default engine
|
68
|
+
(`pooler`) will be used for platforms without a target. If more targets are specified
|
69
|
+
than platforms, the extra platforms will be ignored.
|
70
|
+
|
70
71
|
|
71
72
|
#### Flagged arguments (can be anywhere in the command)
|
72
73
|
|
@@ -85,6 +86,7 @@ Currently supported engines are:
|
|
85
86
|
* `docker` - Builds in a docker container
|
86
87
|
* `pooler` - Selects a vm from Puppet Labs' vm pooler to build on
|
87
88
|
* `hardware` - Build on a specific taget and lock it in redis
|
89
|
+
* `ec2` - Build on a specific AWS instance.
|
88
90
|
|
89
91
|
#### Flags (can be anywhere in the command)
|
90
92
|
|
@@ -99,28 +101,40 @@ Increase verbosity of output.
|
|
99
101
|
##### -h, --help
|
100
102
|
Display command-line help.
|
101
103
|
|
104
|
+
|
102
105
|
#### Environment variables
|
103
106
|
|
104
|
-
#####
|
107
|
+
##### `VANAGON_SSH_KEY`
|
105
108
|
A full path on disk for a private ssh key to be used in ssh and rsync
|
106
109
|
communications. This will be used instead of whatever defaults are configured
|
107
110
|
in .ssh/config.
|
108
111
|
|
109
|
-
#####
|
110
|
-
When set, Vanagon will forward the ssh authentication agent connection.
|
112
|
+
##### `VANAGON_SSH_AGENT`
|
113
|
+
When set, Vanagon will forward the ssh authentication agent connection.
|
111
114
|
|
112
|
-
#####
|
115
|
+
##### `VMPOOLER_TOKEN`
|
113
116
|
Used in conjunction with the pooler engine, this is a token to pass to the
|
114
117
|
vmpooler to access the API. Without this token, the default lifetime of vms
|
115
118
|
will be much shorter.
|
116
119
|
|
117
|
-
#####
|
120
|
+
##### `LOCK_MANAGER_HOST`
|
118
121
|
The name of the host where redis is running. Redis is used to handle a lock
|
119
122
|
when using the hardware engine. It defaults to *redis*, with no domain.
|
120
123
|
|
121
|
-
|
124
|
+
##### `LOCK_MANAGER_PORT`
|
122
125
|
Port of the system where redis is running. Defaults to *6379*.
|
123
126
|
|
127
|
+
##### `VANAGON_RETRY_COUNT`
|
128
|
+
Some phases of compilation support retries. The default value is *1* but
|
129
|
+
setting to any integer value greater than 1 will causes these components
|
130
|
+
to retry operations on failure until the `VANAGON_RETRY_COUNT` limit is reached.
|
131
|
+
|
132
|
+
##### `VANAGON_TIMEOUT`
|
133
|
+
Some phases of compilation can take an indeterminate (but substantial) amount of
|
134
|
+
time. The default value is *7200* seconds(120 minutes) but setting to any
|
135
|
+
integer value these components to fail after the `VANAGON_TIMEOUT` count is reached.
|
136
|
+
Note that this value is expected to be in seconds.
|
137
|
+
|
124
138
|
#### Example usage
|
125
139
|
`build --preserve puppet-agent el-6-i386` will build the puppet-agent project
|
126
140
|
on the el-6-i386 platform and leave the host intact afterward.
|
@@ -129,6 +143,67 @@ on the el-6-i386 platform and leave the host intact afterward.
|
|
129
143
|
project on the el-6-i386 platform using the docker engine (the platform must
|
130
144
|
have a docker\_image defined in its config).
|
131
145
|
|
146
|
+
---
|
147
|
+
|
148
|
+
### `inspect` usage
|
149
|
+
|
150
|
+
The `inspect` command has positional arguments and position independent flags. It
|
151
|
+
mirrors the `build` command, but exits with success after loading and interpolating
|
152
|
+
all of the components in the given project. No attempt is made to actually build
|
153
|
+
the given project; instead, a JSON formatted array of hashes is returned and printed
|
154
|
+
to `stdout`. This JSON array can be further processed by external tooling, such as `jq`.
|
155
|
+
|
156
|
+
#### Arguments (position dependent)
|
157
|
+
|
158
|
+
##### project name
|
159
|
+
The name of the project to build, and a file named \<project\_name\>.rb must be
|
160
|
+
present in configs/projects in the working directory.
|
161
|
+
|
162
|
+
##### platform name
|
163
|
+
The name of the platform to build against, and a file named
|
164
|
+
\<platform\_name\>.rb must be present in configs/platforms in the working
|
165
|
+
directory.
|
166
|
+
|
167
|
+
Platform can also be a comma separated list of platforms such as platform1,platform2.
|
168
|
+
|
169
|
+
#### Flagged arguments (can be anywhere in the command)
|
170
|
+
|
171
|
+
##### -w DIR, --workdir DIR
|
172
|
+
Specifies a directory where the sources should be placed and builds performed.
|
173
|
+
Defaults to a temporary directory created with Ruby's Dir.mktmpdir.
|
174
|
+
|
175
|
+
##### -c DIR, --configdir DIR
|
176
|
+
Specifies where project configuration is found. Defaults to $pwd/configs.
|
177
|
+
|
178
|
+
##### -e ENGINE, --engine ENGINE
|
179
|
+
Choose a different virtualization engine to use to select the build target.
|
180
|
+
Engines are respected, but only insofar as components and projects are
|
181
|
+
rendered -- the `inspect` command performs no compilation.
|
182
|
+
|
183
|
+
Supported engines are the same as the `build` command.
|
184
|
+
|
185
|
+
#### Flags (can be anywhere in the command)
|
186
|
+
|
187
|
+
##### -v, --verbose (not yet implemented)
|
188
|
+
Increase verbosity of output.
|
189
|
+
|
190
|
+
##### -h, --help
|
191
|
+
Display command-line help.
|
192
|
+
|
193
|
+
#### Environment variables
|
194
|
+
|
195
|
+
Environment variables are respected, but only insofar as components and projects are
|
196
|
+
rendered -- the `inspect` command has no behavior to alter.
|
197
|
+
|
198
|
+
Supported environment variables are the same as the `build` command.
|
199
|
+
|
200
|
+
#### Example usage
|
201
|
+
`inspect puppet-agent el-6-i386` will load the puppet-agent project
|
202
|
+
on the el-6-i386 platform and print the resulting list of dependencies,
|
203
|
+
build-time configuration, environment variables, and expected artifacts.
|
204
|
+
|
205
|
+
---
|
206
|
+
|
132
207
|
### `devkit` usage
|
133
208
|
|
134
209
|
The devkit command has positional arguments and position independent flagged
|
@@ -160,10 +235,43 @@ As in the `build` target host optional argument.
|
|
160
235
|
##### -h, --help
|
161
236
|
Display command-line help.
|
162
237
|
|
238
|
+
---
|
239
|
+
|
240
|
+
Engines
|
241
|
+
---
|
242
|
+
|
243
|
+
### Amazon Ec2
|
244
|
+
|
245
|
+
Note: If you have the `aws_ami` setup vanagon will default to the ec2 engine.
|
246
|
+
|
247
|
+
To use the ec2 engine you should have your credentials set either via your `~/.aws/credentials` or environment variables.
|
248
|
+
After this you can setup your `configs/platforms/<platform>.rb` to use your
|
249
|
+
ami, instance type, and key_name to setup the instance.
|
250
|
+
|
251
|
+
A simple one looks like this
|
252
|
+
|
253
|
+
```ruby
|
254
|
+
# configs/platforms/el-7-x86_64.rb
|
255
|
+
platform "el-7-x86_64" do |plat|
|
256
|
+
plat.aws_ami "your-ami-id-here" # You must set this
|
257
|
+
plat.aws_instance_type "t2.small" # Defaults to t1.micro
|
258
|
+
plat.aws_key_name "vanagon" # this is the default but you can use whichever
|
259
|
+
plat.aws_user_data <<-eos
|
260
|
+
#cloud-config
|
261
|
+
runcmds:
|
262
|
+
- echo #{my_ssh_key} > /root/.ssh/authorized_keys # Most amis block you from logging in as root.
|
263
|
+
eos
|
264
|
+
|
265
|
+
### Rest of your code here
|
266
|
+
|
267
|
+
end
|
268
|
+
```
|
269
|
+
|
270
|
+
|
163
271
|
Contributing
|
164
272
|
---
|
165
273
|
We'd love to get contributions from you! Once you are up and running, take a look at the
|
166
|
-
[Contribution Documents](https://github.com/puppetlabs/vanagon/blob/master/CONTRIBUTING.md) to see how to get your changes merged
|
274
|
+
[Contribution Documents](https://github.com/puppetlabs/vanagon/blob/master/docs/CONTRIBUTING.md) to see how to get your changes merged
|
167
275
|
in.
|
168
276
|
|
169
277
|
License
|
@@ -183,11 +291,10 @@ For more detailed examples of the DSLs available, please see the
|
|
183
291
|
[examples](https://github.com/puppetlabs/vanagon/tree/master/examples) directory and the YARD documentation for vanagon.
|
184
292
|
|
185
293
|
## Maintainers
|
186
|
-
---
|
187
294
|
The Release Engineering team at Puppet Labs
|
188
295
|
|
189
|
-
Maintainer: Michael Stahnke <stahnma@
|
296
|
+
Maintainer: Michael Stahnke <stahnma@puppet.com>
|
190
297
|
|
191
|
-
Please log tickets and issues at our [Issue Tracker](https://tickets.
|
298
|
+
Please log tickets and issues at our [Issue Tracker](https://tickets.puppet.com/browse/CPR). Set compononent to Vanagon.
|
192
299
|
|
193
300
|
In addition there is an active #puppet-dev channel on Freenode.
|
data/bin/build
CHANGED
@@ -25,9 +25,5 @@ end
|
|
25
25
|
platform_list.zip(target_list).each do |pair|
|
26
26
|
platform, target = pair
|
27
27
|
artifact = Vanagon::Driver.new(platform, project, options.merge({ :target => target }))
|
28
|
-
|
29
|
-
artifact.verbose = true if options[:verbose]
|
30
|
-
artifact.preserve = true if options[:preserve]
|
31
|
-
|
32
28
|
artifact.run
|
33
29
|
end
|
data/bin/build_host_info
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
load File.expand_path(File.join(File.dirname(__FILE__), "..", "lib", "vanagon.rb"))
|
5
|
+
|
6
|
+
optparse = Vanagon::OptParse.new("#{File.basename(__FILE__)} <project-name> <platform-name> [options]", [:workdir, :configdir, :engine])
|
7
|
+
options = optparse.parse! ARGV
|
8
|
+
|
9
|
+
project = ARGV[0]
|
10
|
+
platforms = ARGV[1]
|
11
|
+
|
12
|
+
if project.nil? or platforms.nil?
|
13
|
+
warn "project and platform are both required arguments."
|
14
|
+
puts optparse
|
15
|
+
exit 1
|
16
|
+
end
|
17
|
+
|
18
|
+
platforms.split(',').each do |platform|
|
19
|
+
driver = Vanagon::Driver.new(platform, project, options)
|
20
|
+
puts JSON.generate(driver.build_host_info)
|
21
|
+
end
|
data/bin/inspect
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'json'
|
3
|
+
require 'vanagon/extensions/ostruct/json'
|
4
|
+
require 'vanagon/extensions/set/json'
|
5
|
+
require 'vanagon/extensions/hashable'
|
6
|
+
|
7
|
+
load File.expand_path(File.join(File.dirname(__FILE__), "..", "lib", "vanagon.rb"))
|
8
|
+
|
9
|
+
optparse = Vanagon::OptParse.new("#{File.basename(__FILE__)} <project-name> <platform-name> [options]", [:workdir, :configdir, :engine])
|
10
|
+
options = optparse.parse! ARGV
|
11
|
+
|
12
|
+
project = ARGV[0]
|
13
|
+
platforms = ARGV[1]
|
14
|
+
|
15
|
+
unless project or platforms
|
16
|
+
warn "project and platform are both required arguments."
|
17
|
+
puts optparse
|
18
|
+
exit 1
|
19
|
+
end
|
20
|
+
|
21
|
+
platforms.split(',').each do |platform|
|
22
|
+
driver = Vanagon::Driver.new(platform, project, options)
|
23
|
+
components = driver.project.components.map(&:to_hash)
|
24
|
+
puts JSON.pretty_generate(components)
|
25
|
+
end
|
data/lib/vanagon/driver.rb
CHANGED
@@ -13,9 +13,9 @@ class Vanagon
|
|
13
13
|
attr_accessor :platform, :project, :target, :workdir, :verbose, :preserve
|
14
14
|
attr_accessor :timeout, :retry_count
|
15
15
|
|
16
|
-
def initialize(platform, project, options = { :configdir => nil, :target => nil, :engine => nil, :components => nil, :skipcheck => false })
|
17
|
-
@verbose =
|
18
|
-
@preserve =
|
16
|
+
def initialize(platform, project, options = { :configdir => nil, :target => nil, :engine => nil, :components => nil, :skipcheck => false, :verbose => false, :preserve => false })
|
17
|
+
@verbose = options[:verbose]
|
18
|
+
@preserve = options[:preserve]
|
19
19
|
|
20
20
|
@@configdir = options[:configdir] || File.join(Dir.pwd, "configs")
|
21
21
|
components = options[:components] || []
|
@@ -24,6 +24,7 @@ class Vanagon
|
|
24
24
|
|
25
25
|
@platform = Vanagon::Platform.load_platform(platform, File.join(@@configdir, "platforms"))
|
26
26
|
@project = Vanagon::Project.load_project(project, File.join(@@configdir, "projects"), @platform, components)
|
27
|
+
@project.settings[:verbose] = options[:verbose]
|
27
28
|
@project.settings[:skipcheck] = options[:skipcheck]
|
28
29
|
loginit('vanagon_hosts.log')
|
29
30
|
|
@@ -35,6 +36,10 @@ class Vanagon
|
|
35
36
|
def load_engine(engine_type, platform, target)
|
36
37
|
if platform.build_hosts
|
37
38
|
engine_type = 'hardware'
|
39
|
+
elsif platform.aws_ami
|
40
|
+
engine_type = 'ec2'
|
41
|
+
elsif platform.docker_image
|
42
|
+
engine_type = 'docker'
|
38
43
|
elsif target
|
39
44
|
engine_type = 'base'
|
40
45
|
end
|
@@ -60,6 +65,10 @@ class Vanagon
|
|
60
65
|
@@logger
|
61
66
|
end
|
62
67
|
|
68
|
+
def build_host_info
|
69
|
+
{ "name" => @engine.build_host_name, "engine" => @engine.name }
|
70
|
+
end
|
71
|
+
|
63
72
|
# Returns the set difference between the build_requires and the components to get a list of external dependencies that need to be installed.
|
64
73
|
def list_build_dependencies
|
65
74
|
@project.components.map(&:build_requires).flatten.uniq - @project.components.map(&:name)
|
@@ -87,12 +96,12 @@ class Vanagon
|
|
87
96
|
|
88
97
|
puts "Target is #{@engine.target}"
|
89
98
|
retry_task { install_build_dependencies }
|
90
|
-
@project.fetch_sources(@workdir)
|
99
|
+
retry_task { @project.fetch_sources(@workdir) }
|
91
100
|
@project.make_makefile(@workdir)
|
92
101
|
@project.make_bill_of_materials(@workdir)
|
93
102
|
@project.generate_packaging_artifacts(@workdir)
|
94
103
|
@engine.ship_workdir(@workdir)
|
95
|
-
|
104
|
+
@engine.dispatch("(cd #{@engine.remote_workdir}; #{@platform.make})")
|
96
105
|
@engine.retrieve_built_artifact
|
97
106
|
@engine.teardown unless @preserve
|
98
107
|
cleanup_workdir unless @preserve
|
@@ -101,7 +110,7 @@ class Vanagon
|
|
101
110
|
puts e.backtrace.join("\n")
|
102
111
|
raise e
|
103
112
|
ensure
|
104
|
-
if @engine.name
|
113
|
+
if ["hardware", "ec2"].include?(@engine.name)
|
105
114
|
@engine.teardown
|
106
115
|
end
|
107
116
|
end
|
@@ -129,8 +138,8 @@ class Vanagon
|
|
129
138
|
# values from the project, if available, otherwise use some
|
130
139
|
# sane defaults.
|
131
140
|
def retry_task(&block)
|
132
|
-
@timeout = @project.timeout ||
|
133
|
-
@retry_count = @project.retry_count ||
|
141
|
+
@timeout = @project.timeout || ENV["VANAGON_TIMEOUT"] || 7200
|
142
|
+
@retry_count = @project.retry_count || ENV["VANAGON_RETRY_COUNT"] || 1
|
134
143
|
Vanagon::Utilities.retry_with_timeout(@retry_count, @timeout) { yield }
|
135
144
|
end
|
136
145
|
private :retry_task
|
data/lib/vanagon/engine/base.rb
CHANGED
@@ -4,14 +4,23 @@ require 'vanagon/errors'
|
|
4
4
|
class Vanagon
|
5
5
|
class Engine
|
6
6
|
class Base
|
7
|
-
attr_accessor :target, :remote_workdir
|
7
|
+
attr_accessor :target, :remote_workdir
|
8
8
|
|
9
9
|
def initialize(platform, target = nil)
|
10
10
|
@platform = platform
|
11
11
|
@required_attributes = ["ssh_port"]
|
12
12
|
@target = target if target
|
13
13
|
@target_user = @platform.target_user
|
14
|
-
|
14
|
+
end
|
15
|
+
|
16
|
+
# Get the engine name
|
17
|
+
def name
|
18
|
+
'base'
|
19
|
+
end
|
20
|
+
|
21
|
+
# Get the engine specific name of the host to build on
|
22
|
+
def build_host_name
|
23
|
+
raise Vanagon::Error, '#build_host_name has not been implemented for your engine.'
|
15
24
|
end
|
16
25
|
|
17
26
|
# This method is used to obtain a vm to build upon
|
@@ -6,17 +6,32 @@ class Vanagon
|
|
6
6
|
# Both the docker_image and the docker command itself are required for
|
7
7
|
# the docker engine to work
|
8
8
|
def initialize(platform, target = nil)
|
9
|
-
@docker_cmd = Vanagon::Utilities.find_program_on_path('docker')
|
10
|
-
@name = 'docker'
|
11
9
|
super
|
10
|
+
|
11
|
+
@docker_cmd = Vanagon::Utilities.find_program_on_path('docker')
|
12
12
|
@required_attributes << "docker_image"
|
13
13
|
end
|
14
14
|
|
15
|
+
# Get the engine name
|
16
|
+
def name
|
17
|
+
'docker'
|
18
|
+
end
|
19
|
+
|
20
|
+
# Return the docker image name to build on
|
21
|
+
def build_host_name
|
22
|
+
if @build_host_name.nil?
|
23
|
+
validate_platform
|
24
|
+
@build_host_name = @platform.docker_image
|
25
|
+
end
|
26
|
+
|
27
|
+
@build_host_name
|
28
|
+
end
|
29
|
+
|
15
30
|
# This method is used to obtain a vm to build upon using
|
16
31
|
# a docker container.
|
17
32
|
# @raise [Vanagon::Error] if a target cannot be obtained
|
18
33
|
def select_target
|
19
|
-
Vanagon::Utilities.ex("#{@docker_cmd} run -d --name #{
|
34
|
+
Vanagon::Utilities.ex("#{@docker_cmd} run -d --name #{build_host_name}-builder -p #{@platform.ssh_port}:22 #{build_host_name}")
|
20
35
|
@target = 'localhost'
|
21
36
|
|
22
37
|
# Wait for ssh to come up in the container
|
@@ -30,10 +45,10 @@ class Vanagon
|
|
30
45
|
# This method is used to tell the vmpooler to delete the instance of the
|
31
46
|
# vm that was being used so the pool can be replenished.
|
32
47
|
def teardown
|
33
|
-
Vanagon::Utilities.ex("#{@docker_cmd} stop #{
|
34
|
-
Vanagon::Utilities.ex("#{@docker_cmd} rm #{
|
48
|
+
Vanagon::Utilities.ex("#{@docker_cmd} stop #{build_host_name}-builder")
|
49
|
+
Vanagon::Utilities.ex("#{@docker_cmd} rm #{build_host_name}-builder")
|
35
50
|
rescue Vanagon::Error => e
|
36
|
-
warn "There was a problem tearing down the docker container #{
|
51
|
+
warn "There was a problem tearing down the docker container #{build_host_name}-builder (#{e.message})."
|
37
52
|
end
|
38
53
|
end
|
39
54
|
end
|