<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="vmmigration_v1.html">VM Migration API</a> . <a href="vmmigration_v1.projects.html">projects</a> . <a href="vmmigration_v1.projects.locations.html">locations</a> . <a href="vmmigration_v1.projects.locations.sources.html">sources</a> . <a href="vmmigration_v1.projects.locations.sources.utilizationReports.html">utilizationReports</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="#create">create(parent, body=None, requestId=None, utilizationReportId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a new UtilizationReport.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, requestId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a single Utilization Report.</p>
<p class="toc_element">
  <code><a href="#get">get(name, view=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a single Utilization Report.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, filter=None, orderBy=None, pageSize=None, pageToken=None, view=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists Utilization Reports of the given Source.</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="create">create(parent, body=None, requestId=None, utilizationReportId=None, x__xgafv=None)</code>
  <pre>Creates a new UtilizationReport.

Args:
  parent: string, Required. The Utilization Report&#x27;s parent. (required)
  body: object, The request body.
    The object takes the form of:

{ # Utilization report details the utilization (CPU, memory, etc.) of selected source VMs.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time the report was created (this refers to the time of the request, not the time the report creation completed).
  &quot;displayName&quot;: &quot;A String&quot;, # The report display name, as assigned by the user.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # Output only. Provides details on the state of the report in case of an error.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;frameEndTime&quot;: &quot;A String&quot;, # Output only. The point in time when the time frame ends. Notice that the time frame is counted backwards. For instance if the &quot;frame_end_time&quot; value is 2021/01/20 and the time frame is WEEK then the report covers the week between 2021/01/20 and 2021/01/14.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The report unique name.
  &quot;state&quot;: &quot;A String&quot;, # Output only. Current state of the report.
  &quot;stateTime&quot;: &quot;A String&quot;, # Output only. The time the state was last set.
  &quot;timeFrame&quot;: &quot;A String&quot;, # Time frame of the report.
  &quot;vmCount&quot;: 42, # Output only. Total number of VMs included in the report.
  &quot;vms&quot;: [ # List of utilization information per VM. When sent as part of the request, the &quot;vm_id&quot; field is used in order to specify which VMs to include in the report. In that case all other fields are ignored.
    { # Utilization information of a single VM.
      &quot;utilization&quot;: { # Utilization metrics values for a single VM. # Utilization metrics for this VM.
        &quot;cpuAveragePercent&quot;: 42, # Average CPU usage, percent.
        &quot;cpuMaxPercent&quot;: 42, # Max CPU usage, percent.
        &quot;diskIoRateAverageKbps&quot;: &quot;A String&quot;, # Average disk IO rate, in kilobytes per second.
        &quot;diskIoRateMaxKbps&quot;: &quot;A String&quot;, # Max disk IO rate, in kilobytes per second.
        &quot;memoryAveragePercent&quot;: 42, # Average memory usage, percent.
        &quot;memoryMaxPercent&quot;: 42, # Max memory usage, percent.
        &quot;networkThroughputAverageKbps&quot;: &quot;A String&quot;, # Average network throughput (combined transmit-rates and receive-rates), in kilobytes per second.
        &quot;networkThroughputMaxKbps&quot;: &quot;A String&quot;, # Max network throughput (combined transmit-rates and receive-rates), in kilobytes per second.
      },
      &quot;vmId&quot;: &quot;A String&quot;, # The VM&#x27;s ID in the source.
      &quot;vmwareVmDetails&quot;: { # VmwareVmDetails describes a VM in vCenter. # The description of the VM in a Source of type Vmware.
        &quot;bootOption&quot;: &quot;A String&quot;, # Output only. The VM Boot Option.
        &quot;committedStorageMb&quot;: &quot;A String&quot;, # The total size of the storage allocated to the VM in MB.
        &quot;cpuCount&quot;: 42, # The number of cpus in the VM.
        &quot;datacenterDescription&quot;: &quot;A String&quot;, # The descriptive name of the vCenter&#x27;s datacenter this VM is contained in.
        &quot;datacenterId&quot;: &quot;A String&quot;, # The id of the vCenter&#x27;s datacenter this VM is contained in.
        &quot;diskCount&quot;: 42, # The number of disks the VM has.
        &quot;displayName&quot;: &quot;A String&quot;, # The display name of the VM. Note that this is not necessarily unique.
        &quot;guestDescription&quot;: &quot;A String&quot;, # The VM&#x27;s OS. See for example https://vdc-repo.vmware.com/vmwb-repository/dcr-public/da47f910-60ac-438b-8b9b-6122f4d14524/16b7274a-bf8b-4b4c-a05e-746f2aa93c8c/doc/vim.vm.GuestOsDescriptor.GuestOsIdentifier.html for types of strings this might hold.
        &quot;memoryMb&quot;: 42, # The size of the memory of the VM in MB.
        &quot;powerState&quot;: &quot;A String&quot;, # The power state of the VM at the moment list was taken.
        &quot;uuid&quot;: &quot;A String&quot;, # The unique identifier of the VM in vCenter.
        &quot;vmId&quot;: &quot;A String&quot;, # The VM&#x27;s id in the source (note that this is not the MigratingVm&#x27;s id). This is the moref id of the VM.
      },
    },
  ],
}

  requestId: string, A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and t he request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).
  utilizationReportId: string, Required. The ID to use for the report, which will become the final component of the reports&#x27;s resource name. This value maximum length is 63 characters, and valid characters are /a-z-/. It must start with an english letter and must not end with a hyphen.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
  &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, requestId=None, x__xgafv=None)</code>
  <pre>Deletes a single Utilization Report.

