theforeman/foreman_ansible

View on GitHub
app/controllers/ansible_roles_controller.rb

Summary

Maintainability
A
0 mins
Test Coverage
# 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