public override void Configure(ConfigParams config)
 {
     _connectionConfigParams = ConfigParams.FromTuples(
         "Table", config.GetAsNullableString("table"),
         "DefaultEndpointsProtocol", config.GetAsNullableString("connection.protocol"),
         "AccountName", config.GetAsNullableString("credential.access_id"),
         "AccountKey", config.GetAsNullableString("credential.access_key"));
 }
Ejemplo n.º 2
0
        public override void Configure(ConfigParams config)
        {
            base.Configure(config);

            _openApiContent  = config.GetAsNullableString("openapi_content");
            _openApiFile     = config.GetAsNullableString("openapi_file");
            _openApiResource = config.GetAsNullableString("openapi_resource");
        }
        public static ComponentConfig FromConfig(ConfigParams config)
        {
            var descriptor = Descriptor.FromString(config.GetAsNullableString("descriptor"));
            var type       = TypeDescriptor.FromString(config.GetAsNullableString("type"));

            if (descriptor == null && type == null)
            {
                throw new ConfigException(null, "BAD_CONFIG", "Component configuration must have descriptor or type");
            }

            return(new ComponentConfig(descriptor, type, config));
        }
Ejemplo n.º 4
0
        private async Task MsSqlWithSshOpenAsync(string correlationId)
        {
            var sshHost              = _sshConfigs.GetAsNullableString("host");
            var sshUsername          = _sshConfigs.GetAsNullableString("username");
            var sshPassword          = _sshConfigs.GetAsNullableString("password");
            var sshKeyFile           = _sshConfigs.GetAsNullableString("key_file_path");
            var sshKeepAliveInterval = _sshConfigs.GetAsNullableTimeSpan("keep_alive_interval");

            var(sshClient, localPort) = ConnectSsh(sshHost, sshUsername, sshPassword, sshKeyFile,
                                                   databaseServer: _databaseServer, databasePort: _databasePort, sshKeepAliveInterval: sshKeepAliveInterval);

            _sshClient = sshClient;
            _sshPort   = localPort.ToString();

            _config.Set("connection.host", "127.0.0.1");
            _config.Set("connection.port", _sshPort);
            _connectionResolver.Configure(_config);

            var connectionString = await _connectionResolver.ResolveAsync(correlationId);

            _logger.Trace(correlationId, "Connecting to sqlserver...");

            try
            {
                var settings   = ComposeSettings();
                var connString = connectionString.TrimEnd(';') + ";" + JoinParams(settings);

                _connection   = new SqlConnection(connString);
                _databaseName = _connection.Database;

                // Try to connect
                await _connection.OpenAsync();

                _logger.Debug(correlationId, "Connected to sqlserver database {0}", _databaseName);
            }
            catch (Exception ex)
            {
                _logger.Error(correlationId, ex.ToString());
                throw new ConnectionException(correlationId, "CONNECT_FAILED", "Connection to sqlserver failed", ex);
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Configures component by passing configuration parameters.
        /// </summary>
        /// <param name="config">configuration parameters to be set.</param>
        public virtual void Configure(ConfigParams config)
        {
            _config  = config.SetDefaults(_defaultConfig);
            _options = _options.Override(_config.GetSection("options"));

            _databaseServer = _config.GetAsNullableString("connection.host");
            _databasePort   = _config.GetAsIntegerWithDefault("connection.port", 1433);
            _sshConfigs     = _sshConfigs.Override(_config.GetSection("ssh"));
            _sshEnabled     = _sshConfigs.GetAsBooleanWithDefault("enabled", false);

            _connectionResolver.Configure(_config);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Composes URI from config parameters.
        /// The result URI will be in the following form:
        ///     `protocol://username@password@host1:port1,host2:port2,...?param1=abc&param2=xyz&...`
        /// </summary>
        /// <param name="options">configuration parameters</param>
        /// <param name="defaultProtocol">a default protocol</param>
        /// <param name="defaultPort">a default port</param>
        /// <returns>a composed URI</returns>
        public static string ComposeUri(ConfigParams options, string defaultProtocol, int defaultPort)
        {
            StringBuilder builder = new StringBuilder();

            var protocol = options.GetAsStringWithDefault("protocol", defaultProtocol);

            if (protocol != null)
            {
                builder.Append(protocol + "://" + builder);
            }

            var username = options.GetAsNullableString("username");

            if (username != null)
            {
                builder.Append(username);
                var password = options.GetAsNullableString("password");
                if (password != null)
                {
                    builder.Append(":" + password);
                }

                builder.Append("@");
            }

            StringBuilder servers        = new StringBuilder();
            var           defaultPortStr = defaultPort > 0 ? defaultPort.ToString() : "";
            var           hosts          = options.GetAsStringWithDefault("host", "???").Split(',');
            var           ports          = options.GetAsStringWithDefault("port", defaultPortStr).Split(',');

            for (int index = 0; index < hosts.Length; index++)
            {
                if (servers.Length > 0)
                {
                    servers.Append(',');
                }

                var host = hosts[index];
                servers.Append(host);

                var port = ports.Length > index ? ports[index] : defaultPortStr;
                port = port != "" ? port : defaultPortStr;

                if (port != "")
                {
                    servers.Append(":" + port);
                }
            }
            builder.Append(servers);

            var           parameters   = new StringBuilder();
            List <string> reservedKeys = new List <string> {
                "protocol", "host", "port", "username", "password", "servers"
            };

            foreach (var key in options.Keys)
            {
                if (reservedKeys.Contains(key))
                {
                    continue;
                }

                if (parameters.Length > 0)
                {
                    parameters.Append("&");
                }

                parameters.Append(Uri.EscapeDataString(key));

                var value = options.GetAsNullableString(key);
                if (value != null && value != "")
                {
                    parameters.Append("=" + Uri.EscapeDataString(value));
                }
            }

            if (parameters.Length > 0)
            {
                builder.Append("?" + parameters);
            }

            return(builder.ToString());
        }