diff options
Diffstat (limited to 'app/models/backends/terraform_libvirt.rb')
-rw-r--r-- | app/models/backends/terraform_libvirt.rb | 76 |
1 files changed, 2 insertions, 74 deletions
diff --git a/app/models/backends/terraform_libvirt.rb b/app/models/backends/terraform_libvirt.rb index a6cde5e..c0eda51 100644 --- a/app/models/backends/terraform_libvirt.rb +++ b/app/models/backends/terraform_libvirt.rb @@ -33,6 +33,8 @@ require 'ruby_terraform' class Backends::TerraformLibvirt < ApplicationRecord + include MiniEnvironmentMethods + has_many :mini_environments, as: :backend self.table_name = 'terraform_libvirt_backends' @@ -45,50 +47,6 @@ class Backends::TerraformLibvirt < ApplicationRecord "#{self.class.name}=#{id}" end - def build(mini_environment) - slug = mini_environment.name.parameterize - - GovukGuix::BuildJob.enqueue( - mini_environment.id, - services: mini_environment.services.map(&:build_argument_string), - arguments: { - type: 'vm-image-and-system', - app_domain: "#{slug}.#{domain}", - web_domain: "www.#{slug}.#{domain}", - # Assume that this is a local environment, and not externally - # accessible - use_https: 'development', - http_ports_mode: 'standard', - host_name: "#{slug}.#{domain}", - admin_environment_label: mini_environment.name, - signon_instance_name: slug, - use_error_pages: 'true', - origin_basic_auth: "#{slug}=#{slug}", - data_snapshot: mini_environment.data_snapshot.try(:store_path) - }.compact - ) - end - - def start(mini_environment) - logger.info "Setting up #{mini_environment.name}" - - within_terraform_working_directory(mini_environment) do - RubyTerraform.apply( - vars: terraform_variables(mini_environment), - auto_approve: true - ) - end - end - - def destroy(mini_environment) - within_terraform_working_directory(mini_environment) do - RubyTerraform.destroy( - vars: terraform_variables(mini_environment), - force: true - ) - end - end - def deploy_backend TerraformWorkingDirectory.new( terraform_state_id, @@ -111,34 +69,4 @@ class Backends::TerraformLibvirt < ApplicationRecord def terraform_state_id "backend/terraform_libvirt/#{id}" end - - def within_terraform_working_directory(mini_environment, &block) - TerraformWorkingDirectory.new( - "mini_environment/#{mini_environment.id}", - 'terraform/libvirt/mini_environment' - ).within_working_directory(&block) - end - - def signon_url(mini_environment) - "https://signon.#{mini_environment.name.parameterize}.#{domain}" - end - - def terraform_variables(mini_environment) - slug = mini_environment.name.parameterize - - { - uri: uri, - machine_name: slug, - host_name: "#{slug}.#{domain}", - vm_image_and_system: mini_environment.backend_data['build_output'], - backend_remote_state_address: ( - 'http://localhost:3000' + - Rails - .application - .routes - .url_helpers - .terraform_http_backend_path(terraform_state_id) - ) - } - end end |