Class: Fluent::Plugin::ObsoletePluginsUtils
- Inherits:
-
Object
- Object
- Fluent::Plugin::ObsoletePluginsUtils
- Defined in:
- lib/fluent/plugin/obsolete_plugins_utils.rb
Class Method Summary collapse
- .installed_plugins ⇒ Object
- .notify(logger, obsolete_plugins, raise_error: false) ⇒ Object
- .obsolete_plugins_from_json(url, timeout: 5) ⇒ Object
- .obsolete_plugins_from_yaml(url, timeout: 5) ⇒ Object
Class Method Details
.installed_plugins ⇒ Object
31 32 33 |
# File 'lib/fluent/plugin/obsolete_plugins_utils.rb', line 31 def self.installed_plugins Gem::Specification.find_all.select { |x| x.name =~ /^fluent(d|-(plugin|mixin)-.*)$/ }.map(&:name) end |
.notify(logger, obsolete_plugins, raise_error: false) ⇒ Object
35 36 37 38 39 40 41 42 43 |
# File 'lib/fluent/plugin/obsolete_plugins_utils.rb', line 35 def self.notify(logger, obsolete_plugins, raise_error: false) plugins = Fluent::Plugin::ObsoletePluginsUtils.installed_plugins & obsolete_plugins.keys plugins.each do |name| logger.warn("#{name} is obsolete: #{obsolete_plugins[name].chomp}") end if raise_error && !plugins.empty? raise Fluent::ConfigError, "Detected obsolete plugins" end end |
.obsolete_plugins_from_json(url, timeout: 5) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/fluent/plugin/obsolete_plugins_utils.rb', line 16 def self.obsolete_plugins_from_json(url, timeout: 5) plugins = Timeout.timeout(timeout) do URI.open(url) do |io| # io.read causes Encoding::UndefinedConversionError with UTF-8 data when Ruby is started with "-Eascii-8bit:ascii-8bit". # It set the proper encoding to avoid the error. io.set_encoding("UTF-8", "UTF-8") JSON.parse(io.read) end end plugins.select { |plugin| plugin["obsolete"] }.reduce({}) do |result, plugin| result[plugin["name"]] = plugin["note"] result end end |
.obsolete_plugins_from_yaml(url, timeout: 5) ⇒ Object
8 9 10 11 12 13 14 |
# File 'lib/fluent/plugin/obsolete_plugins_utils.rb', line 8 def self.obsolete_plugins_from_yaml(url, timeout: 5) Timeout.timeout(timeout) do URI.open(url) do |io| YAML.safe_load(io.read) end end end |