Class: Chef::Knife::BriefcaseAnnexHook

Inherits:
KnifeBriefcase::Knife
  • Object
show all
Defined in:
lib/chef/knife/briefcase_annex_hook.rb

Instance Method Summary collapse

Instance Method Details

#data_bag_nameObject



42
43
44
# File 'lib/chef/knife/briefcase_annex_hook.rb', line 42

def data_bag_name
  config[:data_bag] || Chef::Config[:briefcase_annex_data_bag] || 'annex'
end

#runObject



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
      # Ignore 404 - checkpresent should succeed and *not* print the
      # key when not found.
      raise unless Net::HTTPNotFound === e.data
    end
  else
    raise RuntimeError, "Unknown ANNEX_ACTION #{ENV['ANNEX_ACTION'].inspect}"
  end
end

#run_subcommand(cls, *args) ⇒ Object



34
35
36
37
38
39
40
# File 'lib/chef/knife/briefcase_annex_hook.rb', line 34

def run_subcommand(cls, *args)
  subcmd = cls.new
  subcmd.ui = ui
  subcmd.name_args = args
  subcmd.config[:data_bag] = data_bag_name
  subcmd.run
end