lbrt 0.1.0 → 0.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0587bca6521f9f9dbc40c8d8106ce602c4023242
4
- data.tar.gz: 090509bf9e71de9643137d1e8e35afb2be48ca3e
3
+ metadata.gz: 2b122a973c917adac9f07048a6e2da5c087c9695
4
+ data.tar.gz: e7045f54fdc6bde43c8fa883d822ab060457a3d9
5
5
  SHA512:
6
- metadata.gz: b80a14bd9e249bc96d72ee969d7cafa9029cbb4454372d50405866db39de6ec989f934b4e0fb4876ea52594dfba4dd8814597952d94e017b28afa67e03a78587
7
- data.tar.gz: 672c628fc54edc1356c8cac95a5d816fc52cf2b183ab7dc3237088aefd5d69a86e5b1eb4e48d0a8fcf22f7f31a75d4b5ecf4247c0451877e091349e35e9819eb
6
+ metadata.gz: 787ce020528938c95397a1cab36b9a0aff497fea28826dbae6ce21a3d0491362e295191d172edffc5e47b1a7766586a5418693947711714aa690ffdfc084a877
7
+ data.tar.gz: 22a05b0628b4c4b5e02cecce5a55947a0a8be9ee953f9d46865cfb790f569b72feacf75dae08276827803488d2609b52eb34d3be28832a232c2d4e03f4ba3831
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Lbrt
2
2
 
