fluentd-ui 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of fluentd-ui might be problematic. Click here for more details.

Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/ChangeLog +6 -0
  3. data/Gemfile.lock +66 -67
  4. data/app/controllers/concerns/setting_concern.rb +15 -0
  5. data/app/controllers/fluentd/settings/in_syslog_controller.rb +0 -7
  6. data/app/controllers/fluentd/settings/out_elasticsearch_controller.rb +0 -12
  7. data/app/controllers/fluentd/settings/out_forward_controller.rb +0 -10
  8. data/app/controllers/fluentd/settings/out_mongo_controller.rb +0 -9
  9. data/app/controllers/fluentd/settings/out_s3_controller.rb +4 -26
  10. data/app/models/fluentd/setting/in_syslog.rb +17 -0
  11. data/app/models/fluentd/setting/out_elasticsearch.rb +26 -0
  12. data/app/models/fluentd/setting/out_forward.rb +23 -0
  13. data/app/models/fluentd/setting/out_mongo.rb +23 -0
  14. data/app/models/fluentd/setting/out_s3.rb +25 -0
  15. data/app/models/fluentd/setting/out_td.rb +21 -0
  16. data/app/views/shared/settings/_form.html.haml +17 -0
  17. data/app/views/shared/settings/show.html.haml +6 -0
  18. data/fluentd-ui.gemspec +2 -2
  19. data/lib/fluentd-ui/version.rb +1 -1
  20. data/lib/tasks/dep.rake +59 -0
  21. data/vendor/assets/javascripts/bower/vue/.bower.json +4 -4
  22. data/vendor/assets/javascripts/bower/vue/dist/vue.js +102 -43
  23. data/vendor/assets/javascripts/bower/vue/dist/vue.min.js +3 -3
  24. data/vendor/assets/javascripts/bower/vue/src/directives/on.js +3 -1
  25. data/vendor/assets/javascripts/bower/vue/src/directives/style.js +12 -6
  26. data/vendor/assets/javascripts/bower/vue/src/filters.js +1 -0
  27. data/vendor/assets/javascripts/bower/vue/src/fragment.js +4 -21
  28. data/vendor/assets/javascripts/bower/vue/src/main.js +11 -9
  29. data/vendor/assets/javascripts/bower/vue/src/template-parser.js +46 -0
  30. data/vendor/assets/javascripts/bower/vue/src/utils.js +7 -2
  31. data/vendor/assets/javascripts/bower/vue/src/viewmodel.js +14 -4
  32. metadata +12 -21
  33. data/app/views/fluentd/settings/in_syslog/_form.html.haml +0 -9
  34. data/app/views/fluentd/settings/in_syslog/show.html.haml +0 -6
  35. data/app/views/fluentd/settings/out_elasticsearch/_form.html.haml +0 -23
  36. data/app/views/fluentd/settings/out_elasticsearch/show.html.haml +0 -6
  37. data/app/views/fluentd/settings/out_forward/_form.html.haml +0 -22
  38. data/app/views/fluentd/settings/out_forward/show.html.haml +0 -6
  39. data/app/views/fluentd/settings/out_mongo/_form.html.haml +0 -30
  40. data/app/views/fluentd/settings/out_mongo/finish.html.haml +0 -4
  41. data/app/views/fluentd/settings/out_mongo/show.html.haml +0 -6
  42. data/app/views/fluentd/settings/out_s3/_form.html.haml +0 -39
  43. data/app/views/fluentd/settings/out_s3/show.html.haml +0 -6
  44. data/app/views/fluentd/settings/out_td/_form.html.haml +0 -18
  45. data/app/views/fluentd/settings/out_td/show.html.haml +0 -6
@@ -65,6 +65,29 @@ class Fluentd
65
65
  result
66
66
  end
67
67
  end
68
+
69
+ def self.initial_params
70
+ {
71
+ secondary: {
72
+ "0" => {
73
+ type: "file",
74
+ }
75
+ }
76
+ }
77
+ end
78
+
79
+ def common_options
80
+ [
81
+ :match, :server, :secondary,
82
+ ]
83
+ end
84
+
85
+ def advanced_options
86
+ [
87
+ :send_timeout, :recover_wait, :heartbeat_type, :heartbeat_interval,
88
+ :phi_threshold, :hard_timeout,
89
+ ]
90
+ end
68
91
  end
69
92
  end
70
93
  end
@@ -30,6 +30,29 @@ class Fluentd
30
30
  errors.add(:collection, :blank)
31
31
  end
32
32
  end
