aboutsummaryrefslogtreecommitdiff
path: root/app/models
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2018-06-21 23:08:17 +0100
committerChristopher Baines <mail@cbaines.net>2018-06-21 23:08:17 +0100
commit44726781e3c6d6279a5f66a66328633ed4d0ab23 (patch)
tree5494f947223f472af8c301aa2222863b6beaad18 /app/models
parentd20ab544d75cf504abefae7a2611958bf07103f4 (diff)
downloadgovuk-mini-environment-admin-44726781e3c6d6279a5f66a66328633ed4d0ab23.tar
govuk-mini-environment-admin-44726781e3c6d6279a5f66a66328633ed4d0ab23.tar.gz
Add some basic status support for mini environments
This should enable making the show page better, as it can actually start displaying the status, and appropriate actions.
Diffstat (limited to 'app/models')
-rw-r--r--app/models/mini_environment.rb1
-rw-r--r--app/models/mini_environment/status.rb35
2 files changed, 36 insertions, 0 deletions
diff --git a/app/models/mini_environment.rb b/app/models/mini_environment.rb
index d3f8ec3..11742d7 100644
--- a/app/models/mini_environment.rb
+++ b/app/models/mini_environment.rb
@@ -36,6 +36,7 @@
#
class MiniEnvironment < ApplicationRecord
+ include Status
belongs_to :govuk_guix_revision, class_name: 'GovukGuix::Revision'
belongs_to :backend, polymorphic: true
diff --git a/app/models/mini_environment/status.rb b/app/models/mini_environment/status.rb
new file mode 100644
index 0000000..b8988ad
--- /dev/null
+++ b/app/models/mini_environment/status.rb
@@ -0,0 +1,35 @@
+# 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/>.
+
+module MiniEnvironment::Status
+ def status
+ latest_terraform_state = terraform_states.order(:id).last
+
+ running = (
+ latest_terraform_state &&
+ (latest_terraform_state.output_value('mini_environment_up') == 'true')
+ )
+
+ {
+ running: running,
+ updated_at: latest_terraform_state.try(:created_at)
+ }
+ end
+end