Class: Moose::Inventory::Operations::GroupCleanup
- Inherits:
-
Object
- Object
- Moose::Inventory::Operations::GroupCleanup
- 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
- #delete_orphaned_group(group, events) ⇒ Object
- #destroy_group(group, events, indent:) ⇒ Object
-
#initialize(context:, emitter:) ⇒ GroupCleanup
constructor
A new instance of GroupCleanup.
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 |