lib/gooddata/commands/process.rb in gooddata-0.6.0.pre11 vs lib/gooddata/commands/process.rb in gooddata-0.6.0
- old
+ new
@@ -1,151 +1,155 @@
-module GoodData::Command
- class Process
+# encoding: UTF-8
- def self.list(options={})
- GoodData.with_project(options[:project_id]) do
- processes = GoodData::Process[:all]
- end
- end
+module GoodData
+ module Command
+ class Process
+ class << self
+ def list(options={})
+ GoodData.with_project(options[:project_id]) do
+ processes = GoodData::Process[:all]
+ end
+ end
- def self.get(options={})
- id = options[:process_id]
- fail "Unspecified process id" if id.nil?
-
- GoodData.with_project(options[:project_id]) do
- GoodData::Process[id]
- end
- end
+ def get(options={})
+ id = options[:process_id]
+ fail 'Unspecified process id' if id.nil?
- def self.deploy(dir, options={})
- verbose = options[:verbose] || false
- GoodData.with_project(options[:project_id]) do
- params = options[:params].nil? ? [] : [options[:params]]
- deploy_graph(dir, options.merge({:files_to_exclude => params}))
- end
- end
+ GoodData.with_project(options[:project_id]) do
+ GoodData::Process[id]
+ end
+ end
- def self.with_deploy(dir, options={}, &block)
- verbose = options[:verbose] || false
- GoodData.with_project(options[:project_id]) do
- params = options[:params].nil? ? [] : [options[:params]]
- if block
- begin
- res = deploy_graph(dir, options.merge({:files_to_exclude => params}))
- block.call(res)
- ensure
- self_link = res && res["process"]["links"]["self"]
- GoodData.delete(self_link)
+ def deploy(dir, options={})
+ verbose = options[:verbose] || false
+ GoodData.with_project(options[:project_id]) do
+ params = options[:params].nil? ? [] : [options[:params]]
+ deploy_graph(dir, options.merge({:files_to_exclude => params}))
end
- else
- deploy_graph(dir, options.merge({:files_to_exclude => params}))
end
- end
- end
- def self.execute_process(link, dir, options={})
- dir = Pathname(dir)
- type = :ruby
- if type == :ruby
- result = GoodData.post(link, {
- :execution => {
- :graph => ("./main.rb").to_s,
- :params => options[:expanded_params]
- }
- })
- begin
- GoodData.poll(result, "executionTask")
- rescue RestClient::RequestFailed => e
+ def with_deploy(dir, options={}, &block)
+ verbose = options[:verbose] || false
+ GoodData.with_project(options[:project_id]) do |project|
+ params = options[:params].nil? ? [] : [options[:params]]
+ if block
+ begin
+ res = deploy_graph(dir, options.merge({:files_to_exclude => params}))
+ block.call(res)
+ ensure
+ self_link = res && res['process']['links']['self']
+ GoodData.delete(self_link)
+ end
+ else
+ deploy_graph(dir, options.merge({:files_to_exclude => params}))
+ end
+ end
+ end
- ensure
- result = GoodData.get(result["executionTask"]["links"]["detail"])
- if result["executionDetail"]["status"] == "ERROR"
- fail "Runing process failed. You can look at a log here #{result["executionDetail"]["logFileName"]}"
+ def execute_process(link, dir, options={})
+ dir = Pathname(dir)
+ type = :ruby
+ if type == :ruby
+ result = GoodData.post(link, {
+ :execution => {
+ :graph => ('./main.rb').to_s,
+ :params => options[:expanded_params]
+ }
+ })
+ begin
+ GoodData.poll(result, 'executionTask')
+ rescue RestClient::RequestFailed => e
+
+ ensure
+ result = GoodData.get(result['executionTask']['links']['detail'])
+ if result['executionDetail']['status'] == 'ERROR'
+ fail "Runing process failed. You can look at a log here #{result["executionDetail"]["logFileName"]}"
+ end
+ end
+ result
+ else
+ result = GoodData.post(link, {
+ :execution => {
+ :graph => dir + 'graphs/main.grf',
+ :params => {}
+ }
+ })
+ begin
+ GoodData.poll(result, 'executionTask')
+ rescue RestClient::RequestFailed => e
+
+ ensure
+ result = GoodData.get(result['executionTask']['links']['detail'])
+ if result['executionDetail']['status'] == 'ERROR'
+ fail "Runing process failed. You can look at a log here #{result["executionDetail"]["logFileName"]}"
+ end
+ end
+ result
end
end
- result
- else
- result = GoodData.post(link, {
- :execution => {
- :graph => dir + "graphs/main.grf",
- :params => {}
- }
- })
- begin
- GoodData.poll(result, "executionTask")
- rescue RestClient::RequestFailed => e
- ensure
- result = GoodData.get(result["executionTask"]["links"]["detail"])
- if result["executionDetail"]["status"] == "ERROR"
- fail "Runing process failed. You can look at a log here #{result["executionDetail"]["logFileName"]}"
+ def run(dir, options={})
+ email = options[:email]
+ verbose = options[:v]
+ dir = Pathname(dir)
+ name = options[:name] || "Temporary deploy[#{dir}][#{options[:project_name]}]"
+
+ with_deploy(dir, options.merge(:name => name)) do |deploy_response|
+ puts HighLine::color('Executing', HighLine::BOLD) if verbose
+ result = execute_process(deploy_response['process']['links']['executions'], dir, options)
end
end
- result
- end
- end
- def self.run(dir, options={})
- email = options[:email]
- verbose = options[:v]
- dir = Pathname(dir)
- name = options[:name] || "Temporary deploy[#{dir}][#{options[:project_name]}]"
+ private
- with_deploy(dir, options.merge(:name => name)) do |deploy_response|
- puts HighLine::color("Executing", HighLine::BOLD) if verbose
- result = execute_process(deploy_response["process"]["links"]["executions"], dir, options)
- end
- end
+ def deploy_graph(dir, options={})
+ dir = Pathname(dir) || fail('Directory is not specified')
+ fail "\"#{dir}\" is not a directory" unless dir.directory?
+ files_to_exclude = options[:files_to_exclude].map { |p| Pathname(p) }
- private
- def self.deploy_graph(dir, options={})
- dir = Pathname(dir) || fail("Directory is not specified")
- fail "\"#{dir}\" is not a directory" unless dir.directory?
- files_to_exclude = options[:files_to_exclude].map {|p| Pathname(p)}
+ project_id = options[:project_id] || fail('Project Id has to be specified')
- project_id = options[:project_id] || fail("Project Id has to be specified")
+ type = options[:type] || 'GRAPH'
+ deploy_name = options[:name]
+ verbose = options[:verbose] || false
- type = options[:type] || "GRAPH"
- deploy_name = options[:name]
- verbose = options[:verbose] || false
-
- puts HighLine::color("Deploying #{dir}", HighLine::BOLD) if verbose
- res = nil
+ puts HighLine::color("Deploying #{dir}", HighLine::BOLD) if verbose
+ res = nil
- Tempfile.open("deploy-graph-archive") do |temp|
- Zip::OutputStream.open(temp.path) do |zio|
- FileUtils::cd(dir) do
+ Tempfile.open('deploy-graph-archive') do |temp|
+ Zip::OutputStream.open(temp.path) do |zio|
+ FileUtils::cd(dir) do
- files_to_pack = Dir.glob("./**/*").reject {|f| files_to_exclude.include?(Pathname(dir) + f)}
- files_to_pack.each do |item|
- puts "including #{item}" if verbose
- unless File.directory?(item)
- zio.put_next_entry(item)
- zio.print IO.read(item)
+ files_to_pack = Dir.glob('./**/*').reject { |f| files_to_exclude.include?(Pathname(dir) + f) }
+ files_to_pack.each do |item|
+ puts "including #{item}" if verbose
+ unless File.directory?(item)
+ zio.put_next_entry(item)
+ zio.print IO.read(item)
+ end
+ end
end
end
+
+ GoodData.upload_to_user_webdav(temp.path)
+ process_id = options[:process]
+
+ data = {
+ :process => {
+ :name => deploy_name,
+ :path => "/uploads/#{File.basename(temp.path)}",
+ :type => type
+ }
+ }
+ res = if process_id.nil?
+ GoodData.post("/gdc/projects/#{GoodData.project.pid}/dataload/processes", data)
+ else
+ GoodData.put("/gdc/projects/#{GoodData.project.pid}/dataload/processes/#{process_id}", data)
+ end
end
+ puts HighLine::color("Deploy DONE #{dir}", HighLine::GREEN) if verbose
+ res
end
-
- GoodData.upload_to_user_webdav(temp.path)
- process_id = options[:process]
-
- data = {
- :process => {
- :name => deploy_name,
- :path => "/uploads/#{File.basename(temp.path)}",
- :type => type
- }
- }
- res = if process_id.nil?
- GoodData.post("/gdc/projects/#{GoodData.project.pid}/dataload/processes", data)
- else
- GoodData.put("/gdc/projects/#{GoodData.project.pid}/dataload/processes/#{process_id}", data)
- end
end
- puts HighLine::color("Deploy DONE #{dir}", HighLine::GREEN) if verbose
- res
end
-
-
end
-end
+end
\ No newline at end of file