/*
 * 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.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 command to generate the docker cleanup script. This is applicable for cleanup operations where customers want to cleanup old docker images.
 */
@Schema(description = "Arguments used for the command to generate the docker cleanup script. This is applicable for cleanup operations where customers want to cleanup old docker images.")
@javax.annotation.Generated(value = "io.swagger.codegen.v3.generators.java.JavaClientCodegen", date = "2026-05-19T08:29:59.033Z[Etc/UTC]")

public class ApiGenerateCleanupDockerArgs {
  @SerializedName("remoteRepoUrl")
  private String remoteRepoUrl = null;

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

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

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

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

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

  @SerializedName("selectedFeaturesOnly")
  private Boolean selectedFeaturesOnly = null;

  public ApiGenerateCleanupDockerArgs remoteRepoUrl(String remoteRepoUrl) {
    this.remoteRepoUrl = remoteRepoUrl;
    return this;
  }

   /**
   * The url of the remote repository where the private cloud artifacts manifest is hosted
   * @return remoteRepoUrl
  **/
  @Schema(description = "The url of the remote repository where the private cloud artifacts manifest is hosted")
  public String getRemoteRepoUrl() {
    return remoteRepoUrl;
  }

  public void setRemoteRepoUrl(String remoteRepoUrl) {
    this.remoteRepoUrl = remoteRepoUrl;
  }

  public ApiGenerateCleanupDockerArgs dockerRegistry(String dockerRegistry) {
    this.dockerRegistry = dockerRegistry;
    return this;
  }

   /**
   * Optional. The url of the Docker Registry from which images will be cleaned up
   * @return dockerRegistry
  **/
  @Schema(description = "Optional. The url of the Docker Registry from which images will be cleaned up")
  public String getDockerRegistry() {
    return dockerRegistry;
  }

  public void setDockerRegistry(String dockerRegistry) {
    this.dockerRegistry = dockerRegistry;
  }

  public ApiGenerateCleanupDockerArgs controlPlaneUuid(String controlPlaneUuid) {
    this.controlPlaneUuid = controlPlaneUuid;
    return this;
  }

   /**
   * Optional. The uuid of the control plane, if cleaning up docker images for an upgrade
   * @return controlPlaneUuid
  **/
  @Schema(description = "Optional. The uuid of the control plane, if cleaning up docker images for an upgrade")
  public String getControlPlaneUuid() {
    return controlPlaneUuid;
  }

  public void setControlPlaneUuid(String controlPlaneUuid) {
    this.controlPlaneUuid = controlPlaneUuid;
  }

  public ApiGenerateCleanupDockerArgs oldManifestContent(String oldManifestContent) {
    this.oldManifestContent = oldManifestContent;
    return this;
  }

   /**
   * Optional. The old manifest.json content from the currently installed version. If controlPlaneUuid is provided, this will be automatically fetched from the database.
   * @return oldManifestContent
  **/
  @Schema(description = "Optional. The old manifest.json content from the currently installed version. If controlPlaneUuid is provided, this will be automatically fetched from the database.")
  public String getOldManifestContent() {
    return oldManifestContent;
  }

  public void setOldManifestContent(String oldManifestContent) {
    this.oldManifestContent = oldManifestContent;
  }

  public ApiGenerateCleanupDockerArgs newManifestContent(String newManifestContent) {
    this.newManifestContent = newManifestContent;
    return this;
  }

   /**
   * The new manifest.json content from the version being upgraded to. Required for delta-based cleanup to determine which images are no longer needed.
   * @return newManifestContent
  **/
  @Schema(description = "The new manifest.json content from the version being upgraded to. Required for delta-based cleanup to determine which images are no longer needed.")
  public String getNewManifestContent() {
    return newManifestContent;
  }

  public void setNewManifestContent(String newManifestContent) {
    this.newManifestContent = newManifestContent;
  }

  public ApiGenerateCleanupDockerArgs selectedFeatures(String selectedFeatures) {
    this.selectedFeatures = selectedFeatures;
    return this;
  }

   /**
   * Optional. The name of the feature(s) in a comma separated list that container images are associated with. When it is null, cleanup all the images from manifest.
   * @return selectedFeatures
  **/
  @Schema(description = "Optional. The name of the feature(s) in a comma separated list that container images are associated with. When it is null, cleanup all the images from manifest.")
  public String getSelectedFeatures() {
    return selectedFeatures;
  }

  public void setSelectedFeatures(String selectedFeatures) {
    this.selectedFeatures = selectedFeatures;
  }

  public ApiGenerateCleanupDockerArgs selectedFeaturesOnly(Boolean selectedFeaturesOnly) {
    this.selectedFeaturesOnly = selectedFeaturesOnly;
    return this;
  }

   /**
   * Optional. If true, then only images that belong to the selected features will be processed. If false, then images that don&#x27;t belong to any features will also be processed in addition to the ones that belong to the selected features.
   * @return selectedFeaturesOnly
  **/
  @Schema(required = true, description = "Optional. If true, then only images that belong to the selected features will be processed. If false, then images that don't belong to any features will also be processed in addition to the ones that belong to the selected features.")
  public Boolean isSelectedFeaturesOnly() {
    return selectedFeaturesOnly;
  }

  public void setSelectedFeaturesOnly(Boolean selectedFeaturesOnly) {
    this.selectedFeaturesOnly = selectedFeaturesOnly;
  }


  @Override
  public boolean equals(java.lang.Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    ApiGenerateCleanupDockerArgs apiGenerateCleanupDockerArgs = (ApiGenerateCleanupDockerArgs) o;
    return Objects.equals(this.remoteRepoUrl, apiGenerateCleanupDockerArgs.remoteRepoUrl) &&
        Objects.equals(this.dockerRegistry, apiGenerateCleanupDockerArgs.dockerRegistry) &&
        Objects.equals(this.controlPlaneUuid, apiGenerateCleanupDockerArgs.controlPlaneUuid) &&
        Objects.equals(this.oldManifestContent, apiGenerateCleanupDockerArgs.oldManifestContent) &&
        Objects.equals(this.newManifestContent, apiGenerateCleanupDockerArgs.newManifestContent) &&
        Objects.equals(this.selectedFeatures, apiGenerateCleanupDockerArgs.selectedFeatures) &&
        Objects.equals(this.selectedFeaturesOnly, apiGenerateCleanupDockerArgs.selectedFeaturesOnly);
  }

  @Override
  public int hashCode() {
    return Objects.hash(remoteRepoUrl, dockerRegistry, controlPlaneUuid, oldManifestContent, newManifestContent, selectedFeatures, selectedFeaturesOnly);
  }


  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class ApiGenerateCleanupDockerArgs {\n");
    
    sb.append("    remoteRepoUrl: ").append(toIndentedString(remoteRepoUrl)).append("\n");
    sb.append("    dockerRegistry: ").append(toIndentedString(dockerRegistry)).append("\n");
    sb.append("    controlPlaneUuid: ").append(toIndentedString(controlPlaneUuid)).append("\n");
    sb.append("    oldManifestContent: ").append(toIndentedString(oldManifestContent)).append("\n");
    sb.append("    newManifestContent: ").append(toIndentedString(newManifestContent)).append("\n");
    sb.append("    selectedFeatures: ").append(toIndentedString(selectedFeatures)).append("\n");
    sb.append("    selectedFeaturesOnly: ").append(toIndentedString(selectedFeaturesOnly)).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    ");
  }

}
