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
|
end
|
||||||
|
|
||||||
def installing_gems
|
def installing_gems
|
||||||
Plugin::WORKING.find_all do |data|
|
Plugin.installing
|
||||||
data[:type] == :install && data[:state] == :running
|
|
||||||
end.map{|data| data[:plugin]}
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def uninstalling_gem?
|
def uninstalling_gem?
|
||||||
@ -37,9 +35,7 @@ class ApplicationController < ActionController::Base
|
|||||||
end
|
end
|
||||||
|
|
||||||
def uninstalling_gems
|
def uninstalling_gems
|
||||||
Plugin::WORKING.find_all do |data|
|
Plugin.uninstalling
|
||||||
data[:type] == :uninstall && data[:state] == :running
|
|
||||||
end.map{|data| data[:plugin]}
|
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
@ -100,6 +100,20 @@ class Plugin
|
|||||||
end
|
end
|
||||||
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
|
def self.gemfile_path
|
||||||
Rails.root + "Gemfile.plugins"
|
Rails.root + "Gemfile.plugins"
|
||||||
end
|
end
|
||||||
@ -129,11 +143,21 @@ class Plugin
|
|||||||
end
|
end
|
||||||
|
|
||||||
def gem_install
|
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)
|
fluent_gem("install", gem_name, "-v", version)
|
||||||
|
ensure
|
||||||
|
WORKING.delete(data)
|
||||||
end
|
end
|
||||||
|
|
||||||
def gem_uninstall
|
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")
|
fluent_gem("uninstall", gem_name, "-x", "-a")
|
||||||
|
ensure
|
||||||
|
WORKING.delete(data)
|
||||||
end
|
end
|
||||||
|
|
||||||
def fluent_gem(*commands)
|
def fluent_gem(*commands)
|
||||||
|
@ -5,16 +5,8 @@ class GemInstaller
|
|||||||
def perform(gem_name, version = nil)
|
def perform(gem_name, version = nil)
|
||||||
SuckerPunch.logger.info "install #{gem_name} #{version}"
|
SuckerPunch.logger.info "install #{gem_name} #{version}"
|
||||||
pl = Plugin.new(gem_name: gem_name, version: version)
|
pl = Plugin.new(gem_name: gem_name, version: version)
|
||||||
data = { plugin: pl, type: :install, state: :running }
|
pl.uninstall! if pl.installed?
|
||||||
if Plugin::WORKING.grep(data).blank?
|
pl.install!
|
||||||
Plugin::WORKING.push(data)
|
|
||||||
begin
|
|
||||||
pl.uninstall! if pl.installed?
|
|
||||||
pl.install!
|
|
||||||
ensure
|
|
||||||
Plugin::WORKING.delete(data)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
SuckerPunch.logger.info "installed #{gem_name} #{version}"
|
SuckerPunch.logger.info "installed #{gem_name} #{version}"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -5,15 +5,7 @@ class GemUninstaller
|
|||||||
def perform(gem_name)
|
def perform(gem_name)
|
||||||
SuckerPunch.logger.info "uninstall #{gem_name}"
|
SuckerPunch.logger.info "uninstall #{gem_name}"
|
||||||
pl = Plugin.new(gem_name: gem_name)
|
pl = Plugin.new(gem_name: gem_name)
|
||||||
data = { plugin: pl, type: :uninstall, state: :running }
|
pl.uninstall!
|
||||||
if Plugin::WORKING.grep(data).blank?
|
|
||||||
Plugin::WORKING.push(data)
|
|
||||||
begin
|
|
||||||
pl.uninstall!
|
|
||||||
ensure
|
|
||||||
Plugin::WORKING.delete(data)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
SuckerPunch.logger.info "uninstalled #{gem_name}"
|
SuckerPunch.logger.info "uninstalled #{gem_name}"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user