app/controllers/ansible_roles_controller.rb
# frozen_string_literal: true
# UI controller for ansible roles
class AnsibleRolesController < ::ApplicationController
include Foreman::Controller::AutoCompleteSearch
include ForemanAnsible::Concerns::ImportControllerHelper
include ::ForemanAnsible::AnsibleRolesDataPreparations
def index
@ansible_roles = resource_base.search_for(params[:search],
:order => params[:order]).
paginate(:page => params[:page],
:per_page => params[:per_page])
end
def destroy
if @ansible_role.destroy
process_success
else
process_error
end
end
def import
changed = @importer.import!
@rows = prepare_ansible_import_rows(changed, @variables_importer)
if @rows.empty?
success no_changed_roles_message
redirect_to ansible_roles_path
else
render
end
end
def confirm_import
job = SyncRolesAndVariables.perform_later(params['changed'].to_unsafe_h, @proxy)
task = ForemanTasks::Task.find_by(external_id: job.provider_job_id)
render json: {
task: task
}, status: :ok
end
private
def default_order
params[:order] ||= 'name ASC'
end
def create_importer
@importer = ForemanAnsible::UiRolesImporter.new(@proxy)
@variables_importer = ForemanAnsible::VariablesImporter.new(@proxy)
end
def no_changed_roles_message
return _('No added or removed roles nor variables.') if @proxy.blank?
_('No added or removed roles nor variables detected on %s.') % @proxy.name
end
end