aboutsummaryrefslogtreecommitdiff
path: root/app/views
diff options
context:
space:
mode:
Diffstat (limited to 'app/views')
-rw-r--r--app/views/backends/terraform_aws_using_ami/new.html.erb192
-rw-r--r--app/views/backends/terraform_aws_using_ami/show.html.erb362
2 files changed, 554 insertions, 0 deletions
diff --git a/app/views/backends/terraform_aws_using_ami/new.html.erb b/app/views/backends/terraform_aws_using_ami/new.html.erb
new file mode 100644
index 0000000..929d69f
--- /dev/null
+++ b/app/views/backends/terraform_aws_using_ami/new.html.erb
@@ -0,0 +1,192 @@
+<%#
+
+GOV.UK Mini Environment Admin
+Copyright © 2018, 2019 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/>.
+
+%>
+
+<a href="<%= setup_path %>" class="btn btn-lg btn-default pull-right">
+ Back to setup
+</a>
+
+<h1>Create a new AWS backend</h1>
+
+<div class="row">
+ <div class="col-md-10">
+ <%= form_with(model: @backend,
+ url: { action: "create" },
+ html: { class: "form-horizontal" }) do |f|
+ %>
+
+ <div class="form-group form-group-lg">
+ <%= f.label :label, class: 'col-sm-4 control-label' %>
+ <div class="col-sm-8">
+ <%= f.text_field(
+ :label,
+ class: 'form-control',
+ placeholder: 'Label for this backend'
+ ) %>
+ </div>
+ </div>
+
+ <div class="form-group form-group-lg">
+ <%= f.label :domain, class: 'col-sm-4 control-label' %>
+ <div class="col-sm-8">
+ <%= f.text_field(
+ :domain,
+ class: 'form-control',
+ placeholder: 'Domain within which to host mini environments'
+ ) %>
+ <span class="help-block">
+ <p>
+ For example, if you entered <samp>example.com</samp> for
+ the backend domain, and then created a mini environment
+ called "Test" using this backend, then the application
+ domain for the mini environment would be
+ <samp>test.example.com</samp>.
+ </p>
+ <p>
+ A Route53 Hosted Zone will be created for this domain,
+ and records added for the mini environments.
+ </p>
+ </span>
+ </div>
+ </div>
+
+ <div class="form-group form-group-lg">
+ <%= f.label :aws_region, 'AWS Region', class: 'col-sm-4 control-label' %>
+ <div class="col-sm-8">
+ <%= f.text_field(
+ :aws_region,
+ class: 'form-control',
+ placeholder: 'What region to use'
+ ) %>
+ </div>
+ </div>
+
+ <div class="form-group form-group-lg">
+ <%= f.label(
+ :vpc_id,
+ 'VPC ID',
+ class: 'col-sm-4 control-label'
+ ) %>
+ <div class="col-sm-8">
+ <%= f.text_field(
+ :vpc_id,
+ class: 'form-control',
+ placeholder: 'The ID of the VPC (Virtual Private Cloud) to use'
+ ) %>
+ <span class="help-block">
+ <p>
+ This VPC (Virtual Private Cloud) should be the one to
+ use for all resources.
+ </p>
+ </span>
+ </div>
+ </div>
+
+ <div class="form-group form-group-lg">
+ <%= f.label(
+ :route_53_zone_id,
+ 'Route 53 Zone ID',
+ class: 'col-sm-4 control-label'
+ ) %>
+ <div class="col-sm-8">
+ <%= f.text_field(
+ :route_53_zone_id,
+ class: 'form-control',
+ placeholder: 'The ID of the Route 53 Zone to use'
+ ) %>
+ <span class="help-block">
+ <p>
+ This zone should be authoritive for the domain this
+ backend is using. Entries in this zone will be created
+ for the mini environments.
+ </p>
+ </span>
+ </div>
+ </div>
+
+ <div class="form-group form-group-lg">
+ <%= f.label :aws_access_key_id, 'AWS Access Key ID', class: 'col-sm-4 control-label' %>
+ <div class="col-sm-8">
+ <%= f.text_field(
+ :aws_access_key_id,
+ class: 'form-control',
+ ) %>
+ </div>
+ </div>
+
+ <div class="form-group form-group-lg">
+ <%= f.label :aws_secret_access_key, 'AWS Secret Access Key', class: 'col-sm-4 control-label' %>
+ <div class="col-sm-8">
+ <%= f.password_field(
+ :aws_secret_access_key,
+ class: 'form-control',
+ ) %>
+ </div>
+ </div>
+
+ <div class="form-group form-group-lg">
+ <%= f.label(
+ :ssh_public_key,
+ 'SSH Key, public part',
+ class: 'col-sm-4 control-label'
+ ) %>
+ <div class="col-sm-8">
+ <%= f.text_area(
+ :ssh_public_key,
+ class: 'form-control',
+ placeholder: 'The public part of the SSH key to use'
+ ) %>
+ <span class="help-block">
+ <p>
+ </p>
+ </span>
+ </div>
+ </div>
+
+ <div class="form-group form-group-lg">
+ <%= f.label(
+ :ssh_private_key,
+ 'SSH Key, private part',
+ class: 'col-sm-4 control-label'
+ ) %>
+ <div class="col-sm-8">
+ <%= f.text_area(
+ :ssh_private_key,
+ class: 'form-control',
+ placeholder: 'The private part of the SSH key to use'
+ ) %>
+ <span class="help-block">
+ <p>
+ </p>
+ </span>
+ </div>
+ </div>
+
+ <div class="form-group form-group-lg">
+ <div class="col-sm-offset-4 col-sm-8">
+ <%= f.submit "Create", class: 'btn btn-lg btn-success' %>
+ </div>
+ </div>
+ <% end %>
+ </div>
+</div>
diff --git a/app/views/backends/terraform_aws_using_ami/show.html.erb b/app/views/backends/terraform_aws_using_ami/show.html.erb
new file mode 100644
index 0000000..14810d1
--- /dev/null
+++ b/app/views/backends/terraform_aws_using_ami/show.html.erb
@@ -0,0 +1,362 @@
+<%#
+
+GOV.UK Mini Environment Admin
+Copyright © 2018, 2019 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/>.
+
+%>
+
+<a href="<%= setup_path %>" class="btn btn-lg btn-default pull-right">
+ Back to Setup
+</a>
+
+<h1>Backend: <%= @backend.label %></h1>
+<% status = @backend.status %>
+
+<br>
+
+<div class="row">
+ <div class="col-md-3">
+
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ Current Status<br>
+ <small>updated at <%= status[:updated_at] %></small>
+ </div>
+ <div class="panel-body">
+ <% if status[:running] %>
+ <div class="alert alert-success text-center"
+ role="alert"
+ style="margin-bottom: 0px;">
+ Backend available
+ </div>
+ <% else %>
+ <div class="alert alert-warning text-center"
+ role="alert"
+ style="margin-bottom: 0px;">
+ Backend down
+ </div>
+ <% end %>
+
+ <br>
+ <a href="<%= terraform_http_backend_show_history_path(
+ @backend.terraform_state_id
+ ) %>">
+ View Terraform state information
+ </a>
+ </div>
+ </div>
+
+ <%= form_with(
+ url: perform_action_terraform_aws_using_ami_backend_path(@backend),
+ local: true,
+ method: "post"
+ ) do %>
+
+ <div class="panel panel-default">
+ <div class="panel-heading">Actions</div>
+
+ <ul class="list-group">
+ <li class="list-group-item">
+ <%= submit_tag('Deploy',
+ role: 'button',
+ style: 'margin-bottom: 5px;',
+ class: 'btn btn-lg btn-success btn-block')
+ %>
+ <p class="list-group-item-text">
+ Run Terraform to deploy this backend, ensuring everything
+ is setup to create new mini environments.
+ </p>
+ </li>
+ <li class="list-group-item">
+ <%= submit_tag("Stop",
+ role: 'button',
+ style: 'margin-bottom: 5px;',
+ class: 'btn btn-lg btn-warning btn-block')
+ %>
+ <p class="list-group-item-text">
+ Run Terraform to stop this backend, terminating the
+ build machine used to build new mini
+ environments. Existing environments will continue to
+ run, but new environments cannot be created.
+ </p>
+ </li>
+ <li class="list-group-item">
+ <%= submit_tag("Destroy",
+ role: 'button',
+ style: 'margin-bottom: 5px;',
+ class: 'btn btn-lg btn-danger btn-block')
+ %>
+ <p class="list-group-item-text">
+ Run Terraform to destroy this backend, note that this will
+ remove all cached data and disrupt all mini environments
+ using this backend.
+ </p>
+ </li>
+ <li class="list-group-item">
+ <%= submit_tag("Refresh state",
+ role: 'button',
+ style: 'margin-bottom: 5px;',
+ class: 'btn btn-lg btn-info btn-block')
+ %>
+ <p class="list-group-item-text">
+ Run Terraform to refresh the state information for this
+ backend.
+ </p>
+ </li>
+ </ul>
+ </div>
+ <% end %>
+ </div>
+ <div class="col-md-9">
+ <%= render(
+ partial: 'shared/jobs',
+ locals: {
+ jobs: Backends::TerraformAwsJob.jobs(@backend.id).order(id: :desc)
+ }
+ ) %>
+ </div>
+</div>
+
+<div class="row">
+ <div class="col-md-8">
+ <h3>Update details</h3>
+ <br>
+
+ <%= form_with(model: @backend,
+ url: { action: "update" },
+ html: { class: "form-horizontal" }) do |f|
+ %>
+
+ <div class="form-group form-group-lg">
+ <%= f.label :label, class: 'col-sm-4 control-label' %>
+ <div class="col-sm-8">
+ <%= f.text_field(
+ :label,
+ class: 'form-control',
+ placeholder: 'Label for this backend'
+ ) %>
+ </div>
+ </div>
+
+ <div class="form-group form-group-lg">
+ <%= f.label :domain, class: 'col-sm-4 control-label' %>
+ <div class="col-sm-8">
+ <%= f.text_field(
+ :domain,
+ class: 'form-control',
+ placeholder: 'Domain within which to host mini environments',
+ readonly: true
+ ) %>
+ <span class="help-block">
+ <p>
+ For example, if you entered <samp>example.com</samp> for
+ the backend domain, and then created a mini environment
+ called "Test" using this backend, then the application
+ domain for the mini environment would be
+ <samp>test.example.com</samp>.
+ </p>
+ <p>
+ A Route53 Hosted Zone will be created for this domain,
+ and records added for the mini environments.
+ </p>
+ </span>
+ </div>
+ </div>
+
+ <div class="form-group form-group-lg">
+ <%= f.label :aws_region, 'AWS Region', class: 'col-sm-4 control-label' %>
+ <div class="col-sm-8">
+ <%= f.text_field(
+ :aws_region,
+ class: 'form-control',
+ placeholder: 'What region to use',
+ readonly: true,
+ ) %>
+ </div>
+ </div>
+
+ <div class="form-group form-group-lg">
+ <%= f.label(
+ :vpc_id,
+ 'VPC ID',
+ class: 'col-sm-4 control-label'
+ ) %>
+ <div class="col-sm-8">
+ <%= f.text_field(
+ :vpc_id,
+ class: 'form-control',
+ placeholder: 'The ID of the VPC (Virtual Private Cloud) to use',
+ readonly: true
+ ) %>
+ <span class="help-block">
+ <p>
+ This VPC (Virtual Private Cloud) should be the one to
+ use for all resources.
+ </p>
+ </span>
+ </div>
+ </div>
+
+ <div class="form-group form-group-lg">
+ <%= f.label(
+ :route_53_zone_id,
+ 'Route 53 Zone ID',
+ class: 'col-sm-4 control-label'
+ ) %>
+ <div class="col-sm-8">
+ <%= f.text_field(
+ :route_53_zone_id,
+ class: 'form-control',
+ placeholder: 'The ID of the Route 53 Zone to use',
+ readonly: true
+ ) %>
+ <span class="help-block">
+ <p>
+ This zone should be authoritive for the domain this
+ backend is using. Entries in this zone will be created
+ for the mini environments.
+ </p>
+ </span>
+ </div>
+ </div>
+
+ <div class="form-group form-group-lg">
+ <%= f.label :aws_access_key_id, 'AWS Access Key ID', class: 'col-sm-4 control-label' %>
+ <div class="col-sm-8">
+ <%= f.text_field(
+ :aws_access_key_id,
+ class: 'form-control',
+ ) %>
+ </div>
+ </div>
+
+ <div class="form-group form-group-lg">
+ <%= f.label :aws_secret_access_key, 'AWS Secret Access Key', class: 'col-sm-4 control-label' %>
+ <div class="col-sm-8">
+ <%= f.password_field(
+ :aws_secret_access_key,
+ class: 'form-control',
+ placeholder: 'Secret key hidden',
+ ) %>
+ <span id="helpBlock" class="help-block">
+ The AWS Secret Access Key is not accessible once entered.
+ </span>
+ </div>
+ </div>
+
+ <div class="form-group form-group-lg">
+ <%= f.label(
+ :ssh_public_key,
+ 'SSH Key, public part',
+ class: 'col-sm-4 control-label'
+ ) %>
+ <div class="col-sm-8">
+ <%= f.text_area(
+ :ssh_public_key,
+ class: 'form-control',
+ placeholder: 'The public part of the SSH key to use',
+ readonly: true
+ ) %>
+ <span class="help-block">
+ <p>
+ </p>
+ </span>
+ </div>
+ </div>
+
+ <div class="form-group form-group-lg">
+ <%= f.label(
+ :ssh_private_key,
+ 'SSH Key, private part',
+ class: 'col-sm-4 control-label'
+ ) %>
+ <div class="col-sm-8">
+ <%= text_area_tag(
+ :ssh_private_key,
+ 'Secret key hidden',
+ class: 'form-control',
+ disabled: true
+ ) %>
+ <span class="help-block">
+ <p>
+ </p>
+ </span>
+ </div>
+ </div>
+
+ <div class="form-group form-group-lg">
+ <div class="col-sm-offset-2 col-sm-10">
+ <%= f.submit "Save", class: 'btn btn-lg btn-success' %>
+ </div>
+ </div>
+ <% end %>
+ </div>
+ <div class="col-md-4">
+ <h3>Delete backend</h3>
+ <br>
+
+ <% unless @backend.mini_environments.empty? %>
+ <p>
+ Unable to delete backend, as mini environments using this
+ backend still exist.
+ </p>
+
+ <p>
+ To delete this backend, first delete all the mini environments
+ using it.
+ </p>
+ <% end %>
+
+ <%= form_with(model: @backend,
+ url: { action: "destroy" },
+ html: { class: "form-horizontal", method: :delete }) do |f|
+ %>
+ <%= f.submit(
+ "Delete",
+ class: (
+ 'btn btn-lg btn-danger' +
+ (@backend.mini_environments.empty? ? '' : ' disabled')
+ )
+ ) %>
+ <% end %>
+
+ </div>
+</div>
+
+<h3>Mini environments</h3>
+
+<table class="table table-striped">
+ <tr>
+ <th>Name</th>
+ <th></th>
+ </tr>
+ <% @backend.mini_environments.each do |mini_environment| %>
+ <tr>
+ <td><%= mini_environment.name %></td>
+ <td>
+ <a class="btn btn-default btn-lg pull-right"
+ role="button"
+ href="<%= mini_environment_path(mini_environment) %>">
+ Show details
+ </a>
+ </td>
+ </tr>
+ <% end %>
+</table>