3
- A tool to manage Librato. It defines the state of Librato using DSL, and updates Librato according to DSL.
3
+ A tool to manage [Librato](https://www.librato.com/). It defines the state of [Librato](https://www.librato.com/) using DSL, and updates Librato according to DSL.
4
4
 
5
5
  ## Installation
6
6
 
@@ -178,3 +178,36 @@ space "My Space2" do
178
178
  end
179
179
  end
180
180
  ```
181
+
182
+ ### Space template
183
+
184
+ ```ruby
185
+ template "dstat" do
186
+ chart "total_cpu_usage" do
187
+ type "stacked"
188
+ stream do
189
+ metric "dstat.#{context.space_name}.total_cpu_usage"
190
+ type "gauge"
191
+ source "*"
192
+ group_function "breakout"
193
+ summary_function "average"
194
+ end
195
+ max 100.0
196
+ end
197
+
198
+ chart "load_avg" do
199
+ type "line"
200
+ stream do
201
+ metric "dstat.#{context.space_name}.load_avg"
202
+ type "gauge"
203
+ source "*"
204
+ group_function "breakout"
205
+ summary_function "average"
206
+ end
207
+ end
208
+ end
209
+
210
+ space "my-host-001" do
211
+ include_template("dstat")
212
+ end
213
+ ```
data/lbrt.gemspec CHANGED
@@ -20,6 +20,7 @@ Gem::Specification.new do |spec|
20
20
  spec.require_paths = ['lib']
21
21
 
22
22
  spec.add_dependency 'diffy'
23
+ spec.add_dependency 'hashie'
23
24
  spec.add_dependency 'librato-client'
24
25
  spec.add_dependency 'parallel'
25
26
  spec.add_dependency 'term-ansicolor'
@@ -7,13 +7,16 @@ class Lbrt::Space::DSL::Context::Space::Chart::Stream
7
7
  summary_function
8
8
  )
9
9
 
10
- def initialize(space_name_or_id, chart_name_or_id, &block)
10
+ def initialize(context, space_name_or_id, chart_name_or_id, &block)
11
+ @context = context.dup
11
12
  @space_name_or_id = space_name_or_id
12
13
  @chart_name_or_id = chart_name_or_id
13
14
  @result = {}
14
15
  instance_eval(&block)
15
16
  end
16
17
 
18
+ attr_reader :context
19
+
17
20
  def result
18
21
  REQUIRED_ATTRIBUTES.each do |name|
19
22
  unless @result.has_key?(name)
@@ -3,13 +3,16 @@ class Lbrt::Space::DSL::Context::Space::Chart
3
3
  type
4
4
  )
5
5
 
6
- def initialize(space_name_or_id, name_or_id, &block)
6
+ def initialize(context, space_name_or_id, name_or_id, &block)
7
+ @context = context.merge(:chart_name => name_or_id)
7
8
  @space_name_or_id = space_name_or_id
8
9
  @name_or_id = name_or_id
9
10
  @result = {'streams' => []}
10
11
  instance_eval(&block)
11
12
  end
12
13
 
14
+ attr_reader :context
15
+
13
16
  def result
14
17
  REQUIRED_ATTRIBUTES.each do |name|
15
18
  unless @result.has_key?(name)
@@ -27,7 +30,7 @@ class Lbrt::Space::DSL::Context::Space::Chart
27
30
  end
28
31
 
29
32
  def stream(&block)
30
- @result['streams'] << Lbrt::Space::DSL::Context::Space::Chart::Stream.new(@space_name_or_id, @name_or_id, &block).result
33
+ @result['streams'] << Lbrt::Space::DSL::Context::Space::Chart::Stream.new(@context, @space_name_or_id, @name_or_id, &block).result
31
34
  end
32
35
 
33
36
  def max(value)
@@ -1,19 +1,32 @@
1
1
  class Lbrt::Space::DSL::Context::Space
2
- def initialize(name_or_id, &block)
2
+ def initialize(name_or_id, templates, &block)
3
3
  @name_or_id = name_or_id
4
+ @templates = templates
4
5
  @result = {'charts' => {}}
6
+ @context = Hashie::Mash.new(:space_name => name_or_id)
5
7
  instance_eval(&block)
6
8
  end
7
9
 
8
10
  attr_reader :result
11
+ attr_reader :context
9
12
 
10
13
  private
11
14
 
15
+ def include_template(template_name)
16
+ tmplt = @templates[template_name]
17
+
18
+ unless tmplt
19
+ raise "Space `#{@name_or_id}`: Template `#{template_name}` is not defined"
20
+ end
21
+
22
+ instance_eval(&tmplt)
23
+ end
24
+
12
25
  def chart(chart_name_or_id, &block)
13
26
  if @result[chart_name_or_id]
14
27
  raise "Space `#{@name_or_id}` > Chart `#{chart_name_or_id}` is already defined"
15
28
  end
16
29
 
17
- @result['charts'][chart_name_or_id] = Lbrt::Space::DSL::Context::Space::Chart.new(@name_or_id, chart_name_or_id, &block).result
30
+ @result['charts'][chart_name_or_id] = Lbrt::Space::DSL::Context::Space::Chart.new(@context, @name_or_id, chart_name_or_id, &block).result
18
31
  end
19
32
  end
@@ -12,18 +12,23 @@ class Lbrt::Space::DSL::Context
12
12
  def initialize(path, options = {}, &block)
13
13
  @path = path
14
14
  @options = options
15
+ @templates = {}
15
16
  @result = {}
16
17
  instance_eval(&block)
17
18
  end
18
19
 
19
20
  private
20
21
 
22
+ def template(name, &block)
23
+ @templates[name] = block
24
+ end
25
+
21
26
  def space(name_or_id, &block)
22
27
  if @result[name_or_id]
23
28
  raise "Space `#{name_or_id}` is already defined"
24
29
  end
25
30
 
26
- spc = Lbrt::Space::DSL::Context::Space.new(name_or_id, &block).result
31
+ spc = Lbrt::Space::DSL::Context::Space.new(name_or_id, @templates, &block).result
27
32
  @result[name_or_id] = spc
28
33
  end
29
34
  end
@@ -0,0 +1,2 @@
1
+ module Lbrt::Space::DSL::Helper
2
+ end
data/lib/lbrt/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Lbrt
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.1'
3
3
  end
data/lib/lbrt.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'diffy'
2
+ require 'hashie'
2
3
  require 'librato/client'
3
4
  require 'logger'
4
5
  require 'parallel'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lbrt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Genki Sugawara
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-08-16 00:00:00.000000000 Z
11
+ date: 2015-08-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: diffy
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: hashie
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: librato-client
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -171,6 +185,7 @@ files:
171
185
  - lib/lbrt/space/dsl/context/space/chart.rb
172
186
  - lib/lbrt/space/dsl/context/space/chart/stream.rb
173
187
  - lib/lbrt/space/dsl/converter.rb
188
+ - lib/lbrt/space/dsl/helper.rb
174
189
  - lib/lbrt/space/exporter.rb
175
190
  - lib/lbrt/utils.rb
176
191
  - lib/lbrt/version.rb