aboutsummaryrefslogtreecommitdiff
path: root/app/controllers
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2018-03-16 08:51:54 +0000
committerChristopher Baines <mail@cbaines.net>2018-03-29 07:55:01 +0100
commit051c8bf612126fa79699c8bf45a661dde127f4a0 (patch)
tree849a3b05b4ab4b59a426761d7cf1da3cc7036349 /app/controllers
parenta8c8f68971dd9e20dee01d9f65c64283e41fe4a3 (diff)
downloadgovuk-mini-environment-admin-051c8bf612126fa79699c8bf45a661dde127f4a0.tar
govuk-mini-environment-admin-051c8bf612126fa79699c8bf45a661dde127f4a0.tar.gz
Add backend controllers, models and views
Also annotate existing models.
Diffstat (limited to 'app/controllers')
-rw-r--r--app/controllers/backends/terraform_aws_controller.rb7
-rw-r--r--app/controllers/backends/terraform_libvirt_controller.rb39
-rw-r--r--app/controllers/backends_controller.rb4
-rw-r--r--app/controllers/govuk_guix/revisions_controller.rb18
-rw-r--r--app/controllers/mini_environments_controller.rb26
-rw-r--r--app/controllers/setup_controller.rb10
-rw-r--r--app/controllers/terraform_http_backend_controller.rb17
7 files changed, 107 insertions, 14 deletions
diff --git a/app/controllers/backends/terraform_aws_controller.rb b/app/controllers/backends/terraform_aws_controller.rb
new file mode 100644
index 0000000..b7f10ef
--- /dev/null
+++ b/app/controllers/backends/terraform_aws_controller.rb
@@ -0,0 +1,7 @@
+class Backends::TerraformAwsController < ApplicationController
+ def new
+ end
+
+ def show
+ end
+end
diff --git a/app/controllers/backends/terraform_libvirt_controller.rb b/app/controllers/backends/terraform_libvirt_controller.rb
new file mode 100644
index 0000000..f854bc2
--- /dev/null
+++ b/app/controllers/backends/terraform_libvirt_controller.rb
@@ -0,0 +1,39 @@
+class Backends::TerraformLibvirtController < ApplicationController
+ def new
+ @backend = Backends::TerraformLibvirt.new
+ @backend.uri = "qemu:///system"
+ end
+
+ def create
+ backend = Backends::TerraformLibvirt.create(
+ params
+ .require(:backends_terraform_libvirt)
+ .permit(:label, :uri)
+ )
+
+ flash[:success] = "#{backend.label} created"
+
+ redirect_to setup_path
+ end
+
+ def update
+ backend = Backends::TerraformLibvirt.update(
+ params[:id],
+ params
+ .require(:backends_terraform_libvirt)
+ .permit(:label, :uri)
+ )
+
+ flash[:success] = "#{backend.label} updated"
+ end
+
+ def show
+ @backend = Backends::TerraformLibvirt.find(params['id'])
+ end
+
+ def destroy
+ backend = Backends::TerraformLibvirt.find(params['id'])
+
+ backend.delete
+ end
+end
diff --git a/app/controllers/backends_controller.rb b/app/controllers/backends_controller.rb
new file mode 100644
index 0000000..d433193
--- /dev/null
+++ b/app/controllers/backends_controller.rb
@@ -0,0 +1,4 @@
+class BackendsController < ApplicationController
+ def index
+ end
+end
diff --git a/app/controllers/govuk_guix/revisions_controller.rb b/app/controllers/govuk_guix/revisions_controller.rb
index a890fd0..a0d8c01 100644
--- a/app/controllers/govuk_guix/revisions_controller.rb
+++ b/app/controllers/govuk_guix/revisions_controller.rb
@@ -1,4 +1,20 @@
class GovukGuix::RevisionsController < ApplicationController
- def index
+ def show
+ @revision = GovukGuix::Revision.find(params['id'])
end
+
+ def enqueue_fetch_revision
+ revision = params.require('revision')
+
+ GovukGuix::FetchRevisionJob.enqueue(revision)
+
+ flash[:info] = "Fetching govuk-guix revision (#{revision})..."
+ redirect_to setup_path
+ end
+
+ def fetch_revision_jobs
+ @_revision_jobs ||= GovukGuix::FetchRevisionJob.enqueued_jobs
+ end
+
+ helper_method :fetch_revision_jobs
end
diff --git a/app/controllers/mini_environments_controller.rb b/app/controllers/mini_environments_controller.rb
index 8009777..d845787 100644
--- a/app/controllers/mini_environments_controller.rb
+++ b/app/controllers/mini_environments_controller.rb
@@ -8,17 +8,23 @@ class MiniEnvironmentsController < ApplicationController
end
def create
- @mini_environment = MiniEnvironment.create(
- params
- .require(:mini_environment)
- .permit(
- :name,
- :govuk_guix_revision_id
- )
+ parameters = params.require(
+ :mini_environment
+ ).permit(
+ :name,
+ :govuk_guix_revision_id,
)
- GovukGuix::BuildJob.enqueue(@mini_environment.id)
+ logger.error(parameters)
+
+ @mini_environment = MiniEnvironment.new(parameters)
+ @mini_environment.backend = Backends.find_by_type_and_id(
+ params.require(:mini_environment).fetch(:backend)
+ )
+ @mini_environment.save!
+ @mini_environment.backend.build(@mini_environment)
+
redirect_to @mini_environment
end
@@ -29,11 +35,11 @@ class MiniEnvironmentsController < ApplicationController
case action
when 'Destroy'
- DestroyJob.enqueue(@mini_environment.id)
+ MiniEnvironmentJob.enqueue(@mini_environment.id, :destroy)
flash[:notice] = "Destroying mini environment"
when 'Start'
- StartJob.enqueue(@mini_environment.id)
+ MiniEnvironmentJob.enqueue(@mini_environment.id, :start)
flash[:notice] = "Starting mini environment"
else
diff --git a/app/controllers/setup_controller.rb b/app/controllers/setup_controller.rb
new file mode 100644
index 0000000..2d16c4e
--- /dev/null
+++ b/app/controllers/setup_controller.rb
@@ -0,0 +1,10 @@
+class SetupController < ApplicationController
+ def show
+ end
+
+ def fetch_revision_jobs
+ @_revision_jobs ||= GovukGuix::FetchRevisionJob.enqueued_jobs
+ end
+
+ helper_method :fetch_revision_jobs
+end
diff --git a/app/controllers/terraform_http_backend_controller.rb b/app/controllers/terraform_http_backend_controller.rb
index 6b94d8d..2f6e9f8 100644
--- a/app/controllers/terraform_http_backend_controller.rb
+++ b/app/controllers/terraform_http_backend_controller.rb
@@ -2,13 +2,18 @@ class TerraformHttpBackendController < ApplicationController
skip_before_action :verify_authenticity_token
def create
- TerraformState.create(data: params)
+ TerraformState.create(
+ mini_environment_id: mini_environment_id,
+ data: params
+ )
render json: '{ "success": true }', status: 200
end
def show
- state = TerraformState.last
+ state = TerraformState
+ .where(mini_environment_id: mini_environment_id)
+ .last
if state.nil?
render json: '{}', status: 404
@@ -18,8 +23,14 @@ class TerraformHttpBackendController < ApplicationController
end
def destroy
- TerraformState.delete_all
+ TerraformState
+ .where(mini_environment_id: mini_environment_id)
+ .delete_all
render json: '{ "success": true }', status: 200
end
+
+ def mini_environment_id
+ params[:mini_environment_id]
+ end
end