class OmfRc::ResourceFactory
Factory class for managing available proxies and creating new resource proxy instances
Public Class Methods
create(type, opts = {}, creation_opts = {}, &creation_callback)
click to toggle source
Factory method to initiate new resource proxy
@param (see OmfRc::ResourceProxy::AbstractResource#initialize)
@see OmfRc::ResourceProxy::AbstractResource
# File lib/omf_rc/resource_factory.rb, line 25 def create(type, opts = {}, creation_opts = {}, &creation_callback) unless @@proxy_list.include?(type) raise ArgumentError, "Resource type not found: #{type.to_s}" unless @@proxy_list.include?(type) end # Create a new instance of abstract resource and return it debug "Create resource type: #{type} opts: #{opts} copts: #{creation_opts}" OmfRc::ResourceProxy::AbstractResource.new(type, opts, creation_opts) do |res| creation_callback.call(res) if creation_callback end end
Also aliased as: new
load_additional_resource_proxies(folder)
click to toggle source
Require files from a folder contains resource proxy definition files
@param [String] folder contains resource proxy definition files
# File lib/omf_rc/resource_factory.rb, line 62 def load_additional_resource_proxies(folder) Dir["#{folder}/*.rb"].each do |file| require "#{folder}/#{File.basename(file).gsub(/\.rb/, '')}" end end
load_default_resource_proxies()
click to toggle source
Require files from default resource proxy library folder
# File lib/omf_rc/resource_factory.rb, line 53 def load_default_resource_proxies Dir["#{File.dirname(__FILE__)}/resource_proxy/*.rb"].each do |file| require "omf_rc/resource_proxy/#{File.basename(file).gsub(/\.rb/, '')}" end end
proxy_list()
click to toggle source
Return the proxy list
# File lib/omf_rc/resource_factory.rb, line 39 def proxy_list @@proxy_list end
register_proxy(proxy_opts)
click to toggle source
Add a proxy to the list
# File lib/omf_rc/resource_factory.rb, line 44 def register_proxy(proxy_opts) if @@proxy_list.has_key? proxy_opts[:name] raise StandardError, "Resource has been registered already" else @@proxy_list.update(proxy_opts) end end