/// <summary>
        /// Parse data connection string to fill in fields in <paramref name="options"/>
        /// </summary>
        /// <param name="dataConnectionString"></param>
        /// <param name="options"></param>
        internal static void ParseDataConnectionString(string dataConnectionString, DynamoDBClusteringOptions options)
        {
            var parameters = dataConnectionString.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries);

            var serviceConfig = parameters.Where(p => p.Contains(ServicePropertyName)).FirstOrDefault();

            if (!string.IsNullOrWhiteSpace(serviceConfig))
            {
                var value = serviceConfig.Split(new[] { '=' }, StringSplitOptions.RemoveEmptyEntries);
                if (value.Length == 2 && !string.IsNullOrWhiteSpace(value[1]))
                {
                    options.Service = value[1];
                }
            }

            var secretKeyConfig = parameters.Where(p => p.Contains(SecretKeyPropertyName)).FirstOrDefault();

            if (!string.IsNullOrWhiteSpace(secretKeyConfig))
            {
                var value = secretKeyConfig.Split(new[] { '=' }, StringSplitOptions.RemoveEmptyEntries);
                if (value.Length == 2 && !string.IsNullOrWhiteSpace(value[1]))
                {
                    options.SecretKey = value[1];
                }
            }

            var accessKeyConfig = parameters.Where(p => p.Contains(AccessKeyPropertyName)).FirstOrDefault();

            if (!string.IsNullOrWhiteSpace(accessKeyConfig))
            {
                var value = accessKeyConfig.Split(new[] { '=' }, StringSplitOptions.RemoveEmptyEntries);
                if (value.Length == 2 && !string.IsNullOrWhiteSpace(value[1]))
                {
                    options.AccessKey = value[1];
                }
            }

            var readCapacityUnitsConfig = parameters.Where(p => p.Contains(ReadCapacityUnitsPropertyName)).FirstOrDefault();

            if (!string.IsNullOrWhiteSpace(readCapacityUnitsConfig))
            {
                var value = readCapacityUnitsConfig.Split(new[] { '=' }, StringSplitOptions.RemoveEmptyEntries);
                if (value.Length == 2 && !string.IsNullOrWhiteSpace(value[1]))
                {
                    options.ReadCapacityUnits = int.Parse(value[1]);
                }
            }

            var writeCapacityUnitsConfig = parameters.Where(p => p.Contains(WriteCapacityUnitsPropertyName)).FirstOrDefault();

            if (!string.IsNullOrWhiteSpace(writeCapacityUnitsConfig))
            {
                var value = writeCapacityUnitsConfig.Split(new[] { '=' }, StringSplitOptions.RemoveEmptyEntries);
                if (value.Length == 2 && !string.IsNullOrWhiteSpace(value[1]))
                {
                    options.WriteCapacityUnits = int.Parse(value[1]);
                }
            }
        }
 public DynamoDBMembershipTable(
     ILoggerFactory loggerFactory,
     IOptions <DynamoDBClusteringOptions> clusteringOptions,
     IOptions <ClusterOptions> clusterOptions)
 {
     logger         = loggerFactory.CreateLogger <DynamoDBMembershipTable>();
     this.options   = clusteringOptions.Value;
     this.clusterId = clusterOptions.Value.ClusterId;
 }
 public DynamoDBMembershipTable(ILoggerFactory loggerFactory,
                                IOptions <DynamoDBClusteringOptions> membershipOptions,
                                IOptions <SiloOptions> siloOptions)
 {
     this.loggerFactory = loggerFactory;
     logger             = loggerFactory.CreateLogger <DynamoDBMembershipTable>();
     this.options       = membershipOptions.Value;
     this.clusterId     = siloOptions.Value.ClusterId;
 }
Пример #4
0
        protected override IMembershipTable CreateMembershipTable(ILogger logger)
        {
            if (!AWSTestConstants.IsDynamoDbAvailable)
            {
                throw new SkipException("Unable to connect to AWS DynamoDB simulator");
            }
            var options = new DynamoDBClusteringOptions();

            DynamoDBMembershipHelper.ParseDataConnectionString(this.connectionString, options);
            return(new DynamoDBMembershipTable(this.loggerFactory, Options.Create(options), this.clusterOptions));
        }