module GClouder

NOTE

table of equivalent commands for `gcloud container …` commands..

convert node-pool parameters to cluster create and cluster resize parameters..

clusters create - clusters resize - nodepool create

additional-zones - - async - async - cluster-ipv4-cidr - - disable-addons - - disk-size - - disk-size no-enable-cloud-endpoints - - enable-cloud-endpoints no-enable-cloud-logging - - no-enable-cloud-monitoring - - image-type - - image-type machine-type - - machine-type max-nodes-per-pool - - network - - num-nodes - size - num-nodes password - - scopes - - scopes subnetwork - - username - - wait - wait - zone - zone - zone

Constants

VERSION

Public Class Methods

run() click to toggle source
# File lib/gclouder.rb, line 98
def self.run
  setup

  begin
    header
    bootstrap
    check_project_exists
    update
    report
    footer
  rescue => error
    raise error if cli_args[:trace] || cli_args[:debug]
    fatal error.message
  ensure
    Project::ID.rescue
  end
end

Private Class Methods

bootstrap() click to toggle source
# File lib/gclouder.rb, line 141
def self.bootstrap
  return unless cli_args[:bootstrap]

  Resources::Project.update

  report
  footer
  exit
end
check_project_exists() click to toggle source
# File lib/gclouder.rb, line 118
def self.check_project_exists
  # FIXME: this requires Cloud Resource Manager API to be enabled for project
  return if Resources::Project.exists?
  fatal "\nerror: project does not exist or you do not have permission to access it: #{project['project_id']}"
end
header() click to toggle source
# File lib/gclouder.rb, line 124
def self.header
  info GClouder::Header.display
end
process?(resource) click to toggle source
# File lib/gclouder.rb, line 310
def self.process?(resource)
  return true unless cli_args[:resources]

  # if resources flag is passed then check if resource was specified
  cli_args[:resources].split(',').include?(resource)
end
report() click to toggle source
# File lib/gclouder.rb, line 333
def self.report
  Logging.report
end
resources() click to toggle source

resources are ordered in an attempt to avoid dependency issues

# File lib/gclouder.rb, line 152
def self.resources
  [
    {
      name: "sinks",
      module: Resources::Logging::Sinks,
      skip: [ :check, :clean ],
    },

    {
      name: "iam",
      module: Resources::Project::IAMPolicyBinding,
      skip: [ :check ],
    },

    {
      name: "ssh-keys",
      module: Resources::Compute::ProjectInfo::SSHKeys,
      skip: [ :check, :clean ],
    },

    {
      name: "storage-buckets",
      module: Resources::Storage::Buckets,
      skip: [ :check ],
    },

    {
      name: "storage-notifications",
      module: Resources::Storage::Notifications,
      skip: [ :check, :clean ],
    },

    {
      name: "networks",
      module: Resources::Compute::Networks,
      skip: [ :check ],
    },

    {
      name: "subnets",
      module: Resources::Compute::Networks::Subnets,
      skip: [ :check ],
    },

    {
      name: "routers",
      module: Resources::Compute::Routers,
      skip: [ :check ],
    },

    {
      name: "addresses",
      module: Resources::Compute::Addresses,
    },

    {
      name: "dns",
      module: Resources::DNS,
      skip: [ :check ],
    },

    {
      name: "vpns",
      module: Resources::Compute::VPNs,
      skip: [ :check ],
    },

    {
      name: "bgp-vpns",
      module: Resources::Compute::BGPVPNs,
      skip: [ :check ],
    },

    {
      name: "vms",
      module: Resources::Compute::Instances,
    },

    {
      name: "disks",
      module: Resources::Compute::Disks,
      skip: [ :check ],
    },

    {
      name: "clusters",
      module: Resources::Container::Clusters,
      skip: [ :check ],
    },

    {
      name: "node-pools",
      module: Resources::Container::NodePools,
      skip: [ :check ],
    },

    {
      name: "firewalls",
      module: Resources::Compute::FirewallRules,
      skip: [ :check ],
    },

    {
      name: "backend-buckets",
      module: Resources::Compute::BackendBuckets,
      skip: [ :check ],
    },

    {
      name: "target-https-proxies",
      module: Resources::Compute::TargetHTTPSProxies,
      skip: [ :check ],
    },

    {
      name: "url-maps",
      module: Resources::Compute::URLMaps,
      skip: [ :check ],
    },

    {
      name: "forwarding-rules",
      module: Resources::Compute::ForwardingRules,
      skip: [ :check ],
    },

    {
      name: "topics",
      module: Resources::PubSub::Topics,
      skip: [ :check ],
    },

    {
      name: "subscriptions",
      module: Resources::PubSub::Subscriptions,
      skip: [ :check ],
    },

    {
      name: "runtime-configs",
      module: Resources::RuntimeConfig::Configs,
      skip: [ :check ],
    },

    {
      name: "variables",
      module: Resources::RuntimeConfig::Variables,
      skip: [ :check, :clean ],
    },

    {
      name: "functions",
      module: Resources::Functions::Function,
      skip: [ :check, :clean ],
    },
  ]
end
setup() click to toggle source
# File lib/gclouder.rb, line 132
def self.setup
  Dependencies.check
  Config::CLIArgs.load
  Config::Project.load
  Project::ID.load
  Config::Arguments.load
  Config::ResourceRepresentations.load
end
skip?(resource, action) click to toggle source
# File lib/gclouder.rb, line 317
def self.skip?(resource, action)
  return true if resource.fetch(:skip, []).include?(action)
  return true if cli_args[:stages] && !cli_args[:stages].split(",").include?(action.to_s)
end
update() click to toggle source
# File lib/gclouder.rb, line 322
def self.update
  resources.each do |resource|
    next unless process?(resource[:name])

    [:validate, :ensure , :clean, :check].each do |action|
      next if skip?(resource, action)
      resource[:module].send(action)
    end
  end
end