<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="baremetalsolution_v1alpha1.html">Bare Metal Solution API</a> . <a href="baremetalsolution_v1alpha1.projects.html">projects</a> . <a href="baremetalsolution_v1alpha1.projects.locations.html">locations</a> . <a href="baremetalsolution_v1alpha1.projects.locations.volumes.html">volumes</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="baremetalsolution_v1alpha1.projects.locations.volumes.snapshots.html">snapshots()</a></code>
</p>
<p class="firstline">Returns the snapshots Resource.</p>

<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="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Get details for a specific named Volume.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">List the volumes for the specified 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>
<p class="toc_element">
  <code><a href="#patch">patch(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Update certain parameters on a Volume.</p>
<p class="toc_element">
  <code><a href="#setVolumeSnapshotSchedulePolicy">setVolumeSnapshotSchedulePolicy(volume, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Sets the specified snapshot schedule policy on the specified volume.</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="get">get(name, x__xgafv=None)</code>
  <pre>Get details for a specific named Volume.

Args:
  name: string, Required. The name of the Volume to retrieve. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Volume registered in the project.
  &quot;autoGrownSizeGb&quot;: &quot;A String&quot;, # The size, in GB, that this Volume has expanded as a result of an auto grow policy.
  &quot;currentSizeGb&quot;: &quot;A String&quot;, # The current size of this Volume, in GB, including space reserved for snapshots. This size may be different than the requested size if the Volume has been configured with auto grow or auto shrink.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The name of this Volume.
  &quot;remainingSpaceGb&quot;: &quot;A String&quot;, # The space remaining in the Volume for new LUNs, in GB, excluding space reserved for snapshots.
  &quot;requestedSizeGb&quot;: &quot;A String&quot;, # The requested size of this Volume, in GB.
  &quot;snapshotReservedSpacePercent&quot;: 42, # The percent of space on this Volume reserved for snapshots.
  &quot;snapshotReservedSpaceRemainingGb&quot;: &quot;A String&quot;, # The amount, in GB, of space available in this Volume&#x27;s reserved snapshot space.
  &quot;snapshotReservedSpaceUsedPercent&quot;: 42, # The percent of reserved snapshot space on this Volume that is actually used by snapshot copies. This may be higher than 100% if snapshot copies are occupying more space than has been reserved on the Volume.
  &quot;state&quot;: &quot;A String&quot;, # The state of this Volume.
  &quot;type&quot;: &quot;A String&quot;, # The type of this Volume.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>List the volumes for the specified project

Args:
  parent: string, Required. The location to list Volumes in. (required)
  pageSize: integer, The maximum number of items to return.
  pageToken: string, The next_page_token value returned from a previous List request, if any.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response for ListVolumes.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # Token to retrieve the next page of results, or empty if there are no more results in the list.
  &quot;volumes&quot;: [ # The volumes registered in this project.
    { # Volume registered in the project.
      &quot;autoGrownSizeGb&quot;: &quot;A String&quot;, # The size, in GB, that this Volume has expanded as a result of an auto grow policy.
      &quot;currentSizeGb&quot;: &quot;A String&quot;, # The current size of this Volume, in GB, including space reserved for snapshots. This size may be different than the requested size if the Volume has been configured with auto grow or auto shrink.
      &quot;name&quot;: &quot;A String&quot;, # Output only. The name of this Volume.
      &quot;remainingSpaceGb&quot;: &quot;A String&quot;, # The space remaining in the Volume for new LUNs, in GB, excluding space reserved for snapshots.
      &quot;requestedSizeGb&quot;: &quot;A String&quot;, # The requested size of this Volume, in GB.
      &quot;snapshotReservedSpacePercent&quot;: 42, # The percent of space on this Volume reserved for snapshots.
      &quot;snapshotReservedSpaceRemainingGb&quot;: &quot;A String&quot;, # The amount, in GB, of space available in this Volume&#x27;s reserved snapshot space.
      &quot;snapshotReservedSpaceUsedPercent&quot;: 42, # The percent of reserved snapshot space on this Volume that is actually used by snapshot copies. This may be higher than 100% if snapshot copies are occupying more space than has been reserved on the Volume.
      &quot;state&quot;: &quot;A String&quot;, # The state of this Volume.
      &quot;type&quot;: &quot;A String&quot;, # The type of this Volume.
    },
  ],
}</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>

<div class="method">
    <code class="details" id="patch">patch(name, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Update certain parameters on a Volume.

Args:
  name: string, Output only. The name of this Volume. (required)
  body: object, The request body.
    The object takes the form of:

{ # Volume registered in the project.
  &quot;autoGrownSizeGb&quot;: &quot;A String&quot;, # The size, in GB, that this Volume has expanded as a result of an auto grow policy.
  &quot;currentSizeGb&quot;: &quot;A String&quot;, # The current size of this Volume, in GB, including space reserved for snapshots. This size may be different than the requested size if the Volume has been configured with auto grow or auto shrink.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The name of this Volume.
  &quot;remainingSpaceGb&quot;: &quot;A String&quot;, # The space remaining in the Volume for new LUNs, in GB, excluding space reserved for snapshots.
  &quot;requestedSizeGb&quot;: &quot;A String&quot;, # The requested size of this Volume, in GB.
  &quot;snapshotReservedSpacePercent&quot;: 42, # The percent of space on this Volume reserved for snapshots.
  &quot;snapshotReservedSpaceRemainingGb&quot;: &quot;A String&quot;, # The amount, in GB, of space available in this Volume&#x27;s reserved snapshot space.
  &quot;snapshotReservedSpaceUsedPercent&quot;: 42, # The percent of reserved snapshot space on this Volume that is actually used by snapshot copies. This may be higher than 100% if snapshot copies are occupying more space than has been reserved on the Volume.
  &quot;state&quot;: &quot;A String&quot;, # The state of this Volume.
  &quot;type&quot;: &quot;A String&quot;, # The type of this Volume.
}

  updateMask: string, The list of fields to update. The only currently supported field is `snapshot_reserved_space_percent`.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Volume registered in the project.
  &quot;autoGrownSizeGb&quot;: &quot;A String&quot;, # The size, in GB, that this Volume has expanded as a result of an auto grow policy.
  &quot;currentSizeGb&quot;: &quot;A String&quot;, # The current size of this Volume, in GB, including space reserved for snapshots. This size may be different than the requested size if the Volume has been configured with auto grow or auto shrink.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The name of this Volume.
  &quot;remainingSpaceGb&quot;: &quot;A String&quot;, # The space remaining in the Volume for new LUNs, in GB, excluding space reserved for snapshots.
  &quot;requestedSizeGb&quot;: &quot;A String&quot;, # The requested size of this Volume, in GB.
  &quot;snapshotReservedSpacePercent&quot;: 42, # The percent of space on this Volume reserved for snapshots.
  &quot;snapshotReservedSpaceRemainingGb&quot;: &quot;A String&quot;, # The amount, in GB, of space available in this Volume&#x27;s reserved snapshot space.
  &quot;snapshotReservedSpaceUsedPercent&quot;: 42, # The percent of reserved snapshot space on this Volume that is actually used by snapshot copies. This may be higher than 100% if snapshot copies are occupying more space than has been reserved on the Volume.
  &quot;state&quot;: &quot;A String&quot;, # The state of this Volume.
  &quot;type&quot;: &quot;A String&quot;, # The type of this Volume.
}</pre>
</div>

<div class="method">
    <code class="details" id="setVolumeSnapshotSchedulePolicy">setVolumeSnapshotSchedulePolicy(volume, body=None, x__xgafv=None)</code>
  <pre>Sets the specified snapshot schedule policy on the specified volume.

Args:
  volume: string, Required. Name of the volume to set snapshot schedule policy on. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request for SetVolumeSnapshotSchedulePolicy.
  &quot;snapshotSchedulePolicy&quot;: &quot;A String&quot;, # Required. The name of the policy to set on the volume.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response for SetVolumeSnapshotSchedulePolicy.
}</pre>
</div>

</body></html>