module GClouder::Project::ID

Public Class Methods

bail() click to toggle source
# File lib/gclouder/resources/project_id.rb, line 27
def self.bail
  puts "not authenticated against API and --activate-service-accounts option not passed"
  puts ""
  puts "please either:"
  puts ""
  puts "  run: gcloud auth login && gcloud auth application-default login"
  puts ""
  puts "  or: specify --activate-service-accounts flag and make sure the relevant keys exist in the keys dir"
  puts ""
  exit 1
end
current() click to toggle source
# File lib/gclouder/resources/project_id.rb, line 19
def self.current
  return if cli_args[:ignore_default_service_account]
  id = shell("gcloud auth list --format json | jq -r '.[] | select(.status == \"ACTIVE\") | .account'")
  return id if !id.empty?
  return if cli_args[:activate_service_accounts]
  bail
end
default() click to toggle source
# File lib/gclouder/resources/project_id.rb, line 59
def self.default
  shell("gcloud config set account #{project['project_id']}")
end
dir() click to toggle source
# File lib/gclouder/resources/project_id.rb, line 63
def self.dir
  cli_args[:keys_dir] || File.join(ENV["HOME"], "keys")
end
id() click to toggle source
# File lib/gclouder/resources/project_id.rb, line 10
def self.id
  @id
end
key_file(project_id) click to toggle source
# File lib/gclouder/resources/project_id.rb, line 67
def self.key_file(project_id)
  File.join(dir, "gcloud-service-key-#{project_id}.json")
end
load() click to toggle source
# File lib/gclouder/resources/project_id.rb, line 14
def self.load
  @id ||= current
  switch(project["project_id"]) if @id.nil?
end
rescue() click to toggle source
# File lib/gclouder/resources/project_id.rb, line 46
def self.rescue
  if @id.nil?
    shell("gcloud config unset account")
    return
  end

  switch(@id)
end
reset() click to toggle source
# File lib/gclouder/resources/project_id.rb, line 55
def self.reset
  switch(project["project_id"])
end
switch(project_id) click to toggle source
# File lib/gclouder/resources/project_id.rb, line 39
def self.switch(project_id)
  return unless project_id
  if cli_args[:activate_service_accounts]
    shell("gcloud --quiet auth activate-service-account --key-file #{key_file(project_id)}")
  end
end