class Eclair::GCEItem
Attributes
instance[R]
Public Class Methods
new(instance)
click to toggle source
Calls superclass method
Eclair::Item::new
# File lib/eclair/providers/gce/gce_item.rb, line 10 def initialize instance super() @instance = instance end
Public Instance Methods
color()
click to toggle source
# File lib/eclair/providers/gce/gce_item.rb, line 19 def color if @selected [Curses::COLOR_YELLOW, -1, Curses::A_BOLD] elsif !connectable? [Curses::COLOR_BLACK, -1, Curses::A_BOLD] else [Curses::COLOR_WHITE, -1] end end
command()
click to toggle source
# File lib/eclair/providers/gce/gce_item.rb, line 57 def command hosts = [private_ip_address, public_ip_address].compact ports = config.ssh_ports ssh_options = config.ssh_options ssh_command = config.ssh_command username = "ubuntu" format = config.exec_format joined_cmd = hosts.map do |host| ports.map do |port| { "{ssh_command}" => ssh_command, "{ssh_options}" => ssh_options, "{port}" => port, "{username}" => username, "{host}" => host, "{ssh_key}" => "" }.reduce(format) { |cmd,pair| cmd.sub(pair[0],pair[1].to_s) } end end.join(" || ") # puts joined_cmd "echo Attaching to #{name} \\[#{name}\\] && #{joined_cmd}" end
connectable?()
click to toggle source
# File lib/eclair/providers/gce/gce_item.rb, line 81 def connectable? status == "RUNNING" end
description()
click to toggle source
# File lib/eclair/providers/gce/gce_item.rb, line 41 def description @instance["description"] end
header()
click to toggle source
# File lib/eclair/providers/gce/gce_item.rb, line 29 def header <<-EOS #{name} (#{public_ip_address} #{private_ip_address}) launched at #{launch_time.to_time} #{description} EOS end
id()
click to toggle source
# File lib/eclair/providers/gce/gce_item.rb, line 15 def id @instance["id"] end
label()
click to toggle source
# File lib/eclair/providers/gce/gce_item.rb, line 37 def label " - #{name} [#{launched_at}]" end
name()
click to toggle source
# File lib/eclair/providers/gce/gce_item.rb, line 45 def name @instance["name"] end
private_ip_address()
click to toggle source
# File lib/eclair/providers/gce/gce_item.rb, line 53 def private_ip_address @instance.dig("networkInterfaces", 0, "networkIP") end
public_ip_address()
click to toggle source
# File lib/eclair/providers/gce/gce_item.rb, line 49 def public_ip_address @instance.dig("networkInterfaces", 0, "accessConfigs", 0, "natIP") end
search_key()
click to toggle source
# File lib/eclair/providers/gce/gce_item.rb, line 85 def search_key name.downcase end
Private Instance Methods
launch_time()
click to toggle source
# File lib/eclair/providers/gce/gce_item.rb, line 95 def launch_time Time.parse(@instance["creationTimestamp"]).localtime end
launched_at()
click to toggle source
# File lib/eclair/providers/gce/gce_item.rb, line 99 def launched_at diff = Time.now - launch_time { "year" => 31557600, "month" => 2592000, "day" => 86400, "hour" => 3600, "minute" => 60, "second" => 1 }.each do |unit,v| if diff >= v value = (diff/v).to_i return "#{value} #{unit}#{value > 1 ? "s" : ""}" end end "now" end
status()
click to toggle source
# File lib/eclair/providers/gce/gce_item.rb, line 91 def status @instance["status"] end