aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2018-04-05 22:58:56 +0100
committerChristopher Baines <mail@cbaines.net>2018-04-12 08:30:05 +0100
commitb03a664ec42bd93a7547fb53216ab3ae5d099dcd (patch)
treef15bbc4e10ab4f6df3e51c194d5aea2f488215bf /lib
parent4238b1f3bc88ab2a1d97aa3c4967361c853b4880 (diff)
downloadgovuk-mini-environment-admin-b03a664ec42bd93a7547fb53216ab3ae5d099dcd.tar
govuk-mini-environment-admin-b03a664ec42bd93a7547fb53216ab3ae5d099dcd.tar.gz
Move the terraform utilities to lib/
Change the module to a class, which is used to represent a terraform working directory. Change the routing for the terraform http backends, to remove any connection with mini environments, and remove this concern from the new TerraformWorkingDirectory class also.
Diffstat (limited to 'lib')
-rw-r--r--lib/terraform_working_directory.rb67
1 files changed, 67 insertions, 0 deletions
diff --git a/lib/terraform_working_directory.rb b/lib/terraform_working_directory.rb
new file mode 100644
index 0000000..b561edf
--- /dev/null
+++ b/lib/terraform_working_directory.rb
@@ -0,0 +1,67 @@
+# 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 'fileutils'
+
+class TerraformWorkingDirectory
+ def initialize(id, source)
+ @id = id
+ @source = source
+ end
+
+ def working_directory
+ "tmp/terraform-working-directories/#{@id}"
+ end
+
+ def within_working_directory
+ source = File.expand_path(@source)
+ FileUtils.mkdir_p working_directory
+
+ Dir.chdir(working_directory) do
+ if Dir.empty?('.')
+ RubyTerraform.init(
+ backend: true,
+ from_module: source,
+ backend_config: {
+ address: terraform_backend_address
+ },
+ plugin_dir: terraform_plugin_dir
+ )
+ end
+
+ yield
+ end
+ end
+
+ def terraform_backend_address
+ (
+ 'http://localhost:3000' +
+ Rails
+ .application
+ .routes
+ .url_helpers
+ .terraform_http_backend_path(@id)
+ )
+ end
+
+ def terraform_plugin_dir
+ ENV['PATH'].split(':').first
+ end
+end