Page Menu
Home
GRNET
Search
Configure Global Search
Log In
Files
F1090714
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Wed, Oct 15, 10:53 AM
Size
6 KB
Mime Type
text/x-diff
Expires
Fri, Oct 17, 10:53 AM (1 d, 11 h)
Engine
blob
Format
Raw Data
Handle
280600
Attached To
rARCHIVING archiving
View Options
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
Log In to Comment