33
+
34
+ def self.initial_params
35
+ {
36
+ host: "127.0.0.1",
37
+ port: 27017,
38
+ capped: true,
39
+ capped_size: "100m",
40
+ }
41
+ end
42
+
43
+ def common_options
44
+ [
45
+ :match, :host, :port, :database, :collection,
46
+ :tag_mapped, :user, :password,
47
+ ]
48
+ end
49
+
50
+ def advanced_options
51
+ [
52
+ :capped, :capped_size, :capped_max, :buffer_type, :buffer_queue_limit, :buffer_chunk_limit,
53
+ :flush_interval, :retry_wait, :retry_limit, :max_retry_wait, :num_threads,
54
+ ]
55
+ end
33
56
  end
34
57
  end
35
58
  end
@@ -24,6 +24,31 @@ class Fluentd
24
24
 
25
25
  validates :match, presence: true
26
26
  validates :s3_bucket, presence: true
27
+
28
+ def self.initial_params
29
+ {
30
+ s3_endpoint: "s3-us-west-1.amazonaws.com",
31
+ output_tag: true,
32
+ output_time: true,
33
+ use_ssl: true,
34
+ }
35
+ end
36
+
37
+ def common_options
38
+ [
39
+ :match, :aws_key_id, :aws_sec_key,
40
+ :s3_endpoint, :s3_bucket, :use_ssl, :path,
41
+ ]
42
+ end
43
+
44
+ def advanced_options
45
+ [
46
+ :format, :output_tag, :output_time, :include_time_key, :time_key, :delimiter, :label_delimiter,
47
+ :utc, :time_slice_format, :time_slice_wait, :store_as, :proxy_uri,
48
+ :buffer_type, :buffer_queue_limit, :buffer_chunk_limit, :flush_interval,
49
+ :retry_wait, :retry_limit, :max_retry_wait, :num_threads,
50
+ ]
51
+ end
27
52
  end
28
53
  end
29
54
  end
@@ -21,6 +21,27 @@ class Fluentd
21
21
  def plugin_name
22
22
  "tdlog"
23
23
  end
24
+
25
+ def self.initial_params
26
+ {
27
+ buffer_type: "file",
28
+ buffer_path: "/var/log/td-agent/buffer/td",
29
+ auto_create_table: true,
30
+ match: "td.*.*",
31
+ }
32
+ end
33
+
34
+ def common_options
35
+ [
36
+ :match, :apikey, :auto_create_table, :database, :table,
37
+ ]
38
+ end
39
+
40
+ def advanced_options
41
+ [
42
+ :flush_interval, :buffer_type, :buffer_path,
43
+ ]
44
+ end
24
45
  end
25
46
  end
26
47
  end
@@ -0,0 +1,17 @@
1
+ = render "shared/setting_errors"
2
+
3
+ - # NOTE: plugin_setting_form_action_url is defined at SettingConcern
4
+ = form_for(@setting, url: plugin_setting_form_action_url(@fluentd), html: {class: "ignore-rails-error-div"}) do |f|
5
+ - @setting.common_options.each do |key|
6
+ = field(f, key)
7
+
8
+ - if @setting.advanced_options.present?
9
+ .well.well-sm
10
+ %h4{"data-toggle" => "collapse", "href" => "#advanced-setting"}
11
+ = icon('fa-caret-down')
12
+ = t('terms.advanced_setting')
13
+ #advanced-setting.collapse
14
+ - @setting.advanced_options.each do |key|
15
+ = field(f, key)
16
+ = f.submit t('fluentd.common.finish'), class: "btn btn-lg btn-primary pull-right"
17
+
@@ -0,0 +1,6 @@
1
+ - page_title t("fluentd.settings.#{target_plugin_name}.show.page_title")
2
+
3
+ .well
4
+ = raw t("fluentd.settings.#{target_plugin_name}.option_guide")
5
+
6
+ = render "shared/settings/form"
@@ -24,8 +24,8 @@ Gem::Specification.new do |spec|
24
24
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
25
25
  spec.require_paths = ["lib"]
26
26
 
27
- spec.add_dependency "fluentd", "~> 0.10.51"
28
- spec.add_dependency 'rails', '4.1.4'
27
+ spec.add_dependency "fluentd", "~> 0.10.56"
28
+ spec.add_dependency 'rails', '~> 4.1.7'
29
29
  spec.add_dependency 'sucker_punch', "~> 1.0.5"
30
30
  spec.add_dependency 'addressable'
31
31
  spec.add_dependency "font-awesome-rails"
@@ -1,3 +1,3 @@
1
1
  module FluentdUI
