lib/chef/knife/encrypt_create.rb in chef-vault-2.0.2 vs lib/chef/knife/encrypt_create.rb in chef-vault-2.1.0
- old
+ new
@@ -23,12 +23,12 @@
require File.expand_path('../mixin/helper', __FILE__)
include ChefVault::Mixin::KnifeCompat
include ChefVault::Mixin::Helper
end
- banner "knife encrypt create [VAULT] [ITEM] [VALUES] "\
- "--mode MODE --search SEARCH --admins ADMINS --json FILE"
+ banner "knife encrypt create VAULT ITEM VALUES "\
+ "--mode MODE --search SEARCH --admins ADMINS --json FILE --file FILE"
option :mode,
:short => '-M MODE',
:long => '--mode MODE',
:description => 'Chef mode to run in default - solo'
@@ -46,35 +46,45 @@
option :json,
:short => '-J FILE',
:long => '--json FILE',
:description => 'File containing JSON data to encrypt'
+ option :file,
+ :long => '--file FILE',
+ :description => 'File to be added to vault item as file-content'
+
def run
vault = @name_args[0]
item = @name_args[1]
values = @name_args[2]
search = config[:search]
admins = config[:admins]
json_file = config[:json]
+ file = config[:file]
set_mode(config[:mode])
- if vault && item && (values || json_file) && (search || admins)
+ if vault && item && (values || json_file || file) && (search || admins)
begin
vault_item = ChefVault::Item.load(vault, item)
raise ChefVault::Exceptions::ItemAlreadyExists,
"#{vault_item.data_bag}/#{vault_item.id} already exists, "\
"use 'knife encrypt remove' and "\
"'knife encrypt update' to make changes."
rescue ChefVault::Exceptions::KeysNotFound,
ChefVault::Exceptions::ItemNotFound
vault_item = ChefVault::Item.new(vault, item)
-
+
merge_values(values, json_file).each do |key, value|
vault_item[key] = value
- end
+ end
+ if file
+ vault_item["file-name"] = File.basename(file)
+ vault_item["file-content"] = File.open(file){ |file| file.read() }
+ end
+
vault_item.clients(search) if search
vault_item.admins(admins) if admins
vault_item.save
end
@@ -86,6 +96,6 @@
def show_usage
super
exit 1
end
end
-
\ No newline at end of file
+