graphite-dashboard-api 0.1.0 → 0.2.0

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: 026018d8a4341a1ebef7965fec8089f395266064
4
- data.tar.gz: 17b8708e169cce2ae098298de0f37ba871876191
3
+ metadata.gz: 2986b39ea2e5915a6fe7f54b9b891b9ddc84b869
4
+ data.tar.gz: dbf8d5a884fdf4ec775694fd2d9bef170d557ca0
5
5
  SHA512:
6
- metadata.gz: 3ed9217aff65cb7e6c300419f9ee322e4d0809cbb431dbe9e6c48c347b4c2f324ddd7a2c0e2fe2b390f40101ff91264686ba0106e9ef77800e92d507de81ffce
7
- data.tar.gz: 3eb99d69b1ca9184726d5697b48cf1f30238b247a260801ca4ce06d243e489008b3994239af2b082b6d1ed6a2bd91a6188b7bb83fd8fcfb1871c2f7bed543a79
6
+ metadata.gz: 179c205d7101339b6ff71166baa163889e7cd8ece666f9e9cabf5c402008cb93f0f3aecb0e8d3f3fd48e7274c90bbc81f2063fc12c2988682fc48a709dd43f64
7
+ data.tar.gz: 71e130024a27b3b19e616846e440c5402bae3718ac0e3c1ac164b9ea3ebf362396fddbba1e8f087e2a80285a9bfa3f1ce33222a36648c8de3a9c93261b283d4a
data/README.md CHANGED
@@ -2,6 +2,8 @@ Graphite Dashboard API
2
2
  ----------------------
3
3
 
4
4
  [![Build Status](https://travis-ci.org/criteo/graphite-dashboard-api.png?branch=master)](https://travis-ci.org/criteo/graphite-dashboard-api)
5
+ [![Gem Version](https://badge.fury.io/rb/graphite-dashboard-api.png)](http://badge.fury.io/rb/graphite-dashboard-api)
6
+ [![Dependency Status](https://gemnasium.com/criteo/graphite-dashboard-api.png)](https://gemnasium.com/criteo/graphite-dashboard-api)
5
7
 
6
8
 
7
9
  Graphite dashboard api is a ruby gem which help to create and update graphite dashboards.
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "graphite-dashboard-api"
6
- s.version = '0.1.0'
6
+ s.version = '0.2.0'
7
7
  s.platform = Gem::Platform::RUBY
8
8
  s.authors = ["Grégoire Seux"]
9
9
  s.license = "Apache License v2"
@@ -1,3 +1,4 @@
1
+ require 'graphite-dashboard-api/extra_options'
1
2
  require 'graphite-dashboard-api/graph'
2
3
  require 'graphite-dashboard-api/api'
3
4
  require 'graphite-dashboard-api/dashboard'
@@ -0,0 +1,27 @@
1
+ module GraphiteDashboardApi
2
+ module ExtraOptions
3
+ attr_accessor :extra_options
4
+ def method_missing(m, *args)
5
+ if args && args.size > 0
6
+ @extra_options[m.to_s] = args[0]
7
+ end
8
+ @extra_options[m.to_s]
9
+ end
10
+
11
+ def extra_options_to_hash
12
+ hash = {}
13
+ @extra_options.each do |k,v|
14
+ hash[k.to_s] = v
15
+ end
16
+ hash
17
+ end
18
+
19
+ def extra_options_from_hash!(std_options, hash)
20
+ extra_options = hash.keys - std_options
21
+ extra_options.each do |k|
22
+ @extra_options[k] = hash[k]
23
+ end
24
+ self
25
+ end
26
+ end
27
+ end
@@ -2,6 +2,9 @@ require 'uri'
2
2
 
3
3
  module GraphiteDashboardApi
4
4
  class Graph
5
+
6
+ include ExtraOptions
7
+
5
8
  PROPS = [:from, :until, :width, :height]
6
9
  [PROPS, :targets, :titles, :compact_leading].flatten.each do |a|
7
10
  attr_accessor a
@@ -21,6 +24,7 @@ module GraphiteDashboardApi
21
24
  @title = title
22
25
  @targets = []
23
26
  @compact_leading = false # this is tweaking stuff
27
+ @extra_options = {}
24
28
  instance_eval(&block) if block
25
29
  end
26
30
 
@@ -65,6 +69,7 @@ module GraphiteDashboardApi
65
69
  hash[k.to_s] = v if v
66
70
  end
67
71
  hash['target'] = @targets
72
+ hash.merge!(extra_options_to_hash)
68
73
  hash
69
74
  end
70
75
 
@@ -79,6 +84,8 @@ module GraphiteDashboardApi
79
84
  @targets << target
80
85
  end
81
86
  end
87
+ std_options = ['title', 'target', PROPS].map { |k| k.to_s }
88
+ extra_options_from_hash!(std_options, hash)
82
89
  self
83
90
  end
84
91
  end
@@ -51,4 +51,17 @@ describe GraphiteDashboardApi::Graph do
51
51
  new_graph = GraphiteDashboardApi::Graph.new
52
52
  expect((new_graph.from_hash! graph.to_hash).to_hash).to eq graph.to_hash
53
53
  end
54
+
55
+ it 'can have extra options' do
56
+ graph = GraphiteDashboardApi::Graph.new 'test' do
57
+ an_other_option 5
58
+ end
59
+ expect(graph.an_other_option).to eq 5
60
+ h = graph.to_hash
61
+ expect(h['an_other_option']).to eq 5
62
+ graph2 = GraphiteDashboardApi::Graph.new
63
+ graph2.from_hash! h
64
+ expect(graph2.an_other_option).to eq 5
65
+ end
66
+
54
67
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: graphite-dashboard-api
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
  - Grégoire Seux
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-26 00:00:00.000000000 Z
11
+ date: 2014-02-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -52,6 +52,7 @@ files:
52
52
  - lib/graphite-dashboard-api.rb
53
53
  - lib/graphite-dashboard-api/api.rb
54
54
  - lib/graphite-dashboard-api/dashboard.rb
55
+ - lib/graphite-dashboard-api/extra_options.rb
55
56
  - lib/graphite-dashboard-api/graph.rb
56
57
  - spec/dashboard_spec.rb
57
58
  - spec/graph_spec.rb