<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.aggregated.html">aggregated</a> . <a href="container_v1beta1.projects.aggregated.usableSubnetworks.html">usableSubnetworks</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, filter=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists subnetworks that can be used for creating clusters in a project.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, filter=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists subnetworks that can be used for creating clusters in a project.

Args:
  parent: string, Required. The parent project where subnetworks are usable. Specified in the format `projects/*`. (required)
  filter: string, Filtering currently only supports equality on the networkProjectId and must be in the form: &quot;networkProjectId=[PROJECTID]&quot;, where `networkProjectId` is the project which owns the listed subnetworks. This defaults to the parent project ID.
  pageSize: integer, The max number of results per page that should be returned. If the number of available results is larger than `page_size`, a `next_page_token` is returned which can be used to get the next page of results in subsequent requests. Acceptable values are 0 to 500, inclusive. (Default: 500)
  pageToken: string, Specifies a page token to use. Set this to the nextPageToken returned by previous list requests to get the next page of results.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # ListUsableSubnetworksResponse is the response of ListUsableSubnetworksRequest.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # This token allows you to get the next page of results for list requests. If the number of results is larger than `page_size`, use the `next_page_token` as a value for the query parameter `page_token` in the next request. The value will become empty when there are no more pages.
  &quot;subnetworks&quot;: [ # A list of usable subnetworks in the specified network project.
    { # UsableSubnetwork resource returns the subnetwork name, its associated network and the primary CIDR range.
      &quot;ipCidrRange&quot;: &quot;A String&quot;, # The range of internal addresses that are owned by this subnetwork.
      &quot;network&quot;: &quot;A String&quot;, # Network Name. Example: projects/my-project/global/networks/my-network
      &quot;secondaryIpRanges&quot;: [ # Secondary IP ranges.
        { # Secondary IP range of a usable subnetwork.
          &quot;ipCidrRange&quot;: &quot;A String&quot;, # The range of IP addresses belonging to this subnetwork secondary range.
          &quot;rangeName&quot;: &quot;A String&quot;, # The name associated with this subnetwork secondary range, used when adding an alias IP range to a VM instance.
          &quot;status&quot;: &quot;A String&quot;, # This field is to determine the status of the secondary range programmably.
        },
      ],
      &quot;statusMessage&quot;: &quot;A String&quot;, # A human readable status message representing the reasons for cases where the caller cannot use the secondary ranges under the subnet. For example if the secondary_ip_ranges is empty due to a permission issue, an insufficient permission message will be given by status_message.
      &quot;subnetwork&quot;: &quot;A String&quot;, # Subnetwork Name. Example: projects/my-project/regions/us-central1/subnetworks/my-subnet
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>