app/controllers/api/v2/foreign_input_sets_controller.rb
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