Class: PuppetdbForeman::NodesController

Inherits:
ApplicationController
  • Object
show all
Defined in:
app/controllers/puppetdb_foreman/nodes_controller.rb

Instance Method Summary collapse

Instance Method Details

#controller_permissionObject



7
8
9
# File 'app/controllers/puppetdb_foreman/nodes_controller.rb', line 7

def controller_permission
  'puppetdb_nodes'
end

#destroyObject



28
29
30
31
32
33
34
35
36
37
38
39
# File 'app/controllers/puppetdb_foreman/nodes_controller.rb', line 28

def destroy
  Puppetdb.client.deactivate_node(@node)
  process_success(
    success_msg: _('Deactivated node %s in PuppetDB') % @node,
    success_redirect: puppetdb_foreman_nodes_path
  )
rescue StandardError => e
  process_error(
    redirect: puppetdb_foreman_nodes_path,
    error_msg: _('Failed to deactivate node in PuppetDB: %s') % e.message
  )
end

#importObject

rubocop:disable Metrics/MethodLength



41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'app/controllers/puppetdb_foreman/nodes_controller.rb', line 41

def import # rubocop:disable Metrics/MethodLength
  facts = Puppetdb.client.facts(@node)
  host = PuppetdbHost.new(facts: facts).to_host
  process_success(
    success_msg: _('Imported host %s from PuppetDB') % @node,
    success_redirect: host_path(id: host)
  )
rescue StandardError => e
  process_error(
    redirect: puppetdb_foreman_nodes_path,
    error_msg: _('Failed to import host from PuppetDB: %s') % e.message
  )
end

#indexObject



11
12
13
14
15
# File 'app/controllers/puppetdb_foreman/nodes_controller.rb', line 11

def index
  @foreman_hosts = Host.unscoped.pluck(:name)
  @puppetdb_hosts = Puppetdb.client.query_nodes
  @unknown_hosts = @puppetdb_hosts - @foreman_hosts
end

#showObject

rubocop:disable Metrics/AbcSize



17
18
19
20
21
22
23
24
25
26
# File 'app/controllers/puppetdb_foreman/nodes_controller.rb', line 17

def show # rubocop:disable Metrics/AbcSize
  response = Puppetdb.client.resources(@node)

  class_names = response.map { |v| v['title'] if v['type'] == 'Class' }.compact

  @classes_count = class_names.count
  @classes = class_names.paginate(page: params[:page], per_page: params[:per_page])

  @type_names = response.map { |v| v['type'] }.uniq
end