/*
 * 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 rds-2014-10-31.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.RDS.Model
{
    /// 
    /// Container for the parameters to the CreateDBSecurityGroup operation.
    /// Creates a new DB security group. DB security groups control access to a DB instance.
    /// 
    ///  
    /// 
    /// A DB security group controls access to EC2-Classic DB instances that are not in a
    /// VPC.
    /// 
    ///   
    /// 
    /// EC2-Classic was retired on August 15, 2022. If you haven't migrated from EC2-Classic
    /// to a VPC, we recommend that you migrate as soon as possible. For more information,
    /// see Migrate
    /// from EC2-Classic to a VPC in the Amazon EC2 User Guide, the blog EC2-Classic
    /// Networking is Retiring – Here’s How to Prepare, and Moving
    /// a DB instance not in a VPC into a VPC in the Amazon RDS User Guide.
    /// 
    ///  
    /// 
    public partial class CreateDBSecurityGroupRequest : AmazonRDSRequest
    {
        private string _dbSecurityGroupDescription;
        private string _dbSecurityGroupName;
        private List _tags = new List();
        /// 
        /// Empty constructor used to set  properties independently even when a simple constructor is available
        /// 
        public CreateDBSecurityGroupRequest() { }
        /// 
        /// Instantiates CreateDBSecurityGroupRequest with the parameterized properties
        /// 
        /// The name for the DB security group. This value is stored as a lowercase string. Constraints:  -  Must be 1 to 255 letters, numbers, or hyphens. 
-  First character must be a letter 
-  Can't end with a hyphen or contain two consecutive hyphens 
-  Must not be "Default" 
Example:mysecuritygroup 
        /// The description for the DB security group.
        public CreateDBSecurityGroupRequest(string dbSecurityGroupName, string dbSecurityGroupDescription)
        {
            _dbSecurityGroupName = dbSecurityGroupName;
            _dbSecurityGroupDescription = dbSecurityGroupDescription;
        }
        /// 
        /// Gets and sets the property DBSecurityGroupDescription. 
        /// 
        /// The description for the DB security group.
        /// 
        /// 
        [AWSProperty(Required=true)]
        public string DBSecurityGroupDescription
        {
            get { return this._dbSecurityGroupDescription; }
            set { this._dbSecurityGroupDescription = value; }
        }
        // Check to see if DBSecurityGroupDescription property is set
        internal bool IsSetDBSecurityGroupDescription()
        {
            return this._dbSecurityGroupDescription != null;
        }
        /// 
        /// Gets and sets the property DBSecurityGroupName. 
        /// 
        /// The name for the DB security group. This value is stored as a lowercase string.
        /// 
        ///  
        /// 
        /// Constraints:
        /// 
        ///   -  
        /// 
        /// Must be 1 to 255 letters, numbers, or hyphens.
        /// 
        ///  
-  
        /// 
        /// First character must be a letter
        /// 
        ///  
-  
        /// 
        /// Can't end with a hyphen or contain two consecutive hyphens
        /// 
        ///  
-  
        /// 
        /// Must not be "Default"
        /// 
        ///  
/// 
        /// Example:mysecuritygroup 
        /// 
        /// 
        [AWSProperty(Required=true)]
        public string DBSecurityGroupName
        {
            get { return this._dbSecurityGroupName; }
            set { this._dbSecurityGroupName = value; }
        }
        // Check to see if DBSecurityGroupName property is set
        internal bool IsSetDBSecurityGroupName()
        {
            return this._dbSecurityGroupName != null;
        }
        /// 
        /// Gets and sets the property Tags. 
        /// 
        /// Tags to assign to the DB security group.
        /// 
        /// 
        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; 
        }
    }
}