/*
 * Cloudera Manager API
 * <h1>Cloudera Manager API v57</h1>       <p>Introduced in Cloudera Manager 7.13.1</p>       <p><a href=\"http://www.cloudera.com/documentation.html\">Cloudera Product Documentation</a></p>
 *
 * OpenAPI spec version: 7.13.1
 * 
 *
 * NOTE: This class is auto generated by the swagger code generator program.
 * https://github.com/swagger-api/swagger-codegen.git
 * Do not edit the class manually.
 */

package com.cloudera.api.swagger.model;

import java.util.Objects;
import java.util.Arrays;
import com.cloudera.api.swagger.model.ApiPerfInspectorBandwidthArgs;
import com.cloudera.api.swagger.model.ApiPerfInspectorPingArgs;
import com.cloudera.api.swagger.model.PerfInspectorPolicyType;
import com.google.gson.TypeAdapter;
import com.google.gson.annotations.JsonAdapter;
import com.google.gson.annotations.SerializedName;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import io.swagger.v3.oas.annotations.media.Schema;
import java.io.IOException;
/**
 * Arguments used for the Cloudera Manager level performance inspector. Network diagnostics will be run from every host in sourceCluster to every host in targetCluster.
 */
@Schema(description = "Arguments used for the Cloudera Manager level performance inspector. Network diagnostics will be run from every host in sourceCluster to every host in targetCluster.")
@javax.annotation.Generated(value = "io.swagger.codegen.v3.generators.java.JavaClientCodegen", date = "2026-05-19T08:29:59.033Z[Etc/UTC]")

public class ApiClustersPerfInspectorArgs {
  @SerializedName("sourceCluster")
  private String sourceCluster = null;

  @SerializedName("targetCluster")
  private String targetCluster = null;

  @SerializedName("pingArgs")
  private ApiPerfInspectorPingArgs pingArgs = null;

  @SerializedName("bandwidthArgs")
  private ApiPerfInspectorBandwidthArgs bandwidthArgs = null;

  @SerializedName("policyType")
  private PerfInspectorPolicyType policyType = null;

  public ApiClustersPerfInspectorArgs sourceCluster(String sourceCluster) {
    this.sourceCluster = sourceCluster;
    return this;
  }

   /**
   * Required name of the source cluster to run network diagnostics test.
   * @return sourceCluster
  **/
  @Schema(description = "Required name of the source cluster to run network diagnostics test.")
  public String getSourceCluster() {
    return sourceCluster;
  }

  public void setSourceCluster(String sourceCluster) {
    this.sourceCluster = sourceCluster;
  }

  public ApiClustersPerfInspectorArgs targetCluster(String targetCluster) {
    this.targetCluster = targetCluster;
    return this;
  }

   /**
   * Required name of the target cluster to run network diagnostics test.
   * @return targetCluster
  **/
  @Schema(description = "Required name of the target cluster to run network diagnostics test.")
  public String getTargetCluster() {
    return targetCluster;
  }

  public void setTargetCluster(String targetCluster) {
    this.targetCluster = targetCluster;
  }

  public ApiClustersPerfInspectorArgs pingArgs(ApiPerfInspectorPingArgs pingArgs) {
    this.pingArgs = pingArgs;
    return this;
  }

   /**
   * Get pingArgs
   * @return pingArgs
  **/
  @Schema(description = "")
  public ApiPerfInspectorPingArgs getPingArgs() {
    return pingArgs;
  }

  public void setPingArgs(ApiPerfInspectorPingArgs pingArgs) {
    this.pingArgs = pingArgs;
  }

  public ApiClustersPerfInspectorArgs bandwidthArgs(ApiPerfInspectorBandwidthArgs bandwidthArgs) {
    this.bandwidthArgs = bandwidthArgs;
    return this;
  }

   /**
   * Get bandwidthArgs
   * @return bandwidthArgs
  **/
  @Schema(description = "")
  public ApiPerfInspectorBandwidthArgs getBandwidthArgs() {
    return bandwidthArgs;
  }

  public void setBandwidthArgs(ApiPerfInspectorBandwidthArgs bandwidthArgs) {
    this.bandwidthArgs = bandwidthArgs;
  }

  public ApiClustersPerfInspectorArgs policyType(PerfInspectorPolicyType policyType) {
    this.policyType = policyType;
    return this;
  }

   /**
   * Get policyType
   * @return policyType
  **/
  @Schema(description = "")
  public PerfInspectorPolicyType getPolicyType() {
    return policyType;
  }

  public void setPolicyType(PerfInspectorPolicyType policyType) {
    this.policyType = policyType;
  }


  @Override
  public boolean equals(java.lang.Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    ApiClustersPerfInspectorArgs apiClustersPerfInspectorArgs = (ApiClustersPerfInspectorArgs) o;
    return Objects.equals(this.sourceCluster, apiClustersPerfInspectorArgs.sourceCluster) &&
        Objects.equals(this.targetCluster, apiClustersPerfInspectorArgs.targetCluster) &&
        Objects.equals(this.pingArgs, apiClustersPerfInspectorArgs.pingArgs) &&
        Objects.equals(this.bandwidthArgs, apiClustersPerfInspectorArgs.bandwidthArgs) &&
        Objects.equals(this.policyType, apiClustersPerfInspectorArgs.policyType);
  }

  @Override
  public int hashCode() {
    return Objects.hash(sourceCluster, targetCluster, pingArgs, bandwidthArgs, policyType);
  }


  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class ApiClustersPerfInspectorArgs {\n");
    
    sb.append("    sourceCluster: ").append(toIndentedString(sourceCluster)).append("\n");
    sb.append("    targetCluster: ").append(toIndentedString(targetCluster)).append("\n");
    sb.append("    pingArgs: ").append(toIndentedString(pingArgs)).append("\n");
    sb.append("    bandwidthArgs: ").append(toIndentedString(bandwidthArgs)).append("\n");
    sb.append("    policyType: ").append(toIndentedString(policyType)).append("\n");
    sb.append("}");
    return sb.toString();
  }

  /**
   * Convert the given object to string with each line indented by 4 spaces
   * (except the first line).
   */
  private String toIndentedString(java.lang.Object o) {
    if (o == null) {
      return "null";
    }
    return o.toString().replace("\n", "\n    ");
  }

}
