mirror of
https://github.com/fluent/fluentd-ui.git
synced 2025-08-09 15:57:05 +02:00
Plugin working queue is managed by Plugin model
This commit is contained in:
parent
3160c7c285
commit
c8e565defd
@ -27,9 +27,7 @@ class ApplicationController < ActionController::Base
|
||||
end
|
||||
|
||||
def installing_gems
|
||||
Plugin::WORKING.find_all do |data|
|
||||
data[:type] == :install && data[:state] == :running
|
||||
end.map{|data| data[:plugin]}
|
||||
Plugin.installing
|
||||
end
|
||||
|
||||
def uninstalling_gem?
|
||||
@ -37,9 +35,7 @@ class ApplicationController < ActionController::Base
|
||||
end
|
||||
|
||||
def uninstalling_gems
|
||||
Plugin::WORKING.find_all do |data|
|
||||
data[:type] == :uninstall && data[:state] == :running
|
||||
end.map{|data| data[:plugin]}
|
||||
Plugin.uninstalling
|
||||
end
|
||||
|
||||
private
|
||||
|
@ -100,6 +100,20 @@ class Plugin
|
||||
end
|
||||
end
|
||||
|
||||
def self.processing
|
||||
WORKING.find_all do |data|
|
||||
data[:state] == :running
|
||||
end
|
||||
end
|
||||
|
||||
def self.installing
|
||||
processing.find_all{|data| data[:type] == :install }.map{|data| data[:plugin] }
|
||||
end
|
||||
|
||||
def self.uninstalling
|
||||
processing.find_all{|data| data[:type] == :uninstall }.map{|data| data[:plugin] }
|
||||
end
|
||||
|
||||
def self.gemfile_path
|
||||
Rails.root + "Gemfile.plugins"
|
||||
end
|
||||
@ -129,11 +143,21 @@ class Plugin
|
||||
end
|
||||
|
||||
def gem_install
|
||||
data = { plugin: self, state: :running, type: :install }
|
||||
return if WORKING.grep(data).present?
|
||||
WORKING.push(data)
|
||||
fluent_gem("install", gem_name, "-v", version)
|
||||
ensure
|
||||
WORKING.delete(data)
|
||||
end
|
||||
|
||||
def gem_uninstall
|
||||
data = { plugin: self, state: :running, type: :uninstall }
|
||||
return if WORKING.grep(data).present?
|
||||
WORKING.push(data)
|
||||
fluent_gem("uninstall", gem_name, "-x", "-a")
|
||||
ensure
|
||||
WORKING.delete(data)
|
||||
end
|
||||
|
||||
def fluent_gem(*commands)
|
||||
|
@ -5,16 +5,8 @@ class GemInstaller
|
||||
def perform(gem_name, version = nil)
|
||||
SuckerPunch.logger.info "install #{gem_name} #{version}"
|
||||
pl = Plugin.new(gem_name: gem_name, version: version)
|
||||
data = { plugin: pl, type: :install, state: :running }
|
||||
if Plugin::WORKING.grep(data).blank?
|
||||
Plugin::WORKING.push(data)
|
||||
begin
|
||||
pl.uninstall! if pl.installed?
|
||||
pl.install!
|
||||
ensure
|
||||
Plugin::WORKING.delete(data)
|
||||
end
|
||||
end
|
||||
pl.uninstall! if pl.installed?
|
||||
pl.install!
|
||||
SuckerPunch.logger.info "installed #{gem_name} #{version}"
|
||||
end
|
||||
end
|
||||
|
@ -5,15 +5,7 @@ class GemUninstaller
|
||||
def perform(gem_name)
|
||||
SuckerPunch.logger.info "uninstall #{gem_name}"
|
||||
pl = Plugin.new(gem_name: gem_name)
|
||||
data = { plugin: pl, type: :uninstall, state: :running }
|
||||
if Plugin::WORKING.grep(data).blank?
|
||||
Plugin::WORKING.push(data)
|
||||
begin
|
||||
pl.uninstall!
|
||||
ensure
|
||||
Plugin::WORKING.delete(data)
|
||||
end
|
||||
end
|
||||
pl.uninstall!
|
||||
SuckerPunch.logger.info "uninstalled #{gem_name}"
|
||||
end
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user