module Chef::DSL::DataQuery

Chef::DSL::DataQuery

Provides DSL for querying data from the chef-server via search or data bag.

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