diff options
Diffstat (limited to 'app/jobs/govuk_guix/job.rb')
-rw-r--r-- | app/jobs/govuk_guix/job.rb | 96 |
1 files changed, 0 insertions, 96 deletions
diff --git a/app/jobs/govuk_guix/job.rb b/app/jobs/govuk_guix/job.rb deleted file mode 100644 index 5f95f4d..0000000 --- a/app/jobs/govuk_guix/job.rb +++ /dev/null @@ -1,96 +0,0 @@ -# GOV.UK Mini Environment Admin -# Copyright © 2018 Christopher Baines <mail@cbaines.net> -# -# This file is part of the GOV.UK Mini Environment Admin. -# -# The GOV.UK Mini Environment Admin is free software: you can -# redistribute it and/or modify it under the terms of the GNU Affero -# General Public License as published by the Free Software Foundation, -# either version 3 of the License, or (at your option) any later -# version. -# -# The GOV.UK Mini Environment Admin is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public -# License along with the GOV.UK Mini Environment Admin. If not, see -# <http://www.gnu.org/licenses/>. - -require 'open3' -require 'shellwords' - -class GovukGuix::Job < Que::Job - def run_command(*command, run_remotely_on_host: nil) - if run_remotely_on_host - command = command.map do |arg| - Shellwords.escape(arg) - end - - command = [ - 'ssh', - run_remotely_on_host, - *command - ] - end - - logger.debug("#{self.class}: Running command #{command.join(' ')}") - - Open3.popen2e(*command) do |_stdin, stdout_and_stderr, wait_thr| - logger.info("#{self.class}: commmand running, pid #{wait_thr.pid}") - - output = [] - stdout_and_stderr.each_line do |line| - logger.debug(self.class) { line.chomp } - output << line - end - - exit_status = wait_thr.value - unless exit_status == 0 - logger.error(self.class) { "failed, exit status #{exit_status}" } - - raise "Running #{command.join(' ')} failed:\n\n#{output.join}\n" - end - - output - end - end - - def read_json_file(filename, from_remote_host: nil) - if from_remote_host - command = [ - 'ssh', - from_remote_host, - 'cat', - filename - ] - - stdout_str, status = Open3.capture2(*command) - - unless status.exitstatus == 0 - logger.error(self.class) { "failed, exit status #{exit_status}" } - - raise "Running #{command.join(' ')} failed:\n\n#{output.join}\n" - end - - JSON.parse(stdout_str) - else - JSON.parse(File.read(filename)) - end - end - - def hash_to_arguments(hash) - hash.flat_map do |(key, value)| - transformed_key = key.to_s.tr('_', '-') - - if value == true - ["--#{transformed_key}"] - elsif value.kind_of?(Array) - value.map { |x| "--#{transformed_key}=#{x}" } - else - ["--#{transformed_key}=#{value}"] - end - end - end -end |