class CapGCE::GCEHandler
Public Class Methods
new()
click to toggle source
# File lib/cap-gce/gce-handler.rb, line 9 def initialize load_config @authorizer = fetch_authorizer load_gce end
Public Instance Methods
application()
click to toggle source
# File lib/cap-gce/gce-handler.rb, line 61 def application Capistrano::Configuration.env.fetch(:application).to_s end
defined_roles()
click to toggle source
# File lib/cap-gce/gce-handler.rb, line 53 def defined_roles roles(:all).flat_map(&:roles_array).uniq.sort end
get_servers_for_role(role)
click to toggle source
# File lib/cap-gce/gce-handler.rb, line 69 def get_servers_for_role(role) servers = [] @gce.each do |_, gce| next if gce.items.nil? servers += gce.items.select do |i| instance_has_tag?(i, roles_tag, role) && instance_has_tag?(i, stages_tag, stage) && instance_has_tag?(i, project_tag, application) end end servers.sort_by(&:name) end
instance_ids()
click to toggle source
# File lib/cap-gce/gce-handler.rb, line 44 def instance_ids puts defined_roles .map { |r| get_servers_for_role(r) } .flatten .uniq(&:id) .map(&:id) .join("\n") end
load_gce()
click to toggle source
# File lib/cap-gce/gce-handler.rb, line 15 def load_gce compute = Google::Apis::ComputeV1::ComputeService.new compute.authorization = @authorizer configured_zones = get_zones(fetch(:gce_zone)) @gce = {} configured_zones.each do |zone| @gce[zone] = compute.list_instances( fetch(:gce_project_id), zone, filter: fetch(:gce_filter) ) end end
server_names()
click to toggle source
# File lib/cap-gce/gce-handler.rb, line 35 def server_names puts defined_roles .map { |r| get_servers_for_role(r) } .flatten .uniq(&:id) .map(&:name) .join("\n") end
stage()
click to toggle source
# File lib/cap-gce/gce-handler.rb, line 57 def stage Capistrano::Configuration.env.fetch(:stage).to_s end
status_table()
click to toggle source
# File lib/cap-gce/gce-handler.rb, line 29 def status_table CapGCE::StatusTable.new( defined_roles.map { |r| get_servers_for_role(r) }.flatten.uniq(&:id) ) end
tag(tag_name)
click to toggle source
# File lib/cap-gce/gce-handler.rb, line 65 def tag(tag_name) "tag:#{tag_name}" end
Private Instance Methods
instance_has_tag?(instance, key, value)
click to toggle source
# File lib/cap-gce/gce-handler.rb, line 84 def instance_has_tag?(instance, key, value) (tag_value(instance, key) || '').split(',').map(&:strip).include?(value.to_s) end