Args:
  name: string, Required. The Utilization Report name. (required)
  requestId: string, Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes after the first request. For example, consider a situation where you make an initial request and t he request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
  &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, view=None, x__xgafv=None)</code>
  <pre>Gets a single Utilization Report.

Args:
  name: string, Required. The Utilization Report name. (required)
  view: string, Optional. The level of details of the report. Defaults to FULL
    Allowed values
      UTILIZATION_REPORT_VIEW_UNSPECIFIED - The default / unset value. The API will default to FULL on single report request and BASIC for multiple reports request.
      BASIC - Get the report metadata, without the list of VMs and their utilization info.
      FULL - Include everything.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Utilization report details the utilization (CPU, memory, etc.) of selected source VMs.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time the report was created (this refers to the time of the request, not the time the report creation completed).
  &quot;displayName&quot;: &quot;A String&quot;, # The report display name, as assigned by the user.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # Output only. Provides details on the state of the report in case of an error.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;frameEndTime&quot;: &quot;A String&quot;, # Output only. The point in time when the time frame ends. Notice that the time frame is counted backwards. For instance if the &quot;frame_end_time&quot; value is 2021/01/20 and the time frame is WEEK then the report covers the week between 2021/01/20 and 2021/01/14.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The report unique name.
  &quot;state&quot;: &quot;A String&quot;, # Output only. Current state of the report.
  &quot;stateTime&quot;: &quot;A String&quot;, # Output only. The time the state was last set.
  &quot;timeFrame&quot;: &quot;A String&quot;, # Time frame of the report.
  &quot;vmCount&quot;: 42, # Output only. Total number of VMs included in the report.
  &quot;vms&quot;: [ # List of utilization information per VM. When sent as part of the request, the &quot;vm_id&quot; field is used in order to specify which VMs to include in the report. In that case all other fields are ignored.
    { # Utilization information of a single VM.
      &quot;utilization&quot;: { # Utilization metrics values for a single VM. # Utilization metrics for this VM.
        &quot;cpuAveragePercent&quot;: 42, # Average CPU usage, percent.
        &quot;cpuMaxPercent&quot;: 42, # Max CPU usage, percent.
        &quot;diskIoRateAverageKbps&quot;: &quot;A String&quot;, # Average disk IO rate, in kilobytes per second.
        &quot;diskIoRateMaxKbps&quot;: &quot;A String&quot;, # Max disk IO rate, in kilobytes per second.
        &quot;memoryAveragePercent&quot;: 42, # Average memory usage, percent.
        &quot;memoryMaxPercent&quot;: 42, # Max memory usage, percent.
        &quot;networkThroughputAverageKbps&quot;: &quot;A String&quot;, # Average network throughput (combined transmit-rates and receive-rates), in kilobytes per second.
        &quot;networkThroughputMaxKbps&quot;: &quot;A String&quot;, # Max network throughput (combined transmit-rates and receive-rates), in kilobytes per second.
      },
      &quot;vmId&quot;: &quot;A String&quot;, # The VM&#x27;s ID in the source.
      &quot;vmwareVmDetails&quot;: { # VmwareVmDetails describes a VM in vCenter. # The description of the VM in a Source of type Vmware.
        &quot;bootOption&quot;: &quot;A String&quot;, # Output only. The VM Boot Option.
        &quot;committedStorageMb&quot;: &quot;A String&quot;, # The total size of the storage allocated to the VM in MB.
        &quot;cpuCount&quot;: 42, # The number of cpus in the VM.
        &quot;datacenterDescription&quot;: &quot;A String&quot;, # The descriptive name of the vCenter&#x27;s datacenter this VM is contained in.
        &quot;datacenterId&quot;: &quot;A String&quot;, # The id of the vCenter&#x27;s datacenter this VM is contained in.
        &quot;diskCount&quot;: 42, # The number of disks the VM has.
        &quot;displayName&quot;: &quot;A String&quot;, # The display name of the VM. Note that this is not necessarily unique.
        &quot;guestDescription&quot;: &quot;A String&quot;, # The VM&#x27;s OS. See for example https://vdc-repo.vmware.com/vmwb-repository/dcr-public/da47f910-60ac-438b-8b9b-6122f4d14524/16b7274a-bf8b-4b4c-a05e-746f2aa93c8c/doc/vim.vm.GuestOsDescriptor.GuestOsIdentifier.html for types of strings this might hold.
        &quot;memoryMb&quot;: 42, # The size of the memory of the VM in MB.
        &quot;powerState&quot;: &quot;A String&quot;, # The power state of the VM at the moment list was taken.
        &quot;uuid&quot;: &quot;A String&quot;, # The unique identifier of the VM in vCenter.
        &quot;vmId&quot;: &quot;A String&quot;, # The VM&#x27;s id in the source (note that this is not the MigratingVm&#x27;s id). This is the moref id of the VM.
      },
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, filter=None, orderBy=None, pageSize=None, pageToken=None, view=None, x__xgafv=None)</code>
  <pre>Lists Utilization Reports of the given Source.

Args:
  parent: string, Required. The Utilization Reports parent. (required)
  filter: string, Optional. The filter request.
  orderBy: string, Optional. the order by fields for the result.
  pageSize: integer, Optional. The maximum number of reports to return. The service may return fewer than this value. If unspecified, at most 500 reports will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.
  pageToken: string, Required. A page token, received from a previous `ListUtilizationReports` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListUtilizationReports` must match the call that provided the page token.
  view: string, Optional. The level of details of each report. Defaults to BASIC.
    Allowed values
      UTILIZATION_REPORT_VIEW_UNSPECIFIED - The default / unset value. The API will default to FULL on single report request and BASIC for multiple reports request.
      BASIC - Get the report metadata, without the list of VMs and their utilization info.
      FULL - Include everything.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message for &#x27;ListUtilizationReports&#x27; request.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # Output only. A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.
  &quot;unreachable&quot;: [ # Output only. Locations that could not be reached.
    &quot;A String&quot;,
  ],
  &quot;utilizationReports&quot;: [ # Output only. The list of reports.
    { # Utilization report details the utilization (CPU, memory, etc.) of selected source VMs.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time the report was created (this refers to the time of the request, not the time the report creation completed).
      &quot;displayName&quot;: &quot;A String&quot;, # The report display name, as assigned by the user.
      &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # Output only. Provides details on the state of the report in case of an error.
        &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
        &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
          {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
        ],
        &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
      },
      &quot;frameEndTime&quot;: &quot;A String&quot;, # Output only. The point in time when the time frame ends. Notice that the time frame is counted backwards. For instance if the &quot;frame_end_time&quot; value is 2021/01/20 and the time frame is WEEK then the report covers the week between 2021/01/20 and 2021/01/14.
      &quot;name&quot;: &quot;A String&quot;, # Output only. The report unique name.
      &quot;state&quot;: &quot;A String&quot;, # Output only. Current state of the report.
      &quot;stateTime&quot;: &quot;A String&quot;, # Output only. The time the state was last set.
      &quot;timeFrame&quot;: &quot;A String&quot;, # Time frame of the report.
      &quot;vmCount&quot;: 42, # Output only. Total number of VMs included in the report.
      &quot;vms&quot;: [ # List of utilization information per VM. When sent as part of the request, the &quot;vm_id&quot; field is used in order to specify which VMs to include in the report. In that case all other fields are ignored.
        { # Utilization information of a single VM.
          &quot;utilization&quot;: { # Utilization metrics values for a single VM. # Utilization metrics for this VM.
            &quot;cpuAveragePercent&quot;: 42, # Average CPU usage, percent.
            &quot;cpuMaxPercent&quot;: 42, # Max CPU usage, percent.
            &quot;diskIoRateAverageKbps&quot;: &quot;A String&quot;, # Average disk IO rate, in kilobytes per second.
            &quot;diskIoRateMaxKbps&quot;: &quot;A String&quot;, # Max disk IO rate, in kilobytes per second.
            &quot;memoryAveragePercent&quot;: 42, # Average memory usage, percent.
            &quot;memoryMaxPercent&quot;: 42, # Max memory usage, percent.
            &quot;networkThroughputAverageKbps&quot;: &quot;A String&quot;, # Average network throughput (combined transmit-rates and receive-rates), in kilobytes per second.
            &quot;networkThroughputMaxKbps&quot;: &quot;A String&quot;, # Max network throughput (combined transmit-rates and receive-rates), in kilobytes per second.
          },
          &quot;vmId&quot;: &quot;A String&quot;, # The VM&#x27;s ID in the source.
          &quot;vmwareVmDetails&quot;: { # VmwareVmDetails describes a VM in vCenter. # The description of the VM in a Source of type Vmware.
            &quot;bootOption&quot;: &quot;A String&quot;, # Output only. The VM Boot Option.
            &quot;committedStorageMb&quot;: &quot;A String&quot;, # The total size of the storage allocated to the VM in MB.
            &quot;cpuCount&quot;: 42, # The number of cpus in the VM.
            &quot;datacenterDescription&quot;: &quot;A String&quot;, # The descriptive name of the vCenter&#x27;s datacenter this VM is contained in.
            &quot;datacenterId&quot;: &quot;A String&quot;, # The id of the vCenter&#x27;s datacenter this VM is contained in.
            &quot;diskCount&quot;: 42, # The number of disks the VM has.
            &quot;displayName&quot;: &quot;A String&quot;, # The display name of the VM. Note that this is not necessarily unique.
            &quot;guestDescription&quot;: &quot;A String&quot;, # The VM&#x27;s OS. See for example https://vdc-repo.vmware.com/vmwb-repository/dcr-public/da47f910-60ac-438b-8b9b-6122f4d14524/16b7274a-bf8b-4b4c-a05e-746f2aa93c8c/doc/vim.vm.GuestOsDescriptor.GuestOsIdentifier.html for types of strings this might hold.
            &quot;memoryMb&quot;: 42, # The size of the memory of the VM in MB.
            &quot;powerState&quot;: &quot;A String&quot;, # The power state of the VM at the moment list was taken.
            &quot;uuid&quot;: &quot;A String&quot;, # The unique identifier of the VM in vCenter.
            &quot;vmId&quot;: &quot;A String&quot;, # The VM&#x27;s id in the source (note that this is not the MigratingVm&#x27;s id). This is the moref id of the VM.
          },
        },
      ],
    },
  ],
}</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>