From ddb13bc2b018c93d60302967fa1dfb456fbaae74 Mon Sep 17 00:00:00 2001 From: Sean Nolen Date: Tue, 26 Jan 2016 09:52:24 +0300 Subject: [PATCH 1/3] Discover clients using search query ChefVault::Item#clients accepts either Chef::ApiClient or search query. If clients are not provided by the LWRP, use the search query to discover them. --- libraries/chef_vault_secret.rb | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/libraries/chef_vault_secret.rb b/libraries/chef_vault_secret.rb index 9925d3b..11c0e94 100644 --- a/libraries/chef_vault_secret.rb +++ b/libraries/chef_vault_secret.rb @@ -83,8 +83,13 @@ def load_current_resource Chef::Log.debug("#{new_resource.id} search query: '#{new_resource.search}'") item.search(new_resource.search) - Chef::Log.debug("#{new_resource.id} clients: '#{new_resource.clients}'") - item.clients([new_resource.clients].flatten.join(',')) unless new_resource.clients.nil? + if new_resource.clients.nil? + Chef::Log.debug("No clients specified. Using search query to discover clients") + item.clients(new_resource.search) + else + Chef::Log.debug("#{new_resource.id} clients: '#{new_resource.clients}'") + item.clients([new_resource.clients].flatten.join(',')) + end Chef::Log.debug("#{new_resource.id} admins (users): '#{new_resource.admins}'") item.admins([new_resource.admins].flatten.join(',')) item.save From 0763a7891154de63e2467d6c182214ee513cbc72 Mon Sep 17 00:00:00 2001 From: Sean Nolen Date: Tue, 26 Jan 2016 09:57:07 +0300 Subject: [PATCH 2/3] Updated README for client search default --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index cbb1a8e..92f3e6c 100644 --- a/README.md +++ b/README.md @@ -88,8 +88,8 @@ declarative state. To get the `knife vault create` behavior, use Corresponds to the "admin" option when using the chef-vault knife plugin. Can be specified as a comma separated string or an array. See examples, below. -* `clients` - A search query for the nodes' API clients that should - have access to the item. +* `clients` - Either a Chef::ApiClient object or a search query for the nodes' API clients that should + have access to the item. Defaults to using the query specified for `search` * `search` - Search query that would match the same used for the clients, gets stored as a field in the item. * `raw_data` - The raw data, as a Ruby Hash, that will be stored in From b31d2f5641c89f93648d3b2d6550745125040bfc Mon Sep 17 00:00:00 2001 From: Sean Nolen Date: Tue, 26 Jan 2016 19:18:13 +0300 Subject: [PATCH 3/3] Fix for Rubocop --- libraries/chef_vault_secret.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/chef_vault_secret.rb b/libraries/chef_vault_secret.rb index 11c0e94..fa2d304 100644 --- a/libraries/chef_vault_secret.rb +++ b/libraries/chef_vault_secret.rb @@ -84,7 +84,7 @@ def load_current_resource Chef::Log.debug("#{new_resource.id} search query: '#{new_resource.search}'") item.search(new_resource.search) if new_resource.clients.nil? - Chef::Log.debug("No clients specified. Using search query to discover clients") + Chef::Log.debug('No clients specified. Using search query to discover clients') item.clients(new_resource.search) else Chef::Log.debug("#{new_resource.id} clients: '#{new_resource.clients}'")