# GOV.UK Mini Environment Admin # Copyright © 2018, 2019 Christopher Baines # # 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 # . class Backends::TerraformAwsUsingAmiController < ApplicationController def new @backend = Backends::TerraformAws.new end def create backend = Backends::TerraformAwsUsingAmi.create(create_params) flash[:success] = "Backend #{backend.label} created" redirect_to terraform_aws_using_ami_backend_path(backend) end def update @backend = Backends::TerraformAwsUsingAmi.update( params[:id], update_params ) flash[:success] = "Backend #{@backend.label} updated" render :show end def show @backend = Backends::TerraformAwsUsingAmi.find(params[:id]) end def destroy backend = Backends::TerraformAwsUsingAmi.find(params[:id]) if @backend.mini_environments.empty? flash[:success] = "Backend #{backend.label} deleted" backend.delete else flash[:error] = "Unable to delete backend, as mini environments using this backend still exist." end redirect_to setup_path end def perform_action @backend = Backends::TerraformAwsUsingAmi.find(params['id']) action = params.require(:commit) case action when 'Destroy' Backends::TerraformAwsUsingAmiJob.enqueue(@backend.id, :destroy_backend) flash[:notice] = 'Destroying the backend' when 'Stop' Backends::TerraformAwsUsingAmiJob.enqueue(@backend.id, :stop_backend) flash[:notice] = 'Stopping the backend' when 'Deploy' Backends::TerraformAwsUsingAmiJob.enqueue(@backend.id, :deploy_backend) flash[:notice] = 'Deploying the backend' when 'Refresh state' Backends::TerraformAwsUsingAmiJob.enqueue(@backend.id, :refresh_backend_state) flash[:notice] = 'Refreshing the backend state information' else flash[:error] = "Unknown action #{action}" end redirect_to terraform_aws_using_ami_backend_path(@backend) end def in_use_store_paths @backend = Backends::TerraformAwsUsingAmi.find(params['id']) end private def create_params params .require(:backends_terraform_aws) .permit( :label, :domain, :aws_region, :vpc_id, :route_53_zone_id, :aws_access_key_id, :aws_secret_access_key, :ssh_public_key, :ssh_private_key ) end def update_params params .require(:backends_terraform_aws) .permit( :label, :aws_access_key_id, :aws_secret_access_key ) end end