2
- VERSION = "0.3.0"
2
+ VERSION = "0.3.1"
3
3
  end
@@ -0,0 +1,59 @@
1
+ namespace :dep do
2
+ desc "list dependency gems order by less referenced"
3
+ task :list do
4
+ require "set"
5
+ deps = Set.new
6
+ context = false
7
+ current_parent = false
8
+ versions = {
9
+ "bundler" => "1.7.4" # bundler version does not appear in Gemfile.lock
10
+ }
11
+ skip_gems = %w(fluentd)
12
+ lock_file = "Gemfile.production.lock"
13
+ unless ENV["SKIP_BUNDLE_INSTALL"]
14
+ system("bundle install --gemfile Gemfile.production", out: STDERR) # ensure lock file is up to date
15
+ end
16
+
17
+ File.open(lock_file).each_line do |line|
18
+ # GEM
19
+ # remote: https://rubygems.org/
20
+ # specs:
21
+ # foo_gem (0.1.2)
22
+ # foo_dep1 (>= 1.0.0)
23
+ # foo_dep2
24
+ # bar_gem (1.2.1)
25
+ # bar_dep1
26
+ # ...
27
+ # ...
28
+ if line == " specs:\n"
29
+ context = true
30
+ next
31
+ end
32
+ gem_name = line[/[^ \n]+/, 0] # " foo_gem (0.1.2)\n" => "foo_gem"
33
+ if line.match(/^ {4}[^ ]/) # " foo_gem (0.1.2)"
34
+ if skip_gems.include?(gem_name)
35
+ current_parent = nil
36
+ next
37
+ end
38
+ current_parent = gem_name
39
+ versions[current_parent] = line[/\((.*?)\)/, 1] # foobar (1.2.3) => 1.2.3
40
+ next
41
+ elsif line.match(/^ {6}[^ ]/) # " foo_dep1 (>= 1.0.0)"
42
+ next if skip_gems.include?(gem_name)
43
+ next if current_parent.blank?
44
+ deps.add([current_parent, gem_name])
45
+ else
46
+ context = false
47
+ end
48
+ end
49
+ rank = {}
50
+ deps.to_a.each do |(parent, child)|
51
+ rank[parent] ||= 0
52
+ rank[child] ||= 0
53
+ rank[parent] += 1
54
+ end
55
+ rank.to_a.sort_by {|(name, score)| score }.each do |(name, score)|
56
+ puts %Q|download "#{name}", "#{versions[name]}"|
57
+ end
58
+ end
59
+ end
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vue",
3
- "version": "0.10.5",
3
+ "version": "0.10.6",
4
4
  "main": "dist/vue.js",
5
5
  "description": "Simple, Fast & Composable MVVM for building interative interfaces",
6
6
  "authors": [
@@ -17,11 +17,11 @@
17
17
  "*.md"
18
18
  ],
19
19
  "homepage": "https://github.com/yyx990803/vue",
20
- "_release": "0.10.5",
20
+ "_release": "0.10.6",
21
21
  "_resolution": {
22
22
  "type": "version",
23
- "tag": "v0.10.5",
24
- "commit": "fe996b388971b014279b1f90df26ef95d8b00f05"
23
+ "tag": "v0.10.6",
24
+ "commit": "cf37f7efd6d63c0aa46b50c624816e645ddd7edd"
25
25
  },
26
26
  "_source": "git://github.com/yyx990803/vue.git",
27
27
  "_target": "~0.10.0",
@@ -1,5 +1,5 @@
1
1
  /*
2
- Vue.js v0.10.5
2
+ Vue.js v0.10.6
3
3
  (c) 2014 Evan You
4
4
  License: MIT
5
5
  */
@@ -213,12 +213,14 @@ var config = require('./config'),
213
213
  ViewModel = require('./viewmodel'),
214
214
  utils = require('./utils'),
215
215
  makeHash = utils.hash,
216
- assetTypes = ['directive', 'filter', 'partial', 'effect', 'component']
217
-
218
- // require these so Browserify can catch them
219
- // so they can be used in Vue.require
220
- require('./observer')
221
- require('./transition')
216
+ assetTypes = ['directive', 'filter', 'partial', 'effect', 'component'],
217
+ // Internal modules that are exposed for plugins
218
+ pluginAPI = {
219
+ utils: utils,
220
+ config: config,
221
+ transition: require('./transition'),
222
+ observer: require('./observer')
223
+ }
222
224
 
