Normalize Config Support Mixin
This gem can be included in any LogStash::Plugin
, and will provide utilities methods
that can be used by the plugins to
extract and normalize configs.
Usage
Add version
~>1.0
of this gem as a runtime dependency of your Logstash plugin'sgemspec
:Gem::Specification.new do |s| # ... s.add_runtime_dependency 'logstash-mixin-normalize_config_support', '~>1.0' end
In your plugin code, require this library and include it into your plugin class that already inherits
LogStash::Plugin
:require 'logstash/plugin_mixins/normalize_config_support' class LogStash::Inputs::Foo < Logstash::Inputs::Base include LogStash::PluginMixins::NormalizeConfigSupport # ... end
Use the provided
normalize_config
method to normalize a configuration and to produce a canonical value for it. It currently supports the following normalizers:with_deprecated_mapping
: Map one or more deprecated configs to the canonical configwith_deprecated_alias
: Wholly-alias a deprecated config to the canonical config
def register
# ...
@ssl_verification_mode = normalize_config(:ssl_verification_mode) do |normalize|
normalize.with_deprecated_mapping(:ssl_verify_mode) do |ssl_verify_mode|
case ssl_verify_mode
when "none" then "none"
when "peer" then "certificate"
when "force_peer" then "full"
else fail(LogStash::ConfigurationError, "Unsupported value #{ssl_verify_mode} for deprecated option `ssl_verify_mode`")
end
end
@ssl_cipher_suites = normalize_config(:ssl_cipher_suites) do |normalize|
normalize.with_deprecated_alias(:cipher_suites)
end
@ssl_supported_protocols = normalize_config(:ssl_supported_protocols) do |normalize|
normalize.with_deprecated_mapping(:tls_min_version, :tls_max_version) do |tls_min, tls_max|
TLS.get_supported(tls_min..tls_max).map(&:name)
end
end
end
Development
This gem:
- MUST NOT introduce additional runtime dependencies