theforeman/foreman_remote_execution

View on GitHub
app/controllers/api/v2/foreign_input_sets_controller.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Api
  module V2
    class ForeignInputSetsController < ::Api::V2::BaseController
      include ::Api::Version2
      include ::Foreman::Renderer
      include ::Foreman::Controller::Parameters::ForeignInputSet

      before_action :find_required_nested_object
      before_action :find_resource, :only => %w{show update destroy}

      api :GET, '/templates/:template_id/foreign_input_sets', N_('List foreign input sets')
      param :template_id, :identifier, :required => true
      param_group :search_and_pagination, ::Api::V2::BaseController
      def index
        @foreign_input_sets = nested_obj.foreign_input_sets.search_for(*search_options).paginate(paginate_options)
      end

      api :GET, '/templates/:template_id/foreign_input_sets/:id', N_('Show foreign input set details')
      param :template_id, :identifier, :required => true
      param :id, :identifier, :required => true
      def show
      end

      def_param_group :foreign_input_set do
        param :foreign_input_set, Hash, :required => true, :action_aware => true do
          param :target_template_id, :identifier, :required => true, :desc => N_('Target template ID')
          param :include_all, :bool, :desc => N_('Include all inputs from the foreign template')
          param :include, String, :desc => N_('A comma separated list of input names to be included from the foreign template.')
          param :exclude, String, :desc => N_('A comma separated list of input names to be included from the foreign template.')
          param :description, String, :required => false, :desc => N_('Input set description')
        end
      end

      api :POST, '/templates/:template_id/foreign_input_sets/', N_('Create a foreign input set')
      param :template_id, :identifier, :required => true
      param_group :foreign_input_set, :as => :create
      def create
        @foreign_input_set = resource_class.new(foreign_input_set_params.merge(:template_id => @nested_obj.id))
        process_response @foreign_input_set.save
      end

      api :DELETE, '/templates/:template_id/foreign_input_sets/:id', N_('Delete a foreign input set')
      param :template_id, :identifier, :required => true
      param :id, :identifier, :required => true
      def destroy
        process_response @foreign_input_set.destroy
      end

      api :PUT, '/templates/:template_id/foreign_input_sets/:id', N_('Update a foreign input set')
      param :template_id, :identifier, :required => true
      param :id, :identifier, :required => true
      param_group :foreign_input_set
      def update
        process_response @foreign_input_set.update(foreign_input_set_params)
      end

      def resource_name(nested_resource = nil)
        nested_resource || 'foreign_input_set'
      end

      def controller_permission
        'templates'
      end

      def action_permission
        case params[:action]
        when :create, :edit, :destroy
          'edit'
        else
          super
        end
      end

      private

      def resource_class
        ForeignInputSet
      end
    end
  end
end