All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.amazonaws.services.ecs.model.Volume Maven / Gradle / Ivy

Go to download

The AWS Java SDK for the Amazon EC2 Container Service holds the client classes that are used for communicating with the Amazon EC2 Container Service

There is a newer version: 1.12.780
Show newest version
/*
 * Copyright 2019-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with
 * the License. A copy of the License is located at
 * 
 * http://aws.amazon.com/apache2.0
 * 
 * or in the "license" file accompanying this file. This file 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.
 */
package com.amazonaws.services.ecs.model;

import java.io.Serializable;
import javax.annotation.Generated;
import com.amazonaws.protocol.StructuredPojo;
import com.amazonaws.protocol.ProtocolMarshaller;

/**
 * 

* The data volume configuration for tasks launched using this task definition. Specifying a volume configuration in a * task definition is optional. The volume configuration may contain multiple volumes but only one volume configured at * launch is supported. Each volume defined in the volume configuration may only specify a name and one of * either configuredAtLaunch, dockerVolumeConfiguration, efsVolumeConfiguration, * fsxWindowsFileServerVolumeConfiguration, or host. If an empty volume configuration is * specified, by default Amazon ECS uses a host volume. For more information, see Using data volumes in * tasks. *

* * @see AWS API Documentation */ @Generated("com.amazonaws:aws-java-sdk-code-generator") public class Volume implements Serializable, Cloneable, StructuredPojo { /** *

* The name of the volume. Up to 255 letters (uppercase and lowercase), numbers, underscores, and hyphens are * allowed. *

*

* When using a volume configured at launch, the name is required and must also be specified as the * volume name in the ServiceVolumeConfiguration or TaskVolumeConfiguration parameter when * creating your service or standalone task. *

*

* For all other types of volumes, this name is referenced in the sourceVolume parameter of the * mountPoints object in the container definition. *

*

* When a volume is using the efsVolumeConfiguration, the name is required. *

*/ private String name; /** *

* This parameter is specified when you use bind mount host volumes. The contents of the host parameter * determine whether your bind mount host volume persists on the host container instance and where it's stored. If * the host parameter is empty, then the Docker daemon assigns a host path for your data volume. * However, the data isn't guaranteed to persist after the containers that are associated with it stop running. *

*

* Windows containers can mount whole directories on the same drive as $env:ProgramData. Windows * containers can't mount directories on a different drive, and mount point can't be across drives. For example, you * can mount C:\my\path:C:\my\path and D:\:D:\, but not D:\my\path:C:\my\path * or D:\:C:\my\path. *

*/ private HostVolumeProperties host; /** *

* This parameter is specified when you use Docker volumes. *

*

* Windows containers only support the use of the local driver. To use bind mounts, specify the * host parameter instead. *

* *

* Docker volumes aren't supported by tasks run on Fargate. *

*
*/ private DockerVolumeConfiguration dockerVolumeConfiguration; /** *

* This parameter is specified when you use an Amazon Elastic File System file system for task storage. *

*/ private EFSVolumeConfiguration efsVolumeConfiguration; /** *

* This parameter is specified when you use Amazon FSx for Windows File Server file system for task storage. *

*/ private FSxWindowsFileServerVolumeConfiguration fsxWindowsFileServerVolumeConfiguration; /** *

* Indicates whether the volume should be configured at launch time. This is used to create Amazon EBS volumes for * standalone tasks or tasks created as part of a service. Each task definition revision may only have one volume * configured at launch in the volume configuration. *

*

* To configure a volume at launch time, use this task definition revision and specify a * volumeConfigurations object when calling the CreateService, UpdateService, * RunTask or StartTask APIs. *

*/ private Boolean configuredAtLaunch; /** *

* The name of the volume. Up to 255 letters (uppercase and lowercase), numbers, underscores, and hyphens are * allowed. *

*

* When using a volume configured at launch, the name is required and must also be specified as the * volume name in the ServiceVolumeConfiguration or TaskVolumeConfiguration parameter when * creating your service or standalone task. *

*

* For all other types of volumes, this name is referenced in the sourceVolume parameter of the * mountPoints object in the container definition. *

*

* When a volume is using the efsVolumeConfiguration, the name is required. *

* * @param name * The name of the volume. Up to 255 letters (uppercase and lowercase), numbers, underscores, and hyphens are * allowed.

*

* When using a volume configured at launch, the name is required and must also be specified as * the volume name in the ServiceVolumeConfiguration or TaskVolumeConfiguration * parameter when creating your service or standalone task. *

*

* For all other types of volumes, this name is referenced in the sourceVolume parameter of the * mountPoints object in the container definition. *

*

* When a volume is using the efsVolumeConfiguration, the name is required. */ public void setName(String name) { this.name = name; } /** *

* The name of the volume. Up to 255 letters (uppercase and lowercase), numbers, underscores, and hyphens are * allowed. *

*

* When using a volume configured at launch, the name is required and must also be specified as the * volume name in the ServiceVolumeConfiguration or TaskVolumeConfiguration parameter when * creating your service or standalone task. *

*

* For all other types of volumes, this name is referenced in the sourceVolume parameter of the * mountPoints object in the container definition. *

*

* When a volume is using the efsVolumeConfiguration, the name is required. *

* * @return The name of the volume. Up to 255 letters (uppercase and lowercase), numbers, underscores, and hyphens * are allowed.

*

* When using a volume configured at launch, the name is required and must also be specified as * the volume name in the ServiceVolumeConfiguration or TaskVolumeConfiguration * parameter when creating your service or standalone task. *

*

* For all other types of volumes, this name is referenced in the sourceVolume parameter of the * mountPoints object in the container definition. *

*

* When a volume is using the efsVolumeConfiguration, the name is required. */ public String getName() { return this.name; } /** *

* The name of the volume. Up to 255 letters (uppercase and lowercase), numbers, underscores, and hyphens are * allowed. *

*

* When using a volume configured at launch, the name is required and must also be specified as the * volume name in the ServiceVolumeConfiguration or TaskVolumeConfiguration parameter when * creating your service or standalone task. *

*

* For all other types of volumes, this name is referenced in the sourceVolume parameter of the * mountPoints object in the container definition. *

*

* When a volume is using the efsVolumeConfiguration, the name is required. *

* * @param name * The name of the volume. Up to 255 letters (uppercase and lowercase), numbers, underscores, and hyphens are * allowed.

*

* When using a volume configured at launch, the name is required and must also be specified as * the volume name in the ServiceVolumeConfiguration or TaskVolumeConfiguration * parameter when creating your service or standalone task. *

*

* For all other types of volumes, this name is referenced in the sourceVolume parameter of the * mountPoints object in the container definition. *

*

* When a volume is using the efsVolumeConfiguration, the name is required. * @return Returns a reference to this object so that method calls can be chained together. */ public Volume withName(String name) { setName(name); return this; } /** *

* This parameter is specified when you use bind mount host volumes. The contents of the host parameter * determine whether your bind mount host volume persists on the host container instance and where it's stored. If * the host parameter is empty, then the Docker daemon assigns a host path for your data volume. * However, the data isn't guaranteed to persist after the containers that are associated with it stop running. *

*

* Windows containers can mount whole directories on the same drive as $env:ProgramData. Windows * containers can't mount directories on a different drive, and mount point can't be across drives. For example, you * can mount C:\my\path:C:\my\path and D:\:D:\, but not D:\my\path:C:\my\path * or D:\:C:\my\path. *

* * @param host * This parameter is specified when you use bind mount host volumes. The contents of the host * parameter determine whether your bind mount host volume persists on the host container instance and where * it's stored. If the host parameter is empty, then the Docker daemon assigns a host path for * your data volume. However, the data isn't guaranteed to persist after the containers that are associated * with it stop running.

*

* Windows containers can mount whole directories on the same drive as $env:ProgramData. Windows * containers can't mount directories on a different drive, and mount point can't be across drives. For * example, you can mount C:\my\path:C:\my\path and D:\:D:\, but not * D:\my\path:C:\my\path or D:\:C:\my\path. */ public void setHost(HostVolumeProperties host) { this.host = host; } /** *

* This parameter is specified when you use bind mount host volumes. The contents of the host parameter * determine whether your bind mount host volume persists on the host container instance and where it's stored. If * the host parameter is empty, then the Docker daemon assigns a host path for your data volume. * However, the data isn't guaranteed to persist after the containers that are associated with it stop running. *

*

* Windows containers can mount whole directories on the same drive as $env:ProgramData. Windows * containers can't mount directories on a different drive, and mount point can't be across drives. For example, you * can mount C:\my\path:C:\my\path and D:\:D:\, but not D:\my\path:C:\my\path * or D:\:C:\my\path. *

* * @return This parameter is specified when you use bind mount host volumes. The contents of the host * parameter determine whether your bind mount host volume persists on the host container instance and where * it's stored. If the host parameter is empty, then the Docker daemon assigns a host path for * your data volume. However, the data isn't guaranteed to persist after the containers that are associated * with it stop running.

*

* Windows containers can mount whole directories on the same drive as $env:ProgramData. * Windows containers can't mount directories on a different drive, and mount point can't be across drives. * For example, you can mount C:\my\path:C:\my\path and D:\:D:\, but not * D:\my\path:C:\my\path or D:\:C:\my\path. */ public HostVolumeProperties getHost() { return this.host; } /** *

* This parameter is specified when you use bind mount host volumes. The contents of the host parameter * determine whether your bind mount host volume persists on the host container instance and where it's stored. If * the host parameter is empty, then the Docker daemon assigns a host path for your data volume. * However, the data isn't guaranteed to persist after the containers that are associated with it stop running. *

*

* Windows containers can mount whole directories on the same drive as $env:ProgramData. Windows * containers can't mount directories on a different drive, and mount point can't be across drives. For example, you * can mount C:\my\path:C:\my\path and D:\:D:\, but not D:\my\path:C:\my\path * or D:\:C:\my\path. *

* * @param host * This parameter is specified when you use bind mount host volumes. The contents of the host * parameter determine whether your bind mount host volume persists on the host container instance and where * it's stored. If the host parameter is empty, then the Docker daemon assigns a host path for * your data volume. However, the data isn't guaranteed to persist after the containers that are associated * with it stop running.

*

* Windows containers can mount whole directories on the same drive as $env:ProgramData. Windows * containers can't mount directories on a different drive, and mount point can't be across drives. For * example, you can mount C:\my\path:C:\my\path and D:\:D:\, but not * D:\my\path:C:\my\path or D:\:C:\my\path. * @return Returns a reference to this object so that method calls can be chained together. */ public Volume withHost(HostVolumeProperties host) { setHost(host); return this; } /** *

* This parameter is specified when you use Docker volumes. *

*

* Windows containers only support the use of the local driver. To use bind mounts, specify the * host parameter instead. *

* *

* Docker volumes aren't supported by tasks run on Fargate. *

*
* * @param dockerVolumeConfiguration * This parameter is specified when you use Docker volumes.

*

* Windows containers only support the use of the local driver. To use bind mounts, specify the * host parameter instead. *

* *

* Docker volumes aren't supported by tasks run on Fargate. *

*/ public void setDockerVolumeConfiguration(DockerVolumeConfiguration dockerVolumeConfiguration) { this.dockerVolumeConfiguration = dockerVolumeConfiguration; } /** *

* This parameter is specified when you use Docker volumes. *

*

* Windows containers only support the use of the local driver. To use bind mounts, specify the * host parameter instead. *

* *

* Docker volumes aren't supported by tasks run on Fargate. *

*
* * @return This parameter is specified when you use Docker volumes.

*

* Windows containers only support the use of the local driver. To use bind mounts, specify the * host parameter instead. *

* *

* Docker volumes aren't supported by tasks run on Fargate. *

*/ public DockerVolumeConfiguration getDockerVolumeConfiguration() { return this.dockerVolumeConfiguration; } /** *

* This parameter is specified when you use Docker volumes. *

*

* Windows containers only support the use of the local driver. To use bind mounts, specify the * host parameter instead. *

* *

* Docker volumes aren't supported by tasks run on Fargate. *

*
* * @param dockerVolumeConfiguration * This parameter is specified when you use Docker volumes.

*

* Windows containers only support the use of the local driver. To use bind mounts, specify the * host parameter instead. *

* *

* Docker volumes aren't supported by tasks run on Fargate. *

* @return Returns a reference to this object so that method calls can be chained together. */ public Volume withDockerVolumeConfiguration(DockerVolumeConfiguration dockerVolumeConfiguration) { setDockerVolumeConfiguration(dockerVolumeConfiguration); return this; } /** *

* This parameter is specified when you use an Amazon Elastic File System file system for task storage. *

* * @param efsVolumeConfiguration * This parameter is specified when you use an Amazon Elastic File System file system for task storage. */ public void setEfsVolumeConfiguration(EFSVolumeConfiguration efsVolumeConfiguration) { this.efsVolumeConfiguration = efsVolumeConfiguration; } /** *

* This parameter is specified when you use an Amazon Elastic File System file system for task storage. *

* * @return This parameter is specified when you use an Amazon Elastic File System file system for task storage. */ public EFSVolumeConfiguration getEfsVolumeConfiguration() { return this.efsVolumeConfiguration; } /** *

* This parameter is specified when you use an Amazon Elastic File System file system for task storage. *

* * @param efsVolumeConfiguration * This parameter is specified when you use an Amazon Elastic File System file system for task storage. * @return Returns a reference to this object so that method calls can be chained together. */ public Volume withEfsVolumeConfiguration(EFSVolumeConfiguration efsVolumeConfiguration) { setEfsVolumeConfiguration(efsVolumeConfiguration); return this; } /** *

* This parameter is specified when you use Amazon FSx for Windows File Server file system for task storage. *

* * @param fsxWindowsFileServerVolumeConfiguration * This parameter is specified when you use Amazon FSx for Windows File Server file system for task storage. */ public void setFsxWindowsFileServerVolumeConfiguration(FSxWindowsFileServerVolumeConfiguration fsxWindowsFileServerVolumeConfiguration) { this.fsxWindowsFileServerVolumeConfiguration = fsxWindowsFileServerVolumeConfiguration; } /** *

* This parameter is specified when you use Amazon FSx for Windows File Server file system for task storage. *

* * @return This parameter is specified when you use Amazon FSx for Windows File Server file system for task storage. */ public FSxWindowsFileServerVolumeConfiguration getFsxWindowsFileServerVolumeConfiguration() { return this.fsxWindowsFileServerVolumeConfiguration; } /** *

* This parameter is specified when you use Amazon FSx for Windows File Server file system for task storage. *

* * @param fsxWindowsFileServerVolumeConfiguration * This parameter is specified when you use Amazon FSx for Windows File Server file system for task storage. * @return Returns a reference to this object so that method calls can be chained together. */ public Volume withFsxWindowsFileServerVolumeConfiguration(FSxWindowsFileServerVolumeConfiguration fsxWindowsFileServerVolumeConfiguration) { setFsxWindowsFileServerVolumeConfiguration(fsxWindowsFileServerVolumeConfiguration); return this; } /** *

* Indicates whether the volume should be configured at launch time. This is used to create Amazon EBS volumes for * standalone tasks or tasks created as part of a service. Each task definition revision may only have one volume * configured at launch in the volume configuration. *

*

* To configure a volume at launch time, use this task definition revision and specify a * volumeConfigurations object when calling the CreateService, UpdateService, * RunTask or StartTask APIs. *

* * @param configuredAtLaunch * Indicates whether the volume should be configured at launch time. This is used to create Amazon EBS * volumes for standalone tasks or tasks created as part of a service. Each task definition revision may only * have one volume configured at launch in the volume configuration.

*

* To configure a volume at launch time, use this task definition revision and specify a * volumeConfigurations object when calling the CreateService, * UpdateService, RunTask or StartTask APIs. */ public void setConfiguredAtLaunch(Boolean configuredAtLaunch) { this.configuredAtLaunch = configuredAtLaunch; } /** *

* Indicates whether the volume should be configured at launch time. This is used to create Amazon EBS volumes for * standalone tasks or tasks created as part of a service. Each task definition revision may only have one volume * configured at launch in the volume configuration. *

*

* To configure a volume at launch time, use this task definition revision and specify a * volumeConfigurations object when calling the CreateService, UpdateService, * RunTask or StartTask APIs. *

* * @return Indicates whether the volume should be configured at launch time. This is used to create Amazon EBS * volumes for standalone tasks or tasks created as part of a service. Each task definition revision may * only have one volume configured at launch in the volume configuration.

*

* To configure a volume at launch time, use this task definition revision and specify a * volumeConfigurations object when calling the CreateService, * UpdateService, RunTask or StartTask APIs. */ public Boolean getConfiguredAtLaunch() { return this.configuredAtLaunch; } /** *

* Indicates whether the volume should be configured at launch time. This is used to create Amazon EBS volumes for * standalone tasks or tasks created as part of a service. Each task definition revision may only have one volume * configured at launch in the volume configuration. *

*

* To configure a volume at launch time, use this task definition revision and specify a * volumeConfigurations object when calling the CreateService, UpdateService, * RunTask or StartTask APIs. *

* * @param configuredAtLaunch * Indicates whether the volume should be configured at launch time. This is used to create Amazon EBS * volumes for standalone tasks or tasks created as part of a service. Each task definition revision may only * have one volume configured at launch in the volume configuration.

*

* To configure a volume at launch time, use this task definition revision and specify a * volumeConfigurations object when calling the CreateService, * UpdateService, RunTask or StartTask APIs. * @return Returns a reference to this object so that method calls can be chained together. */ public Volume withConfiguredAtLaunch(Boolean configuredAtLaunch) { setConfiguredAtLaunch(configuredAtLaunch); return this; } /** *

* Indicates whether the volume should be configured at launch time. This is used to create Amazon EBS volumes for * standalone tasks or tasks created as part of a service. Each task definition revision may only have one volume * configured at launch in the volume configuration. *

*

* To configure a volume at launch time, use this task definition revision and specify a * volumeConfigurations object when calling the CreateService, UpdateService, * RunTask or StartTask APIs. *

* * @return Indicates whether the volume should be configured at launch time. This is used to create Amazon EBS * volumes for standalone tasks or tasks created as part of a service. Each task definition revision may * only have one volume configured at launch in the volume configuration.

*

* To configure a volume at launch time, use this task definition revision and specify a * volumeConfigurations object when calling the CreateService, * UpdateService, RunTask or StartTask APIs. */ public Boolean isConfiguredAtLaunch() { return this.configuredAtLaunch; } /** * Returns a string representation of this object. This is useful for testing and debugging. Sensitive data will be * redacted from this string using a placeholder value. * * @return A string representation of this object. * * @see java.lang.Object#toString() */ @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("{"); if (getName() != null) sb.append("Name: ").append(getName()).append(","); if (getHost() != null) sb.append("Host: ").append(getHost()).append(","); if (getDockerVolumeConfiguration() != null) sb.append("DockerVolumeConfiguration: ").append(getDockerVolumeConfiguration()).append(","); if (getEfsVolumeConfiguration() != null) sb.append("EfsVolumeConfiguration: ").append(getEfsVolumeConfiguration()).append(","); if (getFsxWindowsFileServerVolumeConfiguration() != null) sb.append("FsxWindowsFileServerVolumeConfiguration: ").append(getFsxWindowsFileServerVolumeConfiguration()).append(","); if (getConfiguredAtLaunch() != null) sb.append("ConfiguredAtLaunch: ").append(getConfiguredAtLaunch()); sb.append("}"); return sb.toString(); } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (obj instanceof Volume == false) return false; Volume other = (Volume) obj; if (other.getName() == null ^ this.getName() == null) return false; if (other.getName() != null && other.getName().equals(this.getName()) == false) return false; if (other.getHost() == null ^ this.getHost() == null) return false; if (other.getHost() != null && other.getHost().equals(this.getHost()) == false) return false; if (other.getDockerVolumeConfiguration() == null ^ this.getDockerVolumeConfiguration() == null) return false; if (other.getDockerVolumeConfiguration() != null && other.getDockerVolumeConfiguration().equals(this.getDockerVolumeConfiguration()) == false) return false; if (other.getEfsVolumeConfiguration() == null ^ this.getEfsVolumeConfiguration() == null) return false; if (other.getEfsVolumeConfiguration() != null && other.getEfsVolumeConfiguration().equals(this.getEfsVolumeConfiguration()) == false) return false; if (other.getFsxWindowsFileServerVolumeConfiguration() == null ^ this.getFsxWindowsFileServerVolumeConfiguration() == null) return false; if (other.getFsxWindowsFileServerVolumeConfiguration() != null && other.getFsxWindowsFileServerVolumeConfiguration().equals(this.getFsxWindowsFileServerVolumeConfiguration()) == false) return false; if (other.getConfiguredAtLaunch() == null ^ this.getConfiguredAtLaunch() == null) return false; if (other.getConfiguredAtLaunch() != null && other.getConfiguredAtLaunch().equals(this.getConfiguredAtLaunch()) == false) return false; return true; } @Override public int hashCode() { final int prime = 31; int hashCode = 1; hashCode = prime * hashCode + ((getName() == null) ? 0 : getName().hashCode()); hashCode = prime * hashCode + ((getHost() == null) ? 0 : getHost().hashCode()); hashCode = prime * hashCode + ((getDockerVolumeConfiguration() == null) ? 0 : getDockerVolumeConfiguration().hashCode()); hashCode = prime * hashCode + ((getEfsVolumeConfiguration() == null) ? 0 : getEfsVolumeConfiguration().hashCode()); hashCode = prime * hashCode + ((getFsxWindowsFileServerVolumeConfiguration() == null) ? 0 : getFsxWindowsFileServerVolumeConfiguration().hashCode()); hashCode = prime * hashCode + ((getConfiguredAtLaunch() == null) ? 0 : getConfiguredAtLaunch().hashCode()); return hashCode; } @Override public Volume clone() { try { return (Volume) super.clone(); } catch (CloneNotSupportedException e) { throw new IllegalStateException("Got a CloneNotSupportedException from Object.clone() " + "even though we're Cloneable!", e); } } @com.amazonaws.annotation.SdkInternalApi @Override public void marshall(ProtocolMarshaller protocolMarshaller) { com.amazonaws.services.ecs.model.transform.VolumeMarshaller.getInstance().marshall(this, protocolMarshaller); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy