fluentd-ui 0.3.7 → 0.3.8
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of fluentd-ui might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/ChangeLog +6 -0
- data/Gemfile.lock +1 -1
- data/app/models/fluent_gem.rb +66 -0
- data/app/models/plugin.rb +8 -45
- data/config/application.yml +23 -43
- data/lib/fluentd-ui/version.rb +1 -1
- data/lib/tasks/dep.rake +8 -1
- data/spec/lib/file_reverse_reader_spec.rb +2 -2
- data/spec/models/fluent_gem_spec.rb +110 -0
- data/spec/models/plugin_spec.rb +9 -9
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e8a878149540a61f5a1c3332f91c788ba07658a0
|
4
|
+
data.tar.gz: b3ffe587af20b8d6feeb79ea48b2ab684a851fe2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9e467bd3ae13cb3c600a63c9a5bd7e76d2d1be168ddfc1bd39a9fb3e529b04f9650a140f535ced690630363745f6f7543c559e87acbc7fa58d528ff24e8bfa73
|
7
|
+
data.tar.gz: 77f4eb293166a4511e38076e46047326040c08537668a37c6f13ce137ffa9a631452beeaff001026f5f474d8260412064977ce044a124b72a17964d845efab65
|
data/ChangeLog
CHANGED
data/Gemfile.lock
CHANGED
@@ -0,0 +1,66 @@
|
|
1
|
+
module FluentGem
|
2
|
+
class GemError < StandardError; end
|
3
|
+
|
4
|
+
class << self
|
5
|
+
LIST_CACHE_KEY = "gem_list".freeze
|
6
|
+
|
7
|
+
def install(*args)
|
8
|
+
run("install", *args)
|
9
|
+
end
|
10
|
+
|
11
|
+
def uninstall(*args)
|
12
|
+
run("uninstall", *args)
|
13
|
+
end
|
14
|
+
|
15
|
+
def list
|
16
|
+
# NOTE: gem list is heavyly used from anywhere in 1 request, if not caching, user experience to be bad
|
17
|
+
# but long living caching causes mismatch with actual status e.g. user install plugin from console (without fluentd-ui)
|
18
|
+
# So our decision is that cache `gem list` in 3 seconds
|
19
|
+
Rails.cache.fetch(LIST_CACHE_KEY, expires_in: 3.seconds) do
|
20
|
+
output = `#{gem} list`
|
21
|
+
unless $?.exitstatus.zero?
|
22
|
+
raise GemError, "failed command: `#{gem} list`"
|
23
|
+
end
|
24
|
+
output.lines
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def run(*args)
|
29
|
+
# NOTE: use `fluent-gem` instead of `gem`
|
30
|
+
Bundler.with_clean_env do
|
31
|
+
# NOTE: this app is under the Bundler, so call `system` in with_clean_env is Bundler jail breaking
|
32
|
+
cmd = [gem, *args].compact
|
33
|
+
unless system(*cmd)
|
34
|
+
raise GemError, "failed command: `#{cmd.join(" ")}`"
|
35
|
+
end
|
36
|
+
Rails.cache.delete(LIST_CACHE_KEY)
|
37
|
+
end
|
38
|
+
true
|
39
|
+
end
|
40
|
+
|
41
|
+
def gem
|
42
|
+
# Not yet setup any fluentd/td-agent
|
43
|
+
return "fluent-gem" unless Fluentd.instance
|
44
|
+
|
45
|
+
# On installed both td-agent and fluentd system, decide which fluent-gem command should be used depend on setup(Fluentd.instance)
|
46
|
+
if Fluentd.instance && Fluentd.instance.fluentd?
|
47
|
+
"fluent-gem" # maybe `fluent-gem` command is in the $PATH
|
48
|
+
else
|
49
|
+
detect_td_agent_gem
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def detect_td_agent_gem
|
54
|
+
# NOTE: td-agent has a command under the /usr/lib{,64}, td-agent2 has under /opt/td-agent
|
55
|
+
%W(
|
56
|
+
/usr/sbin/td-agent-gem
|
57
|
+
/opt/td-agent/embedded/bin/fluent-gem
|
58
|
+
/usr/lib/fluent/ruby/bin/fluent-gem
|
59
|
+
/usr/lib64/fluent/ruby/bin/fluent-gem
|
60
|
+
fluent-gem
|
61
|
+
).find do |path|
|
62
|
+
system("which #{path}", out: File::NULL, err: File::NULL)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
data/app/models/plugin.rb
CHANGED
@@ -87,17 +87,12 @@ class Plugin
|
|
87
87
|
end
|
88
88
|
|
89
89
|
def self.installed
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
gems.grep(/fluent-plugin/).map do |gem|
|
97
|
-
name, versions_str = gem.strip.split(" ")
|
98
|
-
version = versions_str[/[^(), ]+/]
|
99
|
-
new(gem_name: name, version: version)
|
100
|
-
end
|
90
|
+
Bundler.with_clean_env do
|
91
|
+
gems = FluentGem.list
|
92
|
+
gems.grep(/fluent-plugin/).map do |gem|
|
93
|
+
name, versions_str = gem.strip.split(" ")
|
94
|
+
version = versions_str[/[^(), ]+/]
|
95
|
+
new(gem_name: name, version: version)
|
101
96
|
end
|
102
97
|
end
|
103
98
|
end
|
@@ -141,23 +136,6 @@ class Plugin
|
|
141
136
|
"https://rubygems.org/api/v1/versions/#{gem_name}.json"
|
142
137
|
end
|
143
138
|
|
144
|
-
def self.fluent_gem_path
|
145
|
-
# On installed both td-agent and fluentd system, decide which fluent-gem command should be used depend on setup(Fluentd.instance)
|
146
|
-
if Fluentd.instance && Fluentd.instance.fluentd?
|
147
|
-
return "fluent-gem" # maybe `fluent-gem` command is in the $PATH
|
148
|
-
end
|
149
|
-
|
150
|
-
# NOTE: td-agent has a command under the /usr/lib{,64}, td-agent2 has under /opt/td-agent
|
151
|
-
%W(
|
152
|
-
/opt/td-agent/embedded/bin/fluent-gem
|
153
|
-
/usr/lib/fluent/ruby/bin/fluent-gem
|
154
|
-
/usr/lib64/fluent/ruby/bin/fluent-gem
|
155
|
-
fluent-gem
|
156
|
-
).find do |path|
|
157
|
-
system("which #{path}", out: File::NULL, err: File::NULL)
|
158
|
-
end
|
159
|
-
end
|
160
|
-
|
161
139
|
private
|
162
140
|
|
163
141
|
def gem_install
|
@@ -165,7 +143,7 @@ class Plugin
|
|
165
143
|
return if processing?
|
166
144
|
return if installed?
|
167
145
|
WORKING.push(data)
|
168
|
-
|
146
|
+
FluentGem.install(gem_name, "--no-ri", "--no-rdoc", "-v", version)
|
169
147
|
ensure
|
170
148
|
WORKING.delete(data)
|
171
149
|
end
|
@@ -175,23 +153,8 @@ class Plugin
|
|
175
153
|
return if processing?
|
176
154
|
return unless installed?
|
177
155
|
WORKING.push(data)
|
178
|
-
|
156
|
+
FluentGem.uninstall(gem_name, "-x", "-a")
|
179
157
|
ensure
|
180
158
|
WORKING.delete(data)
|
181
159
|
end
|
182
|
-
|
183
|
-
def fluent_gem(*commands)
|
184
|
-
# NOTE: use `fluent-gem` instead of `gem`
|
185
|
-
Bundler.with_clean_env do
|
186
|
-
# NOTE: this app is under the Bundler, so call `system` in with_clean_env is Bundler jail breaking
|
187
|
-
unless system(* [fluent_gem_path, *commands])
|
188
|
-
raise GemError, "failed command #{commands.join(" ")}"
|
189
|
-
end
|
190
|
-
end
|
191
|
-
true
|
192
|
-
end
|
193
|
-
|
194
|
-
def fluent_gem_path
|
195
|
-
self.class.fluent_gem_path
|
196
|
-
end
|
197
160
|
end
|
data/config/application.yml
CHANGED
@@ -34,8 +34,6 @@ defaults: &defaults
|
|
34
34
|
name: "numeric-counter"
|
35
35
|
- category: storage
|
36
36
|
name: "webhdfs"
|
37
|
-
- category: data_source
|
38
|
-
name: "tail-multiline"
|
39
37
|
- category: filter
|
40
38
|
name: "parser"
|
41
39
|
- category: storage
|
@@ -44,14 +42,18 @@ defaults: &defaults
|
|
44
42
|
name: "dstat"
|
45
43
|
- category: filter
|
46
44
|
name: "record-reformer"
|
47
|
-
- category: data_source
|
48
|
-
name: "tail-ex"
|
49
45
|
- category: storage
|
50
46
|
name: "zabbix-simple-bufferd"
|
51
47
|
- category: processing
|
52
48
|
name: "numeric-monitor"
|
53
49
|
- category: notification
|
54
50
|
name: "ping-message"
|
51
|
+
- category: processing
|
52
|
+
name: "extract_query_params"
|
53
|
+
- category: processing
|
54
|
+
name: "norikra"
|
55
|
+
- category: notification
|
56
|
+
name: "cloudwatch"
|
55
57
|
- category: storage
|
56
58
|
name: "pghstore"
|
57
59
|
- category: filter
|
@@ -62,44 +64,30 @@ defaults: &defaults
|
|
62
64
|
name: "grep"
|
63
65
|
- category: processing
|
64
66
|
name: "grepcounter"
|
65
|
-
- category:
|
66
|
-
name: "
|
67
|
+
- category: processing
|
68
|
+
name: "groupcounter"
|
67
69
|
- category: routing
|
68
70
|
name: "keep-forward"
|
69
71
|
- category: notification
|
70
72
|
name: "mail"
|
71
73
|
- category: filter
|
72
74
|
name: "record-modifier"
|
73
|
-
- category: storage
|
74
|
-
name: "mysql"
|
75
75
|
- category: notification
|
76
76
|
name: "sns"
|
77
77
|
- category: data_source
|
78
78
|
name: "munin"
|
79
|
-
- category: routing
|
80
|
-
name: "flume"
|
81
|
-
- category: data_source
|
82
|
-
name: "tail-asis"
|
83
79
|
- category: monitoring
|
84
80
|
name: "metricsense"
|
85
81
|
- category: storage
|
86
82
|
name: "sqs"
|
87
83
|
- category: processing
|
88
84
|
name: "datacalculator"
|
89
|
-
- category: search
|
90
|
-
name: "splunkapi"
|
91
85
|
- category: filter
|
92
86
|
name: "amplifier-filter"
|
93
87
|
- category: filter
|
94
88
|
name: "sampling-filter"
|
95
|
-
- category: notification
|
96
|
-
name: "growl"
|
97
|
-
- category: storage
|
98
|
-
name: "dynamodb"
|
99
89
|
- category: processing
|
100
90
|
name: "flatten"
|
101
|
-
- category: storage
|
102
|
-
name: "hoop"
|
103
91
|
- category: processing
|
104
92
|
name: "anomalydetect"
|
105
93
|
- category: notification
|
@@ -110,34 +98,28 @@ defaults: &defaults
|
|
110
98
|
name: "redis-counter"
|
111
99
|
- category: storage
|
112
100
|
name: "kestrel"
|
113
|
-
- category: routing
|
114
|
-
name: "udp"
|
115
101
|
- category: storage
|
116
102
|
name: "forward-aws"
|
117
|
-
- category: processing
|
118
|
-
name: "extract_query_params"
|
119
|
-
- category: processing
|
120
|
-
name: "norikra"
|
121
|
-
- category: notification
|
122
|
-
name: "cloudwatch"
|
123
103
|
- category: data_source
|
124
104
|
name: "snmp"
|
125
|
-
- category: data_source
|
126
|
-
name: "http-enhanced"
|
127
105
|
- category: processing
|
128
|
-
name: "
|
106
|
+
name: "stats"
|
107
|
+
- category: storage
|
108
|
+
name: "dynamodb"
|
109
|
+
- category: storage
|
110
|
+
name: "cassandra"
|
129
111
|
- category: storage
|
130
112
|
name: "cassandra-cql"
|
131
|
-
- category: filter
|
132
|
-
name: "hostname"
|
133
113
|
- category: data_source
|
134
114
|
name: "cloudstack"
|
115
|
+
- category: storage
|
116
|
+
name: "mysql"
|
135
117
|
- category: data_source
|
136
118
|
name: "mysql-query"
|
119
|
+
- category: data_source
|
120
|
+
name: "mysqlslowquery"
|
137
121
|
- category: storage
|
138
122
|
name: "redshift"
|
139
|
-
- category: processing
|
140
|
-
name: "groupcounter"
|
141
123
|
- category: data_source
|
142
124
|
name: "twitter"
|
143
125
|
- category: data_source
|
@@ -148,8 +130,6 @@ defaults: &defaults
|
|
148
130
|
name: "histogram"
|
149
131
|
- category: routing
|
150
132
|
name: "hash-forward"
|
151
|
-
- category: notification
|
152
|
-
name: "yohoushi"
|
153
133
|
- category: storage
|
154
134
|
name: "zmq"
|
155
135
|
- category: monitoring
|
@@ -164,6 +144,8 @@ defaults: &defaults
|
|
164
144
|
name: "suppress"
|
165
145
|
- category: filter
|
166
146
|
name: "filter"
|
147
|
+
- category: filter
|
148
|
+
name: "select"
|
167
149
|
- category: storage
|
168
150
|
name: "resque"
|
169
151
|
- category: data_source
|
@@ -180,26 +162,24 @@ defaults: &defaults
|
|
180
162
|
name: "reassemble"
|
181
163
|
- category: data_source
|
182
164
|
name: "jvmwatcher"
|
183
|
-
- category: storage
|
184
|
-
name: "redshift-kwarter"
|
185
165
|
- category: data_source
|
186
166
|
name: "http-status"
|
187
167
|
- category: data_source
|
188
168
|
name: "df"
|
189
169
|
- category: processing
|
190
170
|
name: "typecast"
|
191
|
-
- category: filter
|
192
|
-
name: "select"
|
193
171
|
- category: data_source
|
194
172
|
name: "rds-slowlog"
|
195
173
|
- category: security
|
196
174
|
name: "anonymizer"
|
197
175
|
- category: search
|
198
176
|
name: "splunk"
|
199
|
-
- category:
|
200
|
-
name: "
|
177
|
+
- category: search
|
178
|
+
name: "splunkapi"
|
201
179
|
- category: notification
|
202
180
|
name: "boundio"
|
181
|
+
- category: notification
|
182
|
+
name: "growl"
|
203
183
|
|
204
184
|
development:
|
205
185
|
<<: *defaults
|
data/lib/fluentd-ui/version.rb
CHANGED
data/lib/tasks/dep.rake
CHANGED
@@ -2,6 +2,7 @@ namespace :dep do
|
|
2
2
|
desc "list dependency gems order by less referenced"
|
3
3
|
task :list do
|
4
4
|
require "set"
|
5
|
+
require "fileutils"
|
5
6
|
deps = Set.new
|
6
7
|
context = false
|
7
8
|
current_parent = false
|
@@ -9,9 +10,14 @@ namespace :dep do
|
|
9
10
|
"bundler" => "1.7.4" # bundler version does not appear in Gemfile.lock
|
10
11
|
}
|
11
12
|
skip_gems = %w(fluentd)
|
13
|
+
ignore_gems_at_dump = %w(bundler rake json httpclient fluentd-ui) # these gems are installed by td-agent
|
12
14
|
lock_file = "Gemfile.production.lock"
|
13
15
|
unless ENV["SKIP_BUNDLE_INSTALL"]
|
14
|
-
|
16
|
+
# ensure Gemfile.production.lock file is up to date
|
17
|
+
Bundler.with_clean_env do
|
18
|
+
FileUtils.cp "Gemfile.lock", "Gemfile.production.lock"
|
19
|
+
system("bundle install --no-deployment --gemfile Gemfile.production")
|
20
|
+
end
|
15
21
|
end
|
16
22
|
|
17
23
|
File.open(lock_file).each_line do |line|
|
@@ -53,6 +59,7 @@ namespace :dep do
|
|
53
59
|
rank[parent] += 1
|
54
60
|
end
|
55
61
|
rank.to_a.sort_by {|(name, score)| score }.each do |(name, score)|
|
62
|
+
next if ignore_gems_at_dump.include?(name)
|
56
63
|
puts %Q|download "#{name}", "#{versions[name]}"|
|
57
64
|
end
|
58
65
|
end
|
@@ -39,12 +39,12 @@ describe FileReverseReader do
|
|
39
39
|
|
40
40
|
context "contain ascii only" do
|
41
41
|
let(:content) { "ABCDE" }
|
42
|
-
it { should
|
42
|
+
it { should == false }
|
43
43
|
end
|
44
44
|
|
45
45
|
context "contain non-ascii" do
|
46
46
|
let(:content) { "\x89NG" }
|
47
|
-
it { should
|
47
|
+
it { should == true }
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
@@ -0,0 +1,110 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe FluentGem do
|
4
|
+
describe "#install" do
|
5
|
+
let(:gem) { FluentGem.gem }
|
6
|
+
|
7
|
+
context "no argument" do
|
8
|
+
after { FluentGem.install }
|
9
|
+
it { FluentGem.should_receive(:run).with("install") }
|
10
|
+
end
|
11
|
+
|
12
|
+
context "with arguments" do
|
13
|
+
after { FluentGem.install(*args) }
|
14
|
+
|
15
|
+
context "1" do
|
16
|
+
let(:args) { ["plugin-foo"] }
|
17
|
+
it { FluentGem.should_receive(:run).with("install", *args) }
|
18
|
+
end
|
19
|
+
|
20
|
+
context "2" do
|
21
|
+
let(:args) { ["plugin-foo", "--no-document"] }
|
22
|
+
it { FluentGem.should_receive(:run).with("install", *args) }
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe "#uninstall" do
|
28
|
+
let(:gem) { FluentGem.gem }
|
29
|
+
|
30
|
+
context "no argument" do
|
31
|
+
after { FluentGem.uninstall }
|
32
|
+
it { FluentGem.should_receive(:run).with("uninstall") }
|
33
|
+
end
|
34
|
+
|
35
|
+
context "with arguments" do
|
36
|
+
after { FluentGem.uninstall(*args) }
|
37
|
+
|
38
|
+
context "1" do
|
39
|
+
let(:args) { ["plugin-foo"] }
|
40
|
+
it { FluentGem.should_receive(:run).with("uninstall", *args) }
|
41
|
+
end
|
42
|
+
|
43
|
+
context "2" do
|
44
|
+
let(:args) { ["plugin-foo", "--no-document"] }
|
45
|
+
it { FluentGem.should_receive(:run).with("uninstall", *args) }
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe "#list" do
|
51
|
+
before { FluentGem.stub(:`).and_return(gem_list) }
|
52
|
+
subject { FluentGem.list }
|
53
|
+
|
54
|
+
context "no list" do
|
55
|
+
let(:gem_list) { "" }
|
56
|
+
it { subject.to_a.should == [] }
|
57
|
+
end
|
58
|
+
|
59
|
+
context "some lines" do
|
60
|
+
let(:gem_list) { <<-GEM.strip_heredoc }
|
61
|
+
dummy (3.3.3)
|
62
|
+
fluent-plugin-foo (0.1.2)
|
63
|
+
more_dummy (0.0.1)
|
64
|
+
GEM
|
65
|
+
it { subject.to_a.should == gem_list.lines.to_a }
|
66
|
+
end
|
67
|
+
|
68
|
+
context "failed" do
|
69
|
+
let(:gem_list) { "" }
|
70
|
+
before { $?.stub(:exitstatus).and_return(128) }
|
71
|
+
it { expect{ subject }.to raise_error(FluentGem::GemError) }
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
describe "#run" do
|
76
|
+
before { FluentGem.stub(:system).and_return(ret) }
|
77
|
+
let(:args) { ["install", "foobar"] }
|
78
|
+
|
79
|
+
describe "success" do
|
80
|
+
let(:ret) { true }
|
81
|
+
after { FluentGem.run(*args) }
|
82
|
+
it { FluentGem.should_receive(:system) }
|
83
|
+
end
|
84
|
+
|
85
|
+
describe "failed" do
|
86
|
+
let(:ret) { false }
|
87
|
+
it { expect{ FluentGem.run(*args) }.to raise_error(FluentGem::GemError) }
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
describe "#gem" do
|
92
|
+
before { Fluentd.stub(:instance).and_return(instance) }
|
93
|
+
subject { FluentGem.gem }
|
94
|
+
|
95
|
+
context "any instance not setup yet" do
|
96
|
+
let(:instance) { nil }
|
97
|
+
it { should == "fluent-gem" }
|
98
|
+
end
|
99
|
+
|
100
|
+
context "fluentd setup" do
|
101
|
+
let(:instance) { Fluentd.new(id: nil, variant: "fluentd_gem", log_file: "dummy.log", pid_file: "dummy.pid", config_file: "dummy.conf") }
|
102
|
+
it { should == "fluent-gem" }
|
103
|
+
end
|
104
|
+
|
105
|
+
context "td-agent 2 setup" do
|
106
|
+
let(:instance) { Fluentd.new(id: nil, variant: "td_agent", log_file: "dummy.log", pid_file: "dummy.pid", config_file: "dummy.conf") }
|
107
|
+
it { should == FluentGem.detect_td_agent_gem }
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
data/spec/models/plugin_spec.rb
CHANGED
@@ -4,7 +4,7 @@ describe Plugin do
|
|
4
4
|
let(:plugin) { build(:plugin) }
|
5
5
|
|
6
6
|
describe ".installed" do
|
7
|
-
before {
|
7
|
+
before { FluentGem.stub(:"`").and_return(gem_list) }
|
8
8
|
|
9
9
|
context "fluent-plugin-foo 0.1.2" do
|
10
10
|
let(:target) { Plugin.new(gem_name: "fluent-plugin-foo", version: "0.1.2") }
|
@@ -73,12 +73,12 @@ describe Plugin do
|
|
73
73
|
|
74
74
|
context "installed" do
|
75
75
|
let(:installed) { true }
|
76
|
-
it {
|
76
|
+
it { FluentGem.should_not_receive(:install) }
|
77
77
|
end
|
78
78
|
|
79
79
|
context "not installed" do
|
80
80
|
let(:installed) { false }
|
81
|
-
it {
|
81
|
+
it { FluentGem.should_receive(:install) }
|
82
82
|
end
|
83
83
|
end
|
84
84
|
|
@@ -87,22 +87,22 @@ describe Plugin do
|
|
87
87
|
|
88
88
|
context "installed" do
|
89
89
|
let(:installed) { true }
|
90
|
-
it {
|
90
|
+
it { FluentGem.should_not_receive(:install) }
|
91
91
|
end
|
92
92
|
|
93
93
|
context "not installed" do
|
94
94
|
let(:installed) { false }
|
95
|
-
it {
|
95
|
+
it { FluentGem.should_not_receive(:installed) }
|
96
96
|
end
|
97
97
|
end
|
98
98
|
end
|
99
99
|
|
100
100
|
context "system command error" do
|
101
|
-
before {
|
101
|
+
before { FluentGem.should_receive(:system).at_least(1).and_return(false) }
|
102
102
|
subject { expect { plugin.install! } }
|
103
103
|
|
104
104
|
it "raise GemError" do
|
105
|
-
subject.to raise_error(
|
105
|
+
subject.to raise_error(FluentGem::GemError)
|
106
106
|
end
|
107
107
|
|
108
108
|
it "error message contains gem name" do
|
@@ -139,10 +139,10 @@ describe Plugin do
|
|
139
139
|
before do
|
140
140
|
# NOTE: not `plugin.stub` because upgrade! creates new Plugin instance internally
|
141
141
|
installed_plugin.stub(:installed?).and_return(true)
|
142
|
-
|
142
|
+
FluentGem.stub(:run).and_return(true)
|
143
143
|
|
144
144
|
installed_plugin.should_receive(:uninstall!)
|
145
|
-
|
145
|
+
FluentGem.should_receive(:install)
|
146
146
|
end
|
147
147
|
|
148
148
|
it { installed_plugin.upgrade!(target_version) }
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluentd-ui
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Masahiro Nakagawa
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-11-
|
12
|
+
date: 2014-11-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: fluentd
|
@@ -323,6 +323,7 @@ files:
|
|
323
323
|
- app/mailers/.keep
|
324
324
|
- app/models/.keep
|
325
325
|
- app/models/concerns/.keep
|
326
|
+
- app/models/fluent_gem.rb
|
326
327
|
- app/models/fluentd.rb
|
327
328
|
- app/models/fluentd/agent.rb
|
328
329
|
- app/models/fluentd/agent/common.rb
|
@@ -473,6 +474,7 @@ files:
|
|
473
474
|
- spec/grok_converter_spec.rb
|
474
475
|
- spec/lib/file_reverse_reader_spec.rb
|
475
476
|
- spec/lib/fluentd-ui_spec.rb
|
477
|
+
- spec/models/fluent_gem_spec.rb
|
476
478
|
- spec/models/fluentd/agent_spec.rb
|
477
479
|
- spec/models/fluentd/setting/common_spec.rb
|
478
480
|
- spec/models/fluentd/setting/in_syslog_spec.rb
|
@@ -638,6 +640,7 @@ test_files:
|
|
638
640
|
- spec/grok_converter_spec.rb
|
639
641
|
- spec/lib/file_reverse_reader_spec.rb
|
640
642
|
- spec/lib/fluentd-ui_spec.rb
|
643
|
+
- spec/models/fluent_gem_spec.rb
|
641
644
|
- spec/models/fluentd/agent_spec.rb
|
642
645
|
- spec/models/fluentd/setting/common_spec.rb
|
643
646
|
- spec/models/fluentd/setting/in_syslog_spec.rb
|