class Rubble::Tool
Attributes
environments[RW]
resources[RW]
servers[RW]
Public Class Methods
new()
click to toggle source
# File lib/rubble/tool.rb, line 16 def initialize @log = Logging.logger[self] @resources = {} @servers = {} @environments = {} end
Public Instance Methods
configure(config, file_name = nil)
click to toggle source
# File lib/rubble/tool.rb, line 118 def configure(config, file_name = nil) self.instance_eval(config, file_name) end
configure_resource(type, name, *params, &block)
click to toggle source
# File lib/rubble/tool.rb, line 102 def configure_resource(type, name, *params, &block) resource = provide_resource(type, name) do create_resource(type, name, params) end if not block.nil? then Docile.dsl_eval(resource, &block) end end
create_plan(type, env, server, *params, &block)
click to toggle source
# File lib/rubble/tool.rb, line 83 def create_plan(type, env, server, *params, &block) Plan.const_get(type.to_s.capitalize).new(env, server, *params) end
create_resource(type, name, *params, &block)
click to toggle source
# File lib/rubble/tool.rb, line 75 def create_resource(type, name, *params, &block) Resource.const_get(type.to_s.capitalize).new(name, *params) end
create_target(type, name, *params, &block)
click to toggle source
# File lib/rubble/tool.rb, line 79 def create_target(type, name, *params, &block) Target.const_get(type.to_s.capitalize).new(name, *params) end
environment(name, &block)
click to toggle source
# File lib/rubble/tool.rb, line 42 def environment(name, &block) environment = @environments.fetch(name) do |k| @environments[name] = Environment.new(self, name) end if not block.nil? then Docile.dsl_eval(environment, &block) end end
execute(environment_names) { |plan, context| ... }
click to toggle source
# File lib/rubble/tool.rb, line 23 def execute(environment_names) context = Context.new(self) begin environment_names.each do |environment_name| environment = @environments[environment_name] if environment.nil? then raise ArgumentError, "Undefined environment '#{environment_name}'." end environment.execute(context) do |plan| yield(plan, context) end end ensure context.close end end
is_plan?(symbol)
click to toggle source
# File lib/rubble/tool.rb, line 70 def is_plan?(symbol) name = symbol.to_s name =~ /^[a-z_]+$/i and Plan.const_defined?(name.capitalize) end
is_resource?(symbol)
click to toggle source
# File lib/rubble/tool.rb, line 65 def is_resource?(symbol) name = symbol.to_s name =~ /^[a-z_]+$/i and Resource.const_defined?(name.capitalize) end
is_target?(symbol)
click to toggle source
# File lib/rubble/tool.rb, line 60 def is_target?(symbol) name = symbol.to_s name =~ /^[a-z_]+$/i and Target.const_defined?(name.capitalize) end
method_missing(symbol, *arguments, &block)
click to toggle source
Calls superclass method
# File lib/rubble/tool.rb, line 122 def method_missing(symbol, *arguments, &block) if is_resource?(symbol) then configure_resource(symbol, arguments[0], *arguments[1..-1], &block) else super end end
provide_resource(type, name) { |: create_resource(type, name)| ... }
click to toggle source
# File lib/rubble/tool.rb, line 93 def provide_resource(type, name) group = @resources.fetch(type) do |k| @resources[k] = {} end group.fetch(name) do |k| group[name] = block_given? ? yield : create_resource(type, name) end end
provide_server(name) { |: server| ... }
click to toggle source
# File lib/rubble/tool.rb, line 87 def provide_server(name) @servers.fetch(name) do |k| @servers[name] = block_given? ? yield : Server.new(self, name) end end
read_config(file_name)
click to toggle source
# File lib/rubble/tool.rb, line 111 def read_config(file_name) if File.exists?(file_name) then @log.info("Reading configuration from '#{file_name}'.") configure(File.read(file_name), file_name) end end
respond_to?(symbol, include_private = false)
click to toggle source
Calls superclass method
# File lib/rubble/tool.rb, line 130 def respond_to?(symbol, include_private = false) if is_target?(symbol) then true else super end end
server(name, &block)
click to toggle source
# File lib/rubble/tool.rb, line 51 def server(name, &block) server = @servers.fetch(name) do |k| @servers[name] = Server.new(self, name) end if not block.nil? then Docile.dsl_eval(server, &block) end end