Sha256: 4078f5f98523ebcdcfecb13a7a24785c46fbed12f8024c7699a5d5c48f21f0aa
Contents?: true
Size: 1.6 KB
Versions: 12
Compression:
Stored size: 1.6 KB
Contents
require 'uri' module ForemanSalt module Api module V2 class JobsController < ::ForemanSalt::Api::V2::BaseController include ::Foreman::Controller::SmartProxyAuth add_smart_proxy_filters :upload, features: 'Salt' include ::Foreman::Controller::FilterParameters filter_parameters :job def_param_group :job do param :job, Hash, required: true, action_aware: true do param :job_id, Integer, required: true, desc: N_('JID') param :function, String, required: true, desc: N_('Function') param :result, Hash, required: true, desc: N_('Result') end end api :POST, '/upload', N_('Upload a Job') param_group :job, as: :upload def upload params[:job].permit! Rails.logger.info("Processing job #{params[:job][:job_id]} from Salt.") case params[:job][:function] when 'state.highstate' task = ForemanTasks.async_task(::Actions::ForemanSalt::ReportImport, params[:job], detected_proxy.try(:id)) render json: { task_id: task.id } else render json: { message: 'Unsupported function' }, status: :unprocessable_entity end rescue ::Foreman::Exception => e render json: { message: e.to_s }, status: :unprocessable_entity end def resource_class ::Report end private def action_permission case params[:action] when 'upload' :create else super end end end end end end
Version data entries
12 entries across 12 versions & 1 rubygems