aboutsummaryrefslogtreecommitdiffstats
path: root/lib/tasks/helpers/simple_interfaces.rb
diff options
context:
space:
mode:
authorAlban Peignier2018-03-05 23:08:45 +0100
committerGitHub2018-03-05 23:08:45 +0100
commit75f50a80a458b1de6d211ee6a98587f1262bc1bf (patch)
tree298111da5f2f3dfccb46e9e142c9ec9d82a8c887 /lib/tasks/helpers/simple_interfaces.rb
parent4a9b3e5868e379fa41b214b35d3ded60d8464a64 (diff)
parentcfdd12aa6b46331435bc62209c51cc14f470bd38 (diff)
downloadchouette-core-75f50a80a458b1de6d211ee6a98587f1262bc1bf.tar.bz2
Merge pull request #359 from af83/6068-simple-exporter
Simple exporter. Refs #6068
Diffstat (limited to 'lib/tasks/helpers/simple_interfaces.rb')
-rw-r--r--lib/tasks/helpers/simple_interfaces.rb28
1 files changed, 28 insertions, 0 deletions
diff --git a/lib/tasks/helpers/simple_interfaces.rb b/lib/tasks/helpers/simple_interfaces.rb
new file mode 100644
index 000000000..5b593be43
--- /dev/null
+++ b/lib/tasks/helpers/simple_interfaces.rb
@@ -0,0 +1,28 @@
+module SimpleInterfacesHelper
+ def self.interface_output_to_csv interface, output_dir
+ FileUtils.mkdir_p output_dir
+ filepath = File.join output_dir, + "#{interface.configuration_name}_#{Time.now.strftime "%y%m%d%H%M"}_out.csv"
+ cols = %w(line kind event message error)
+ if interface.reload.journal.size > 0 && interface.journal.first["row"].present?
+ keys = interface.journal.first["row"].map(&:first)
+ CSV.open(filepath, "w") do |csv|
+ csv << cols + keys
+ interface.journal.each do |j|
+ csv << cols.map{|c| j[c]} + j["row"].map(&:last)
+ end
+ end
+ puts "Task Output written in #{filepath}"
+ end
+ end
+
+ def self.run_interface_controlling_interruption interface, method, args
+ begin
+ interface.send(method, verbose: true)
+ rescue Interrupt
+ raise
+ ensure
+ puts "\n\e[33m***\e[0m Done, status: " + (interface.status == "success" ? "\e[32m" : "\e[31m" ) + (interface.status || "") + "\e[0m"
+ interface_output_to_csv interface, args[:logs_output_dir]
+ end
+ end
+end