class Chef::Util::DSC::ResourceStore
Public Class Methods
Source
# File lib/chef/util/dsc/resource_store.rb, line 28 def self.instance @@instance ||= ResourceStore.new.tap do |store| store.send(:populate_cache) end end
Public Instance Methods
Source
# File lib/chef/util/dsc/resource_store.rb, line 38 def find(name, module_name = nil) found = find_resources(name, module_name, resources) # We don't have it, query for the resource...it might # have been added since we last queried if found.length == 0 rs = query_resource(name) add_resources(rs) found = find_resources(name, module_name, rs) end found end
Source
# File lib/chef/util/dsc/resource_store.rb, line 34 def resources @resources ||= [] end
Private Instance Methods
Source
# File lib/chef/util/dsc/resource_store.rb, line 54 def add_resource(new_r) count = resources.count do |r| r["ResourceType"].casecmp(new_r["ResourceType"]) == 0 end if count == 0 resources << new_r end end
Source
# File lib/chef/util/dsc/resource_store.rb, line 63 def add_resources(rs) rs.each do |r| add_resource(r) end end
Source
# File lib/chef/util/dsc/resource_store.rb, line 73 def find_resources(name, module_name, rs) found = rs.find_all do |r| name_matches = r["Name"].casecmp(name) == 0 if name_matches module_name.nil? || (r["Module"] && r["Module"]["Name"].casecmp(module_name) == 0) else false end end end
Source
# File lib/chef/util/dsc/resource_store.rb, line 69 def populate_cache @resources = query_resources end
Source
# File lib/chef/util/dsc/resource_store.rb, line 90 def query_resource(resource_name) ret_val = powershell_exec("get-dscresource #{resource_name}").result if ret_val.empty? [] elsif ret_val.is_a? Array ret_val else [ret_val] end end
Returns a list of dsc resources matching the provided name
Source
# File lib/chef/util/dsc/resource_store.rb, line 85 def query_resources powershell_exec("get-dscresource").result end
Returns a list of dsc resources