diff options
-rw-r--r-- | app/controllers/mini_environments_controller.rb | 7 | ||||
-rw-r--r-- | app/jobs/govuk_guix/create_data_snapshot_job.rb | 3 | ||||
-rw-r--r-- | app/jobs/govuk_guix/fetch_revision_job.rb | 3 | ||||
-rw-r--r-- | app/models/backends/terraform_aws.rb | 2 | ||||
-rw-r--r-- | app/models/backends/terraform_libvirt/mini_environment_methods.rb | 2 | ||||
-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.erb | 33 | ||||
-rw-r--r-- | app/views/shared/_jobs.html.erb | 10 | ||||
-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.rb | 2 | ||||
-rw-r--r-- | test/models/backends/terraform_libvirt_test.rb | 2 |
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 |