class Chef::Knife::VaultCreate
Public Instance Methods
run()
click to toggle source
# File lib/chef/knife/vault_create.rb, line 61 def run vault = @name_args[0] item = @name_args[1] values = @name_args[2] search = config[:search] json_file = config[:json] file = config[:file] keys_mode = config[:keys_mode] set_mode(config[:vault_mode]) if vault && item && (search || clients || admins) begin vault_item = ChefVault::Item.load(vault, item) raise ChefVault::Exceptions::ItemAlreadyExists, "#{vault_item.data_bag}/#{vault_item.id} already exists, "\ "use 'knife vault remove' 'knife vault update' "\ "or 'knife vault edit' to make changes." rescue ChefVault::Exceptions::KeysNotFound, ChefVault::Exceptions::ItemNotFound, Chef::Exceptions::InvalidDataBagItemID vault_item = ChefVault::Item.new(vault, item) if values || json_file || file merge_values(values, json_file).each do |key, value| vault_item[key] = value end if file vault_item["file-name"] = File.basename(file) vault_item["file-content"] = File.open(file, &:read) end else vault_json = edit_hash({}) vault_json.each do |key, value| vault_item[key] = value end end vault_item.search(search) if search vault_item.clients if search vault_item.clients(clients) if clients vault_item.admins(admins) if admins vault_item.keys.mode(keys_mode) if keys_mode vault_item.save end else show_usage end end