6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
# File 'lib/chef/knife/briefcase_annex_hook.rb', line 6
def run
item_id = ENV['ANNEX_KEY'].gsub(/[^[:alnum:]_\-]+/, '_')
case ENV['ANNEX_ACTION']
when 'store'
require 'chef/knife/briefcase_put'
run_subcommand BriefcasePut, item_id, ENV['ANNEX_FILE']
when 'retrieve'
require 'chef/knife/briefcase_get'
run_subcommand BriefcaseGet, item_id, ENV['ANNEX_FILE']
when 'remove'
delete_object(Chef::DataBagItem, item_id, 'briefcase_item') do
rest.delete_rest("data/#{data_bag_name}/#{item_name}")
end
when 'checkpresent'
begin
data_bag = Chef::DataBag.load(data_bag_name)
puts ENV['ANNEX_KEY'] if data_bag.include?(item_id)
rescue Net::HTTPServerException => e
raise unless Net::HTTPNotFound === e.data
end
else
raise RuntimeError, "Unknown ANNEX_ACTION #{ENV['ANNEX_ACTION'].inspect}"
end
end
|