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
-
cluster
-
-
node-pool - -
-
Constants
- VERSION
Public Class Methods
# 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
# File lib/gclouder.rb, line 141 def self.bootstrap return unless cli_args[:bootstrap] Resources::Project.update report footer exit end
# 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
# File lib/gclouder.rb, line 124 def self.header info GClouder::Header.display end
# 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
# File lib/gclouder.rb, line 333 def self.report Logging.report end
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
# 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
# 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
# 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