Class: Chef::Knife::VaultEdit

Inherits:
Chef::Knife show all
Includes:
VaultBase
Defined in:
lib/chef/knife/vault_edit.rb

Instance Method Summary collapse

Methods included from VaultBase

included, #show_usage

Instance Method Details

#runObject



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/chef/knife/vault_edit.rb', line 30

def run
  vault = @name_args[0]
  item = @name_args[1]

  set_mode(config[:vault_mode])

  if vault && item
    begin
      vault_item = ChefVault::Item.load(vault, item)

      filtered_vault_data = vault_item.raw_data.select{|x| x != 'id'}

      updated_vault_json = edit_data(filtered_vault_data)

      # Clean out contents of existing local vault_item
      vault_item.raw_data.each do |key, _|
        vault_item.remove(key) unless key == 'id'
      end

      # write new vault_item key/value pairs
      updated_vault_json.each do |key, value|
        vault_item[key] = value
      end

      vault_item.save
    rescue ChefVault::Exceptions::KeysNotFound,
           ChefVault::Exceptions::ItemNotFound
      raise ChefVault::Exceptions::ItemNotFound,
        "#{vault}/#{item} does not exist, "\
        "use 'knife vault create' to create."
    end
  else
    show_usage
  end
end