class DigitalOceanInventory::Serializer
Attributes
config[R]
Public Class Methods
build(config)
click to toggle source
# File lib/digital_ocean_inventory/serializer.rb, line 7 def self.build(config) new config end
new(config)
click to toggle source
# File lib/digital_ocean_inventory/serializer.rb, line 11 def initialize(config) @config = config end
Public Instance Methods
call(inventory)
click to toggle source
# File lib/digital_ocean_inventory/serializer.rb, line 15 def call(inventory) meta = { _meta: { hostvars: hostvars(inventory) } } data = groups(inventory).merge meta JSON.dump data end
Private Instance Methods
groups(inventory)
click to toggle source
# File lib/digital_ocean_inventory/serializer.rb, line 24 def groups(inventory) hash = {} inventory.groups.to_h.each do |name, group| hash[name] = { vars: groupvars(group), hosts: group.hosts.map { |h| h.droplet.name }.uniq, children: [] } end hash end
groupvars(group)
click to toggle source
# File lib/digital_ocean_inventory/serializer.rb, line 37 def groupvars(group) return {} unless group.name == "all" hosts = group.hosts.map { |h| h.vars } { public_ips: hosts.map { |v| v[:public_ip] }.uniq, private_ips: hosts.map { |v| v[:private_ip] }.uniq, vpc_subnets: hosts.map { |v| v[:vpc_subnet] }.uniq } end
hostvars(inventory)
click to toggle source
# File lib/digital_ocean_inventory/serializer.rb, line 49 def hostvars(inventory) inventory.hosts.to_h.values.map { |h| [h.droplet.name, h.vars] }.to_h end