Represents an Azure Sql Elastic Pool
        /// <summary>
        /// Creates or updates an Azure Sql Database ElasticPool.
        /// </summary>
        /// <param name="resourceGroup">The name of the resource group</param>
        /// <param name="serverName">The name of the Azure Sql Database Server</param>
        /// <param name="model">The input parameters for the create/update operation</param>
        /// <returns>The upserted Azure Sql Database ElasticPool</returns>
        internal AzureSqlElasticPoolModel UpsertElasticPool(AzureSqlElasticPoolModel model)
        {
            var resp = Communicator.CreateOrUpdate(model.ResourceGroupName, model.ServerName, model.ElasticPoolName, Util.GenerateTracingId(), new ElasticPoolCreateOrUpdateParameters()
            {
                Location = model.Location,
                Properties = new ElasticPoolCreateOrUpdateProperties()
                {
                    DatabaseDtuMax = model.DatabaseDtuMax,
                    DatabaseDtuMin = model.DatabaseDtuMin,
                    Edition = model.Edition.ToString(),
                    Dtu = model.Dtu,
                    StorageMB = model.StorageMB
                }
            });

            return CreateElasticPoolModelFromResponse(model.ResourceGroupName, model.ServerName, resp);
        }
        /// <summary>
        /// Converts the response from the service to a powershell database object
        /// </summary>
        /// <param name="resourceGroupName">The resource group the server is in</param>
        /// <param name="serverName">The name of the Azure Sql Database Server</param>
        /// <param name="pool">The service response</param>
        /// <returns>The converted model</returns>
        private AzureSqlElasticPoolModel CreateElasticPoolModelFromResponse(string resourceGroup, string serverName, Management.Sql.Models.ElasticPool pool)
        {
            AzureSqlElasticPoolModel model = new AzureSqlElasticPoolModel();

            model.ResourceId = pool.Id;
            model.ResourceGroupName = resourceGroup;
            model.ServerName = serverName;
            model.ElasticPoolName = pool.Name;
            model.CreationDate = pool.Properties.CreationDate ?? DateTime.MinValue;
            model.DatabaseDtuMax = (int)pool.Properties.DatabaseDtuMax;
            model.DatabaseDtuMin = (int)pool.Properties.DatabaseDtuMin;
            model.Dtu = (int)pool.Properties.Dtu;
            model.State = pool.Properties.State;
            model.StorageMB = pool.Properties.StorageMB;
            model.Tags = pool.Tags as Dictionary<string, string>;
            model.Location = pool.Location;

            DatabaseEdition edition = DatabaseEdition.None;
            Enum.TryParse<DatabaseEdition>(pool.Properties.Edition, out edition);
            model.Edition = edition;

            return model;
        }