module GClouder::Resources::Compute::BGPVPNs

Public Class Methods

dir() click to toggle source
# File lib/gclouder/resources/compute/bgp-vpns.rb, line 48
def self.dir
  cli_args[:keys_dir] || File.join(ENV["HOME"], "keys")
end
ensure() click to toggle source
# File lib/gclouder/resources/compute/bgp-vpns.rb, line 32
def self.ensure
  return if Local.list.empty?

  header

  Local.list.each do |region, instances|
    info region, indent: 2, heading: true

    instances.each do |vpn|
      set_shared_secret(region, vpn)
      info
      BGPVPN.create(region, vpn)
    end
  end
end
header(stage = :ensure) click to toggle source
# File lib/gclouder/resources/compute/bgp-vpns.rb, line 22
def self.header(stage = :ensure)
  info "[#{stage}] compute / bgp-vpns", indent: 1, title: true
end
set_shared_secret(region, vpn) click to toggle source
# File lib/gclouder/resources/compute/bgp-vpns.rb, line 52
def self.set_shared_secret(region, vpn)
  # if 'shared_secret' key is set, use it
  # if not, fall back to trying to read the secret from an environment variable, the name
  # of which is provided by the 'shared_secret_env_var' key
  unless vpn.key?("shared_secret") || vpn.key?("shared_secret_env_var") || vpn.key?("shared_secret_file")
    if cli_args[:dry_run]
      warning "no shared secret found for VPN"
    else
      fatal "shared_secret_env_var or shared_secret must be set for region/vpn: #{region}/#{vpn["name"]}"
      return false
    end
  end

  vpn["shared_secret"] = if vpn.key?("shared_secret") && !vpn["shared_secret"].empty? && !vpn["shared_secret"].nil?
    vpn["shared_secret"]
  else
    ENV[vpn["shared_secret_env_var"]] if vpn["shared_secret_env_var"]
  end

  # this overrides the above for now..
  if vpn.key?("shared_secret_file")
    config_file = File.join(dir, vpn["shared_secret_file"])

    if !File.exists?(config_file)
      fatal "shared_secret_file specified for vpn but no file found for region/vpn: #{region}/#{vpn["name"]}"
    end

    vpn["shared_secret"] = File.read(config_file)
  end
end
validate() click to toggle source
# File lib/gclouder/resources/compute/bgp-vpns.rb, line 26
def self.validate
  return if Local.list.empty?
  header :validate
  Local.validate
end