aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2018-06-22 07:34:07 +0100
committerChristopher Baines <mail@cbaines.net>2018-06-22 07:34:07 +0100
commit1fcb11bb31d0ffbf37de3ce704231bdcdaf787ca (patch)
treecd8f0c90a9e1f58455c27c3f60f0afc1c2387c1a
parent3f2561ef31851f43e9270679eb23304007aadd67 (diff)
downloadgovuk-mini-environment-admin-1fcb11bb31d0ffbf37de3ce704231bdcdaf787ca.tar
govuk-mini-environment-admin-1fcb11bb31d0ffbf37de3ce704231bdcdaf787ca.tar.gz
Replace the GovukGuix::BuildJob
With a service that performs the same function, and use the MiniEnvironmentJob instead.
-rw-r--r--app/controllers/mini_environments_controller.rb7
-rw-r--r--app/jobs/govuk_guix/create_data_snapshot_job.rb3
-rw-r--r--app/jobs/govuk_guix/fetch_revision_job.rb3
-rw-r--r--app/models/backends/terraform_aws.rb2
-rw-r--r--app/models/backends/terraform_libvirt/mini_environment_methods.rb2
-rw-r--r--app/services/govuk_guix/build_mini_environment.rb (renamed from app/jobs/govuk_guix/build_job.rb)21
-rw-r--r--app/views/mini_environments/show.html.erb33
-rw-r--r--app/views/shared/_jobs.html.erb10
-rw-r--r--lib/shell_utils.rb (renamed from app/jobs/govuk_guix/job.rb)2
-rw-r--r--test/models/backends/terraform_aws_test.rb2
-rw-r--r--test/models/backends/terraform_libvirt_test.rb2
11 files changed, 27 insertions, 60 deletions
diff --git a/app/controllers/mini_environments_controller.rb b/app/controllers/mini_environments_controller.rb
index 9b8a16c..837a503 100644
--- a/app/controllers/mini_environments_controller.rb
+++ b/app/controllers/mini_environments_controller.rb
@@ -133,7 +133,7 @@ class MiniEnvironmentsController < ApplicationController
end
end
- @mini_environment.backend.build(@mini_environment)
+ MiniEnvironmentJob.enqueue(@mini_environment.id, :build)
redirect_to @mini_environment
end
end
@@ -160,10 +160,7 @@ class MiniEnvironmentsController < ApplicationController
end
def jobs
- [
- MiniEnvironmentJob.jobs(@mini_environment.id),
- GovukGuix::BuildJob.jobs(@mini_environment.id)
- ].flatten
+ MiniEnvironmentJob.jobs(@mini_environment.id)
end
helper_method :jobs
diff --git a/app/jobs/govuk_guix/create_data_snapshot_job.rb b/app/jobs/govuk_guix/create_data_snapshot_job.rb
index f2075c7..91f3904 100644
--- a/app/jobs/govuk_guix/create_data_snapshot_job.rb
+++ b/app/jobs/govuk_guix/create_data_snapshot_job.rb
@@ -18,8 +18,9 @@
# License along with the GOV.UK Mini Environment Admin. If not, see
# <http://www.gnu.org/licenses/>.
-class GovukGuix::CreateDataSnapshotJob < GovukGuix::Job
+class GovukGuix::CreateDataSnapshotJob < Que::Job
extend EnqueuedJobs
+ include ::ShellUtils
@retry_interval = 30
diff --git a/app/jobs/govuk_guix/fetch_revision_job.rb b/app/jobs/govuk_guix/fetch_revision_job.rb
index c747c13..2787156 100644
--- a/app/jobs/govuk_guix/fetch_revision_job.rb
+++ b/app/jobs/govuk_guix/fetch_revision_job.rb
@@ -20,8 +20,9 @@
require 'git'
-class GovukGuix::FetchRevisionJob < GovukGuix::Job
+class GovukGuix::FetchRevisionJob < Que::Job
extend EnqueuedJobs
+ include ::ShellUtils
REPOSITORY_DIRECTORY = 'tmp/cache/govuk-guix'.freeze
diff --git a/app/models/backends/terraform_aws.rb b/app/models/backends/terraform_aws.rb
index db8d6cd..1f16188 100644
--- a/app/models/backends/terraform_aws.rb
+++ b/app/models/backends/terraform_aws.rb
@@ -52,7 +52,7 @@ class Backends::TerraformAws < ApplicationRecord
def build(mini_environment)
slug = mini_environment.name.parameterize
- GovukGuix::BuildJob.enqueue(
+ GovukGuix::BuildMiniEnvironment.build(
mini_environment.id,
services: mini_environment.services.map(&:build_argument_string),
arguments: {
diff --git a/app/models/backends/terraform_libvirt/mini_environment_methods.rb b/app/models/backends/terraform_libvirt/mini_environment_methods.rb
index c931a5d..4ed8835 100644
--- a/app/models/backends/terraform_libvirt/mini_environment_methods.rb
+++ b/app/models/backends/terraform_libvirt/mini_environment_methods.rb
@@ -22,7 +22,7 @@ module Backends::TerraformLibvirt::MiniEnvironmentMethods
def build(mini_environment)
slug = mini_environment.name.parameterize
- GovukGuix::BuildJob.enqueue(
+ GovukGuix::BuildMiniEnvironment.build(
mini_environment.id,
services: mini_environment.services.map(&:build_argument_string),
arguments: {
diff --git a/app/jobs/govuk_guix/build_job.rb b/app/services/govuk_guix/build_mini_environment.rb
index 94acd70..5e5fd85 100644
--- a/app/jobs/govuk_guix/build_job.rb
+++ b/app/services/govuk_guix/build_mini_environment.rb
@@ -18,16 +18,16 @@
# License along with the GOV.UK Mini Environment Admin. If not, see
# <http://www.gnu.org/licenses/>.
-class GovukGuix::BuildJob < GovukGuix::Job
+module GovukGuix::BuildMiniEnvironment
+ extend ::ShellUtils
+
DEFAULT_ARGUMENTS = {
'rails-environment' => 'production',
'use-high-ports' => 'false',
'fallback' => true
}.freeze
- @retry_interval = 30
-
- def run(mini_environment_id, options)
+ def self.build(mini_environment_id, options)
logger.info(self.class) do
"Building mini environment #{mini_environment_id}"
end
@@ -69,7 +69,7 @@ class GovukGuix::BuildJob < GovukGuix::Job
)
end
- def signon_user_to_sexp(signon_user)
+ def self.signon_user_to_sexp(signon_user)
keys = %w(name email role passphrase)
sexp_contents = keys.zip(
@@ -81,18 +81,9 @@ class GovukGuix::BuildJob < GovukGuix::Job
"(#{sexp_contents.join(' ')})"
end
- def signon_user_arguments(signon_users)
+ def self.signon_user_arguments(signon_users)
signon_users.map do |signon_user|
"--signon-user=#{signon_user_to_sexp(signon_user)}"
end
end
-
- def self.jobs(mini_environment_id)
- QueJob
- .where(
- job_class: name
- ).where(
- "args->>0 = '#{mini_environment_id}'"
- ).to_a
- end
end
diff --git a/app/views/mini_environments/show.html.erb b/app/views/mini_environments/show.html.erb
index 7f3432a..a4d8588 100644
--- a/app/views/mini_environments/show.html.erb
+++ b/app/views/mini_environments/show.html.erb
@@ -60,39 +60,6 @@ License along with the GOV.UK Mini Environment Admin. If not, see
<% end %>
</div>
<div class="col-md-9">
- <% if @mini_environment.backend_data.present? %>
- <div class="panel panel-default">
- <div class="panel-heading" role="tab" id="backendDataHeading">
- <h4 class="panel-title">
- <a role="button"
- data-toggle="collapse"
- class="collapsed"
- href="#backendData"
- aria-expanded="true"
- aria-controls="backendData">
-
- Mini Environment built successfully
- <span class="caret"></span>
- </a>
- </h4>
- </div>
- <div id="backendData"
- class="panel-collapse collapse in"
- role="tabpanel"
- aria-labelledby="backendDataHeading"
- >
- <div class="panel-body">
- <dl class="dl-horizontal">
- <% @mini_environment.backend_data.each do |(key, value)| %>
- <dt><%= key %></dt>
- <dd><pre><%= value %></pre></dd>
- <% end %>
- </dl>
- </div>
- </div>
- </div>
- <% end %>
-
<%= render(
partial: 'shared/jobs',
locals: { jobs: jobs }
diff --git a/app/views/shared/_jobs.html.erb b/app/views/shared/_jobs.html.erb
index 5b559c1..417f8a0 100644
--- a/app/views/shared/_jobs.html.erb
+++ b/app/views/shared/_jobs.html.erb
@@ -61,6 +61,16 @@
<% elsif job.finished_at %>
<div class="col-md-12">
Finished after <%= job['error_count'] %> errors.
+
+ <% if job.args.last == 'build' %>
+ <%# TODO: Generalise this somehow %>
+ <dl class="dl-horizontal">
+ <% @mini_environment.backend_data.each do |(key, value)| %>
+ <dt><%= key %></dt>
+ <dd><pre><%= value %></pre></dd>
+ <% end %>
+ </dl>
+ <% end %>
</div>
<% else %>
<div class="col-md-10">
diff --git a/app/jobs/govuk_guix/job.rb b/lib/shell_utils.rb
index 5f95f4d..5ce8959 100644
--- a/app/jobs/govuk_guix/job.rb
+++ b/lib/shell_utils.rb
@@ -21,7 +21,7 @@
require 'open3'
require 'shellwords'
-class GovukGuix::Job < Que::Job
+module ShellUtils
def run_command(*command, run_remotely_on_host: nil)
if run_remotely_on_host
command = command.map do |arg|
diff --git a/test/models/backends/terraform_aws_test.rb b/test/models/backends/terraform_aws_test.rb
index deb395f..1a98440 100644
--- a/test/models/backends/terraform_aws_test.rb
+++ b/test/models/backends/terraform_aws_test.rb
@@ -17,7 +17,7 @@ class Backends::TerraformAwsTest < ActiveSupport::TestCase
end
test 'build' do
- GovukGuix::BuildJob.expects(:enqueue)
+ GovukGuix::BuildMiniEnvironment.expects(:build)
@backend.build(@mini_environment)
end
diff --git a/test/models/backends/terraform_libvirt_test.rb b/test/models/backends/terraform_libvirt_test.rb
index 1f19a29..056a1c4 100644
--- a/test/models/backends/terraform_libvirt_test.rb
+++ b/test/models/backends/terraform_libvirt_test.rb
@@ -17,7 +17,7 @@ class Backends::TerraformLibvirtTest < ActiveSupport::TestCase
end
test 'build' do
- GovukGuix::BuildJob.expects(:enqueue)
+ GovukGuix::BuildMiniEnvironment.expects(:build)
@backend.build(@mini_environment)
end