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

Version Path
foreman_salt-17.0.0 app/controllers/foreman_salt/api/v2/jobs_controller.rb
foreman_salt-16.0.3 app/controllers/foreman_salt/api/v2/jobs_controller.rb
foreman_salt-16.0.2 app/controllers/foreman_salt/api/v2/jobs_controller.rb
foreman_salt-16.0.1 app/controllers/foreman_salt/api/v2/jobs_controller.rb
foreman_salt-16.0.0 app/controllers/foreman_salt/api/v2/jobs_controller.rb
foreman_salt-15.2.3 app/controllers/foreman_salt/api/v2/jobs_controller.rb
foreman_salt-15.2.2 app/controllers/foreman_salt/api/v2/jobs_controller.rb
foreman_salt-15.2.1 app/controllers/foreman_salt/api/v2/jobs_controller.rb
foreman_salt-15.2.0 app/controllers/foreman_salt/api/v2/jobs_controller.rb
foreman_salt-15.1.0 app/controllers/foreman_salt/api/v2/jobs_controller.rb
foreman_salt-15.0.0 app/controllers/foreman_salt/api/v2/jobs_controller.rb
foreman_salt-14.1.0 app/controllers/foreman_salt/api/v2/jobs_controller.rb