<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.migratingVms.html">migratingVms</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="vmmigration_v1.projects.locations.sources.migratingVms.cloneJobs.html">cloneJobs()</a></code>
</p>
<p class="firstline">Returns the cloneJobs Resource.</p>

<p class="toc_element">
  <code><a href="vmmigration_v1.projects.locations.sources.migratingVms.cutoverJobs.html">cutoverJobs()</a></code>
</p>
<p class="firstline">Returns the cutoverJobs Resource.</p>

<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#create">create(parent, body=None, migratingVmId=None, requestId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a new MigratingVm in a given Source.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a single MigratingVm.</p>
<p class="toc_element">
  <code><a href="#finalizeMigration">finalizeMigration(migratingVm, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Marks a migration as completed, deleting migration resources that are no longer being used. Only applicable after cutover is done.</p>
<p class="toc_element">
  <code><a href="#get">get(name, view=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets details of a single MigratingVm.</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 MigratingVms in a 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>
<p class="toc_element">
  <code><a href="#patch">patch(name, body=None, requestId=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the parameters of a single MigratingVm.</p>
<p class="toc_element">
  <code><a href="#pauseMigration">pauseMigration(migratingVm, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Pauses a migration for a VM. If cycle tasks are running they will be cancelled, preserving source task data. Further replication cycles will not be triggered while the VM is paused.</p>
<p class="toc_element">
  <code><a href="#resumeMigration">resumeMigration(migratingVm, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Resumes a migration for a VM. When called on a paused migration, will start the process of uploading data and creating snapshots; when called on a completed cut-over migration, will update the migration to active state and start the process of uploading data and creating snapshots.</p>
<p class="toc_element">
  <code><a href="#startMigration">startMigration(migratingVm, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Starts migration for a VM. Starts the process of uploading data and creating snapshots, in replication cycles scheduled by the policy.</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, migratingVmId=None, requestId=None, x__xgafv=None)</code>
  <pre>Creates a new MigratingVm in a given Source.

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

{ # MigratingVm describes the VM that will be migrated from a Source environment and its replication state.
  &quot;computeEngineTargetDefaults&quot;: { # ComputeEngineTargetDefaults is a collection of details for creating a VM in a target Compute Engine project. # 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. # 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;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;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;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;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;createTime&quot;: &quot;A String&quot;, # Output only. The time the migrating VM was created (this refers to this resource and not to the time it was installed in the source).
  &quot;currentSyncInfo&quot;: { # ReplicationCycle contains information about the current replication cycle status. # Output only. The percentage progress of the current running replication cycle.
    &quot;progressPercent&quot;: 42, # The current progress in percentage of this cycle.
    &quot;startTime&quot;: &quot;A String&quot;, # The time the replication cycle has started.
  },
  &quot;description&quot;: &quot;A String&quot;, # The description attached to the migrating VM by the user.
  &quot;displayName&quot;: &quot;A String&quot;, # The display name attached to the MigratingVm 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 Migrating VM in case of an error in replication.
    &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;group&quot;: &quot;A String&quot;, # Output only. The group this migrating vm is included in, if any. The group is represented by the full path of the appropriate Group resource.
  &quot;labels&quot;: { # The labels of the migrating VM.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;lastSync&quot;: { # ReplicationSync contain information about the last replica sync to the cloud. # Output only. The most updated snapshot created time in the source that finished replication.
    &quot;lastSyncTime&quot;: &quot;A String&quot;, # The most updated snapshot created time in the source that finished replication.
  },
  &quot;name&quot;: &quot;A String&quot;, # Output only. The identifier of the MigratingVm.
  &quot;policy&quot;: { # A policy for scheduling replications. # The replication schedule policy.
    &quot;idleDuration&quot;: &quot;A String&quot;, # The idle duration between replication stages.
    &quot;skipOsAdaptation&quot;: True or False, # A flag to indicate whether to skip OS adaptation during the replication sync. OS adaptation is a process where the VM&#x27;s operating system undergoes changes and adaptations to fully function on Compute Engine.
  },
  &quot;recentCloneJobs&quot;: [ # Output only. The recent clone jobs performed on the migrating VM. This field holds the vm&#x27;s last completed clone job and the vm&#x27;s running clone job, if one exists. Note: To have this field populated you need to explicitly request it via the &quot;view&quot; parameter of the Get/List request.
    { # CloneJob describes the process of creating a clone of a MigratingVM to the requested target based on the latest successful uploaded snapshots. While the migration cycles of a MigratingVm take place, it is possible to verify the uploaded VM can be started in the cloud, by creating a clone. The clone can be created without any downtime, and it is created using the latest snapshots which are already in the cloud. The cloneJob is only responsible for its work, not its products, which means once it is finished, it will never touch the instance it created. It will only delete it in case of the CloneJob being cancelled or upon failure to clone.
      &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;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;createTime&quot;: &quot;A String&quot;, # Output only. The time the clone 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 Clone 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 clone.
      &quot;state&quot;: &quot;A String&quot;, # Output only. State of the clone job.
      &quot;stateTime&quot;: &quot;A String&quot;, # Output only. The time the state was last updated.
    },
  ],
  &quot;recentCutoverJobs&quot;: [ # Output only. The recent cutover jobs performed on the migrating VM. This field holds the vm&#x27;s last completed cutover job and the vm&#x27;s running cutover job, if one exists. Note: To have this field populated you need to explicitly request it via the &quot;view&quot; parameter of the Get/List request.
    { # 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;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;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;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;sourceVmId&quot;: &quot;A String&quot;, # The unique ID of the VM in the source. The VM&#x27;s name in vSphere can be changed, so this is not the VM&#x27;s name but rather its moRef id. This id is of the form vm-.
  &quot;state&quot;: &quot;A String&quot;, # Output only. State of the MigratingVm.
  &quot;stateTime&quot;: &quot;A String&quot;, # Output only. The last time the migrating VM state was updated.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last time the migrating VM resource was updated.
}

  migratingVmId: string, Required. The migratingVm 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="delete">delete(name, x__xgafv=None)</code>
  <pre>Deletes a single MigratingVm.

Args:
  name: string, Required. The name of the MigratingVm. (required)
  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="finalizeMigration">finalizeMigration(migratingVm, body=None, x__xgafv=None)</code>
  <pre>Marks a migration as completed, deleting migration resources that are no longer being used. Only applicable after cutover is done.

Args:
  migratingVm: string, Required. The name of the MigratingVm. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for &#x27;FinalizeMigration&#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="get">get(name, view=None, x__xgafv=None)</code>
  <pre>Gets details of a single MigratingVm.

Args:
  name: string, Required. The name of the MigratingVm. (required)
  view: string, Optional. The level of details of the migrating VM.
    Allowed values
      MIGRATING_VM_VIEW_UNSPECIFIED - View is unspecified. The API will fallback to the default value.
      MIGRATING_VM_VIEW_BASIC - Get the migrating VM basic details. The basic details do not include the recent clone jobs and recent cutover jobs lists.
      MIGRATING_VM_VIEW_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:

    { # MigratingVm describes the VM that will be migrated from a Source environment and its replication state.
  &quot;computeEngineTargetDefaults&quot;: { # ComputeEngineTargetDefaults is a collection of details for creating a VM in a target Compute Engine project. # 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. # 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;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;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;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;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;createTime&quot;: &quot;A String&quot;, # Output only. The time the migrating VM was created (this refers to this resource and not to the time it was installed in the source).
  &quot;currentSyncInfo&quot;: { # ReplicationCycle contains information about the current replication cycle status. # Output only. The percentage progress of the current running replication cycle.
    &quot;progressPercent&quot;: 42, # The current progress in percentage of this cycle.
    &quot;startTime&quot;: &quot;A String&quot;, # The time the replication cycle has started.
  },
  &quot;description&quot;: &quot;A String&quot;, # The description attached to the migrating VM by the user.
  &quot;displayName&quot;: &quot;A String&quot;, # The display name attached to the MigratingVm 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 Migrating VM in case of an error in replication.
    &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;group&quot;: &quot;A String&quot;, # Output only. The group this migrating vm is included in, if any. The group is represented by the full path of the appropriate Group resource.
  &quot;labels&quot;: { # The labels of the migrating VM.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;lastSync&quot;: { # ReplicationSync contain information about the last replica sync to the cloud. # Output only. The most updated snapshot created time in the source that finished replication.
    &quot;lastSyncTime&quot;: &quot;A String&quot;, # The most updated snapshot created time in the source that finished replication.
  },
  &quot;name&quot;: &quot;A String&quot;, # Output only. The identifier of the MigratingVm.
  &quot;policy&quot;: { # A policy for scheduling replications. # The replication schedule policy.
    &quot;idleDuration&quot;: &quot;A String&quot;, # The idle duration between replication stages.
    &quot;skipOsAdaptation&quot;: True or False, # A flag to indicate whether to skip OS adaptation during the replication sync. OS adaptation is a process where the VM&#x27;s operating system undergoes changes and adaptations to fully function on Compute Engine.
  },
  &quot;recentCloneJobs&quot;: [ # Output only. The recent clone jobs performed on the migrating VM. This field holds the vm&#x27;s last completed clone job and the vm&#x27;s running clone job, if one exists. Note: To have this field populated you need to explicitly request it via the &quot;view&quot; parameter of the Get/List request.
    { # CloneJob describes the process of creating a clone of a MigratingVM to the requested target based on the latest successful uploaded snapshots. While the migration cycles of a MigratingVm take place, it is possible to verify the uploaded VM can be started in the cloud, by creating a clone. The clone can be created without any downtime, and it is created using the latest snapshots which are already in the cloud. The cloneJob is only responsible for its work, not its products, which means once it is finished, it will never touch the instance it created. It will only delete it in case of the CloneJob being cancelled or upon failure to clone.
      &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;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;createTime&quot;: &quot;A String&quot;, # Output only. The time the clone 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 Clone 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 clone.
      &quot;state&quot;: &quot;A String&quot;, # Output only. State of the clone job.
      &quot;stateTime&quot;: &quot;A String&quot;, # Output only. The time the state was last updated.
    },
  ],
  &quot;recentCutoverJobs&quot;: [ # Output only. The recent cutover jobs performed on the migrating VM. This field holds the vm&#x27;s last completed cutover job and the vm&#x27;s running cutover job, if one exists. Note: To have this field populated you need to explicitly request it via the &quot;view&quot; parameter of the Get/List request.
    { # 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;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;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;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;sourceVmId&quot;: &quot;A String&quot;, # The unique ID of the VM in the source. The VM&#x27;s name in vSphere can be changed, so this is not the VM&#x27;s name but rather its moRef id. This id is of the form vm-.
  &quot;state&quot;: &quot;A String&quot;, # Output only. State of the MigratingVm.
  &quot;stateTime&quot;: &quot;A String&quot;, # Output only. The last time the migrating VM state was updated.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last time the migrating VM resource was updated.
}</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 MigratingVms in a given Source.

Args:
  parent: string, Required. The parent, which owns this collection of MigratingVms. (required)
  filter: string, Optional. The filter request.
  orderBy: string, Optional. the order by fields for the result.
  pageSize: integer, Optional. The maximum number of migrating VMs to return. The service may return fewer than this value. If unspecified, at most 500 migrating VMs 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 `ListMigratingVms` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListMigratingVms` must match the call that provided the page token.
  view: string, Optional. The level of details of each migrating VM.
    Allowed values
      MIGRATING_VM_VIEW_UNSPECIFIED - View is unspecified. The API will fallback to the default value.
      MIGRATING_VM_VIEW_BASIC - Get the migrating VM basic details. The basic details do not include the recent clone jobs and recent cutover jobs lists.
      MIGRATING_VM_VIEW_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;ListMigratingVms&#x27; request.
  &quot;migratingVms&quot;: [ # Output only. The list of Migrating VMs response.
    { # MigratingVm describes the VM that will be migrated from a Source environment and its replication state.
      &quot;computeEngineTargetDefaults&quot;: { # ComputeEngineTargetDefaults is a collection of details for creating a VM in a target Compute Engine project. # 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. # 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;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;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;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;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;createTime&quot;: &quot;A String&quot;, # Output only. The time the migrating VM was created (this refers to this resource and not to the time it was installed in the source).
      &quot;currentSyncInfo&quot;: { # ReplicationCycle contains information about the current replication cycle status. # Output only. The percentage progress of the current running replication cycle.
        &quot;progressPercent&quot;: 42, # The current progress in percentage of this cycle.
        &quot;startTime&quot;: &quot;A String&quot;, # The time the replication cycle has started.
      },
      &quot;description&quot;: &quot;A String&quot;, # The description attached to the migrating VM by the user.
      &quot;displayName&quot;: &quot;A String&quot;, # The display name attached to the MigratingVm 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 Migrating VM in case of an error in replication.
        &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;group&quot;: &quot;A String&quot;, # Output only. The group this migrating vm is included in, if any. The group is represented by the full path of the appropriate Group resource.
      &quot;labels&quot;: { # The labels of the migrating VM.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;lastSync&quot;: { # ReplicationSync contain information about the last replica sync to the cloud. # Output only. The most updated snapshot created time in the source that finished replication.
        &quot;lastSyncTime&quot;: &quot;A String&quot;, # The most updated snapshot created time in the source that finished replication.
      },
      &quot;name&quot;: &quot;A String&quot;, # Output only. The identifier of the MigratingVm.
      &quot;policy&quot;: { # A policy for scheduling replications. # The replication schedule policy.
        &quot;idleDuration&quot;: &quot;A String&quot;, # The idle duration between replication stages.
        &quot;skipOsAdaptation&quot;: True or False, # A flag to indicate whether to skip OS adaptation during the replication sync. OS adaptation is a process where the VM&#x27;s operating system undergoes changes and adaptations to fully function on Compute Engine.
      },
      &quot;recentCloneJobs&quot;: [ # Output only. The recent clone jobs performed on the migrating VM. This field holds the vm&#x27;s last completed clone job and the vm&#x27;s running clone job, if one exists. Note: To have this field populated you need to explicitly request it via the &quot;view&quot; parameter of the Get/List request.
        { # CloneJob describes the process of creating a clone of a MigratingVM to the requested target based on the latest successful uploaded snapshots. While the migration cycles of a MigratingVm take place, it is possible to verify the uploaded VM can be started in the cloud, by creating a clone. The clone can be created without any downtime, and it is created using the latest snapshots which are already in the cloud. The cloneJob is only responsible for its work, not its products, which means once it is finished, it will never touch the instance it created. It will only delete it in case of the CloneJob being cancelled or upon failure to clone.
          &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;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;createTime&quot;: &quot;A String&quot;, # Output only. The time the clone 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 Clone 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 clone.
          &quot;state&quot;: &quot;A String&quot;, # Output only. State of the clone job.
          &quot;stateTime&quot;: &quot;A String&quot;, # Output only. The time the state was last updated.
        },
      ],
      &quot;recentCutoverJobs&quot;: [ # Output only. The recent cutover jobs performed on the migrating VM. This field holds the vm&#x27;s last completed cutover job and the vm&#x27;s running cutover job, if one exists. Note: To have this field populated you need to explicitly request it via the &quot;view&quot; parameter of the Get/List request.
        { # 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;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;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;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;sourceVmId&quot;: &quot;A String&quot;, # The unique ID of the VM in the source. The VM&#x27;s name in vSphere can be changed, so this is not the VM&#x27;s name but rather its moRef id. This id is of the form vm-.
      &quot;state&quot;: &quot;A String&quot;, # Output only. State of the MigratingVm.
      &quot;stateTime&quot;: &quot;A String&quot;, # Output only. The last time the migrating VM state was updated.
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last time the migrating VM resource was updated.
    },
  ],
  &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>

<div class="method">
    <code class="details" id="patch">patch(name, body=None, requestId=None, updateMask=None, x__xgafv=None)</code>
  <pre>Updates the parameters of a single MigratingVm.

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

{ # MigratingVm describes the VM that will be migrated from a Source environment and its replication state.
  &quot;computeEngineTargetDefaults&quot;: { # ComputeEngineTargetDefaults is a collection of details for creating a VM in a target Compute Engine project. # 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. # 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;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;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;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;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;createTime&quot;: &quot;A String&quot;, # Output only. The time the migrating VM was created (this refers to this resource and not to the time it was installed in the source).
  &quot;currentSyncInfo&quot;: { # ReplicationCycle contains information about the current replication cycle status. # Output only. The percentage progress of the current running replication cycle.
    &quot;progressPercent&quot;: 42, # The current progress in percentage of this cycle.
    &quot;startTime&quot;: &quot;A String&quot;, # The time the replication cycle has started.
  },
  &quot;description&quot;: &quot;A String&quot;, # The description attached to the migrating VM by the user.
  &quot;displayName&quot;: &quot;A String&quot;, # The display name attached to the MigratingVm 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 Migrating VM in case of an error in replication.
    &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;group&quot;: &quot;A String&quot;, # Output only. The group this migrating vm is included in, if any. The group is represented by the full path of the appropriate Group resource.
  &quot;labels&quot;: { # The labels of the migrating VM.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;lastSync&quot;: { # ReplicationSync contain information about the last replica sync to the cloud. # Output only. The most updated snapshot created time in the source that finished replication.
    &quot;lastSyncTime&quot;: &quot;A String&quot;, # The most updated snapshot created time in the source that finished replication.
  },
  &quot;name&quot;: &quot;A String&quot;, # Output only. The identifier of the MigratingVm.
  &quot;policy&quot;: { # A policy for scheduling replications. # The replication schedule policy.
    &quot;idleDuration&quot;: &quot;A String&quot;, # The idle duration between replication stages.
    &quot;skipOsAdaptation&quot;: True or False, # A flag to indicate whether to skip OS adaptation during the replication sync. OS adaptation is a process where the VM&#x27;s operating system undergoes changes and adaptations to fully function on Compute Engine.
  },
  &quot;recentCloneJobs&quot;: [ # Output only. The recent clone jobs performed on the migrating VM. This field holds the vm&#x27;s last completed clone job and the vm&#x27;s running clone job, if one exists. Note: To have this field populated you need to explicitly request it via the &quot;view&quot; parameter of the Get/List request.
    { # CloneJob describes the process of creating a clone of a MigratingVM to the requested target based on the latest successful uploaded snapshots. While the migration cycles of a MigratingVm take place, it is possible to verify the uploaded VM can be started in the cloud, by creating a clone. The clone can be created without any downtime, and it is created using the latest snapshots which are already in the cloud. The cloneJob is only responsible for its work, not its products, which means once it is finished, it will never touch the instance it created. It will only delete it in case of the CloneJob being cancelled or upon failure to clone.
      &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;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;createTime&quot;: &quot;A String&quot;, # Output only. The time the clone 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 Clone 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 clone.
      &quot;state&quot;: &quot;A String&quot;, # Output only. State of the clone job.
      &quot;stateTime&quot;: &quot;A String&quot;, # Output only. The time the state was last updated.
    },
  ],
  &quot;recentCutoverJobs&quot;: [ # Output only. The recent cutover jobs performed on the migrating VM. This field holds the vm&#x27;s last completed cutover job and the vm&#x27;s running cutover job, if one exists. Note: To have this field populated you need to explicitly request it via the &quot;view&quot; parameter of the Get/List request.
    { # 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;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;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;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;sourceVmId&quot;: &quot;A String&quot;, # The unique ID of the VM in the source. The VM&#x27;s name in vSphere can be changed, so this is not the VM&#x27;s name but rather its moRef id. This id is of the form vm-.
  &quot;state&quot;: &quot;A String&quot;, # Output only. State of the MigratingVm.
  &quot;stateTime&quot;: &quot;A String&quot;, # Output only. The last time the migrating VM state was updated.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last time the migrating VM resource was updated.
}

  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).
  updateMask: string, Field mask is used to specify the fields to be overwritten in the MigratingVm resource by the update. The fields specified in the update_mask are relative to the resource, not the full request. A field will be overwritten if it is in the mask. If the user does not provide a mask then all fields will be overwritten.
  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="pauseMigration">pauseMigration(migratingVm, body=None, x__xgafv=None)</code>
  <pre>Pauses a migration for a VM. If cycle tasks are running they will be cancelled, preserving source task data. Further replication cycles will not be triggered while the VM is paused.

Args:
  migratingVm: string, Required. The name of the MigratingVm. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for &#x27;PauseMigration&#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="resumeMigration">resumeMigration(migratingVm, body=None, x__xgafv=None)</code>
  <pre>Resumes a migration for a VM. When called on a paused migration, will start the process of uploading data and creating snapshots; when called on a completed cut-over migration, will update the migration to active state and start the process of uploading data and creating snapshots.

Args:
  migratingVm: string, Required. The name of the MigratingVm. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for &#x27;ResumeMigration&#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="startMigration">startMigration(migratingVm, body=None, x__xgafv=None)</code>
  <pre>Starts migration for a VM. Starts the process of uploading data and creating snapshots, in replication cycles scheduled by the policy.

Args:
  migratingVm: string, Required. The name of the MigratingVm. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for &#x27;StartMigrationRequest&#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>

</body></html>