Class: Fluent::Plugin::ObsoletePluginsUtils

Inherits:
Object
  • Object
show all
Defined in:
lib/fluent/plugin/obsolete_plugins_utils.rb

Class Method Summary collapse

Class Method Details

.installed_pluginsObject



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