lbrt 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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