Class: Moose::Inventory::Operations::GroupCleanup

Inherits:
Object
  • Object
show all
Defined in:
lib/moose_inventory/operations/group_cleanup.rb

Overview

Recursively cleans up orphaned groups and their dependent relations.

Constant Summary collapse

AUTOMATIC_GROUP =
'ungrouped'

Instance Method Summary collapse

Constructor Details

#initialize(context:, emitter:) ⇒ GroupCleanup

Returns a new instance of GroupCleanup.



10
11
12
13
# File 'lib/moose_inventory/operations/group_cleanup.rb', line 10

def initialize(context:, emitter:)
  @context = context
  @emitter = emitter
end

Instance Method Details

#delete_orphaned_group(group, events) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/moose_inventory/operations/group_cleanup.rb', line 15

def delete_orphaned_group(group, events)
  return if group.name == AUTOMATIC_GROUP
  return unless group.parents_dataset.none?

  emit(events, :recursively_delete_orphaned_group, name: group.name)
  group.children_dataset.each do |child|
    emit(events, :removing_recursive_child_association, parent: group.name, child: child.name)
    group.remove_child(child)
    emit(events, :ok, indent: 6)
    delete_orphaned_group(child, events)
  end
  destroy_group(group, events, indent: 4)
end

#destroy_group(group, events, indent:) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/moose_inventory/operations/group_cleanup.rb', line 29

def destroy_group(group, events, indent:)
  group.hosts_dataset.each do |host|
    next unless host.groups_dataset.one?

    emit(events, :adding_automatic_group_to_host, host: host[:name], indent: indent)
    host.add_group(context.automatic_group)
    emit(events, :ok, indent: indent + 2)
  end

  emit(events, :destroying_group, name: group.name, indent: indent)
  group.remove_all_groupvars
  group.remove_all_hosts
  group.destroy
  emit(events, :ok, indent: indent + 2)
end