theforeman/foreman_ansible

View on GitHub
app/helpers/foreman_ansible/ansible_hostgroups_helper.rb

Summary

Maintainability
A
1 hr
Test Coverage
# frozen_string_literal: true

module ForemanAnsible
  module AnsibleHostgroupsHelper
    def ansible_hostgroups_actions(hostgroup)
      actions = []
      is_hostgroup_empty = hostgroup.all_ansible_roles.empty? || hostgroup.hosts_count.zero?

      if User.current.can?(:create_job_invocations)
        actions << {
          action: if is_hostgroup_empty
                    disabled_action_link(_('Run all Ansible roles'))
                  else
                    display_link_if_authorized(_('Run all Ansible roles'), hash_for_play_roles_hostgroup_path(id: hostgroup), 'data-no-turbolink': true, title: _('Run all Ansible roles on hosts belonging to this host group'))
                  end,
          priority: 31
        }
      end

      if User.current.can?(:view_job_invocations) && User.current.can?(:view_recurring_logics)
        actions << {
          action: if is_hostgroup_empty
                    disabled_action_link(_('Configure Ansible Job'))
                  else
                    link_to(_('Configure Ansible Job'), "/ansible/hostgroups/#{hostgroup.id}", class: 'la')
                  end,
          priority: 32
        }
      end

      actions
    end

    def disabled_action_link(text)
      {
        content: link_to(text, 'javascript:void(0);', disabled: true, title: _('No roles/hosts assigned'), class: 'disabled'),
        options: { class: 'disabled' }
      }
    end
  end
end