/*
 * Copyright 2020 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: google/cloud/vmmigration/v1/vmmigration.proto

package com.google.cloud.vmmigration.v1;

public interface MigratingVmOrBuilder
    extends
    // @@protoc_insertion_point(interface_extends:google.cloud.vmmigration.v1.MigratingVm)
    com.google.protobuf.MessageOrBuilder {

  /**
   *
   *
   * <pre>
   * Details of the target VM in Compute Engine.
   * </pre>
   *
   * <code>
   * .google.cloud.vmmigration.v1.ComputeEngineTargetDefaults compute_engine_target_defaults = 26;
   * </code>
   *
   * @return Whether the computeEngineTargetDefaults field is set.
   */
  boolean hasComputeEngineTargetDefaults();
  /**
   *
   *
   * <pre>
   * Details of the target VM in Compute Engine.
   * </pre>
   *
   * <code>
   * .google.cloud.vmmigration.v1.ComputeEngineTargetDefaults compute_engine_target_defaults = 26;
   * </code>
   *
   * @return The computeEngineTargetDefaults.
   */
  com.google.cloud.vmmigration.v1.ComputeEngineTargetDefaults getComputeEngineTargetDefaults();
  /**
   *
   *
   * <pre>
   * Details of the target VM in Compute Engine.
   * </pre>
   *
   * <code>
   * .google.cloud.vmmigration.v1.ComputeEngineTargetDefaults compute_engine_target_defaults = 26;
   * </code>
   */
  com.google.cloud.vmmigration.v1.ComputeEngineTargetDefaultsOrBuilder
      getComputeEngineTargetDefaultsOrBuilder();

  /**
   *
   *
   * <pre>
   * Output only. Details of the VM from an AWS source.
   * </pre>
   *
   * <code>
   * .google.cloud.vmmigration.v1.AwsSourceVmDetails aws_source_vm_details = 29 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   *
   * @return Whether the awsSourceVmDetails field is set.
   */
  boolean hasAwsSourceVmDetails();
  /**
   *
   *
   * <pre>
   * Output only. Details of the VM from an AWS source.
   * </pre>
   *
   * <code>
   * .google.cloud.vmmigration.v1.AwsSourceVmDetails aws_source_vm_details = 29 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   *
   * @return The awsSourceVmDetails.
   */
  com.google.cloud.vmmigration.v1.AwsSourceVmDetails getAwsSourceVmDetails();
  /**
   *
   *
   * <pre>
   * Output only. Details of the VM from an AWS source.
   * </pre>
   *
   * <code>
   * .google.cloud.vmmigration.v1.AwsSourceVmDetails aws_source_vm_details = 29 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   */
  com.google.cloud.vmmigration.v1.AwsSourceVmDetailsOrBuilder getAwsSourceVmDetailsOrBuilder();

  /**
   *
   *
   * <pre>
   * Output only. The identifier of the MigratingVm.
   * </pre>
   *
   * <code>string name = 1 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
   *
   * @return The name.
   */
  java.lang.String getName();
  /**
   *
   *
   * <pre>
   * Output only. The identifier of the MigratingVm.
   * </pre>
   *
   * <code>string name = 1 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
   *
   * @return The bytes for name.
   */
  com.google.protobuf.ByteString getNameBytes();

  /**
   *
   *
   * <pre>
   * The unique ID of the VM in the source.
   * The VM's name in vSphere can be changed, so this is not the VM's name but
   * rather its moRef id. This id is of the form vm-&lt;num&gt;.
   * </pre>
   *
   * <code>string source_vm_id = 2;</code>
   *
   * @return The sourceVmId.
   */
  java.lang.String getSourceVmId();
  /**
   *
   *
   * <pre>
   * The unique ID of the VM in the source.
   * The VM's name in vSphere can be changed, so this is not the VM's name but
   * rather its moRef id. This id is of the form vm-&lt;num&gt;.
   * </pre>
   *
   * <code>string source_vm_id = 2;</code>
   *
   * @return The bytes for sourceVmId.
   */
  com.google.protobuf.ByteString getSourceVmIdBytes();

  /**
   *
   *
   * <pre>
   * The display name attached to the MigratingVm by the user.
   * </pre>
   *
   * <code>string display_name = 18;</code>
   *
   * @return The displayName.
   */
  java.lang.String getDisplayName();
  /**
   *
   *
   * <pre>
   * The display name attached to the MigratingVm by the user.
   * </pre>
   *
   * <code>string display_name = 18;</code>
   *
   * @return The bytes for displayName.
   */
  com.google.protobuf.ByteString getDisplayNameBytes();

  /**
   *
   *
   * <pre>
   * The description attached to the migrating VM by the user.
   * </pre>
   *
   * <code>string description = 3;</code>
   *
   * @return The description.
   */
  java.lang.String getDescription();
  /**
   *
   *
   * <pre>
   * The description attached to the migrating VM by the user.
   * </pre>
   *
   * <code>string description = 3;</code>
   *
   * @return The bytes for description.
   */
  com.google.protobuf.ByteString getDescriptionBytes();

  /**
   *
   *
   * <pre>
   * The replication schedule policy.
   * </pre>
   *
   * <code>.google.cloud.vmmigration.v1.SchedulePolicy policy = 8;</code>
   *
   * @return Whether the policy field is set.
   */
  boolean hasPolicy();
  /**
   *
   *
   * <pre>
   * The replication schedule policy.
   * </pre>
   *
   * <code>.google.cloud.vmmigration.v1.SchedulePolicy policy = 8;</code>
   *
   * @return The policy.
   */
  com.google.cloud.vmmigration.v1.SchedulePolicy getPolicy();
  /**
   *
   *
   * <pre>
   * The replication schedule policy.
   * </pre>
   *
   * <code>.google.cloud.vmmigration.v1.SchedulePolicy policy = 8;</code>
   */
  com.google.cloud.vmmigration.v1.SchedulePolicyOrBuilder getPolicyOrBuilder();

  /**
   *
   *
   * <pre>
   * 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).
   * </pre>
   *
   * <code>.google.protobuf.Timestamp create_time = 9 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   *
   * @return Whether the createTime field is set.
   */
  boolean hasCreateTime();
  /**
   *
   *
   * <pre>
   * 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).
   * </pre>
   *
   * <code>.google.protobuf.Timestamp create_time = 9 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   *
   * @return The createTime.
   */
  com.google.protobuf.Timestamp getCreateTime();
  /**
   *
   *
   * <pre>
   * 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).
   * </pre>
   *
   * <code>.google.protobuf.Timestamp create_time = 9 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   */
  com.google.protobuf.TimestampOrBuilder getCreateTimeOrBuilder();

  /**
   *
   *
   * <pre>
   * Output only. The last time the migrating VM resource was updated.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp update_time = 10 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   *
   * @return Whether the updateTime field is set.
   */
  boolean hasUpdateTime();
  /**
   *
   *
   * <pre>
   * Output only. The last time the migrating VM resource was updated.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp update_time = 10 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   *
   * @return The updateTime.
   */
  com.google.protobuf.Timestamp getUpdateTime();
  /**
   *
   *
   * <pre>
   * Output only. The last time the migrating VM resource was updated.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp update_time = 10 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   */
  com.google.protobuf.TimestampOrBuilder getUpdateTimeOrBuilder();

  /**
   *
   *
   * <pre>
   * Output only. The most updated snapshot created time in the source that
   * finished replication.
   * </pre>
   *
   * <code>
   * .google.cloud.vmmigration.v1.ReplicationSync last_sync = 11 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   *
   * @return Whether the lastSync field is set.
   */
  boolean hasLastSync();
  /**
   *
   *
   * <pre>
   * Output only. The most updated snapshot created time in the source that
   * finished replication.
   * </pre>
   *
   * <code>
   * .google.cloud.vmmigration.v1.ReplicationSync last_sync = 11 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   *
   * @return The lastSync.
   */
  com.google.cloud.vmmigration.v1.ReplicationSync getLastSync();
  /**
   *
   *
   * <pre>
   * Output only. The most updated snapshot created time in the source that
   * finished replication.
   * </pre>
   *
   * <code>
   * .google.cloud.vmmigration.v1.ReplicationSync last_sync = 11 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   */
  com.google.cloud.vmmigration.v1.ReplicationSyncOrBuilder getLastSyncOrBuilder();

  /**
   *
   *
   * <pre>
   * Output only. State of the MigratingVm.
   * </pre>
   *
   * <code>
   * .google.cloud.vmmigration.v1.MigratingVm.State state = 23 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   *
   * @return The enum numeric value on the wire for state.
   */
  int getStateValue();
  /**
   *
   *
   * <pre>
   * Output only. State of the MigratingVm.
   * </pre>
   *
   * <code>
   * .google.cloud.vmmigration.v1.MigratingVm.State state = 23 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   *
   * @return The state.
   */
  com.google.cloud.vmmigration.v1.MigratingVm.State getState();

  /**
   *
   *
   * <pre>
   * Output only. The last time the migrating VM state was updated.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp state_time = 22 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   *
   * @return Whether the stateTime field is set.
   */
  boolean hasStateTime();
  /**
   *
   *
   * <pre>
   * Output only. The last time the migrating VM state was updated.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp state_time = 22 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   *
   * @return The stateTime.
   */
  com.google.protobuf.Timestamp getStateTime();
  /**
   *
   *
   * <pre>
   * Output only. The last time the migrating VM state was updated.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp state_time = 22 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   */
  com.google.protobuf.TimestampOrBuilder getStateTimeOrBuilder();

  /**
   *
   *
   * <pre>
   * Output only. The percentage progress of the current running replication
   * cycle.
   * </pre>
   *
   * <code>
   * .google.cloud.vmmigration.v1.ReplicationCycle current_sync_info = 13 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   *
   * @return Whether the currentSyncInfo field is set.
   */
  boolean hasCurrentSyncInfo();
  /**
   *
   *
   * <pre>
   * Output only. The percentage progress of the current running replication
   * cycle.
   * </pre>
   *
   * <code>
   * .google.cloud.vmmigration.v1.ReplicationCycle current_sync_info = 13 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   *
   * @return The currentSyncInfo.
   */
  com.google.cloud.vmmigration.v1.ReplicationCycle getCurrentSyncInfo();
  /**
   *
   *
   * <pre>
   * Output only. The percentage progress of the current running replication
   * cycle.
   * </pre>
   *
   * <code>
   * .google.cloud.vmmigration.v1.ReplicationCycle current_sync_info = 13 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   */
  com.google.cloud.vmmigration.v1.ReplicationCycleOrBuilder getCurrentSyncInfoOrBuilder();

  /**
   *
   *
   * <pre>
   * Output only. The group this migrating vm is included in, if any. The group
   * is represented by the full path of the appropriate
   * [Group][google.cloud.vmmigration.v1.Group] resource.
   * </pre>
   *
   * <code>
   * string group = 15 [(.google.api.field_behavior) = OUTPUT_ONLY, (.google.api.resource_reference) = { ... }
   * </code>
   *
   * @return The group.
   */
  java.lang.String getGroup();
  /**
   *
   *
   * <pre>
   * Output only. The group this migrating vm is included in, if any. The group
   * is represented by the full path of the appropriate
   * [Group][google.cloud.vmmigration.v1.Group] resource.
   * </pre>
   *
   * <code>
   * string group = 15 [(.google.api.field_behavior) = OUTPUT_ONLY, (.google.api.resource_reference) = { ... }
   * </code>
   *
   * @return The bytes for group.
   */
  com.google.protobuf.ByteString getGroupBytes();

  /**
   *
   *
   * <pre>
   * The labels of the migrating VM.
   * </pre>
   *
   * <code>map&lt;string, string&gt; labels = 16;</code>
   */
  int getLabelsCount();
  /**
   *
   *
   * <pre>
   * The labels of the migrating VM.
   * </pre>
   *
   * <code>map&lt;string, string&gt; labels = 16;</code>
   */
  boolean containsLabels(java.lang.String key);
  /** Use {@link #getLabelsMap()} instead. */
  @java.lang.Deprecated
  java.util.Map<java.lang.String, java.lang.String> getLabels();
  /**
   *
   *
   * <pre>
   * The labels of the migrating VM.
   * </pre>
   *
   * <code>map&lt;string, string&gt; labels = 16;</code>
   */
  java.util.Map<java.lang.String, java.lang.String> getLabelsMap();
  /**
   *
   *
   * <pre>
   * The labels of the migrating VM.
   * </pre>
   *
   * <code>map&lt;string, string&gt; labels = 16;</code>
   */
  /* nullable */
  java.lang.String getLabelsOrDefault(
      java.lang.String key,
      /* nullable */
      java.lang.String defaultValue);
  /**
   *
   *
   * <pre>
   * The labels of the migrating VM.
   * </pre>
   *
   * <code>map&lt;string, string&gt; labels = 16;</code>
   */
  java.lang.String getLabelsOrThrow(java.lang.String key);

  /**
   *
   *
   * <pre>
   * Output only. The recent [clone jobs][google.cloud.vmmigration.v1.CloneJob]
   * performed on the migrating VM. This field holds the vm's last completed
   * clone job and the vm's running clone job, if one exists.
   * Note: To have this field populated you need to explicitly request it via
   * the "view" parameter of the Get/List request.
   * </pre>
   *
   * <code>
   * repeated .google.cloud.vmmigration.v1.CloneJob recent_clone_jobs = 17 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   */
  java.util.List<com.google.cloud.vmmigration.v1.CloneJob> getRecentCloneJobsList();
  /**
   *
   *
   * <pre>
   * Output only. The recent [clone jobs][google.cloud.vmmigration.v1.CloneJob]
   * performed on the migrating VM. This field holds the vm's last completed
   * clone job and the vm's running clone job, if one exists.
   * Note: To have this field populated you need to explicitly request it via
   * the "view" parameter of the Get/List request.
   * </pre>
   *
   * <code>
   * repeated .google.cloud.vmmigration.v1.CloneJob recent_clone_jobs = 17 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   */
  com.google.cloud.vmmigration.v1.CloneJob getRecentCloneJobs(int index);
  /**
   *
   *
   * <pre>
   * Output only. The recent [clone jobs][google.cloud.vmmigration.v1.CloneJob]
   * performed on the migrating VM. This field holds the vm's last completed
   * clone job and the vm's running clone job, if one exists.
   * Note: To have this field populated you need to explicitly request it via
   * the "view" parameter of the Get/List request.
   * </pre>
   *
   * <code>
   * repeated .google.cloud.vmmigration.v1.CloneJob recent_clone_jobs = 17 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   */
  int getRecentCloneJobsCount();
  /**
   *
   *
   * <pre>
   * Output only. The recent [clone jobs][google.cloud.vmmigration.v1.CloneJob]
   * performed on the migrating VM. This field holds the vm's last completed
   * clone job and the vm's running clone job, if one exists.
   * Note: To have this field populated you need to explicitly request it via
   * the "view" parameter of the Get/List request.
   * </pre>
   *
   * <code>
   * repeated .google.cloud.vmmigration.v1.CloneJob recent_clone_jobs = 17 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   */
  java.util.List<? extends com.google.cloud.vmmigration.v1.CloneJobOrBuilder>
      getRecentCloneJobsOrBuilderList();
  /**
   *
   *
   * <pre>
   * Output only. The recent [clone jobs][google.cloud.vmmigration.v1.CloneJob]
   * performed on the migrating VM. This field holds the vm's last completed
   * clone job and the vm's running clone job, if one exists.
   * Note: To have this field populated you need to explicitly request it via
   * the "view" parameter of the Get/List request.
   * </pre>
   *
   * <code>
   * repeated .google.cloud.vmmigration.v1.CloneJob recent_clone_jobs = 17 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   */
  com.google.cloud.vmmigration.v1.CloneJobOrBuilder getRecentCloneJobsOrBuilder(int index);

  /**
   *
   *
   * <pre>
   * Output only. Provides details on the state of the Migrating VM in case of
   * an error in replication.
   * </pre>
   *
   * <code>.google.rpc.Status error = 19 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
   *
   * @return Whether the error field is set.
   */
  boolean hasError();
  /**
   *
   *
   * <pre>
   * Output only. Provides details on the state of the Migrating VM in case of
   * an error in replication.
   * </pre>
   *
   * <code>.google.rpc.Status error = 19 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
   *
   * @return The error.
   */
  com.google.rpc.Status getError();
  /**
   *
   *
   * <pre>
   * Output only. Provides details on the state of the Migrating VM in case of
   * an error in replication.
   * </pre>
   *
   * <code>.google.rpc.Status error = 19 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
   */
  com.google.rpc.StatusOrBuilder getErrorOrBuilder();

  /**
   *
   *
   * <pre>
   * Output only. The recent cutover jobs performed on the migrating VM.
   * This field holds the vm's last completed cutover job and the vm's
   * running cutover job, if one exists.
   * Note: To have this field populated you need to explicitly request it via
   * the "view" parameter of the Get/List request.
   * </pre>
   *
   * <code>
   * repeated .google.cloud.vmmigration.v1.CutoverJob recent_cutover_jobs = 20 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   */
  java.util.List<com.google.cloud.vmmigration.v1.CutoverJob> getRecentCutoverJobsList();
  /**
   *
   *
   * <pre>
   * Output only. The recent cutover jobs performed on the migrating VM.
   * This field holds the vm's last completed cutover job and the vm's
   * running cutover job, if one exists.
   * Note: To have this field populated you need to explicitly request it via
   * the "view" parameter of the Get/List request.
   * </pre>
   *
   * <code>
   * repeated .google.cloud.vmmigration.v1.CutoverJob recent_cutover_jobs = 20 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   */
  com.google.cloud.vmmigration.v1.CutoverJob getRecentCutoverJobs(int index);
  /**
   *
   *
   * <pre>
   * Output only. The recent cutover jobs performed on the migrating VM.
   * This field holds the vm's last completed cutover job and the vm's
   * running cutover job, if one exists.
   * Note: To have this field populated you need to explicitly request it via
   * the "view" parameter of the Get/List request.
   * </pre>
   *
   * <code>
   * repeated .google.cloud.vmmigration.v1.CutoverJob recent_cutover_jobs = 20 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   */
  int getRecentCutoverJobsCount();
  /**
   *
   *
   * <pre>
   * Output only. The recent cutover jobs performed on the migrating VM.
   * This field holds the vm's last completed cutover job and the vm's
   * running cutover job, if one exists.
   * Note: To have this field populated you need to explicitly request it via
   * the "view" parameter of the Get/List request.
   * </pre>
   *
   * <code>
   * repeated .google.cloud.vmmigration.v1.CutoverJob recent_cutover_jobs = 20 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   */
  java.util.List<? extends com.google.cloud.vmmigration.v1.CutoverJobOrBuilder>
      getRecentCutoverJobsOrBuilderList();
  /**
   *
   *
   * <pre>
   * Output only. The recent cutover jobs performed on the migrating VM.
   * This field holds the vm's last completed cutover job and the vm's
   * running cutover job, if one exists.
   * Note: To have this field populated you need to explicitly request it via
   * the "view" parameter of the Get/List request.
   * </pre>
   *
   * <code>
   * repeated .google.cloud.vmmigration.v1.CutoverJob recent_cutover_jobs = 20 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   */
  com.google.cloud.vmmigration.v1.CutoverJobOrBuilder getRecentCutoverJobsOrBuilder(int index);

  public com.google.cloud.vmmigration.v1.MigratingVm.TargetVmDefaultsCase getTargetVmDefaultsCase();

  public com.google.cloud.vmmigration.v1.MigratingVm.SourceVmDetailsCase getSourceVmDetailsCase();
}
