Merge pull request #104 from lookout/submit_options

Expose SubmitOptions via a submit_options block (analogous to configure, etc)
This commit is contained in:
Colin Surprenant 2014-07-19 19:22:28 -04:00
commit 3f711edc96
1 changed files with 19 additions and 1 deletions

View File

@ -3,6 +3,7 @@ require 'red_storm/configuration'
require 'red_storm/configurator'
java_import 'backtype.storm.topology.TopologyBuilder'
java_import 'backtype.storm.generated.SubmitOptions'
module RedStorm
module DSL
@ -135,6 +136,10 @@ module RedStorm
@configure_block = configure_block if block_given?
end
def self.submit_options(&submit_options_block)
@submit_options_block = submit_options_block if block_given?
end
def self.on_submit(method_name = nil, &submit_block)
@submit_block = block_given? ? submit_block : lambda {|env| self.send(method_name, env)}
end
@ -165,7 +170,16 @@ module RedStorm
configurator.instance_exec(env, &self.class.configure_block)
submitter = (env == :local) ? @cluster = LocalCluster.new : StormSubmitter
submitter.submitTopology(self.class.topology_name, configurator.config, topology)
if self.class.submit_options_block && env != :local
submit_options = SubmitOptions.new
submit_options.instance_exec(env, &self.class.submit_options_block)
submitter.submitTopology(self.class.topology_name, configurator.config, topology, submit_options)
else
submitter.submitTopology(self.class.topology_name, configurator.config, topology)
end
instance_exec(env, &self.class.submit_block)
end
@ -211,6 +225,10 @@ module RedStorm
@configure_block ||= lambda{|env|}
end
def self.submit_options_block
@submit_options_block
end
def self.submit_block
@submit_block ||= lambda{|env|}
end