Sha256: 6f0c31c229814327f1eea9347efec152bd2de992b6621cd18eebc22de31f42da

Contents?: true

Size: 1.42 KB

Versions: 7

Compression:

Stored size: 1.42 KB

Contents

require 'thor'
require_relative './formatter.rb'

module Moose
  module Inventory
    module Cli
      ##
      # Implementation of the "group get" method of the CLI
      class Group
        desc 'get GROUP_1 [GROUP_2 ...]', 'Get groups GROUP_n from the inventory'
        def get(*argv) # rubocop:disable Metrics/AbcSize
          if argv.length < 1
            abort('ERROR: Wrong number of arguments, '\
              "#{argv.length} for 1 or more")
          end

          # Convenience
          db    = Moose::Inventory::DB
          fmt = Moose::Inventory::Cli::Formatter

          # Arguments
          names = argv.uniq.map(&:downcase)

          # Process
          results = {}
          names.each do |name|
            group = db.models[:group].find(name: name)
              
            unless group.nil?
              hosts = group.hosts_dataset.map(:name)
            
              groupvars = {}
              group.groupvars_dataset.each do |gv|
                groupvars[gv[:name].to_sym] = gv[:value]
              end

              results[group[:name].to_sym] = {}
              unless hosts.length == 0
                results[group[:name].to_sym][:hosts]     = hosts
              end
              unless groupvars.length == 0
                results[group[:name].to_sym][:groupvars] = groupvars
              end
            end
          end
          
          fmt.dump(results)
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
moose-inventory-0.1.6 lib/moose_inventory/cli/group_get.rb
moose-inventory-0.1.5 lib/moose_inventory/cli/group_get.rb
moose-inventory-0.1.4 lib/moose_inventory/cli/group_get.rb
moose-inventory-0.1.3 lib/moose_inventory/cli/group_get.rb
moose-inventory-0.1.2 lib/moose_inventory/cli/group_get.rb
moose-inventory-0.1.1 lib/moose/inventory/cli/group_get.rb
moose-inventory-0.1.0 lib/moose/inventory/cli/group_get.rb