/// <summary>
 /// Validate the object.
 /// </summary>
 /// <exception cref="ValidationException">
 /// Thrown if validation fails
 /// </exception>
 public virtual void Validate()
 {
     if (CustomDomain != null)
     {
         CustomDomain.Validate();
     }
 }
 /// <summary>
 /// Initializes a new instance of the StorageAccountUpdateParameters
 /// class.
 /// </summary>
 /// <param name="tags">Resource tags</param>
 /// <param name="accountType">Gets or sets the account type. Note that
 /// StandardZRS and PremiumLRS accounts cannot be changed to other
 /// account types, and other account types cannot be changed to
 /// StandardZRS or PremiumLRS. Possible values include: 'Standard_LRS',
 /// 'Standard_ZRS', 'Standard_GRS', 'Standard_RAGRS',
 /// 'Premium_LRS'</param>
 /// <param name="customDomain">User domain assigned to the storage
 /// account. Name is the CNAME source. Only one custom domain is
 /// supported per storage account at this time. To clear the existing
 /// custom domain, use an empty string for the custom domain name
 /// property.</param>
 public StorageAccountUpdateParameters(IDictionary <string, string> tags = default(IDictionary <string, string>), AccountType?accountType = default(AccountType?), CustomDomain customDomain = default(CustomDomain))
 {
     Tags         = tags;
     AccountType  = accountType;
     CustomDomain = customDomain;
     CustomInit();
 }
 /// <summary>
 /// Initializes a new instance of the StorageAccount class.
 /// </summary>
 /// <param name="id">Resource Id</param>
 /// <param name="name">Resource name</param>
 /// <param name="type">Resource type</param>
 /// <param name="location">Resource location</param>
 /// <param name="tags">Resource tags</param>
 /// <param name="provisioningState">Gets the status of the storage
 /// account at the time the operation was called. Possible values
 /// include: 'Creating', 'ResolvingDNS', 'Succeeded'</param>
 /// <param name="accountType">Gets the type of the storage account.
 /// Possible values include: 'Standard_LRS', 'Standard_ZRS',
 /// 'Standard_GRS', 'Standard_RAGRS', 'Premium_LRS'</param>
 /// <param name="primaryEndpoints">Gets the URLs that are used to
 /// perform a retrieval of a public blob, queue or table object.Note
 /// that StandardZRS and PremiumLRS accounts only return the blob
 /// endpoint.</param>
 /// <param name="primaryLocation">Gets the location of the primary for
 /// the storage account.</param>
 /// <param name="statusOfPrimary">Gets the status indicating whether
 /// the primary location of the storage account is available or
 /// unavailable. Possible values include: 'Available',
 /// 'Unavailable'</param>
 /// <param name="lastGeoFailoverTime">Gets the timestamp of the most
 /// recent instance of a failover to the secondary location. Only the
 /// most recent timestamp is retained. This element is not returned if
 /// there has never been a failover instance. Only available if the
 /// accountType is StandardGRS or StandardRAGRS.</param>
 /// <param name="secondaryLocation">Gets the location of the geo
 /// replicated secondary for the storage account. Only available if the
 /// accountType is StandardGRS or StandardRAGRS.</param>
 /// <param name="statusOfSecondary">Gets the status indicating whether
 /// the secondary location of the storage account is available or
 /// unavailable. Only available if the accountType is StandardGRS or
 /// StandardRAGRS. Possible values include: 'Available',
 /// 'Unavailable'</param>
 /// <param name="creationTime">Gets the creation date and time of the
 /// storage account in UTC.</param>
 /// <param name="customDomain">Gets the user assigned custom domain
 /// assigned to this storage account.</param>
 /// <param name="secondaryEndpoints">Gets the URLs that are used to
 /// perform a retrieval of a public blob, queue or table object from
 /// the secondary location of the storage account. Only available if
 /// the accountType is StandardRAGRS.</param>
 public StorageAccount(string id = default(string), string name = default(string), string type = default(string), string location = default(string), IDictionary <string, string> tags = default(IDictionary <string, string>), ProvisioningState?provisioningState = default(ProvisioningState?), AccountType?accountType = default(AccountType?), Endpoints primaryEndpoints = default(Endpoints), string primaryLocation = default(string), AccountStatus?statusOfPrimary = default(AccountStatus?), System.DateTime?lastGeoFailoverTime = default(System.DateTime?), string secondaryLocation = default(string), AccountStatus?statusOfSecondary = default(AccountStatus?), System.DateTime?creationTime = default(System.DateTime?), CustomDomain customDomain = default(CustomDomain), Endpoints secondaryEndpoints = default(Endpoints))
     : base(id, name, type, location, tags)
 {
     ProvisioningState   = provisioningState;
     AccountType         = accountType;
     PrimaryEndpoints    = primaryEndpoints;
     PrimaryLocation     = primaryLocation;
     StatusOfPrimary     = statusOfPrimary;
     LastGeoFailoverTime = lastGeoFailoverTime;
     SecondaryLocation   = secondaryLocation;
     StatusOfSecondary   = statusOfSecondary;
     CreationTime        = creationTime;
     CustomDomain        = customDomain;
     SecondaryEndpoints  = secondaryEndpoints;
     CustomInit();
 }