/// <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;
        }
Exemplo n.º 2
0
        public async Task CreateAsync(BucketSettings settings, CreateBucketOptions options)
        {
            var uri = GetUri();

            Logger.LogInformation($"Attempting to create bucket with name {settings.Name} - {uri}");

            try
            {
                // check if bucket already exists, throw BucketAlreadyExistsException if it does
                await GetAsync(settings.Name, GetBucketOptions.Default).ConfigureAwait(false);

                throw new BucketAlreadyExistsException(settings.Name);
            }
            catch (BucketNotFoundException)
            {
                // expected
            }

            try
            {
                // create bucket
                var content = new FormUrlEncodedContent(GetBucketSettingAsFormValues(settings));
                var result  = await _client.PostAsync(uri, content, options.CancellationToken).ConfigureAwait(false);

                result.EnsureSuccessStatusCode();
            }
            catch (BucketAlreadyExistsException)
            {
                Logger.LogError($"Failed to create bucket with name {settings.Name} because it already exists");
                throw;
            }
            catch (Exception exception)
            {
                Logger.LogError(exception, $"Failed to create bucket with name {settings.Name} - {uri}");
                throw;
            }
        }
 /// <summary>
 /// Creates a new bucket on the cluster
 /// </summary>
 /// <param name="settings">The settings for the bucket.</param>
 /// <returns></returns>
 public Task <IResult> CreateBucketAsync(BucketSettings settings)
 {
     return(CreateBucketAsync(settings.Name, settings.ProxyPort, settings.RamQuota, settings.BucketType, settings.ReplicaNumber,
                              settings.AuthType, settings.IndexReplicas, settings.FlushEnabled, settings.ParallelDbAndViewCompaction,
                              settings.SaslPassword, settings.ThreadNumber));
 }
Exemplo n.º 4
0
 public static Task CreateAsync(this IBucketManager bucketManager, BucketSettings settings)
 {
     return(bucketManager.CreateAsync(settings, CreateBucketOptions.Default));
 }
Exemplo n.º 5
0
 public static Task UpsertAsync(this IBucketManager bucketManager, BucketSettings settings)
 {
     return(bucketManager.UpsertAsync(settings, UpsertBucketOptions.Default));
 }
Exemplo n.º 6
0
 /// <summary>
 /// Creates a new bucket on the cluster
 /// </summary>
 /// <param name="settings">The settings for the bucket.</param>
 /// <returns></returns>
 public Task<IResult> CreateBucketAsync(BucketSettings settings)
 {
     return CreateBucketAsync(settings.Name, settings.RamQuota, settings.BucketType, settings.ReplicaNumber,
         settings.AuthType, settings.IndexReplicas, settings.FlushEnabled, settings.ParallelDbAndViewCompaction,
         settings.SaslPassword, settings.ThreadNumber);
 }
 /// <summary>
 /// Provisions a bucket adding it to a CouchbaseCluster
 /// </summary>
 /// <param name="bucketSettings">The bucket settings.</param>
 /// <param name="hostname">The hostname</param>
 /// <returns></returns>
 public Task<IResult> ProvisionBucketAsync(BucketSettings bucketSettings, string hostname = null)
 {
     hostname = hostname ?? _cluster.Configuration.Servers.First().Host;
     return _clusterManager.CreateBucketAsync(bucketSettings);
 }
Exemplo n.º 8
0
        private IEnumerable <KeyValuePair <string, string> > GetBucketSettingAsFormValues(BucketSettings settings)
        {
            var values = new Dictionary <string, string>();

            values.Add("name", settings.Name);
            values.Add("bucketType", settings.BucketType.GetDescription());
            values.Add("ramQuotaMB", settings.RamQuota.ToString());
            values.Add("replicaIndex", settings.ReplicaIndexes ? "1" : "0");
            values.Add("replicaNumber", settings.ReplicaCount.ToString());
            values.Add("flushEnabled", settings.FlushEnabled ? "1" : "0");

            values.Add("authType", settings.AuthType.GetDescription());
            if (settings.AuthType == AuthType.Sasl)
            {
                values.Add("saslPassword", settings.Password);
            }

            if (settings.ConflictResolutionType.HasValue)
            {
                values.Add("conflictResolutionType", settings.ConflictResolutionType.GetDescription());
            }

            if (settings.EvictionPolicyType.HasValue)
            {
                values.Add("evictionPolicy", settings.EvictionPolicyType.GetDescription());
            }

            if (settings.MaxTtl > 0)
            {
                values.Add("maxTTL", settings.MaxTtl.ToString());
            }

            if (settings.CompressionMode.HasValue)
            {
                values.Add("compressionMode", settings.CompressionMode.GetDescription());
            }

            if (settings.ProxyPort > 0)
            {
                values.Add("proxyPort", settings.ProxyPort.ToString());
            }

            return(values);
        }
        /// <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);
        }
 /// <summary>
 /// Provisions a bucket adding it to a CouchbaseCluster
 /// </summary>
 /// <param name="bucketSettings">The bucket settings.</param>
 /// <param name="hostname">The hostname</param>
 /// <returns></returns>
 public Task <IResult> ProvisionBucketAsync(BucketSettings bucketSettings, string hostname = null)
 {
     hostname = hostname ?? _cluster.Configuration.Servers.First().Host;
     return(_clusterManager.CreateBucketAsync(bucketSettings));
 }
        private IEnumerable <KeyValuePair <string, string> > GetBucketSettingAsFormValues(BucketSettings settings)
        {
            var values = new Dictionary <string, string>();

            values.Add("name", settings.Name);
            values.Add("bucketType", settings.BucketType.GetDescription());
            values.Add("ramQuotaMB", settings.RamQuotaMB.ToString());
            values.Add("replicaIndex", settings.ReplicaIndexes ? "1" : "0");
            values.Add("replicaNumber", settings.NumReplicas.ToString());
            values.Add("flushEnabled", settings.FlushEnabled ? "1" : "0");

            if (settings.ConflictResolutionType.HasValue)
            {
                values.Add("conflictResolutionType", settings.ConflictResolutionType.GetDescription());
            }

            if (settings.EjectionMethod.HasValue)
            {
                values.Add("evictionPolicy", settings.EjectionMethod.GetDescription());
            }

            if (settings.MaxTtl > 0)
            {
                values.Add("maxTTL", settings.MaxTtl.ToString());
            }

            if (settings.CompressionMode.HasValue)
            {
                values.Add("compressionMode", settings.CompressionMode.GetDescription());
            }

            return(values);
        }