Method: CollinsShell::Console::Filesystem#asset_methods

Defined in:
lib/collins_shell/console/filesystem.rb

#asset_methods(exclude_non_scalar = false) ⇒ Object



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/collins_shell/console/filesystem.rb', line 52

def asset_methods exclude_non_scalar = false
  non_scalar = [:addresses, :backend_address, :backend_addresses, :backend_ip_addresses,
    :backend_netmasks, :cpus, :disks, :extras, :get_attribute, :mac_addresses, :memory, :nics,
    :power, :public_address, :public_addresses, :public_ip_addresses]
  asset_objects = {:ipmi => Collins::Ipmi, :state => Collins::AssetState}
  ex_methods = exclude_methods
  ex_methods += non_scalar if exclude_non_scalar
  Collins::Asset.public_instance_methods(false).map(&:to_sym).reject do |meth|
    ex_methods.include?(meth)
  end.map do |meth|
    if asset_objects.key?(meth) then
      asset_objects[meth].public_instance_methods(false).map(&:to_sym).reject do |meh|
        ex_methods.include?(meh) || meh.to_s =~ /=$/
      end.map do |meh|
        "#{meth}.#{meh}"
      end
    else
      [meth.to_s]
    end
  end.flatten.sort
end