aboutsummaryrefslogtreecommitdiff
path: root/app/jobs/govuk_guix/job.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/jobs/govuk_guix/job.rb')
-rw-r--r--app/jobs/govuk_guix/job.rb96
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