/// <summary>
        /// Provisions the entry point Couchbase server node.
        /// </summary>
        /// <param name="hostname">The hostname.</param>
        /// <param name="defaultSettings">The default settings.</param>
        /// <param name="dataRamQuota">The data ram quota.</param>
        /// <param name="indexRamQuota">The index ram quota.</param>
        /// <returns></returns>
        public async Task <CompositeResult> ProvisionEntryPointAsync(string hostname = null, BucketSettings defaultSettings = null, uint dataRamQuota = 544, uint indexRamQuota = 256)
        {
            hostname        = hostname ?? _cluster.Configuration.Servers.First().Host;
            defaultSettings = defaultSettings ?? new BucketSettings();

            var compositeResults = new CompositeResult();

            try
            {
                var result = await _clusterManager.InitializeClusterAsync(hostname);

                compositeResults.Add(result);

                if (compositeResults.Success)
                {
                    result = await _clusterManager.RenameNodeAsync(hostname);

                    compositeResults.Add(result);
                }
                if (compositeResults.Success)
                {
                    result = await _clusterManager.ConfigureMemoryAsync(hostname, dataRamQuota, indexRamQuota);

                    compositeResults.Add(result);
                }
                if (compositeResults.Success)
                {
                    result = await _clusterManager.SetupServicesAsync(hostname, defaultSettings.Services);

                    compositeResults.Add(result);
                }
                if (compositeResults.Success)
                {
                    result = await _clusterManager.ConfigureAdminAsync(hostname);

                    compositeResults.Add(result);
                }
                if (compositeResults.Success)
                {
                    result = await _clusterManager.CreateBucketAsync(defaultSettings);

                    compositeResults.Add(result);
                }
            }
            catch (Exception e)
            {
                compositeResults.Add(new DefaultResult(false, e.Message, e));
            }
            return(compositeResults);
        }