<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_v1alpha1.html">VM Migration API</a> . <a href="vmmigration_v1alpha1.projects.html">projects</a> . <a href="vmmigration_v1alpha1.projects.locations.html">locations</a> . <a href="vmmigration_v1alpha1.projects.locations.sources.html">sources</a> . <a href="vmmigration_v1alpha1.projects.locations.sources.migratingVms.html">migratingVms</a> . <a href="vmmigration_v1alpha1.projects.locations.sources.migratingVms.cutoverJobs.html">cutoverJobs</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#cancel">cancel(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Initiates the cancellation of a running cutover job.</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="#create">create(parent, body=None, cutoverJobId=None, requestId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Initiates a Cutover of a specific migrating VM. The returned LRO is completed when the cutover job resource is created and the job is initiated.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets details of a single CutoverJob.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, filter=None, orderBy=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists CutoverJobs of a given migrating VM.</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="cancel">cancel(name, body=None, x__xgafv=None)</code>
  <pre>Initiates the cancellation of a running cutover job.

Args:
  name: string, Required. The cutover job id (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for &#x27;CancelCutoverJob&#x27; request.
}

  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="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="create">create(parent, body=None, cutoverJobId=None, requestId=None, x__xgafv=None)</code>
  <pre>Initiates a Cutover of a specific migrating VM. The returned LRO is completed when the cutover job resource is created and the job is initiated.

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

{ # CutoverJob message describes a cutover of a migrating VM. The CutoverJob is the operation of shutting down the VM, creating a snapshot and clonning the VM using the replicated snapshot.
  &quot;computeEngineTargetDetails&quot;: { # ComputeEngineTargetDetails is a collection of details for creating a VM in a target Compute Engine project. # Output only. Details of the target VM in Compute Engine.
    &quot;additionalLicenses&quot;: [ # Additional licenses to assign to the VM.
      &quot;A String&quot;,
    ],
    &quot;appliedLicense&quot;: { # AppliedLicense holds the license data returned by adaptation module report. # The OS license returned from the adaptation module report.
      &quot;osLicense&quot;: &quot;A String&quot;, # The OS license returned from the adaptation module&#x27;s report.
      &quot;type&quot;: &quot;A String&quot;, # The license type that was used in OS adaptation.
    },
    &quot;bootOption&quot;: &quot;A String&quot;, # The VM Boot Option, as set in the source vm.
    &quot;computeScheduling&quot;: { # Scheduling information for VM on maintenance/restart behaviour and node allocation in sole tenant nodes. # Compute instance scheduling information (if empty default is used).
      &quot;automaticRestart&quot;: True or False,
      &quot;minNodeCpus&quot;: 42, # The minimum number of virtual CPUs this instance will consume when running on a sole-tenant node. Ignored if no node_affinites are configured.
      &quot;nodeAffinities&quot;: [ # A set of node affinity and anti-affinity configurations for sole tenant nodes.
        { # Node Affinity: the configuration of desired nodes onto which this Instance could be scheduled. Based on https://cloud.google.com/compute/docs/reference/rest/v1/instances/setScheduling
          &quot;key&quot;: &quot;A String&quot;, # The label key of Node resource to reference.
          &quot;operator&quot;: &quot;A String&quot;, # The operator to use for the node resources specified in the `values` parameter.
          &quot;values&quot;: [ # Corresponds to the label values of Node resource.
            &quot;A String&quot;,
          ],
        },
      ],
      &quot;onHostMaintenance&quot;: &quot;A String&quot;, # How the instance should behave when the host machine undergoes maintenance that may temporarily impact instance performance.
      &quot;restartType&quot;: &quot;A String&quot;, # Whether the Instance should be automatically restarted whenever it is terminated by Compute Engine (not terminated by user). This configuration is identical to `automaticRestart` field in Compute Engine create instance under scheduling. It was changed to an enum (instead of a boolean) to match the default value in Compute Engine which is automatic restart.
    },
    &quot;diskType&quot;: &quot;A String&quot;, # The disk type to use in the VM.
    &quot;labels&quot;: { # A map of labels to associate with the VM.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;licenseType&quot;: &quot;A String&quot;, # The license type to use in OS adaptation.
    &quot;machineType&quot;: &quot;A String&quot;, # The machine type to create the VM with.
    &quot;machineTypeSeries&quot;: &quot;A String&quot;, # The machine type series to create the VM with.
    &quot;metadata&quot;: { # The metadata key/value pairs to assign to the VM.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;networkInterfaces&quot;: [ # List of NICs connected to this VM.
      { # NetworkInterface represents a NIC of a VM.
        &quot;externalIp&quot;: &quot;A String&quot;, # The external IP to define in the NIC.
        &quot;internalIp&quot;: &quot;A String&quot;, # The internal IP to define in the NIC. The formats accepted are: `ephemeral` \ ipv4 address \ a named address resource full path.
        &quot;network&quot;: &quot;A String&quot;, # The network to connect the NIC to.
        &quot;subnetwork&quot;: &quot;A String&quot;, # The subnetwork to connect the NIC to.
      },
    ],
    &quot;networkTags&quot;: [ # A map of network tags to associate with the VM.
      &quot;A String&quot;,
    ],
    &quot;project&quot;: &quot;A String&quot;, # The GCP target project ID or project name.
    &quot;secureBoot&quot;: True or False, # Defines whether the instance has Secure Boot enabled. This can be set to true only if the vm boot option is EFI.
    &quot;serviceAccount&quot;: &quot;A String&quot;, # The service account to associate the VM with.
    &quot;vmName&quot;: &quot;A String&quot;, # The name of the VM to create.
    &quot;zone&quot;: &quot;A String&quot;, # The zone in which to create the VM.
  },
  &quot;computeEngineVmDetails&quot;: { # TargetVMDetails is a collection of details for creating a VM in a target Compute Engine project. # Output only. Details of the VM in Compute Engine. Deprecated: Use compute_engine_target_details instead.
    &quot;appliedLicense&quot;: { # AppliedLicense holds the license data returned by adaptation module report. # Output only. The OS license returned from the adaptation module report.
      &quot;osLicense&quot;: &quot;A String&quot;, # The OS license returned from the adaptation module&#x27;s report.
      &quot;type&quot;: &quot;A String&quot;, # The license type that was used in OS adaptation.
    },
    &quot;bootOption&quot;: &quot;A String&quot;, # Output only. The VM Boot Option, as set in the source vm.
    &quot;computeScheduling&quot;: { # Scheduling information for VM on maintenance/restart behaviour and node allocation in sole tenant nodes. # Compute instance scheduling information (if empty default is used).
      &quot;automaticRestart&quot;: True or False,
      &quot;minNodeCpus&quot;: 42, # The minimum number of virtual CPUs this instance will consume when running on a sole-tenant node. Ignored if no node_affinites are configured.
      &quot;nodeAffinities&quot;: [ # A set of node affinity and anti-affinity configurations for sole tenant nodes.
        { # Node Affinity: the configuration of desired nodes onto which this Instance could be scheduled. Based on https://cloud.google.com/compute/docs/reference/rest/v1/instances/setScheduling
          &quot;key&quot;: &quot;A String&quot;, # The label key of Node resource to reference.
          &quot;operator&quot;: &quot;A String&quot;, # The operator to use for the node resources specified in the `values` parameter.
          &quot;values&quot;: [ # Corresponds to the label values of Node resource.
            &quot;A String&quot;,
          ],
        },
      ],
      &quot;onHostMaintenance&quot;: &quot;A String&quot;, # How the instance should behave when the host machine undergoes maintenance that may temporarily impact instance performance.
      &quot;restartType&quot;: &quot;A String&quot;, # Whether the Instance should be automatically restarted whenever it is terminated by Compute Engine (not terminated by user). This configuration is identical to `automaticRestart` field in Compute Engine create instance under scheduling. It was changed to an enum (instead of a boolean) to match the default value in Compute Engine which is automatic restart.
    },
    &quot;diskType&quot;: &quot;A String&quot;, # The disk type to use in the VM.
    &quot;externalIp&quot;: &quot;A String&quot;, # The external IP to define in the VM.
    &quot;internalIp&quot;: &quot;A String&quot;, # The internal IP to define in the VM. The formats accepted are: `ephemeral` \ ipv4 address \ a named address resource full path.
    &quot;labels&quot;: { # A map of labels to associate with the VM.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;licenseType&quot;: &quot;A String&quot;, # The license type to use in OS adaptation.
    &quot;machineType&quot;: &quot;A String&quot;, # The machine type to create the VM with.
    &quot;machineTypeSeries&quot;: &quot;A String&quot;, # The machine type series to create the VM with.
    &quot;metadata&quot;: { # The metadata key/value pairs to assign to the VM.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;name&quot;: &quot;A String&quot;, # The name of the VM to create.
    &quot;network&quot;: &quot;A String&quot;, # The network to connect the VM to.
    &quot;networkInterfaces&quot;: [ # List of NICs connected to this VM.
      { # NetworkInterface represents a NIC of a VM.
        &quot;externalIp&quot;: &quot;A String&quot;, # The external IP to define in the NIC.
        &quot;internalIp&quot;: &quot;A String&quot;, # The internal IP to define in the NIC. The formats accepted are: `ephemeral` \ ipv4 address \ a named address resource full path.
        &quot;network&quot;: &quot;A String&quot;, # The network to connect the NIC to.
        &quot;subnetwork&quot;: &quot;A String&quot;, # The subnetwork to connect the NIC to.
      },
    ],
    &quot;networkTags&quot;: [ # A map of network tags to associate with the VM.
      &quot;A String&quot;,
    ],
    &quot;project&quot;: &quot;A String&quot;, # Output only. The project in which to create the VM.
    &quot;secureBoot&quot;: True or False, # Defines whether the instance has Secure Boot enabled. This can be set to true only if the vm boot option is EFI.
    &quot;serviceAccount&quot;: &quot;A String&quot;, # The service account to associate the VM with.
    &quot;subnetwork&quot;: &quot;A String&quot;, # The subnetwork to connect the VM to.
    &quot;targetProject&quot;: &quot;A String&quot;, # The full path of the resource of type TargetProject which represents the Compute Engine project in which to create this VM.
    &quot;zone&quot;: &quot;A String&quot;, # The zone in which to create the VM.
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time the cutover job was created (as an API call, not when it was actually created in the target).
  &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 for the errors that led to the Cutover Job&#x27;s state.
    &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;name&quot;: &quot;A String&quot;, # Output only. The name of the cutover job.
  &quot;progress&quot;: 42, # Output only. The current progress in percentage of the cutover job.
  &quot;progressPercent&quot;: 42, # Output only. The current progress in percentage of the cutover job.
  &quot;state&quot;: &quot;A String&quot;, # Output only. State of the cutover job.
  &quot;stateMessage&quot;: &quot;A String&quot;, # Output only. A message providing possible extra details about the current state.
  &quot;stateTime&quot;: &quot;A String&quot;, # Output only. The time the state was last updated.
  &quot;targetDetails&quot;: { # TargetVMDetails is a collection of details for creating a VM in a target Compute Engine project. # Output only. Details of the VM to create as the target of this cutover job. Deprecated: Use compute_engine_target_details instead.
    &quot;appliedLicense&quot;: { # AppliedLicense holds the license data returned by adaptation module report. # Output only. The OS license returned from the adaptation module report.
      &quot;osLicense&quot;: &quot;A String&quot;, # The OS license returned from the adaptation module&#x27;s report.
      &quot;type&quot;: &quot;A String&quot;, # The license type that was used in OS adaptation.
    },
    &quot;bootOption&quot;: &quot;A String&quot;, # Output only. The VM Boot Option, as set in the source vm.
    &quot;computeScheduling&quot;: { # Scheduling information for VM on maintenance/restart behaviour and node allocation in sole tenant nodes. # Compute instance scheduling information (if empty default is used).
      &quot;automaticRestart&quot;: True or False,
      &quot;minNodeCpus&quot;: 42, # The minimum number of virtual CPUs this instance will consume when running on a sole-tenant node. Ignored if no node_affinites are configured.
      &quot;nodeAffinities&quot;: [ # A set of node affinity and anti-affinity configurations for sole tenant nodes.
        { # Node Affinity: the configuration of desired nodes onto which this Instance could be scheduled. Based on https://cloud.google.com/compute/docs/reference/rest/v1/instances/setScheduling
          &quot;key&quot;: &quot;A String&quot;, # The label key of Node resource to reference.
          &quot;operator&quot;: &quot;A String&quot;, # The operator to use for the node resources specified in the `values` parameter.
          &quot;values&quot;: [ # Corresponds to the label values of Node resource.
            &quot;A String&quot;,
          ],
        },
      ],
      &quot;onHostMaintenance&quot;: &quot;A String&quot;, # How the instance should behave when the host machine undergoes maintenance that may temporarily impact instance performance.
      &quot;restartType&quot;: &quot;A String&quot;, # Whether the Instance should be automatically restarted whenever it is terminated by Compute Engine (not terminated by user). This configuration is identical to `automaticRestart` field in Compute Engine create instance under scheduling. It was changed to an enum (instead of a boolean) to match the default value in Compute Engine which is automatic restart.
    },
    &quot;diskType&quot;: &quot;A String&quot;, # The disk type to use in the VM.
    &quot;externalIp&quot;: &quot;A String&quot;, # The external IP to define in the VM.
    &quot;internalIp&quot;: &quot;A String&quot;, # The internal IP to define in the VM. The formats accepted are: `ephemeral` \ ipv4 address \ a named address resource full path.
    &quot;labels&quot;: { # A map of labels to associate with the VM.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;licenseType&quot;: &quot;A String&quot;, # The license type to use in OS adaptation.
    &quot;machineType&quot;: &quot;A String&quot;, # The machine type to create the VM with.
    &quot;machineTypeSeries&quot;: &quot;A String&quot;, # The machine type series to create the VM with.
    &quot;metadata&quot;: { # The metadata key/value pairs to assign to the VM.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;name&quot;: &quot;A String&quot;, # The name of the VM to create.
    &quot;network&quot;: &quot;A String&quot;, # The network to connect the VM to.
    &quot;networkInterfaces&quot;: [ # List of NICs connected to this VM.
      { # NetworkInterface represents a NIC of a VM.
        &quot;externalIp&quot;: &quot;A String&quot;, # The external IP to define in the NIC.
        &quot;internalIp&quot;: &quot;A String&quot;, # The internal IP to define in the NIC. The formats accepted are: `ephemeral` \ ipv4 address \ a named address resource full path.
        &quot;network&quot;: &quot;A String&quot;, # The network to connect the NIC to.
        &quot;subnetwork&quot;: &quot;A String&quot;, # The subnetwork to connect the NIC to.
      },
    ],
    &quot;networkTags&quot;: [ # A map of network tags to associate with the VM.
      &quot;A String&quot;,
    ],
    &quot;project&quot;: &quot;A String&quot;, # Output only. The project in which to create the VM.
    &quot;secureBoot&quot;: True or False, # Defines whether the instance has Secure Boot enabled. This can be set to true only if the vm boot option is EFI.
    &quot;serviceAccount&quot;: &quot;A String&quot;, # The service account to associate the VM with.
    &quot;subnetwork&quot;: &quot;A String&quot;, # The subnetwork to connect the VM to.
    &quot;targetProject&quot;: &quot;A String&quot;, # The full path of the resource of type TargetProject which represents the Compute Engine project in which to create this VM.
    &quot;zone&quot;: &quot;A String&quot;, # The zone in which to create the VM.
  },
}

  cutoverJobId: string, Required. The cutover job identifier.
  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).
  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, x__xgafv=None)</code>
  <pre>Gets details of a single CutoverJob.

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

Returns:
  An object of the form:

    { # CutoverJob message describes a cutover of a migrating VM. The CutoverJob is the operation of shutting down the VM, creating a snapshot and clonning the VM using the replicated snapshot.
  &quot;computeEngineTargetDetails&quot;: { # ComputeEngineTargetDetails is a collection of details for creating a VM in a target Compute Engine project. # Output only. Details of the target VM in Compute Engine.
    &quot;additionalLicenses&quot;: [ # Additional licenses to assign to the VM.
      &quot;A String&quot;,
    ],
    &quot;appliedLicense&quot;: { # AppliedLicense holds the license data returned by adaptation module report. # The OS license returned from the adaptation module report.
      &quot;osLicense&quot;: &quot;A String&quot;, # The OS license returned from the adaptation module&#x27;s report.
      &quot;type&quot;: &quot;A String&quot;, # The license type that was used in OS adaptation.
    },
    &quot;bootOption&quot;: &quot;A String&quot;, # The VM Boot Option, as set in the source vm.
    &quot;computeScheduling&quot;: { # Scheduling information for VM on maintenance/restart behaviour and node allocation in sole tenant nodes. # Compute instance scheduling information (if empty default is used).
      &quot;automaticRestart&quot;: True or False,
      &quot;minNodeCpus&quot;: 42, # The minimum number of virtual CPUs this instance will consume when running on a sole-tenant node. Ignored if no node_affinites are configured.
      &quot;nodeAffinities&quot;: [ # A set of node affinity and anti-affinity configurations for sole tenant nodes.
        { # Node Affinity: the configuration of desired nodes onto which this Instance could be scheduled. Based on https://cloud.google.com/compute/docs/reference/rest/v1/instances/setScheduling
          &quot;key&quot;: &quot;A String&quot;, # The label key of Node resource to reference.
          &quot;operator&quot;: &quot;A String&quot;, # The operator to use for the node resources specified in the `values` parameter.
          &quot;values&quot;: [ # Corresponds to the label values of Node resource.
            &quot;A String&quot;,
          ],
        },
      ],
      &quot;onHostMaintenance&quot;: &quot;A String&quot;, # How the instance should behave when the host machine undergoes maintenance that may temporarily impact instance performance.
      &quot;restartType&quot;: &quot;A String&quot;, # Whether the Instance should be automatically restarted whenever it is terminated by Compute Engine (not terminated by user). This configuration is identical to `automaticRestart` field in Compute Engine create instance under scheduling. It was changed to an enum (instead of a boolean) to match the default value in Compute Engine which is automatic restart.
    },
    &quot;diskType&quot;: &quot;A String&quot;, # The disk type to use in the VM.
    &quot;labels&quot;: { # A map of labels to associate with the VM.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;licenseType&quot;: &quot;A String&quot;, # The license type to use in OS adaptation.
    &quot;machineType&quot;: &quot;A String&quot;, # The machine type to create the VM with.
    &quot;machineTypeSeries&quot;: &quot;A String&quot;, # The machine type series to create the VM with.
    &quot;metadata&quot;: { # The metadata key/value pairs to assign to the VM.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;networkInterfaces&quot;: [ # List of NICs connected to this VM.
      { # NetworkInterface represents a NIC of a VM.
        &quot;externalIp&quot;: &quot;A String&quot;, # The external IP to define in the NIC.
        &quot;internalIp&quot;: &quot;A String&quot;, # The internal IP to define in the NIC. The formats accepted are: `ephemeral` \ ipv4 address \ a named address resource full path.
        &quot;network&quot;: &quot;A String&quot;, # The network to connect the NIC to.
        &quot;subnetwork&quot;: &quot;A String&quot;, # The subnetwork to connect the NIC to.
      },
    ],
    &quot;networkTags&quot;: [ # A map of network tags to associate with the VM.
      &quot;A String&quot;,
    ],
    &quot;project&quot;: &quot;A String&quot;, # The GCP target project ID or project name.
    &quot;secureBoot&quot;: True or False, # Defines whether the instance has Secure Boot enabled. This can be set to true only if the vm boot option is EFI.
    &quot;serviceAccount&quot;: &quot;A String&quot;, # The service account to associate the VM with.
    &quot;vmName&quot;: &quot;A String&quot;, # The name of the VM to create.
    &quot;zone&quot;: &quot;A String&quot;, # The zone in which to create the VM.
  },
  &quot;computeEngineVmDetails&quot;: { # TargetVMDetails is a collection of details for creating a VM in a target Compute Engine project. # Output only. Details of the VM in Compute Engine. Deprecated: Use compute_engine_target_details instead.
    &quot;appliedLicense&quot;: { # AppliedLicense holds the license data returned by adaptation module report. # Output only. The OS license returned from the adaptation module report.
      &quot;osLicense&quot;: &quot;A String&quot;, # The OS license returned from the adaptation module&#x27;s report.
      &quot;type&quot;: &quot;A String&quot;, # The license type that was used in OS adaptation.
    },
    &quot;bootOption&quot;: &quot;A String&quot;, # Output only. The VM Boot Option, as set in the source vm.
    &quot;computeScheduling&quot;: { # Scheduling information for VM on maintenance/restart behaviour and node allocation in sole tenant nodes. # Compute instance scheduling information (if empty default is used).
      &quot;automaticRestart&quot;: True or False,
      &quot;minNodeCpus&quot;: 42, # The minimum number of virtual CPUs this instance will consume when running on a sole-tenant node. Ignored if no node_affinites are configured.
      &quot;nodeAffinities&quot;: [ # A set of node affinity and anti-affinity configurations for sole tenant nodes.
        { # Node Affinity: the configuration of desired nodes onto which this Instance could be scheduled. Based on https://cloud.google.com/compute/docs/reference/rest/v1/instances/setScheduling
          &quot;key&quot;: &quot;A String&quot;, # The label key of Node resource to reference.
          &quot;operator&quot;: &quot;A String&quot;, # The operator to use for the node resources specified in the `values` parameter.
          &quot;values&quot;: [ # Corresponds to the label values of Node resource.
            &quot;A String&quot;,
          ],
        },
      ],
      &quot;onHostMaintenance&quot;: &quot;A String&quot;, # How the instance should behave when the host machine undergoes maintenance that may temporarily impact instance performance.
      &quot;restartType&quot;: &quot;A String&quot;, # Whether the Instance should be automatically restarted whenever it is terminated by Compute Engine (not terminated by user). This configuration is identical to `automaticRestart` field in Compute Engine create instance under scheduling. It was changed to an enum (instead of a boolean) to match the default value in Compute Engine which is automatic restart.
    },
    &quot;diskType&quot;: &quot;A String&quot;, # The disk type to use in the VM.
    &quot;externalIp&quot;: &quot;A String&quot;, # The external IP to define in the VM.
    &quot;internalIp&quot;: &quot;A String&quot;, # The internal IP to define in the VM. The formats accepted are: `ephemeral` \ ipv4 address \ a named address resource full path.
    &quot;labels&quot;: { # A map of labels to associate with the VM.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;licenseType&quot;: &quot;A String&quot;, # The license type to use in OS adaptation.
    &quot;machineType&quot;: &quot;A String&quot;, # The machine type to create the VM with.
    &quot;machineTypeSeries&quot;: &quot;A String&quot;, # The machine type series to create the VM with.
    &quot;metadata&quot;: { # The metadata key/value pairs to assign to the VM.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;name&quot;: &quot;A String&quot;, # The name of the VM to create.
    &quot;network&quot;: &quot;A String&quot;, # The network to connect the VM to.
    &quot;networkInterfaces&quot;: [ # List of NICs connected to this VM.
      { # NetworkInterface represents a NIC of a VM.
        &quot;externalIp&quot;: &quot;A String&quot;, # The external IP to define in the NIC.
        &quot;internalIp&quot;: &quot;A String&quot;, # The internal IP to define in the NIC. The formats accepted are: `ephemeral` \ ipv4 address \ a named address resource full path.
        &quot;network&quot;: &quot;A String&quot;, # The network to connect the NIC to.
        &quot;subnetwork&quot;: &quot;A String&quot;, # The subnetwork to connect the NIC to.
      },
    ],
    &quot;networkTags&quot;: [ # A map of network tags to associate with the VM.
      &quot;A String&quot;,
    ],
    &quot;project&quot;: &quot;A String&quot;, # Output only. The project in which to create the VM.
    &quot;secureBoot&quot;: True or False, # Defines whether the instance has Secure Boot enabled. This can be set to true only if the vm boot option is EFI.
    &quot;serviceAccount&quot;: &quot;A String&quot;, # The service account to associate the VM with.
    &quot;subnetwork&quot;: &quot;A String&quot;, # The subnetwork to connect the VM to.
    &quot;targetProject&quot;: &quot;A String&quot;, # The full path of the resource of type TargetProject which represents the Compute Engine project in which to create this VM.
    &quot;zone&quot;: &quot;A String&quot;, # The zone in which to create the VM.
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time the cutover job was created (as an API call, not when it was actually created in the target).
  &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 for the errors that led to the Cutover Job&#x27;s state.
    &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;name&quot;: &quot;A String&quot;, # Output only. The name of the cutover job.
  &quot;progress&quot;: 42, # Output only. The current progress in percentage of the cutover job.
  &quot;progressPercent&quot;: 42, # Output only. The current progress in percentage of the cutover job.
  &quot;state&quot;: &quot;A String&quot;, # Output only. State of the cutover job.
  &quot;stateMessage&quot;: &quot;A String&quot;, # Output only. A message providing possible extra details about the current state.
  &quot;stateTime&quot;: &quot;A String&quot;, # Output only. The time the state was last updated.
  &quot;targetDetails&quot;: { # TargetVMDetails is a collection of details for creating a VM in a target Compute Engine project. # Output only. Details of the VM to create as the target of this cutover job. Deprecated: Use compute_engine_target_details instead.
    &quot;appliedLicense&quot;: { # AppliedLicense holds the license data returned by adaptation module report. # Output only. The OS license returned from the adaptation module report.
      &quot;osLicense&quot;: &quot;A String&quot;, # The OS license returned from the adaptation module&#x27;s report.
      &quot;type&quot;: &quot;A String&quot;, # The license type that was used in OS adaptation.
    },
    &quot;bootOption&quot;: &quot;A String&quot;, # Output only. The VM Boot Option, as set in the source vm.
    &quot;computeScheduling&quot;: { # Scheduling information for VM on maintenance/restart behaviour and node allocation in sole tenant nodes. # Compute instance scheduling information (if empty default is used).
      &quot;automaticRestart&quot;: True or False,
      &quot;minNodeCpus&quot;: 42, # The minimum number of virtual CPUs this instance will consume when running on a sole-tenant node. Ignored if no node_affinites are configured.
      &quot;nodeAffinities&quot;: [ # A set of node affinity and anti-affinity configurations for sole tenant nodes.
        { # Node Affinity: the configuration of desired nodes onto which this Instance could be scheduled. Based on https://cloud.google.com/compute/docs/reference/rest/v1/instances/setScheduling
          &quot;key&quot;: &quot;A String&quot;, # The label key of Node resource to reference.
          &quot;operator&quot;: &quot;A String&quot;, # The operator to use for the node resources specified in the `values` parameter.
          &quot;values&quot;: [ # Corresponds to the label values of Node resource.
            &quot;A String&quot;,
          ],
        },
      ],
      &quot;onHostMaintenance&quot;: &quot;A String&quot;, # How the instance should behave when the host machine undergoes maintenance that may temporarily impact instance performance.
      &quot;restartType&quot;: &quot;A String&quot;, # Whether the Instance should be automatically restarted whenever it is terminated by Compute Engine (not terminated by user). This configuration is identical to `automaticRestart` field in Compute Engine create instance under scheduling. It was changed to an enum (instead of a boolean) to match the default value in Compute Engine which is automatic restart.
    },
    &quot;diskType&quot;: &quot;A String&quot;, # The disk type to use in the VM.
    &quot;externalIp&quot;: &quot;A String&quot;, # The external IP to define in the VM.
    &quot;internalIp&quot;: &quot;A String&quot;, # The internal IP to define in the VM. The formats accepted are: `ephemeral` \ ipv4 address \ a named address resource full path.
    &quot;labels&quot;: { # A map of labels to associate with the VM.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;licenseType&quot;: &quot;A String&quot;, # The license type to use in OS adaptation.
    &quot;machineType&quot;: &quot;A String&quot;, # The machine type to create the VM with.
    &quot;machineTypeSeries&quot;: &quot;A String&quot;, # The machine type series to create the VM with.
    &quot;metadata&quot;: { # The metadata key/value pairs to assign to the VM.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;name&quot;: &quot;A String&quot;, # The name of the VM to create.
    &quot;network&quot;: &quot;A String&quot;, # The network to connect the VM to.
    &quot;networkInterfaces&quot;: [ # List of NICs connected to this VM.
      { # NetworkInterface represents a NIC of a VM.
        &quot;externalIp&quot;: &quot;A String&quot;, # The external IP to define in the NIC.
        &quot;internalIp&quot;: &quot;A String&quot;, # The internal IP to define in the NIC. The formats accepted are: `ephemeral` \ ipv4 address \ a named address resource full path.
        &quot;network&quot;: &quot;A String&quot;, # The network to connect the NIC to.
        &quot;subnetwork&quot;: &quot;A String&quot;, # The subnetwork to connect the NIC to.
      },
    ],
    &quot;networkTags&quot;: [ # A map of network tags to associate with the VM.
      &quot;A String&quot;,
    ],
    &quot;project&quot;: &quot;A String&quot;, # Output only. The project in which to create the VM.
    &quot;secureBoot&quot;: True or False, # Defines whether the instance has Secure Boot enabled. This can be set to true only if the vm boot option is EFI.
    &quot;serviceAccount&quot;: &quot;A String&quot;, # The service account to associate the VM with.
    &quot;subnetwork&quot;: &quot;A String&quot;, # The subnetwork to connect the VM to.
    &quot;targetProject&quot;: &quot;A String&quot;, # The full path of the resource of type TargetProject which represents the Compute Engine project in which to create this VM.
    &quot;zone&quot;: &quot;A String&quot;, # The zone in which to create the VM.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, filter=None, orderBy=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists CutoverJobs of a given migrating VM.

Args:
  parent: string, Required. The parent, which owns this collection of migrating VMs. (required)
  filter: string, Optional. The filter request.
  orderBy: string, Optional. the order by fields for the result.
  pageSize: integer, Optional. The maximum number of cutover jobs to return. The service may return fewer than this value. If unspecified, at most 500 cutover jobs 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 `ListCutoverJobs` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListCutoverJobs` must match the call that provided the page token.
  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;ListCutoverJobs&#x27; request.
  &quot;cutoverJobs&quot;: [ # Output only. The list of cutover jobs response.
    { # CutoverJob message describes a cutover of a migrating VM. The CutoverJob is the operation of shutting down the VM, creating a snapshot and clonning the VM using the replicated snapshot.
      &quot;computeEngineTargetDetails&quot;: { # ComputeEngineTargetDetails is a collection of details for creating a VM in a target Compute Engine project. # Output only. Details of the target VM in Compute Engine.
        &quot;additionalLicenses&quot;: [ # Additional licenses to assign to the VM.
          &quot;A String&quot;,
        ],
        &quot;appliedLicense&quot;: { # AppliedLicense holds the license data returned by adaptation module report. # The OS license returned from the adaptation module report.
          &quot;osLicense&quot;: &quot;A String&quot;, # The OS license returned from the adaptation module&#x27;s report.
          &quot;type&quot;: &quot;A String&quot;, # The license type that was used in OS adaptation.
        },
        &quot;bootOption&quot;: &quot;A String&quot;, # The VM Boot Option, as set in the source vm.
        &quot;computeScheduling&quot;: { # Scheduling information for VM on maintenance/restart behaviour and node allocation in sole tenant nodes. # Compute instance scheduling information (if empty default is used).
          &quot;automaticRestart&quot;: True or False,
          &quot;minNodeCpus&quot;: 42, # The minimum number of virtual CPUs this instance will consume when running on a sole-tenant node. Ignored if no node_affinites are configured.
          &quot;nodeAffinities&quot;: [ # A set of node affinity and anti-affinity configurations for sole tenant nodes.
            { # Node Affinity: the configuration of desired nodes onto which this Instance could be scheduled. Based on https://cloud.google.com/compute/docs/reference/rest/v1/instances/setScheduling
              &quot;key&quot;: &quot;A String&quot;, # The label key of Node resource to reference.
              &quot;operator&quot;: &quot;A String&quot;, # The operator to use for the node resources specified in the `values` parameter.
              &quot;values&quot;: [ # Corresponds to the label values of Node resource.
                &quot;A String&quot;,
              ],
            },
          ],
          &quot;onHostMaintenance&quot;: &quot;A String&quot;, # How the instance should behave when the host machine undergoes maintenance that may temporarily impact instance performance.
          &quot;restartType&quot;: &quot;A String&quot;, # Whether the Instance should be automatically restarted whenever it is terminated by Compute Engine (not terminated by user). This configuration is identical to `automaticRestart` field in Compute Engine create instance under scheduling. It was changed to an enum (instead of a boolean) to match the default value in Compute Engine which is automatic restart.
        },
        &quot;diskType&quot;: &quot;A String&quot;, # The disk type to use in the VM.
        &quot;labels&quot;: { # A map of labels to associate with the VM.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;licenseType&quot;: &quot;A String&quot;, # The license type to use in OS adaptation.
        &quot;machineType&quot;: &quot;A String&quot;, # The machine type to create the VM with.
        &quot;machineTypeSeries&quot;: &quot;A String&quot;, # The machine type series to create the VM with.
        &quot;metadata&quot;: { # The metadata key/value pairs to assign to the VM.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;networkInterfaces&quot;: [ # List of NICs connected to this VM.
          { # NetworkInterface represents a NIC of a VM.
            &quot;externalIp&quot;: &quot;A String&quot;, # The external IP to define in the NIC.
            &quot;internalIp&quot;: &quot;A String&quot;, # The internal IP to define in the NIC. The formats accepted are: `ephemeral` \ ipv4 address \ a named address resource full path.
            &quot;network&quot;: &quot;A String&quot;, # The network to connect the NIC to.
            &quot;subnetwork&quot;: &quot;A String&quot;, # The subnetwork to connect the NIC to.
          },
        ],
        &quot;networkTags&quot;: [ # A map of network tags to associate with the VM.
          &quot;A String&quot;,
        ],
        &quot;project&quot;: &quot;A String&quot;, # The GCP target project ID or project name.
        &quot;secureBoot&quot;: True or False, # Defines whether the instance has Secure Boot enabled. This can be set to true only if the vm boot option is EFI.
        &quot;serviceAccount&quot;: &quot;A String&quot;, # The service account to associate the VM with.
        &quot;vmName&quot;: &quot;A String&quot;, # The name of the VM to create.
        &quot;zone&quot;: &quot;A String&quot;, # The zone in which to create the VM.
      },
      &quot;computeEngineVmDetails&quot;: { # TargetVMDetails is a collection of details for creating a VM in a target Compute Engine project. # Output only. Details of the VM in Compute Engine. Deprecated: Use compute_engine_target_details instead.
        &quot;appliedLicense&quot;: { # AppliedLicense holds the license data returned by adaptation module report. # Output only. The OS license returned from the adaptation module report.
          &quot;osLicense&quot;: &quot;A String&quot;, # The OS license returned from the adaptation module&#x27;s report.
          &quot;type&quot;: &quot;A String&quot;, # The license type that was used in OS adaptation.
        },
        &quot;bootOption&quot;: &quot;A String&quot;, # Output only. The VM Boot Option, as set in the source vm.
        &quot;computeScheduling&quot;: { # Scheduling information for VM on maintenance/restart behaviour and node allocation in sole tenant nodes. # Compute instance scheduling information (if empty default is used).
          &quot;automaticRestart&quot;: True or False,
          &quot;minNodeCpus&quot;: 42, # The minimum number of virtual CPUs this instance will consume when running on a sole-tenant node. Ignored if no node_affinites are configured.
          &quot;nodeAffinities&quot;: [ # A set of node affinity and anti-affinity configurations for sole tenant nodes.
            { # Node Affinity: the configuration of desired nodes onto which this Instance could be scheduled. Based on https://cloud.google.com/compute/docs/reference/rest/v1/instances/setScheduling
              &quot;key&quot;: &quot;A String&quot;, # The label key of Node resource to reference.
              &quot;operator&quot;: &quot;A String&quot;, # The operator to use for the node resources specified in the `values` parameter.
              &quot;values&quot;: [ # Corresponds to the label values of Node resource.
                &quot;A String&quot;,
              ],
            },
          ],
          &quot;onHostMaintenance&quot;: &quot;A String&quot;, # How the instance should behave when the host machine undergoes maintenance that may temporarily impact instance performance.
          &quot;restartType&quot;: &quot;A String&quot;, # Whether the Instance should be automatically restarted whenever it is terminated by Compute Engine (not terminated by user). This configuration is identical to `automaticRestart` field in Compute Engine create instance under scheduling. It was changed to an enum (instead of a boolean) to match the default value in Compute Engine which is automatic restart.
        },
        &quot;diskType&quot;: &quot;A String&quot;, # The disk type to use in the VM.
        &quot;externalIp&quot;: &quot;A String&quot;, # The external IP to define in the VM.
        &quot;internalIp&quot;: &quot;A String&quot;, # The internal IP to define in the VM. The formats accepted are: `ephemeral` \ ipv4 address \ a named address resource full path.
        &quot;labels&quot;: { # A map of labels to associate with the VM.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;licenseType&quot;: &quot;A String&quot;, # The license type to use in OS adaptation.
        &quot;machineType&quot;: &quot;A String&quot;, # The machine type to create the VM with.
        &quot;machineTypeSeries&quot;: &quot;A String&quot;, # The machine type series to create the VM with.
        &quot;metadata&quot;: { # The metadata key/value pairs to assign to the VM.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;name&quot;: &quot;A String&quot;, # The name of the VM to create.
        &quot;network&quot;: &quot;A String&quot;, # The network to connect the VM to.
        &quot;networkInterfaces&quot;: [ # List of NICs connected to this VM.
          { # NetworkInterface represents a NIC of a VM.
            &quot;externalIp&quot;: &quot;A String&quot;, # The external IP to define in the NIC.
            &quot;internalIp&quot;: &quot;A String&quot;, # The internal IP to define in the NIC. The formats accepted are: `ephemeral` \ ipv4 address \ a named address resource full path.
            &quot;network&quot;: &quot;A String&quot;, # The network to connect the NIC to.
            &quot;subnetwork&quot;: &quot;A String&quot;, # The subnetwork to connect the NIC to.
          },
        ],
        &quot;networkTags&quot;: [ # A map of network tags to associate with the VM.
          &quot;A String&quot;,
        ],
        &quot;project&quot;: &quot;A String&quot;, # Output only. The project in which to create the VM.
        &quot;secureBoot&quot;: True or False, # Defines whether the instance has Secure Boot enabled. This can be set to true only if the vm boot option is EFI.
        &quot;serviceAccount&quot;: &quot;A String&quot;, # The service account to associate the VM with.
        &quot;subnetwork&quot;: &quot;A String&quot;, # The subnetwork to connect the VM to.
        &quot;targetProject&quot;: &quot;A String&quot;, # The full path of the resource of type TargetProject which represents the Compute Engine project in which to create this VM.
        &quot;zone&quot;: &quot;A String&quot;, # The zone in which to create the VM.
      },
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time the cutover job was created (as an API call, not when it was actually created in the target).
      &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 for the errors that led to the Cutover Job&#x27;s state.
        &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;name&quot;: &quot;A String&quot;, # Output only. The name of the cutover job.
      &quot;progress&quot;: 42, # Output only. The current progress in percentage of the cutover job.
      &quot;progressPercent&quot;: 42, # Output only. The current progress in percentage of the cutover job.
      &quot;state&quot;: &quot;A String&quot;, # Output only. State of the cutover job.
      &quot;stateMessage&quot;: &quot;A String&quot;, # Output only. A message providing possible extra details about the current state.
      &quot;stateTime&quot;: &quot;A String&quot;, # Output only. The time the state was last updated.
      &quot;targetDetails&quot;: { # TargetVMDetails is a collection of details for creating a VM in a target Compute Engine project. # Output only. Details of the VM to create as the target of this cutover job. Deprecated: Use compute_engine_target_details instead.
        &quot;appliedLicense&quot;: { # AppliedLicense holds the license data returned by adaptation module report. # Output only. The OS license returned from the adaptation module report.
          &quot;osLicense&quot;: &quot;A String&quot;, # The OS license returned from the adaptation module&#x27;s report.
          &quot;type&quot;: &quot;A String&quot;, # The license type that was used in OS adaptation.
        },
        &quot;bootOption&quot;: &quot;A String&quot;, # Output only. The VM Boot Option, as set in the source vm.
        &quot;computeScheduling&quot;: { # Scheduling information for VM on maintenance/restart behaviour and node allocation in sole tenant nodes. # Compute instance scheduling information (if empty default is used).
          &quot;automaticRestart&quot;: True or False,
          &quot;minNodeCpus&quot;: 42, # The minimum number of virtual CPUs this instance will consume when running on a sole-tenant node. Ignored if no node_affinites are configured.
          &quot;nodeAffinities&quot;: [ # A set of node affinity and anti-affinity configurations for sole tenant nodes.
            { # Node Affinity: the configuration of desired nodes onto which this Instance could be scheduled. Based on https://cloud.google.com/compute/docs/reference/rest/v1/instances/setScheduling
              &quot;key&quot;: &quot;A String&quot;, # The label key of Node resource to reference.
              &quot;operator&quot;: &quot;A String&quot;, # The operator to use for the node resources specified in the `values` parameter.
              &quot;values&quot;: [ # Corresponds to the label values of Node resource.
                &quot;A String&quot;,
              ],
            },
          ],
          &quot;onHostMaintenance&quot;: &quot;A String&quot;, # How the instance should behave when the host machine undergoes maintenance that may temporarily impact instance performance.
          &quot;restartType&quot;: &quot;A String&quot;, # Whether the Instance should be automatically restarted whenever it is terminated by Compute Engine (not terminated by user). This configuration is identical to `automaticRestart` field in Compute Engine create instance under scheduling. It was changed to an enum (instead of a boolean) to match the default value in Compute Engine which is automatic restart.
        },
        &quot;diskType&quot;: &quot;A String&quot;, # The disk type to use in the VM.
        &quot;externalIp&quot;: &quot;A String&quot;, # The external IP to define in the VM.
        &quot;internalIp&quot;: &quot;A String&quot;, # The internal IP to define in the VM. The formats accepted are: `ephemeral` \ ipv4 address \ a named address resource full path.
        &quot;labels&quot;: { # A map of labels to associate with the VM.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;licenseType&quot;: &quot;A String&quot;, # The license type to use in OS adaptation.
        &quot;machineType&quot;: &quot;A String&quot;, # The machine type to create the VM with.
        &quot;machineTypeSeries&quot;: &quot;A String&quot;, # The machine type series to create the VM with.
        &quot;metadata&quot;: { # The metadata key/value pairs to assign to the VM.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;name&quot;: &quot;A String&quot;, # The name of the VM to create.
        &quot;network&quot;: &quot;A String&quot;, # The network to connect the VM to.
        &quot;networkInterfaces&quot;: [ # List of NICs connected to this VM.
          { # NetworkInterface represents a NIC of a VM.
            &quot;externalIp&quot;: &quot;A String&quot;, # The external IP to define in the NIC.
            &quot;internalIp&quot;: &quot;A String&quot;, # The internal IP to define in the NIC. The formats accepted are: `ephemeral` \ ipv4 address \ a named address resource full path.
            &quot;network&quot;: &quot;A String&quot;, # The network to connect the NIC to.
            &quot;subnetwork&quot;: &quot;A String&quot;, # The subnetwork to connect the NIC to.
          },
        ],
        &quot;networkTags&quot;: [ # A map of network tags to associate with the VM.
          &quot;A String&quot;,
        ],
        &quot;project&quot;: &quot;A String&quot;, # Output only. The project in which to create the VM.
        &quot;secureBoot&quot;: True or False, # Defines whether the instance has Secure Boot enabled. This can be set to true only if the vm boot option is EFI.
        &quot;serviceAccount&quot;: &quot;A String&quot;, # The service account to associate the VM with.
        &quot;subnetwork&quot;: &quot;A String&quot;, # The subnetwork to connect the VM to.
        &quot;targetProject&quot;: &quot;A String&quot;, # The full path of the resource of type TargetProject which represents the Compute Engine project in which to create this VM.
        &quot;zone&quot;: &quot;A String&quot;, # The zone in which to create the VM.
      },
    },
  ],
  &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;,
  ],
}</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>