module Chef::DSL::DataQuery

Provides DSL helper methods for querying the search interface, data bag interface or node interface.

Public Instance Methods

data_bag(bag) click to toggle source
# File lib/chef/dsl/data_query.rb, line 49
def data_bag(bag)
  DataBag.validate_name!(bag.to_s)
  rbag = DataBag.load(bag)
  rbag.keys
rescue Exception
  Log.error("Failed to list data bag items in data bag: #{bag.inspect}")
  raise
end
data_bag_item(bag, item, secret = nil) click to toggle source
# File lib/chef/dsl/data_query.rb, line 58
def data_bag_item(bag, item, secret = nil)
  DataBag.validate_name!(bag.to_s)
  DataBagItem.validate_id!(item)

  item = DataBagItem.load(bag, item)
  if encrypted?(item.raw_data)
    Log.debug("Data bag item looks encrypted: #{bag.inspect} #{item.inspect}")

    # Try to load the data bag item secret, if secret is not provided.
    # Chef::EncryptedDataBagItem.load_secret may throw a variety of errors.
    begin
      secret ||= EncryptedDataBagItem.load_secret
      item = EncryptedDataBagItem.new(item.raw_data, secret)
    rescue Exception
      Log.error("Failed to load secret for encrypted data bag item: #{bag.inspect} #{item.inspect}")
      raise
    end
  end

  item
rescue Exception
  Log.error("Failed to load data bag item: #{bag.inspect} #{item.inspect}")
  raise
end
tagged?(*tags) click to toggle source

True if all the tags are set on the node.

@param [Array<String>] tags to check against @return boolean

# File lib/chef/dsl/data_query.rb, line 94
def tagged?(*tags)
  tags.each do |tag|
    return false unless run_context.node.tags.include?(tag)
  end
  true
end