/*
* Copyright 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.
*/
/*
* Do not modify this file. This file is generated from the ec2-2016-11-15.normal.json service model.
*/
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.EC2.Model
{
///
/// Container for the parameters to the CreateFleet operation.
/// Creates an EC2 Fleet that contains the configuration information for On-Demand Instances
/// and Spot Instances. Instances are launched immediately if there is available capacity.
///
///
///
/// A single EC2 Fleet can include multiple launch specifications that vary by instance
/// type, AMI, Availability Zone, or subnet.
///
///
///
/// For more information, see EC2
/// Fleet in the Amazon EC2 User Guide.
///
///
public partial class CreateFleetRequest : AmazonEC2Request
{
private string _clientToken;
private string _context;
private FleetExcessCapacityTerminationPolicy _excessCapacityTerminationPolicy;
private List _launchTemplateConfigs = new List();
private OnDemandOptionsRequest _onDemandOptions;
private bool? _replaceUnhealthyInstances;
private SpotOptionsRequest _spotOptions;
private List _tagSpecifications = new List();
private TargetCapacitySpecificationRequest _targetCapacitySpecification;
private bool? _terminateInstancesWithExpiration;
private FleetType _type;
private DateTime? _validFromUtc;
private DateTime? _validUntilUtc;
///
/// Gets and sets the property ClientToken.
///
/// Unique, case-sensitive identifier that you provide to ensure the idempotency of the
/// request. For more information, see Ensuring
/// idempotency.
///
///
public string ClientToken
{
get { return this._clientToken; }
set { this._clientToken = value; }
}
// Check to see if ClientToken property is set
internal bool IsSetClientToken()
{
return this._clientToken != null;
}
///
/// Gets and sets the property Context.
///
/// Reserved.
///
///
public string Context
{
get { return this._context; }
set { this._context = value; }
}
// Check to see if Context property is set
internal bool IsSetContext()
{
return this._context != null;
}
///
/// Gets and sets the property ExcessCapacityTerminationPolicy.
///
/// Indicates whether running instances should be terminated if the total target capacity
/// of the EC2 Fleet is decreased below the current size of the EC2 Fleet.
///
///
///
/// Supported only for fleets of type maintain
.
///
///
public FleetExcessCapacityTerminationPolicy ExcessCapacityTerminationPolicy
{
get { return this._excessCapacityTerminationPolicy; }
set { this._excessCapacityTerminationPolicy = value; }
}
// Check to see if ExcessCapacityTerminationPolicy property is set
internal bool IsSetExcessCapacityTerminationPolicy()
{
return this._excessCapacityTerminationPolicy != null;
}
///
/// Gets and sets the property LaunchTemplateConfigs.
///
/// The configuration for the EC2 Fleet.
///
///
[AWSProperty(Required=true, Min=0, Max=50)]
public List LaunchTemplateConfigs
{
get { return this._launchTemplateConfigs; }
set { this._launchTemplateConfigs = value; }
}
// Check to see if LaunchTemplateConfigs property is set
internal bool IsSetLaunchTemplateConfigs()
{
return this._launchTemplateConfigs != null && this._launchTemplateConfigs.Count > 0;
}
///
/// Gets and sets the property OnDemandOptions.
///
/// Describes the configuration of On-Demand Instances in an EC2 Fleet.
///
///
public OnDemandOptionsRequest OnDemandOptions
{
get { return this._onDemandOptions; }
set { this._onDemandOptions = value; }
}
// Check to see if OnDemandOptions property is set
internal bool IsSetOnDemandOptions()
{
return this._onDemandOptions != null;
}
///
/// Gets and sets the property ReplaceUnhealthyInstances.
///
/// Indicates whether EC2 Fleet should replace unhealthy Spot Instances. Supported only
/// for fleets of type maintain
. For more information, see EC2
/// Fleet health checks in the Amazon EC2 User Guide.
///
///
public bool ReplaceUnhealthyInstances
{
get { return this._replaceUnhealthyInstances.GetValueOrDefault(); }
set { this._replaceUnhealthyInstances = value; }
}
// Check to see if ReplaceUnhealthyInstances property is set
internal bool IsSetReplaceUnhealthyInstances()
{
return this._replaceUnhealthyInstances.HasValue;
}
///
/// Gets and sets the property SpotOptions.
///
/// Describes the configuration of Spot Instances in an EC2 Fleet.
///
///
public SpotOptionsRequest SpotOptions
{
get { return this._spotOptions; }
set { this._spotOptions = value; }
}
// Check to see if SpotOptions property is set
internal bool IsSetSpotOptions()
{
return this._spotOptions != null;
}
///
/// Gets and sets the property TagSpecifications.
///
/// The key-value pair for tagging the EC2 Fleet request on creation. For more information,
/// see Tagging
/// your resources.
///
///
///
/// If the fleet type is instant
, specify a resource type of fleet
/// to tag the fleet or instance
to tag the instances at launch.
///
///
///
/// If the fleet type is maintain
or request
, specify a resource
/// type of fleet
to tag the fleet. You cannot specify a resource type of
/// instance
. To tag instances at launch, specify the tags in a launch
/// template.
///
///
public List TagSpecifications
{
get { return this._tagSpecifications; }
set { this._tagSpecifications = value; }
}
// Check to see if TagSpecifications property is set
internal bool IsSetTagSpecifications()
{
return this._tagSpecifications != null && this._tagSpecifications.Count > 0;
}
///
/// Gets and sets the property TargetCapacitySpecification.
///
/// The number of units to request.
///
///
[AWSProperty(Required=true)]
public TargetCapacitySpecificationRequest TargetCapacitySpecification
{
get { return this._targetCapacitySpecification; }
set { this._targetCapacitySpecification = value; }
}
// Check to see if TargetCapacitySpecification property is set
internal bool IsSetTargetCapacitySpecification()
{
return this._targetCapacitySpecification != null;
}
///
/// Gets and sets the property TerminateInstancesWithExpiration.
///
/// Indicates whether running instances should be terminated when the EC2 Fleet expires.
///
///
public bool TerminateInstancesWithExpiration
{
get { return this._terminateInstancesWithExpiration.GetValueOrDefault(); }
set { this._terminateInstancesWithExpiration = value; }
}
// Check to see if TerminateInstancesWithExpiration property is set
internal bool IsSetTerminateInstancesWithExpiration()
{
return this._terminateInstancesWithExpiration.HasValue;
}
///
/// Gets and sets the property Type.
///
/// The fleet type. The default value is maintain
.
///
/// -
///
///
maintain
- The EC2 Fleet places an asynchronous request for your desired
/// capacity, and continues to maintain your desired Spot capacity by replenishing interrupted
/// Spot Instances.
///
/// -
///
///
request
- The EC2 Fleet places an asynchronous one-time request for
/// your desired capacity, but does submit Spot requests in alternative capacity pools
/// if Spot capacity is unavailable, and does not maintain Spot capacity if Spot Instances
/// are interrupted.
///
/// -
///
///
instant
- The EC2 Fleet places a synchronous one-time request for your
/// desired capacity, and returns errors for any instances that could not be launched.
///
///
///
/// For more information, see EC2
/// Fleet request types in the Amazon EC2 User Guide.
///
///
public FleetType Type
{
get { return this._type; }
set { this._type = value; }
}
// Check to see if Type property is set
internal bool IsSetType()
{
return this._type != null;
}
///
/// Gets and sets the property ValidFromUtc.
///
/// The start date and time of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ).
/// The default is to start fulfilling the request immediately.
///
///
public DateTime ValidFromUtc
{
get { return this._validFromUtc.GetValueOrDefault(); }
set { this._validFrom = this._validFromUtc = value; }
}
// Check to see if ValidFromUtc property is set
internal bool IsSetValidFromUtc()
{
return this._validFromUtc.HasValue;
}
///
/// Gets and sets the property ValidUntilUtc.
///
/// The end date and time of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ).
/// At this point, no new EC2 Fleet requests are placed or able to fulfill the request.
/// If no value is specified, the request remains until you cancel it.
///
///
public DateTime ValidUntilUtc
{
get { return this._validUntilUtc.GetValueOrDefault(); }
set { this._validUntil = this._validUntilUtc = value; }
}
// Check to see if ValidUntilUtc property is set
internal bool IsSetValidUntilUtc()
{
return this._validUntilUtc.HasValue;
}
#region Backwards compatible properties
private DateTime? _validFrom;
private DateTime? _validUntil;
///
/// Gets and sets the property ValidFromUtc.
///
/// This property is deprecated. Setting this property results in non-UTC DateTimes not
/// being marshalled correctly. Use ValidFromUtc instead. Setting either ValidFrom or
/// ValidFromUtc results in both ValidFrom and ValidFromUtc being assigned, the latest
/// assignment to either one of the two property is reflected in the value of both. ValidFrom
/// is provided for backwards compatibility only and assigning a non-Utc DateTime to it
/// results in the wrong timestamp being passed to the service.
///
///
///
/// The start date and time of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ).
/// The default is to start fulfilling the request immediately.
///
///
[Obsolete("Setting this property results in non-UTC DateTimes not being marshalled correctly. " +
"Use ValidFromUtc instead. Setting either ValidFrom or ValidFromUtc results in both ValidFrom and " +
"ValidFromUtc being assigned, the latest assignment to either one of the two property is " +
"reflected in the value of both. ValidFrom is provided for backwards compatibility only and " +
"assigning a non-Utc DateTime to it results in the wrong timestamp being passed to the service.", false)]
public DateTime ValidFrom
{
get { return this._validFrom.GetValueOrDefault(); }
set
{
this._validFrom = value;
this._validFromUtc = new DateTime(value.Ticks, DateTimeKind.Utc);
}
}
///
/// Gets and sets the property ValidUntilUtc.
///
/// This property is deprecated. Setting this property results in non-UTC DateTimes not
/// being marshalled correctly. Use ValidUntilUtc instead. Setting either ValidUntil or
/// ValidUntilUtc results in both ValidUntil and ValidUntilUtc being assigned, the latest
/// assignment to either one of the two property is reflected in the value of both. ValidUntil
/// is provided for backwards compatibility only and assigning a non-Utc DateTime to it
/// results in the wrong timestamp being passed to the service.
///
///
///
/// The end date and time of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ).
/// At this point, no new EC2 Fleet requests are placed or able to fulfill the request.
/// If no value is specified, the request remains until you cancel it.
///
///
[Obsolete("Setting this property results in non-UTC DateTimes not being marshalled correctly. " +
"Use ValidUntilUtc instead. Setting either ValidUntil or ValidUntilUtc results in both ValidUntil and " +
"ValidUntilUtc being assigned, the latest assignment to either one of the two property is " +
"reflected in the value of both. ValidUntil is provided for backwards compatibility only and " +
"assigning a non-Utc DateTime to it results in the wrong timestamp being passed to the service.", false)]
public DateTime ValidUntil
{
get { return this._validUntil.GetValueOrDefault(); }
set
{
this._validUntil = value;
this._validUntilUtc = new DateTime(value.Ticks, DateTimeKind.Utc);
}
}
#endregion
}
}