vagrant-butcher 2.0.0 → 2.1.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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/lib/vagrant-butcher.rb +1 -1
- data/lib/vagrant-butcher/action/cleanup.rb +6 -33
- data/lib/vagrant-butcher/action/copy_guest_key.rb +4 -28
- data/lib/vagrant-butcher/errors.rb +3 -28
- data/lib/vagrant-butcher/helpers.rb +10 -0
- data/lib/vagrant-butcher/helpers/action.rb +18 -0
- data/lib/vagrant-butcher/helpers/config.rb +35 -0
- data/lib/vagrant-butcher/helpers/connection.rb +57 -0
- data/lib/vagrant-butcher/helpers/key_files.rb +101 -0
- data/lib/vagrant-butcher/version.rb +1 -1
- metadata +7 -3
- data/lib/vagrant-butcher/env_helpers.rb +0 -113
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ca1d827124b21623cd41daacdb1a72e4dcd7cda6
|
4
|
+
data.tar.gz: d9799e2328a5f3d723fe906570d2fbc474dfa9a6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 956282406a98f53cbf15022e0eec08419abaa0079f1fb5f379af90ce8d206c7a94d37f65f679cc61bc94719e4e56260d7f39dcfcfa7233eccdf4de9f68291a63
|
7
|
+
data.tar.gz: f02c1defd5d1763ff3c8703e3947bec9d6618739df4ee27a1df601940677e9ca48dd2ebb78475454bf963e5c59105efb3149609ea6d7d8f952e1309e75794b74
|
data/.gitignore
CHANGED
data/lib/vagrant-butcher.rb
CHANGED
@@ -11,7 +11,7 @@ module Vagrant
|
|
11
11
|
autoload :Action, 'vagrant-butcher/action'
|
12
12
|
autoload :Config, 'vagrant-butcher/config'
|
13
13
|
autoload :Env, 'vagrant-butcher/env'
|
14
|
-
autoload :
|
14
|
+
autoload :Helpers, 'vagrant-butcher/helpers'
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
@@ -2,50 +2,23 @@ module Vagrant
|
|
2
2
|
module Butcher
|
3
3
|
module Action
|
4
4
|
class Cleanup
|
5
|
-
include ::Vagrant::Butcher::
|
5
|
+
include ::Vagrant::Butcher::Helpers::Action
|
6
|
+
include ::Vagrant::Butcher::Helpers::Connection
|
6
7
|
|
7
8
|
def initialize(app, env)
|
8
9
|
@app = app
|
9
|
-
@delete_all_success = true
|
10
|
-
end
|
11
|
-
|
12
|
-
def delete_resource(resource, env)
|
13
|
-
begin
|
14
|
-
@conn.send(resource.to_sym).delete(victim(env))
|
15
|
-
env[:butcher].ui.success "Chef #{resource} '#{victim(env)}' successfully butchered from the server..."
|
16
|
-
rescue Exception => e
|
17
|
-
env[:butcher].ui.warn "Could not butcher #{resource} #{victim(env)}: #{e.message}"
|
18
|
-
@delete_all_success = false
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
def cleanup_cache_dir(env)
|
23
|
-
if @delete_all_success
|
24
|
-
File.delete(host_key_path(env))
|
25
|
-
begin
|
26
|
-
Dir.delete(cache_dir(env))
|
27
|
-
rescue
|
28
|
-
# The dir wasn't empty.
|
29
|
-
end
|
30
|
-
else
|
31
|
-
env[:butcher].ui.warn "Client and/or node not butchered from the Chef Server. Client key was left at #{host_key_path(env)}"
|
32
|
-
end
|
33
10
|
end
|
34
11
|
|
35
12
|
def call(env)
|
36
|
-
|
37
|
-
|
38
|
-
if butcher_config(env).enabled
|
39
|
-
if chef_client?(env)
|
40
|
-
%w(node client).each { |resource| delete_resource(resource, env) }
|
41
|
-
cleanup_cache_dir(env)
|
42
|
-
end
|
13
|
+
if butcher_config(machine(env)).enabled
|
14
|
+
cleanup(env)
|
43
15
|
else
|
44
|
-
env
|
16
|
+
ui(env).warn "Vagrant::Butcher disabled, not cleaning up Chef server!"
|
45
17
|
end
|
46
18
|
|
47
19
|
@app.call(env)
|
48
20
|
end
|
21
|
+
|
49
22
|
end
|
50
23
|
end
|
51
24
|
end
|
@@ -2,45 +2,21 @@ module Vagrant
|
|
2
2
|
module Butcher
|
3
3
|
module Action
|
4
4
|
class CopyGuestKey
|
5
|
-
include ::Vagrant::Butcher::
|
5
|
+
include ::Vagrant::Butcher::Helpers::Action
|
6
|
+
include ::Vagrant::Butcher::Helpers::KeyFiles
|
6
7
|
|
7
8
|
def initialize(app, env)
|
8
9
|
@app = app
|
9
10
|
end
|
10
11
|
|
11
|
-
def create_cache_dir(env)
|
12
|
-
unless File.exists?(cache_dir(env))
|
13
|
-
env[:butcher].ui.info "Creating #{cache_dir(env)}"
|
14
|
-
Dir.mkdir(cache_dir(env))
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
def copy_key_from_guest(env)
|
19
|
-
create_cache_dir(env)
|
20
|
-
|
21
|
-
begin
|
22
|
-
env[:machine].communicate.execute "cp #{guest_key_path(env)} #{guest_cache_key_path(env)}", :sudo => true
|
23
|
-
env[:butcher].ui.info "Copied #{guest_key_path(env)} to #{guest_cache_key_path(env)}"
|
24
|
-
rescue Exception => e
|
25
|
-
env[:butcher].ui.error "Failed to copy #{guest_key_path(env)} to #{guest_cache_key_path(env)}"
|
26
|
-
env[:butcher].ui.error e
|
27
|
-
return false
|
28
|
-
end
|
29
|
-
|
30
|
-
return true
|
31
|
-
end
|
32
|
-
|
33
12
|
def call(env)
|
34
13
|
begin
|
35
14
|
@app.call(env)
|
36
15
|
ensure
|
37
|
-
if chef_client?(env)
|
38
|
-
unless guest_cache_dir(env) && copy_key_from_guest(env)
|
39
|
-
env[:butcher].ui.error "Failed to copy Chef client key from the guest."
|
40
|
-
end
|
41
|
-
end
|
16
|
+
copy_guest_key(env) if chef_client?(env)
|
42
17
|
end
|
43
18
|
end
|
19
|
+
|
44
20
|
end
|
45
21
|
end
|
46
22
|
end
|
@@ -2,37 +2,12 @@ require 'vagrant/errors'
|
|
2
2
|
|
3
3
|
module Vagrant
|
4
4
|
module Butcher
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
# @author Jamie Winsor <reset@riotgames.com>
|
9
|
-
#
|
10
|
-
# A wrapper for a BerkshelfError for Vagrant. All Berkshelf exceptions should be
|
11
|
-
# wrapped in this proxy object so they are properly handled when Vagrant encounters
|
12
|
-
# an exception.
|
13
|
-
#
|
14
|
-
# @example wrapping an error encountered within the Vagrant plugin
|
15
|
-
# rescue BerkshelfError => e
|
16
|
-
# VagrantWrapperError.new(e)
|
17
|
-
# end
|
18
|
-
class VagrantWrapperError < ::Vagrant::Errors::VagrantError
|
19
|
-
# @param [BerkshelfError]
|
20
|
-
attr_reader :original
|
21
|
-
|
22
|
-
# @param [BerkshelfError] original
|
23
|
-
def initialize(original)
|
24
|
-
@original = original
|
5
|
+
module Errors
|
6
|
+
class KeyCopyFailure < ::Vagrant::Errors::VagrantError
|
25
7
|
end
|
26
8
|
|
27
|
-
|
28
|
-
"#{original.class}: #{original.to_s}"
|
9
|
+
class NoSyncedFolder < ::Vagrant::Errors::VagrantError
|
29
10
|
end
|
30
|
-
|
31
|
-
private
|
32
|
-
|
33
|
-
def method_missing(fun, *args, &block)
|
34
|
-
original.send(fun, *args, &block)
|
35
|
-
end
|
36
11
|
end
|
37
12
|
end
|
38
13
|
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
module Vagrant
|
2
|
+
module Butcher
|
3
|
+
module Helpers
|
4
|
+
autoload :Config, 'vagrant-butcher/helpers/config'
|
5
|
+
autoload :Action, 'vagrant-butcher/helpers/action'
|
6
|
+
autoload :KeyFiles, 'vagrant-butcher/helpers/key_files'
|
7
|
+
autoload :Connection, 'vagrant-butcher/helpers/connection'
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Vagrant
|
2
|
+
module Butcher
|
3
|
+
module Helpers
|
4
|
+
module Config
|
5
|
+
|
6
|
+
def vm_config(env)
|
7
|
+
@vm_config ||= machine(env).config.vm
|
8
|
+
end
|
9
|
+
|
10
|
+
def butcher_config(env)
|
11
|
+
@butcher_config ||= machine(env).config.butcher
|
12
|
+
end
|
13
|
+
|
14
|
+
def chef_provisioner(env)
|
15
|
+
@chef_provisioner ||= vm_config(env).provisioners.find do |p|
|
16
|
+
p.config.is_a? VagrantPlugins::Chef::Config::ChefClient
|
17
|
+
end.config
|
18
|
+
end
|
19
|
+
|
20
|
+
def chef_client?(env)
|
21
|
+
vm_config(env).provisioners.select { |p| p.name == :chef_client }.any?
|
22
|
+
end
|
23
|
+
|
24
|
+
def client_name(env)
|
25
|
+
@client_name ||= butcher_config(env).client_name || victim(env)
|
26
|
+
end
|
27
|
+
|
28
|
+
def victim(env)
|
29
|
+
@victim ||= chef_provisioner(env).node_name || vm_config(env).hostname || vm_config(env).box
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'ridley'
|
2
|
+
|
3
|
+
# Silence celluloid warnings and errors: https://github.com/RiotGames/ridley/issues/220
|
4
|
+
::Ridley::Logging.logger.level = Logger.const_get 'FATAL'
|
5
|
+
|
6
|
+
module Vagrant
|
7
|
+
module Butcher
|
8
|
+
module Helpers
|
9
|
+
module Connection
|
10
|
+
include ::Vagrant::Butcher::Helpers::KeyFiles
|
11
|
+
|
12
|
+
def setup_connection(env)
|
13
|
+
unless @conn
|
14
|
+
begin
|
15
|
+
@conn = ::Ridley.new(
|
16
|
+
server_url: chef_provisioner(env).chef_server_url,
|
17
|
+
client_name: client_name(env),
|
18
|
+
client_key: client_key(env),
|
19
|
+
ssl: {
|
20
|
+
verify: butcher_config(env).verify_ssl
|
21
|
+
},
|
22
|
+
retries: butcher_config(env).retries,
|
23
|
+
retry_interval: butcher_config(env).retry_interval,
|
24
|
+
proxy: butcher_config(env).proxy
|
25
|
+
)
|
26
|
+
rescue Ridley::Errors::ClientKeyFileNotFoundOrInvalid
|
27
|
+
ui(env).error "Chef client key not found at #{client_key(env)}"
|
28
|
+
rescue Exception => e
|
29
|
+
ui(env).error "Could not connect to Chef Server: #{e}"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
@conn
|
33
|
+
end
|
34
|
+
|
35
|
+
def delete_resource(resource, env)
|
36
|
+
begin
|
37
|
+
@conn.send(resource.to_sym).delete(victim(env))
|
38
|
+
ui(env).success "Chef #{resource} '#{victim(env)}' successfully butchered from the server..."
|
39
|
+
rescue Exception => e
|
40
|
+
ui(env).warn "Could not butcher #{resource} #{victim(env)}: #{e.message}"
|
41
|
+
@failed_deletions ||= []
|
42
|
+
@failed_deletions << resource
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def cleanup(env)
|
47
|
+
setup_connection(env)
|
48
|
+
if chef_client?(env)
|
49
|
+
%w(node client).each { |resource| delete_resource(resource, env) }
|
50
|
+
cleanup_cache_dir(env)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,101 @@
|
|
1
|
+
module Vagrant
|
2
|
+
module Butcher
|
3
|
+
module Helpers
|
4
|
+
module KeyFiles
|
5
|
+
|
6
|
+
def cache_dir(env)
|
7
|
+
@cache_dir ||= butcher_config(env).cache_dir
|
8
|
+
end
|
9
|
+
|
10
|
+
def cache_dir_mapping(env)
|
11
|
+
unless @cache_dir_mapping
|
12
|
+
# Grab all enabled synced_folders
|
13
|
+
synced_folders = vm_config(env).synced_folders.values.find_all { |f| !f[:disabled] }
|
14
|
+
|
15
|
+
# Expand the hostpath of each folder
|
16
|
+
synced_folders.each { |f| f[:hostpath] = File.expand_path(f[:hostpath]) }
|
17
|
+
|
18
|
+
# Select the folder wherein the cache_dir is contained
|
19
|
+
cache_dir_mappings = synced_folders.select { |f| cache_dir(env) =~ /^#{f[:hostpath]}/ }
|
20
|
+
@cache_dir_mapping = cache_dir_mappings.first if cache_dir_mappings.any?
|
21
|
+
end
|
22
|
+
@cache_dir_mapping
|
23
|
+
end
|
24
|
+
|
25
|
+
def guest_cache_dir(env)
|
26
|
+
unless @guest_cache_dir
|
27
|
+
if cache_dir_mapping(env)
|
28
|
+
# Return the path to the cache dir inside the VM
|
29
|
+
@guest_cache_dir = cache_dir(env).gsub(cache_dir_mapping(env)[:hostpath], cache_dir_mapping(env)[:guestpath])
|
30
|
+
ui(env).info "Guest cache dir at #{@guest_cache_dir}"
|
31
|
+
else
|
32
|
+
ui(env).error "We couldn't find a synced folder to access the cache dir on the guest."
|
33
|
+
ui(env).error "Did you disable the /vagrant folder or set a butcher.cache_path that isn't shared with the guest?"
|
34
|
+
raise ::Vagrant::Butcher::Errors::NoSyncedFolder
|
35
|
+
end
|
36
|
+
end
|
37
|
+
@guest_cache_dir
|
38
|
+
end
|
39
|
+
|
40
|
+
def guest_key_path(env)
|
41
|
+
@guest_key_path ||= butcher_config(env).guest_key_path
|
42
|
+
end
|
43
|
+
|
44
|
+
def guest_key_filename(env)
|
45
|
+
@guest_key ||= "#{env[:machine].name}-client.pem"
|
46
|
+
end
|
47
|
+
|
48
|
+
def guest_cache_key_path(env)
|
49
|
+
@guest_cache_key_path ||= "#{guest_cache_dir(env)}/#{guest_key_filename(env)}"
|
50
|
+
end
|
51
|
+
|
52
|
+
def client_key(env)
|
53
|
+
@client_key ||= butcher_config(env).client_key || "#{cache_dir(env)}/#{guest_key_filename(env)}"
|
54
|
+
end
|
55
|
+
|
56
|
+
def create_cache_dir(env)
|
57
|
+
unless File.exists?(cache_dir(env))
|
58
|
+
ui(env).info "Creating #{cache_dir(env)}"
|
59
|
+
Dir.mkdir(cache_dir(env))
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def copy_key_file(env)
|
64
|
+
create_cache_dir(env)
|
65
|
+
|
66
|
+
begin
|
67
|
+
machine(env).communicate.execute "mkdir -p #{guest_cache_key_path(env)} ; cp #{guest_key_path(env)} #{guest_cache_key_path(env)}", :sudo => true
|
68
|
+
ui(env).info "Copied #{guest_key_path(env)} to #{guest_cache_key_path(env)}"
|
69
|
+
rescue Exception => e
|
70
|
+
ui(env).error "Failed to copy #{guest_key_path(env)} to #{guest_cache_key_path(env)}"
|
71
|
+
ui(env).error e
|
72
|
+
raise ::Vagrant::Butcher::Errors::KeyCopyFailure
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def cleanup_cache_dir(env)
|
77
|
+
unless @failed_deletions
|
78
|
+
File.delete(client_key(env))
|
79
|
+
begin
|
80
|
+
Dir.delete(cache_dir(env))
|
81
|
+
rescue Errno::ENOTEMPTY
|
82
|
+
# The dir wasn't empty.
|
83
|
+
end
|
84
|
+
else
|
85
|
+
ui(env).warn "#{@failed_deletions} not butchered from the Chef Server. Client key was left at #{client_key(env)}"
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
def copy_guest_key(env)
|
90
|
+
begin
|
91
|
+
guest_cache_dir(env)
|
92
|
+
copy_key_file(env)
|
93
|
+
rescue ::Vagrant::Errors::VagrantError => e
|
94
|
+
ui(env).error "Failed to copy Chef client key from the guest: #{e.class}"
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-butcher
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cassiano Leal
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-12-
|
11
|
+
date: 2013-12-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ridley
|
@@ -86,8 +86,12 @@ files:
|
|
86
86
|
- lib/vagrant-butcher/action/copy_guest_key.rb
|
87
87
|
- lib/vagrant-butcher/config.rb
|
88
88
|
- lib/vagrant-butcher/env.rb
|
89
|
-
- lib/vagrant-butcher/env_helpers.rb
|
90
89
|
- lib/vagrant-butcher/errors.rb
|
90
|
+
- lib/vagrant-butcher/helpers.rb
|
91
|
+
- lib/vagrant-butcher/helpers/action.rb
|
92
|
+
- lib/vagrant-butcher/helpers/config.rb
|
93
|
+
- lib/vagrant-butcher/helpers/connection.rb
|
94
|
+
- lib/vagrant-butcher/helpers/key_files.rb
|
91
95
|
- lib/vagrant-butcher/plugin.rb
|
92
96
|
- lib/vagrant-butcher/version.rb
|
93
97
|
- spec/spec_helper.rb
|
@@ -1,113 +0,0 @@
|
|
1
|
-
require 'ridley'
|
2
|
-
|
3
|
-
# Silence celluloid warnings and errors: https://github.com/RiotGames/ridley/issues/220
|
4
|
-
::Ridley::Logging.logger.level = Logger.const_get 'FATAL'
|
5
|
-
|
6
|
-
module Vagrant
|
7
|
-
module Butcher
|
8
|
-
module EnvHelpers
|
9
|
-
def vm_config(env)
|
10
|
-
@vm_config ||= env[:machine].config.vm
|
11
|
-
end
|
12
|
-
|
13
|
-
def setup_connection(env)
|
14
|
-
unless @conn
|
15
|
-
begin
|
16
|
-
@conn = ::Ridley.new(
|
17
|
-
server_url: chef_provisioner(env).chef_server_url,
|
18
|
-
client_name: client_name(env),
|
19
|
-
client_key: client_key(env),
|
20
|
-
ssl: {
|
21
|
-
verify: butcher_config(env).verify_ssl
|
22
|
-
},
|
23
|
-
retries: butcher_config(env).retries,
|
24
|
-
retry_interval: butcher_config(env).retry_interval,
|
25
|
-
proxy: butcher_config(env).proxy
|
26
|
-
)
|
27
|
-
rescue Ridley::Errors::ClientKeyFileNotFoundOrInvalid
|
28
|
-
env[:butcher].ui.error "Chef client key not found at #{host_key_path(env)}"
|
29
|
-
rescue Exception => e
|
30
|
-
env[:butcher].ui.error "Could not connect to Chef Server: #{e}"
|
31
|
-
end
|
32
|
-
end
|
33
|
-
@conn
|
34
|
-
end
|
35
|
-
|
36
|
-
def chef_provisioner(env)
|
37
|
-
@chef_provisioner ||= vm_config(env).provisioners.find do |p|
|
38
|
-
p.config.is_a? VagrantPlugins::Chef::Config::ChefClient
|
39
|
-
end.config
|
40
|
-
end
|
41
|
-
|
42
|
-
def chef_client?(env)
|
43
|
-
vm_config(env).provisioners.select { |p| p.name == :chef_client }.any?
|
44
|
-
end
|
45
|
-
|
46
|
-
def butcher_config(env)
|
47
|
-
@butcher_config ||= env[:machine].config.butcher
|
48
|
-
end
|
49
|
-
|
50
|
-
def cache_dir(env)
|
51
|
-
@cache_dir ||= butcher_config(env).cache_dir
|
52
|
-
end
|
53
|
-
|
54
|
-
def cache_dir_mapping(env)
|
55
|
-
unless @cache_dir_mapping
|
56
|
-
# Grab all enabled synced_folders
|
57
|
-
synced_folders = vm_config(env).synced_folders.values.find_all { |f| !f[:disabled] }
|
58
|
-
|
59
|
-
# Expand the hostpath of each folder
|
60
|
-
synced_folders.each { |f| f[:hostpath] = File.expand_path(f[:hostpath]) }
|
61
|
-
|
62
|
-
# Select the folder wherein the cache_dir is contained
|
63
|
-
cache_dir_mappings = synced_folders.select { |f| cache_dir(env) =~ /^#{f[:hostpath]}/ }
|
64
|
-
@cache_dir_mapping = cache_dir_mappings.first if cache_dir_mappings.any?
|
65
|
-
end
|
66
|
-
@cache_dir_mapping
|
67
|
-
end
|
68
|
-
|
69
|
-
def guest_cache_dir(env)
|
70
|
-
unless @guest_cache_dir
|
71
|
-
if cache_dir_mapping(env)
|
72
|
-
# Return the path to the cache dir inside the VM
|
73
|
-
@guest_cache_dir = cache_dir(env).gsub(cache_dir_mapping(env)[:hostpath], cache_dir_mapping(env)[:guestpath])
|
74
|
-
env[:butcher].ui.info "Guest cache dir at #{@guest_cache_dir}"
|
75
|
-
else
|
76
|
-
@guest_cache_dir = false
|
77
|
-
env[:butcher].ui.error "We couldn't find a synced folder to access the cache dir on the guest."
|
78
|
-
env[:butcher].ui.error "Did you disable the /vagrant folder or set a butcher.cache_path that isn't shared with the guest?"
|
79
|
-
end
|
80
|
-
end
|
81
|
-
@guest_cache_dir
|
82
|
-
end
|
83
|
-
|
84
|
-
def guest_key_path(env)
|
85
|
-
@guest_key_path ||= butcher_config(env).guest_key_path
|
86
|
-
end
|
87
|
-
|
88
|
-
def guest_key_filename(env)
|
89
|
-
@guest_key ||= "#{env[:machine].name}-client.pem"
|
90
|
-
end
|
91
|
-
|
92
|
-
def host_key_path(env)
|
93
|
-
@host_key_path ||= "#{cache_dir(env)}/#{guest_key_filename(env)}"
|
94
|
-
end
|
95
|
-
|
96
|
-
def guest_cache_key_path(env)
|
97
|
-
@guest_cache_key_path ||= "#{guest_cache_dir(env)}/#{guest_key_filename(env)}"
|
98
|
-
end
|
99
|
-
|
100
|
-
def client_key(env)
|
101
|
-
@client_key ||= butcher_config(env).client_key || host_key_path(env)
|
102
|
-
end
|
103
|
-
|
104
|
-
def client_name(env)
|
105
|
-
@client_name ||= butcher_config(env).client_name || victim(env)
|
106
|
-
end
|
107
|
-
|
108
|
-
def victim(env)
|
109
|
-
@victim ||= chef_provisioner(env).node_name || vm_config(env).hostname || vm_config(env).box
|
110
|
-
end
|
111
|
-
end
|
112
|
-
end
|
113
|
-
end
|