Page MenuHomeGRNET

No OneTemporary

File Metadata

Created
Sat, May 17, 10:27 PM
diff --git a/app/controllers/api/v1/clients_controller.rb b/app/controllers/api/v1/clients_controller.rb
index 066142e..21e5d95 100644
--- a/app/controllers/api/v1/clients_controller.rb
+++ b/app/controllers/api/v1/clients_controller.rb
@@ -1,46 +1,57 @@
class Api::V1::ClientsController < Api::BaseController
before_action :require_api_login
+ before_action :fetch_host, only: [:show, :backup, :restore]
+ before_action :require_non_blocked_client, only: [:backup, :restore]
# GET /api/clients
def index
hosts = current_api_user.hosts.in_bacula
api_render(hosts)
end
# GET /api/clients/1
def show
- host = current_api_user.hosts.in_bacula.find(params[:id])
-
- api_render(host)
+ api_render(@host)
end
# POST /api/clients/1/backup
def backup
- host = current_api_user.hosts.in_bacula.find(params[:id])
- job = host.job_templates.enabled.backup.find(params[:job_id])
+ job = @host.job_templates.enabled.backup.find(params[:job_id])
if job.backup_now
message = 'Job is scheduled for backup'
else
message = 'Job can not be scheduled'
end
render json: { message: message }, status: :ok
end
# POST /api/clients/1/restore
def restore
- host = current_api_user.hosts.in_bacula.find(params[:id])
- fileset = host.client.file_sets.find(params[:fileset_id])
+ fileset = @host.client.file_sets.find(params[:fileset_id])
location = params[:location].blank? ? '/tmp/bacula_restore' : params[:location]
- if host.restore(fileset.id, location)
+ if @host.restore(fileset.id, location)
message = 'Restore is scheduled'
else
message = 'Restore not scheduled'
end
render json: { message: message }, status: :ok
end
+
+ private
+
+ def fetch_host
+ @host = current_api_user.hosts.in_bacula.find(params[:id])
+ end
+
+ def require_non_blocked_client
+ if @host.blocked?
+ message = 'Client is disabled by admins'
+ render json: { message: message }, status: :ok
+ end
+ end
end

Event Timeline