class Percolate::Adapter::ChefDataBagAdapter
An adapter for loading from Chef data bags.
Attributes
entities_data_bag[W]
Public Class Methods
new(data_source)
click to toggle source
Calls superclass method
Percolate::Adapter::BaseAdapter::new
# File lib/percolate/adapter/chef_data_bag_adapter.rb, line 27 def initialize(data_source) super @entities_data_bag = "entities" end
Public Instance Methods
load_entities()
click to toggle source
# File lib/percolate/adapter/chef_data_bag_adapter.rb, line 33 def load_entities begin @data_source.data_bag(@entities_data_bag).reduce({}) do |current, item_name| Percolate::Util.merge_attributes( current, @data_source.data_bag_item(@entities_data_bag, item_name).raw_data["entities"] || {} ) end rescue Net::HTTPServerException => e # Reraise the exception if the status code isn't 404 Not Found. if e.response.code != "404" raise end nil end end
load_facet(context, name)
click to toggle source
# File lib/percolate/adapter/chef_data_bag_adapter.rb, line 51 def load_facet(context, name) name = name.to_s facets = begin @data_source.data_bag(context).map do |item_name| facets_hash = @data_source.data_bag_item(context, item_name).raw_data["facets"] facet_hash = facets_hash[name] || {} facet_type = facet_hash.fetch("type", name) facet_attrs = facet_hash.fetch("attrs", {}) configure_facet(create_facet(facet_type), facet_attrs) end rescue Net::HTTPServerException => e # Reraise the exception if the status code isn't 404 Not Found. if e.response.code != "404" raise end [] end if facets.size > 0 facets[1...facets.size].reduce(facets[0]) do |current, other| current.merge(other) end else nil end end