/*
* 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 servicediscovery-2017-03-14.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.ServiceDiscovery.Model
{
///
/// Container for the parameters to the CreateService operation.
/// Creates a service. This action defines the configuration for the following entities:
///
/// -
///
/// For public and private DNS namespaces, one of the following combinations of DNS records
/// in Amazon Route 53:
///
///
-
///
///
A
///
/// -
///
///
AAAA
///
/// -
///
///
A
and AAAA
///
/// -
///
///
SRV
///
/// -
///
///
CNAME
///
///
-
///
/// Optionally, a health check
///
///
///
/// After you create the service, you can submit a RegisterInstance
/// request, and Cloud Map uses the values in the configuration to create the specified
/// entities.
///
///
///
/// For the current quota on the number of instances that you can register using the same
/// namespace and using the same service, see Cloud
/// Map quotas in the Cloud Map Developer Guide.
///
///
public partial class CreateServiceRequest : AmazonServiceDiscoveryRequest
{
private string _creatorRequestId;
private string _description;
private DnsConfig _dnsConfig;
private HealthCheckConfig _healthCheckConfig;
private HealthCheckCustomConfig _healthCheckCustomConfig;
private string _name;
private string _namespaceId;
private List _tags = new List();
private ServiceTypeOption _type;
///
/// Gets and sets the property CreatorRequestId.
///
/// A unique string that identifies the request and that allows failed CreateService
/// requests to be retried without the risk of running the operation twice. CreatorRequestId
/// can be any unique string (for example, a date/timestamp).
///
///
[AWSProperty(Max=64)]
public string CreatorRequestId
{
get { return this._creatorRequestId; }
set { this._creatorRequestId = value; }
}
// Check to see if CreatorRequestId property is set
internal bool IsSetCreatorRequestId()
{
return this._creatorRequestId != null;
}
///
/// Gets and sets the property Description.
///
/// A description for the service.
///
///
[AWSProperty(Max=1024)]
public string Description
{
get { return this._description; }
set { this._description = value; }
}
// Check to see if Description property is set
internal bool IsSetDescription()
{
return this._description != null;
}
///
/// Gets and sets the property DnsConfig.
///
/// A complex type that contains information about the Amazon Route 53 records that you
/// want Cloud Map to create when you register an instance.
///
///
public DnsConfig DnsConfig
{
get { return this._dnsConfig; }
set { this._dnsConfig = value; }
}
// Check to see if DnsConfig property is set
internal bool IsSetDnsConfig()
{
return this._dnsConfig != null;
}
///
/// Gets and sets the property HealthCheckConfig.
///
/// Public DNS and HTTP namespaces only. A complex type that contains settings
/// for an optional Route 53 health check. If you specify settings for a health check,
/// Cloud Map associates the health check with all the Route 53 DNS records that you specify
/// in DnsConfig
.
///
///
///
/// If you specify a health check configuration, you can specify either HealthCheckCustomConfig
/// or HealthCheckConfig
but not both.
///
///
///
/// For information about the charges for health checks, see Cloud
/// Map Pricing.
///
///
public HealthCheckConfig HealthCheckConfig
{
get { return this._healthCheckConfig; }
set { this._healthCheckConfig = value; }
}
// Check to see if HealthCheckConfig property is set
internal bool IsSetHealthCheckConfig()
{
return this._healthCheckConfig != null;
}
///
/// Gets and sets the property HealthCheckCustomConfig.
///
/// A complex type that contains information about an optional custom health check.
///
///
///
/// If you specify a health check configuration, you can specify either HealthCheckCustomConfig
/// or HealthCheckConfig
but not both.
///
///
///
/// You can't add, update, or delete a HealthCheckCustomConfig
configuration
/// from an existing service.
///
///
public HealthCheckCustomConfig HealthCheckCustomConfig
{
get { return this._healthCheckCustomConfig; }
set { this._healthCheckCustomConfig = value; }
}
// Check to see if HealthCheckCustomConfig property is set
internal bool IsSetHealthCheckCustomConfig()
{
return this._healthCheckCustomConfig != null;
}
///
/// Gets and sets the property Name.
///
/// The name that you want to assign to the service.
///
///
///
/// Do not include sensitive information in the name if the namespace is discoverable
/// by public DNS queries.
///
///
///
/// If you want Cloud Map to create an SRV
record when you register an instance
/// and you're using a system that requires a specific SRV
format, such as
/// HAProxy, specify the following for Name
:
///
/// -
///
/// Start the name with an underscore (_), such as
_exampleservice
.
///
/// -
///
/// End the name with ._protocol, such as
._tcp
.
///
///
///
/// When you register an instance, Cloud Map creates an SRV
record and assigns
/// a name to the record by concatenating the service name and the namespace name (for
/// example,
///
///
///
/// _exampleservice._tcp.example.com
).
///
///
///
/// For services that are accessible by DNS queries, you can't create multiple services
/// with names that differ only by case (such as EXAMPLE and example). Otherwise, these
/// services have the same DNS name and can't be distinguished. However, if you use a
/// namespace that's only accessible by API calls, then you can create services that with
/// names that differ only by case.
///
///
///
[AWSProperty(Required=true)]
public string Name
{
get { return this._name; }
set { this._name = value; }
}
// Check to see if Name property is set
internal bool IsSetName()
{
return this._name != null;
}
///
/// Gets and sets the property NamespaceId.
///
/// The ID of the namespace that you want to use to create the service. The namespace
/// ID must be specified, but it can be specified either here or in the DnsConfig
/// object.
///
///
[AWSProperty(Max=64)]
public string NamespaceId
{
get { return this._namespaceId; }
set { this._namespaceId = value; }
}
// Check to see if NamespaceId property is set
internal bool IsSetNamespaceId()
{
return this._namespaceId != null;
}
///
/// Gets and sets the property Tags.
///
/// The tags to add to the service. Each tag consists of a key and an optional value that
/// you define. Tags keys can be up to 128 characters in length, and tag values can be
/// up to 256 characters in length.
///
///
[AWSProperty(Min=0, Max=200)]
public List Tags
{
get { return this._tags; }
set { this._tags = value; }
}
// Check to see if Tags property is set
internal bool IsSetTags()
{
return this._tags != null && this._tags.Count > 0;
}
///
/// Gets and sets the property Type.
///
/// If present, specifies that the service instances are only discoverable using the DiscoverInstances
/// API operation. No DNS records is registered for the service instances. The only valid
/// value is HTTP
.
///
///
public ServiceTypeOption Type
{
get { return this._type; }
set { this._type = value; }
}
// Check to see if Type property is set
internal bool IsSetType()
{
return this._type != null;
}
}
}