223
225
  ViewModel.options = config.globalAssets = {
224
226
  directives : require('./directives'),
@@ -239,7 +241,7 @@ assetTypes.forEach(function (type) {
239
241
  }
240
242
  if (!value) return hash[id]
241
243
  if (type === 'partial') {
242
- value = utils.toFragment(value)
244
+ value = utils.parseTemplateOption(value)
243
245
  } else if (type === 'component') {
244
246
  value = utils.toConstructor(value)
245
247
  } else if (type === 'filter') {
@@ -294,8 +296,8 @@ ViewModel.use = function (plugin) {
294
296
  /**
295
297
  * Expose internal modules for plugins
296
298
  */
297
- ViewModel.require = function (path) {
298
- return require('./' + path)
299
+ ViewModel.require = function (module) {
300
+ return pluginAPI[module]
299
301
  }
300
302
 
301
303
  ViewModel.extend = extend
@@ -551,6 +553,11 @@ var utils = module.exports = {
551
553
  */
552
554
  toFragment: require('./fragment'),
553
555
 
556
+ /**
557
+ * Parse the various types of template options
558
+ */
559
+ parseTemplateOption: require('./template-parser.js'),
560
+
554
561
  /**
555
562
  * get a value from an object keypath
556
563
  */
@@ -745,7 +752,7 @@ var utils = module.exports = {
745
752
  }
746
753
  if (partials) {
747
754
  for (key in partials) {
748
- partials[key] = utils.toFragment(partials[key])
755
+ partials[key] = utils.parseTemplateOption(partials[key])
749
756
  }
750
757
  }
751
758
  if (filters) {
@@ -754,7 +761,7 @@ var utils = module.exports = {
754
761
  }
755
762
  }
756
763
  if (template) {
757
- options.template = utils.toFragment(template)
764
+ options.template = utils.parseTemplateOption(template)
758
765
  }
759
766
  },
760
767
 
@@ -872,29 +879,12 @@ map.rect = [1, '<svg xmlns="http://www.w3.org/2000/svg" version="1.1">','</svg>'
872
879
 
873
880
  var TAG_RE = /<([\w:]+)/
874
881
 
875
- module.exports = function (template) {
876
-
877
- if (typeof template !== 'string') {
878
- return template
879
- }
880
-
881
- // template by ID
882
- if (template.charAt(0) === '#') {
883
- var templateNode = document.getElementById(template.slice(1))
884
- if (!templateNode) return
885
- // if its a template tag and the browser supports it,
886
- // its content is already a document fragment!
887
- if (templateNode.tagName === 'TEMPLATE' && templateNode.content) {
888
- return templateNode.content
889
- }
890
- template = templateNode.innerHTML
891
- }
892
-
882
+ module.exports = function (templateString) {
893
883
  var frag = document.createDocumentFragment(),
894
- m = TAG_RE.exec(template)
884
+ m = TAG_RE.exec(templateString)
895
885
  // text only
896
886
  if (!m) {
897
- frag.appendChild(document.createTextNode(template))
887
+ frag.appendChild(document.createTextNode(templateString))
898
888
  return frag
899
889
  }
900
890
 
@@ -905,7 +895,7 @@ module.exports = function (template) {
905
895
  suffix = wrap[2],
906
896
  node = document.createElement('div')
907
897
 
908
- node.innerHTML = prefix + template.trim() + suffix
898
+ node.innerHTML = prefix + templateString.trim() + suffix
909
899
  while (depth--) node = node.lastChild
910
900
 
911
901
  // one element
@@ -1983,7 +1973,8 @@ var Compiler = require('./compiler'),
1983
1973
  * and a few reserved methods
1984
1974
  */
1985
1975
  function ViewModel (options) {
1986
- // just compile. options are passed directly to compiler
1976
+ // compile if options passed, if false return. options are passed directly to compiler
1977
+ if (options === false) return
1987
1978
  new Compiler(this, options)
1988
1979
  }
1989
1980
 
@@ -1991,6 +1982,15 @@ function ViewModel (options) {
1991
1982
  // so it can be stringified/looped through as raw data
1992
1983
  var VMProto = ViewModel.prototype
1993
1984
 
1985
+ /**
1986
+ * init allows config compilation after instantiation:
1987
+ * var a = new Vue(false)
1988
+ * a.init(config)
1989
+ */
1990
+ def(VMProto, '$init', function (options) {
1991
+ new Compiler(this, options)
1992
+ })
1993
+
1994
1994
  /**
1995
1995
  * Convenience function to get a value from
1996
1996
  * a keypath
@@ -2048,8 +2048,8 @@ def(VMProto, '$unwatch', function (key, callback) {
2048
2048
  /**
2049
2049
  * unbind everything, remove everything
2050
2050
  */
2051
- def(VMProto, '$destroy', function () {
2052
- this.$compiler.destroy()
2051
+ def(VMProto, '$destroy', function (noRemove) {
2052
+ this.$compiler.destroy(noRemove)
2053
2053
  })
2054
2054
 
2055
2055
  /**
@@ -2145,6 +2145,7 @@ function query (el) {
2145
2145
  }
2146
2146
 
2147
2147
  module.exports = ViewModel
2148
+
2148
2149
  });
2149
2150
  require.register("vue/src/binding.js", function(exports, require, module){
2150
2151
  var Batcher = require('./batcher'),
@@ -3150,6 +3151,55 @@ exports.eval = function (exp, compiler, data) {
3150
3151
  }
3151
3152
  return res
3152
3153
  }
3154
+ });
3155
+ require.register("vue/src/template-parser.js", function(exports, require, module){
3156
+ var toFragment = require('./fragment');
3157
+
3158
+ /**
3159
+ * Parses a template string or node and normalizes it into a
3160
+ * a node that can be used as a partial of a template option
3161
+ *
3162
+ * Possible values include
3163
+ * id selector: '#some-template-id'
3164
+ * template string: '<div><span>my template</span></div>'
3165
+ * DocumentFragment object
3166
+ * Node object of type Template
3167
+ */
3168
+ module.exports = function(template) {
3169
+ var templateNode;
3170
+
3171
+ if (template instanceof window.DocumentFragment) {
3172
+ // if the template is already a document fragment -- do nothing
3173
+ return template
3174
+ }
3175
+
3176
+ if (typeof template === 'string') {
3177
+ // template by ID
3178
+ if (template.charAt(0) === '#') {
3179
+ templateNode = document.getElementById(template.slice(1))
3180
+ if (!templateNode) return
3181
+ } else {
3182
+ return toFragment(template)
3183
+ }
3184
+ } else if (template.nodeType) {
3185
+ templateNode = template
3186
+ } else {
3187
+ return
3188
+ }
3189
+
3190
+ // if its a template tag and the browser supports it,
3191
+ // its content is already a document fragment!
3192
+ if (templateNode.tagName === 'TEMPLATE' && templateNode.content) {
3193
+ return templateNode.content
3194
+ }
3195
+
3196
+ if (templateNode.tagName === 'SCRIPT') {
3197
+ return toFragment(templateNode.innerHTML)
3198
+ }
3199
+
3200
+ return toFragment(templateNode.outerHTML);
3201
+ }
3202
+
3153
3203
  });
3154
3204
  require.register("vue/src/text-parser.js", function(exports, require, module){
3155
3205
  var openChar = '{',
@@ -3354,6 +3404,7 @@ filters.lowercase = function (value) {
3354
3404
  * 12345 => $12,345.00
3355
3405
  */
3356
3406
  filters.currency = function (value, sign) {
3407
+ value = parseFloat(value)
3357
3408
  if (!value && value !== 0) return ''
3358
3409
  sign = sign || '$'
3359
3410
  var s = Math.floor(value).toString(),
@@ -4271,7 +4322,9 @@ module.exports = {
4271
4322
  var el = this.iframeBind
4272
4323
  ? this.el.contentWindow
4273
4324
  : this.el
4274
- el.removeEventListener(this.arg, this.handler)
4325
+ if (this.handler) {
4326
+ el.removeEventListener(this.arg, this.handler)
4327
+ }
4275
4328
  },
4276
4329
 
4277
4330
  unbind: function () {
@@ -4571,13 +4624,19 @@ module.exports = {
4571
4624
  },
4572
4625
 
4573
4626
  update: function (value) {
4574
- var prop = this.prop
4627
+ var prop = this.prop,
4628
+ isImportant
4629
+ /* jshint eqeqeq: true */
4630
+ // cast possible numbers/booleans into strings
4631
+ if (value != null) value += ''
4575
4632
  if (prop) {
4576
- var isImportant = value.slice(-10) === '!important'
4577
- ? 'important'
4578
- : ''
4579
- if (isImportant) {
4580
- value = value.slice(0, -10).trim()
4633
+ if (value) {
4634
+ isImportant = value.slice(-10) === '!important'
4635
+ ? 'important'
4636
+ : ''
4637
+ if (isImportant) {
4638
+ value = value.slice(0, -10).trim()
4639
+ }
4581
4640
  }
4582
4641
  this.el.style.setProperty(prop, value, isImportant)
4583
4642
  if (this.prefixed) {