class DigitalOceanInventory::Host
Attributes
config[R]
droplet[R]
name[R]
Public Class Methods
build(opts = {})
click to toggle source
# File lib/digital_ocean_inventory/host.rb, line 7 def self.build(opts = {}) config = opts[:config] droplet = opts[:droplet] new droplet.name, droplet, config end
new(name, droplet, config)
click to toggle source
# File lib/digital_ocean_inventory/host.rb, line 14 def initialize(name, droplet, config) @name = name @droplet = droplet @config = config end
Public Instance Methods
vars()
click to toggle source
# File lib/digital_ocean_inventory/host.rb, line 20 def vars return @_vars if defined? @_vars @_vars = host_vars.to_h @_vars end
Private Instance Methods
droplet_ip(type = :public)
click to toggle source
# File lib/digital_ocean_inventory/host.rb, line 29 def droplet_ip(type = :public) droplet.networks.v4.find { |n| n.type == type.to_s }&.ip_address end
droplet_volume_names()
click to toggle source
# File lib/digital_ocean_inventory/host.rb, line 38 def droplet_volume_names ids = droplet.volume_ids || [] ids.map { |id| config.client.volumes.find id: id }.map &:name end
droplet_vpc()
click to toggle source
# File lib/digital_ocean_inventory/host.rb, line 33 def droplet_vpc id = droplet.vpc_uuid config.client.vpcs.find id: id end
host_vars()
click to toggle source
# File lib/digital_ocean_inventory/host.rb, line 43 def host_vars vpc = droplet_vpc OpenStruct.new.tap do |v| v.public_ip = droplet.public_ip v.private_ip = droplet.private_ip v.droplet_id = droplet.id v.vpc_id = vpc.id v.vpc_name = vpc.name v.vpc_subnet = vpc.ip_range v.droplet_tags = droplet.tags || [] v.volumes_ids = droplet.volume_ids || [] v.volumes_names = droplet_volume_names v.image_name = droplet.image.name v.image_dist = droplet.image.distribution end end