require 'kpm/client' module KPM class PluginsController < EngineController def index nodes_by_kb_version, @kb_version = killbill_version @warning_message = '' plugins = [] if nodes_by_kb_version.size > 1 @warning_message = different_versions_warning_message(nodes_by_kb_version) else begin plugins = ::Killbill::KPM::KPMClient.get_available_plugins(true, options_for_klient) rescue => e # No connectivity, GitHub down, ... Rails.logger.warn("Unable to get latest plugins, trying built-in directory: #{e.inspect}") plugins = ::Killbill::KPM::KPMClient.get_available_plugins(false, options_for_klient) end plugins.select! { |plugin_key, info| info['versions'].keys.include?(@kb_version) } end @plugins = Hash[plugins.sort] end private def different_versions_warning_message(nodes_by_kb_version) message = 'Warning! Unable to find plugins to install, different versions of Kill Bill were found: