fluent-plugin-specinfra_inventory 0.1.0 → 0.2.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 325affa217ecd8c5f86d51dd3f3f58f22109987f
4
- data.tar.gz: 70ca87f72c046b39af42a84369e7bfba3d7643c4
3
+ metadata.gz: 3c9298f6319f6d53a76d0df249610c062c8f943c
4
+ data.tar.gz: 8c9ec9f5d57893d19f15e70500781bc765f5ac9d
5
5
  SHA512:
6
- metadata.gz: 28c37fffa02f61402657823d1a2c9c1ee48a10182b186cb2aa1db190e3b8dcaf93cc73a9d5606a83de7903ee433593a14ced51c33a5fc2602b5ec35d72bb0946
7
- data.tar.gz: 3f4113a574a90ba4eee593afe8a22714744318a215389b2e899d2d7513d7ee1d2fa52dbf8a41cd32dc62558477d4584fc34bf7e0c6c11e5dce55b624c1fc2e5d
6
+ metadata.gz: 45ed2d49b08f0172b6c9af7a93a667566503cfd66a12b3f9e5ff7f5b8eff63cc3ff5ebd9f7bb613acc37fa2c19fe915b9cb64a8aedbf8ce73807e3cebe0bd2f0
7
+ data.tar.gz: d1b88e2d21aa0e83f8120dd36716da03fb255b6f9f33b03cbe50c110ab9984289f33b981c8ec6c5990abeed86a1ec71ef4238b0b0f7c3043aa7e945aba74faa1
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ ## 0.2.0
2
+
3
+ * Add `cast_num` option
4
+ * Add `cast_byte` option
5
+ * Add `cast_percent` option
6
+
1
7
  ## 0.1.0
2
8
 
3
9
  * Change default value of `inventory_keys` option
@@ -5,7 +11,7 @@
5
11
 
6
12
  ## 0.0.5
7
13
 
8
- * Add combine option
14
+ * Add `combine` option
9
15
 
10
16
  ## 0.0.4
11
17
 
data/README.md CHANGED
@@ -29,6 +29,9 @@ Or install it yourself as:
29
29
  inventory_keys ["cpu.total","memory"]
30
30
  combine false
31
31
  family ubuntu
32
+ cast_num true
33
+ cast_byte true
34
+ cast_percent true
32
35
  release 14.04
33
36
  arch x86_64
34
37
  path /user/local/bin
@@ -45,8 +48,8 @@ defualt: `60`
45
48
 
46
49
  ### tag_prefix
47
50
  Prefix of tags of events.
48
- Event tags are added together inventory key at the end. like: `example.prefix.cpu`
49
- If you set `true` to `combine` option, It does not added the key at the end.
51
+ Event tags are added together inventory key at the end(like: `example.prefix.cpu`)
52
+ If you set `true` to `combine` option, It does not added the key at the end.
50
53
  default: `specinfra.inventory`
51
54
 
52
55
  ### backend
@@ -62,6 +65,18 @@ default: All available keys of `Specinfra::HostInventory`
62
65
  Combining values of `inventory_keys` to one record.
63
66
  default: `true`
64
67
 
68
+ ### cast_num
69
+ Cast all number value to integer.
70
+ default: `false`
71
+
72
+ ### cast_byte
73
+ Cast all byte value(like `512KB`) to integer.
74
+ default: `false`
75
+
76
+ ### cast_percent
77
+ Cast all percentile value(like `50%`) to integer.
78
+ default: `false`
79
+
65
80
  ### family, release, arch
66
81
  See [Multi OS Support](http://serverspec.org/tutorial.html)
67
82
 
data/Rakefile CHANGED
@@ -3,7 +3,7 @@ require 'rake/testtask'
3
3
 
4
4
  require 'rspec/core/rake_task'
5
5
  RSpec::Core::RakeTask.new(:spec) do |spec|
6
- spec.pattern = 'spec/*_spec.rb'
6
+ spec.pattern = 'spec/**/*_spec.rb'
7
7
  end
8
8
 
9
9
  task :default => [:spec]
@@ -15,6 +15,9 @@ module Fluent
15
15
  config_param :env, :hash, default: {}
16
16
  config_param :inventory_keys, :array, default: []
17
17
  config_param :combine, :bool, default: true
18
+ config_param :cast_num, :bool, default: false
19
+ config_param :cast_byte, :bool, default: false
20
+ config_param :cast_percent, :bool, default: false
18
21
 
19
22
  KEY_DELIMITER = "."
20
23
 
@@ -95,8 +98,39 @@ module Fluent
95
98
  key.split(KEY_DELIMITER).each do |k|
96
99
  inv = inv[k]
97
100
  end
98
- {key => inv}
101
+ {key => cast(inv)}
99
102
  end
100
103
 
104
+ def cast(inv)
105
+ if @cast_num || @cast_byte || @cast_percent
106
+ if inv.is_a?(Hash)
107
+ inv = Hash[inv.map { |k,v| [k, cast(v)] }]
108
+ elsif inv.is_a?(Array)
109
+ inv = inv.map do |v|
110
+ v = cast(v)
111
+ end
112
+ else
113
+ inv = _cast_num(inv) if @cast_num && inv.is_a?(String)
114
+ inv = _cast_byte(inv) if @cast_byte && inv.is_a?(String)
115
+ inv = _cast_percent(inv) if @cast_percent && inv.is_a?(String)
116
+ end
117
+ end
118
+ inv
119
+ end
120
+
121
+ def _cast_num(v)
122
+ m = v.match(/^([1-9]\d*|0)$/)
123
+ m.nil? ? v : m[0].to_i
124
+ end
125
+
126
+ def _cast_byte(v)
127
+ m = v.match(/^(\d+)(kb|KB)$/)
128
+ m.nil? ? v : m[0].to_i * 1000
129
+ end
130
+
131
+ def _cast_percent(v)
132
+ m = v.match(/^(\d+)%$/)
133
+ m.nil? ? v : m[0].to_i
134
+ end
101
135
  end
102
136
  end
@@ -1,7 +1,7 @@
1
1
  module Fluent
2
2
  module Plugin
3
3
  module SpecinfraInventory
4
- VERSION = "0.1.0"
4
+ VERSION = "0.2.0"
5
5
  end
6
6
  end
7
7
  end
@@ -9,7 +9,8 @@ describe Fluent::SpecinfraInventoryInput do
9
9
  'cpu' => {
10
10
  'total' => "2",
11
11
  '0' => {
12
- 'vendor_id' => "1"
12
+ 'vendor_id' => "1",
13
+ 'cache_size' => "512KB"
13
14
  }
14
15
  }
15
16
  }
@@ -28,6 +29,10 @@ describe Fluent::SpecinfraInventoryInput do
28
29
  host localhost
29
30
  ssh_user test-user
30
31
  ssh_port 2222
32
+ combine false
33
+ cast_num true
34
+ cast_byte true
35
+ cast_percent true
31
36
  env {"TEST_ENV": "test_value"}
32
37
  ]
33
38
  end
@@ -44,6 +49,10 @@ describe Fluent::SpecinfraInventoryInput do
44
49
  example { expect(@d.instance.host).to eq "localhost" }
45
50
  example { expect(@d.instance.ssh_user).to eq "test-user" }
46
51
  example { expect(@d.instance.ssh_port).to eq 2222 }
52
+ example { expect(@d.instance.combine).to eq false }
53
+ example { expect(@d.instance.cast_num).to eq true }
54
+ example { expect(@d.instance.cast_byte).to eq true }
55
+ example { expect(@d.instance.cast_percent).to eq true }
47
56
  example { expect(@d.instance.env).to include('TEST_ENV' => 'test_value') }
48
57
  end
49
58
 
@@ -52,10 +61,35 @@ describe Fluent::SpecinfraInventoryInput do
52
61
  end
53
62
 
54
63
  describe "record on flat hash" do
55
- example { expect(@d.instance.record("cpu")['cpu']).to include('total' => "2") }
64
+ example { expect(@d.instance.record("cpu")['cpu']).to include('total' => 2) }
56
65
  end
57
66
 
58
67
  describe "record on nested hash" do
59
- example { expect(@d.instance.record("cpu.0")['cpu.0']).to include('vendor_id' => "1") }
68
+ example { expect(@d.instance.record("cpu.0")['cpu.0']).to include('vendor_id' => 1) }
69
+ example { expect(@d.instance.record("cpu.0")['cpu.0']).to include('cache_size' => 512000) }
70
+ end
71
+
72
+ describe "cast_num" do
73
+ example { expect(@d.instance._cast_num("0")).to eq 0 }
74
+ example { expect(@d.instance._cast_num("1")).to eq 1 }
75
+ example { expect(@d.instance._cast_num("109")).to eq 109 }
76
+ example { expect(@d.instance._cast_num("01")).to eq "01" }
77
+ example { expect(@d.instance._cast_num("test")).to eq "test" }
78
+ end
79
+
80
+ describe "cast_byte" do
81
+ example { expect(@d.instance._cast_byte("12")).to eq "12" }
82
+ example { expect(@d.instance._cast_byte("0kb")).to eq 0 }
83
+ example { expect(@d.instance._cast_byte("99kb")).to eq 99000 }
84
+ example { expect(@d.instance._cast_byte("akb")).to eq "akb" }
85
+ example { expect(@d.instance._cast_byte("1%")).to eq "1%" }
86
+ end
87
+
88
+ describe "cast_percent" do
89
+ example { expect(@d.instance._cast_percent("99")).to eq "99" }
90
+ example { expect(@d.instance._cast_percent("77%")).to eq 77 }
91
+ example { expect(@d.instance._cast_percent("0%")).to eq 0 }
92
+ example { expect(@d.instance._cast_percent("percent")).to eq "percent" }
93
+ example { expect(@d.instance._cast_percent("s%")).to eq "s%" }
60
94
  end
