Page MenuHomeGRNET

No OneTemporary

File Metadata

Created
Wed, Oct 15, 10:53 AM
diff --git a/app/controllers/hosts_controller.rb b/app/controllers/hosts_controller.rb
index 6089e57..3129107 100644
--- a/app/controllers/hosts_controller.rb
+++ b/app/controllers/hosts_controller.rb
@@ -1,119 +1,122 @@
class HostsController < ApplicationController
before_action :require_logged_in
before_action :fetch_host, only: [:show, :edit, :update, :destroy, :submit_config,
:revoke, :restore, :run_restore]
before_action :fetch_hosts_of_user, only: [:new, :edit, :create]
# GET /hosts/new
def new
@host = Host.new
@host.port = 9102
end
# POST /hosts
def create
@host = Host.new(fetch_params)
@host.verified = current_user.needs_host_list?
if user_can_add_this_host? && @host.save
flash[:success] = 'Host created successfully'
current_user.hosts << @host
redirect_to host_path @host
else
flash[:error] = 'Host was not created'
render :new
end
end
# GET /hosts/1
- def show; end
+ def show
+ @schedules = @host.job_templates.map(&:schedule)
+ @filesets = @host.job_templates.map(&:fileset)
+ end
# GET /hosts/1/edit
def edit; end
# PATCH /hosts/1
def update
updates = fetch_params.slice(:port, :password)
if updates.present? && @host.update_attributes(updates)
@host.recalculate
flash[:success] = 'Host updated successfully. You must update your file deamon accordingly.'
redirect_to host_path @host
else
render :edit
end
end
# DELETE /hosts/1
def destroy
if @host.destroy
flash[:success] = 'Host destroyed successfully'
else
flash[:error] = 'Host not destroyed'
end
redirect_to root_path
end
# POST /hosts/1/submit_config
def submit_config
if @host.dispatch_to_bacula
flash[:success] = 'Host configuration sent to Bacula successfully'
else
flash[:error] = 'Something went wrong, try again later'
end
redirect_to host_path(@host)
end
# DELETE /hosts/1/revoke
def revoke
if @host.remove_from_bacula
flash[:success] = 'Host configuration removed from Bacula successfully'
else
flash[:error] = 'Something went wrong, try again later'
end
redirect_to root_path
end
# GET /hosts/1/restore
def restore
if !@host.restorable?
flash[:error] = "Can not issue a restore for this client"
redirect_to @host.client.present? ? client_path(@host.client) : root_path
end
end
# POST /hosts/1/run_estore
def run_restore
location = params[:restore_location]
if location.present? && @host.restore(location)
flash[:success] = "Restore job issued successfully, files will be soon available in #{location}"
else
flash[:error] = 'Something went wrong, try again later'
end
redirect_to client_path(@host.client)
end
private
def fetch_hosts_of_user
return if not current_user.needs_host_list?
@hosts_of_user = session[:vms] - current_user.hosts.pluck(:fqdn)
end
def fetch_host
@host = current_user.hosts.includes(job_templates: [:fileset, :schedule]).find(params[:id])
end
def fetch_params
params.require(:host).permit(:fqdn, :port, :password)
end
def user_can_add_this_host?
!current_user.needs_host_list? || @hosts_of_user.include?(@host.fqdn)
end
end
diff --git a/app/views/hosts/show.html.erb b/app/views/hosts/show.html.erb
index 4bec936..b0b8947 100644
--- a/app/views/hosts/show.html.erb
+++ b/app/views/hosts/show.html.erb
@@ -1,32 +1,34 @@
<%= notifier(@host.display_message) unless @host.deployed? %>
<div class="row right">
<%= link_to 'Remove host', host_path(@host), method: :delete, data: { confirm: 'Are you sure?' },
class: "btn btn-danger", role: "button" %>
</div>
<h2>Configuration for <%= @host.name %>
<small><%= host_status_label(@host) %></small>
</h2>
<br/>
<div class="row">
<div class="col-xs-4">
<h3>Host Details</h3>
</div>
<div class="col-xs-6">
<h3>Jobs</h3>
</div>
</div>
<div class="row">
<%= render partial: "host_details" %>
<%= render partial: "jobs/job_templates" %>
<div class="col-xs-6">
<h3>Config File</h3>
<pre class="pre-scrollable">
<%= @host.baculize_config.join("\n") %>
</pre>
</div>
</div>
+
+<%= render partial: 'jobs/modals' %>
diff --git a/app/views/jobs/_job_template_details.html.erb b/app/views/jobs/_job_template_details.html.erb
index ebc450d..987f1c4 100644
--- a/app/views/jobs/_job_template_details.html.erb
+++ b/app/views/jobs/_job_template_details.html.erb
@@ -1,19 +1,24 @@
<tr>
<td><%= link_to job.name, host_job_path(@host, job) %></td>
<td><%= job.job_type %></td>
- <td><%= job.fileset.name %></td>
- <td><%= job.schedule_human %></td>
+ <td>
+ <%= link_to job.fileset.name, '#',
+ data: { toggle: 'modal', target: ".js-fileset-#{job.fileset_id}:first"} %>
+ </td>
+ <td>
+ <%= link_to job.schedule_human, '#',
+ data: { toggle: 'modal', target: ".js-schedule-#{job.schedule_id}:first"} %>
+ </td>
<td><%= job.client_before_run_file %></td>
<td><%= job.client_after_run_file %></td>
<td><%= job.priority %></td>
<td>
<% if job.enabled? %>
<%= link_to 'Disable', toggle_enable_host_job_path(@host, job), method: :patch,
class: "btn btn-warning", role: "button" %>
<% else %>
<%= link_to 'Enable', toggle_enable_host_job_path(@host, job), method: :patch,
class: "btn btn-info", role: "button" %>
<% end %>
</td>
</tr>
-
diff --git a/app/views/jobs/_modals.html.erb b/app/views/jobs/_modals.html.erb
new file mode 100644
index 0000000..83b0408
--- /dev/null
+++ b/app/views/jobs/_modals.html.erb
@@ -0,0 +1,34 @@
+<% @schedules.each do |schedule| %>
+
+ <div class="modal fade js-schedule-<%= schedule.id %>" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="panel panel-default">
+ <div class="panel-heading">Schedule "<%= schedule.name %>"</div>
+ <div class="panel-body">
+ <pre>
+<%= schedule.to_bacula_config_array.join("\n") %>
+ </pre>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+<% end %>
+
+<% @filesets.each do |fileset| %>
+ <div class="modal fade js-fileset-<%= fileset.id %>" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="panel panel-default">
+ <div class="panel-heading">Fileset "<%= fileset.name %>"</div>
+ <div class="panel-body">
+ <pre>
+<%= fileset.to_bacula_config_array.join("\n") %>
+ </pre>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+<% end %>

Event Timeline