class GClouder::Config::Cluster

Public Instance Methods

context(context) click to toggle source
# File lib/gclouder/config/cluster.rb, line 6
def context(context)
  dup = self.dup

  permitted_keys = case context
  when :create_cluster
    [
      "additional_zones",
      "async",
      "cluster_ipv4_cidr",
      "cluster_version",
      "disable_addons",
      "disk_size",
      "no_enable_cloud_endpoints",
      "no_enable_cloud_logging",
      "no_enable_cloud_monitoring",
      "image_type",
      "machine_type",
      "max_nodes_per_pool",
      "network",
      "node_labels",
      "num_nodes",
      "password",
      "preemptible",
      "scopes",
      "subnetwork",
      "username",
      "wait",
      "zone",
    ]
  when :create_nodepool
    # flip value due to differing key name..
    if self.key?("no_enable_cloud_endpoints")
      dup[:enable_cloud_endpoints] = self[:no_enable_cloud_endpoints] ? false : true
    end

    [
      "disk_size",
      "enable_autoscaling",
      "enable_cloud_endpoints",
      "image_type",
      "machine_type",
      "max_nodes",
      "min_nodes",
      "node_labels",
      "num_nodes",
      "preemptible",
      "scopes",
      "zone",
      "cluster",
    ]
  when :resize_cluster
    dup["size"] = self["num_nodes"] if self.key?("num_nodes")

    [
      "async",
      "size",
      "wait",
      "zone",
      "node_pool",
    ]
  when :autoscale_cluster
    [
      "enable_autoscaling",
      "max_nodes",
      "min_nodes",
    ]
  else
    raise StandardError, "invalid context supplied when querying config object: #{context}"
  end

  dup.delete_if { |k, _| !permitted_keys.include?(k) }
end