<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="container_v1beta1.html">Kubernetes Engine API</a> . <a href="container_v1beta1.projects.html">projects</a> . <a href="container_v1beta1.projects.locations.html">locations</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="container_v1beta1.projects.locations.clusters.html">clusters()</a></code>
</p>
<p class="firstline">Returns the clusters Resource.</p>

<p class="toc_element">
  <code><a href="container_v1beta1.projects.locations.operations.html">operations()</a></code>
</p>
<p class="firstline">Returns the operations Resource.</p>

<p class="toc_element">
  <code><a href="#getServerConfig">getServerConfig(name, projectId=None, zone=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns configuration info about the Google Kubernetes Engine service.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, x__xgafv=None)</a></code></p>
<p class="firstline">Fetches locations that offer Google Kubernetes Engine.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="getServerConfig">getServerConfig(name, projectId=None, zone=None, x__xgafv=None)</code>
  <pre>Returns configuration info about the Google Kubernetes Engine service.

Args:
  name: string, The name (project and location) of the server config to get,
specified in the format `projects/*/locations/*`. (required)
  projectId: string, Required. Deprecated. The Google Developers Console [project ID or project
number](https://support.google.com/cloud/answer/6158840).
This field has been deprecated and replaced by the name field.
  zone: string, Required. Deprecated. The name of the Google Compute Engine
[zone](https://cloud.google.com/compute/docs/zones#available) to return
operations for. This field has been deprecated and replaced by the name
field.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Kubernetes Engine service configuration.
    &quot;validNodeVersions&quot;: [ # List of valid node upgrade target versions, in descending order.
      &quot;A String&quot;,
    ],
    &quot;defaultImageType&quot;: &quot;A String&quot;, # Default image type.
    &quot;validMasterVersions&quot;: [ # List of valid master versions, in descending order.
      &quot;A String&quot;,
    ],
    &quot;validImageTypes&quot;: [ # List of valid image types.
      &quot;A String&quot;,
    ],
    &quot;channels&quot;: [ # List of release channel configurations.
      { # ReleaseChannelConfig exposes configuration for a release channel.
        &quot;availableVersions&quot;: [ # Deprecated.
            # This field has been deprecated and replaced with the valid_versions
            # field.
          { # Deprecated.
            &quot;reason&quot;: &quot;A String&quot;, # Reason for availability.
            &quot;version&quot;: &quot;A String&quot;, # Kubernetes version.
          },
        ],
        &quot;channel&quot;: &quot;A String&quot;, # The release channel this configuration applies to.
        &quot;defaultVersion&quot;: &quot;A String&quot;, # The default version for newly created clusters on the channel.
        &quot;validVersions&quot;: [ # List of valid versions for the channel.
          &quot;A String&quot;,
        ],
      },
    ],
    &quot;defaultClusterVersion&quot;: &quot;A String&quot;, # Version of Kubernetes the service deploys by default.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, x__xgafv=None)</code>
  <pre>Fetches locations that offer Google Kubernetes Engine.

Args:
  parent: string, Required. Contains the name of the resource requested.
Specified in the format `projects/*`. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # ListLocationsResponse returns the list of all GKE locations and their
      # recommendation state.
    &quot;locations&quot;: [ # A full list of GKE locations.
      { # Location returns the location name, and if the location is recommended
          # for GKE cluster scheduling.
        &quot;type&quot;: &quot;A String&quot;, # Contains the type of location this Location is for.
            # Regional or Zonal.
        &quot;recommended&quot;: True or False, # Whether the location is recomended for GKE cluster scheduling.
        &quot;name&quot;: &quot;A String&quot;, # Contains the name of the resource requested.
            # Specified in the format `projects/*/locations/*`.
      },
    ],
    &quot;nextPageToken&quot;: &quot;A String&quot;, # Only return ListLocationsResponse that occur after the page_token. This
        # value should be populated from the ListLocationsResponse.next_page_token if
        # that response token was set (which happens when listing more Locations than
        # fit in a single ListLocationsResponse).
  }</pre>
</div>

</body></html>