61
95
  end
data/spec/spec_helper.rb CHANGED
@@ -1,79 +1,5 @@
1
- require 'coveralls'
2
- Coveralls.wear!
3
-
4
1
  require 'fluent/load'
5
2
  require 'fluent/test'
6
3
 
7
- RSpec.configure do |config|
8
- # rspec-expectations config goes here. You can use an alternate
9
- # assertion/expectation library such as wrong or the stdlib/minitest
10
- # assertions if you prefer.
11
- config.expect_with :rspec do |expectations|
12
- # This option will default to `true` in RSpec 4. It makes the `description`
13
- # and `failure_message` of custom matchers include text for helper methods
14
- # defined using `chain`, e.g.:
15
- # be_bigger_than(2).and_smaller_than(4).description
16
- # # => "be bigger than 2 and smaller than 4"
17
- # ...rather than:
18
- # # => "be bigger than 2"
19
- expectations.include_chain_clauses_in_custom_matcher_descriptions = true
20
- end
21
-
22
- # rspec-mocks config goes here. You can use an alternate test double
23
- # library (such as bogus or mocha) by changing the `mock_with` option here.
24
- config.mock_with :rspec do |mocks|
25
- # Prevents you from mocking or stubbing a method that does not exist on
26
- # a real object. This is generally recommended, and will default to
27
- # `true` in RSpec 4.
28
- mocks.verify_partial_doubles = true
29
- end
30
-
31
- # The settings below are suggested to provide a good initial experience
32
- # with RSpec, but feel free to customize to your heart's content.
33
- =begin
34
- # These two settings work together to allow you to limit a spec run
35
- # to individual examples or groups you care about by tagging them with
36
- # `:focus` metadata. When nothing is tagged with `:focus`, all examples
37
- # get run.
38
- config.filter_run :focus
39
- config.run_all_when_everything_filtered = true
40
-
41
- # Limits the available syntax to the non-monkey patched syntax that is
42
- # recommended. For more details, see:
43
- # - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax
44
- # - http://teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
45
- # - http://myronmars.to/n/dev-blog/2014/05/notable-changes-in-rspec-3#new__config_option_to_disable_rspeccore_monkey_patching
46
- config.disable_monkey_patching!
47
-
48
- # This setting enables warnings. It's recommended, but in some cases may
49
- # be too noisy due to issues in dependencies.
50
- config.warnings = true
51
-
52
- # Many RSpec users commonly either run the entire suite or an individual
53
- # file, and it's useful to allow more verbose output when running an
54
- # individual spec file.
55
- if config.files_to_run.one?
56
- # Use the documentation formatter for detailed output,
57
- # unless a formatter has already been configured
58
- # (e.g. via a command-line flag).
59
- config.default_formatter = 'doc'
60
- end
61
-
62
- # Print the 10 slowest examples and example groups at the
63
- # end of the spec run, to help surface which specs are running
64
- # particularly slow.
65
- config.profile_examples = 10
66
-
67
- # Run specs in random order to surface order dependencies. If you find an
68
- # order dependency and want to debug it, you can fix the order by providing
69
- # the seed, which is printed after each run.
70
- # --seed 1234
71
- config.order = :random
72
-
73
- # Seed global randomization in this process using the `--seed` CLI option.
74
- # Setting this allows you to use `--seed` to deterministically reproduce
75
- # test failures related to randomization by passing the same `--seed` value
76
- # as the one that triggered the failure.
77
- Kernel.srand config.seed
78
- =end
79
- end
4
+ require 'coveralls'
5
+ Coveralls.wear!
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-specinfra_inventory
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Masashi Terui
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-02 00:00:00.000000000 Z
11
+ date: 2015-03-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fluentd
@@ -102,7 +102,6 @@ extensions: []
102
102
  extra_rdoc_files: []
103
103
  files:
104
104
  - ".gitignore"
105
- - ".rspec"
106
105
  - ".travis.yml"
107
106
  - CHANGELOG.md
108
107
  - Gemfile
data/.rspec DELETED
@@ -1,2 +0,0 @@
1
- --color
2
- --require spec_helper