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? %>
<%= link_to 'Remove host', host_path(@host), method: :delete, data: { confirm: 'Are you sure?' }, class: "btn btn-danger", role: "button" %>

Configuration for <%= @host.name %> <%= host_status_label(@host) %>


Host Details

Jobs

<%= render partial: "host_details" %> <%= render partial: "jobs/job_templates" %>

Config File

 <%= @host.baculize_config.join("\n") %>
     
+ +<%= 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 @@ <%= link_to job.name, host_job_path(@host, job) %> <%= job.job_type %> - <%= job.fileset.name %> - <%= job.schedule_human %> + + <%= link_to job.fileset.name, '#', + data: { toggle: 'modal', target: ".js-fileset-#{job.fileset_id}:first"} %> + + + <%= link_to job.schedule_human, '#', + data: { toggle: 'modal', target: ".js-schedule-#{job.schedule_id}:first"} %> + <%= job.client_before_run_file %> <%= job.client_after_run_file %> <%= job.priority %> <% 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 %> - 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| %> + + +<% end %> + +<% @filesets.each do |fileset| %> + +<% end %>