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
new(type, opts = {}, creation_opts = {}, &creation_callback)
Alias for: create
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