Class: Legion::CLI::AdminCommand

Inherits:
Thor
  • Object
show all
Defined in:
lib/legion/cli/admin_command.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.detect_old_exchanges(exchanges) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
# File 'lib/legion/cli/admin_command.rb', line 44

def self.detect_old_exchanges(exchanges)
  lex_names = exchanges.select { |e| e[:name].to_s.start_with?('lex.') }
                       .to_set { |e| e[:name].to_s.sub('lex.', '') }

  exchanges.select do |e|
    next false unless e[:name].to_s.start_with?('legion.')

    suffix = e[:name].to_s.sub('legion.', '')
    lex_names.include?(suffix)
  end
end

Instance Method Details

#purge_topologyObject



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/legion/cli/admin_command.rb', line 21

def purge_topology
  exchanges  = fetch_exchanges
  candidates = self.class.detect_old_exchanges(exchanges)

  if candidates.empty?
    say 'No old v2.0 topology exchanges found.', :green
    return
  end

  say "Found #{candidates.size} old v2.0 exchange(s):", :yellow
  candidates.each { |e| say "  #{e[:name]} (#{e[:type]})" }

  if options[:execute] && !options[:dry_run]
    candidates.each do |exchange|
      delete_exchange(exchange[:name])
      say "  Deleted: #{exchange[:name]}", :red
    end
    say "Purged #{candidates.size} exchange(s).", :green
  else
    say "\nDry run. Use --execute --no-dry-run to delete.", :cyan
  end
end