Sha256: fe6662062cf138e3c83c3c74a86653ad1d8773556063f8e909d2ea6b46b3bba5

Contents?: true

Size: 1.13 KB

Versions: 24

Compression:

Stored size: 1.13 KB

Contents

module ForemanAnsible
  # Imports roles from smart proxy
  class RolesImporter
    attr_reader :ansible_proxy

    def initialize(proxy = nil)
      @ansible_proxy = proxy
    end

    def import_role_names
      return import_roles remote_roles if ansible_proxy
      import_roles local_roles
    end

    def import_roles(roles)
      imported = roles.map do |role_name|
        ::AnsibleRole.find_or_initialize_by(:name => role_name)
      end
      detect_changes imported
    end

    def detect_changes(imported)
      changes = {}.with_indifferent_access
      old, changes[:new] = imported.partition { |role| role.id.present? }
      changes[:obsolete] = ::AnsibleRole.where.not(:id => old.map(&:id))
      changes
    end

    private

    def find_proxy_api
      raise ::Foreman::Exception.new(N_('Proxy not found')) unless ansible_proxy
      @proxy_api = ::ProxyAPI::Ansible.new(:url => ansible_proxy.url)
    end

    def proxy_api
      return @proxy_api if @proxy_api
      find_proxy_api
    end

    def local_roles
      ::ForemanAnsibleCore::RolesReader.list_roles
    end

    def remote_roles
      proxy_api.roles
    end
  end
end

Version data entries

24 entries across 24 versions & 1 rubygems

Version Path
foreman_ansible-2.2.9 app/services/foreman_ansible/roles_importer.rb
foreman_ansible-2.2.8 app/services/foreman_ansible/roles_importer.rb
foreman_ansible-2.2.7 app/services/foreman_ansible/roles_importer.rb
foreman_ansible-2.2.6 app/services/foreman_ansible/roles_importer.rb
foreman_ansible-2.2.5 app/services/foreman_ansible/roles_importer.rb
foreman_ansible-2.2.4 app/services/foreman_ansible/roles_importer.rb
foreman_ansible-2.2.3 app/services/foreman_ansible/roles_importer.rb
foreman_ansible-2.2.2 app/services/foreman_ansible/roles_importer.rb
foreman_ansible-2.2.1 app/services/foreman_ansible/roles_importer.rb
foreman_ansible-2.2.0 app/services/foreman_ansible/roles_importer.rb
foreman_ansible-2.1.2 app/services/foreman_ansible/roles_importer.rb
foreman_ansible-2.1.1 app/services/foreman_ansible/roles_importer.rb
foreman_ansible-2.0.4 app/services/foreman_ansible/roles_importer.rb
foreman_ansible-2.0.3 app/services/foreman_ansible/roles_importer.rb
foreman_ansible-2.0.2 app/services/foreman_ansible/roles_importer.rb
foreman_ansible-1.5.2 app/services/foreman_ansible/roles_importer.rb
foreman_ansible-1.5.1 app/services/foreman_ansible/roles_importer.rb
foreman_ansible-1.5.0 app/services/foreman_ansible/roles_importer.rb
foreman_ansible-2.1.0 app/services/foreman_ansible/roles_importer.rb
foreman_ansible-2.0.1 app/services/foreman_ansible/roles_importer.rb