lbrt 0.1.1 → 0.1.3

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: 2b122a973c917adac9f07048a6e2da5c087c9695
4
- data.tar.gz: e7045f54fdc6bde43c8fa883d822ab060457a3d9
3
+ metadata.gz: 92413afc876bd9b79a20ff955782b7caceda7ea7
4
+ data.tar.gz: d99af8d2a10eff05dde5cf0b31ed0790c61133e9
5
5
  SHA512:
6
- metadata.gz: 787ce020528938c95397a1cab36b9a0aff497fea28826dbae6ce21a3d0491362e295191d172edffc5e47b1a7766586a5418693947711714aa690ffdfc084a877
7
- data.tar.gz: 22a05b0628b4c4b5e02cecce5a55947a0a8be9ee953f9d46865cfb790f569b72feacf75dae08276827803488d2609b52eb34d3be28832a232c2d4e03f4ba3831
6
+ metadata.gz: 5cd2368c0a8c35c3067beeafdfb1a1529d87fedcaef2d09e305b09ef28ff82a48c9df938009f623e1aa53e763d72b5adc813ab1691c736bf9f546c0d63a0f4fb
7
+ data.tar.gz: e77e88e6aa1b0d043be2b2cb858e509d4d3f8eb815b65f64c093030732deced7d6aef6e74070b087d507488b218c5c37d79dbe9ccd32106621c962f8be5952e0
data/README.md CHANGED
@@ -25,6 +25,7 @@ $ lbrt
25
25
  Commands:
26
26
  lbrt alert SUBCOMMAND # Manage alerts
27
27
  lbrt help [COMMAND] # Describe available commands or one specific command
28
+ lbrt metric SUBCOMMAND # Manage metrics
28
29
  lbrt service SUBCOMMAND # Manage services
29
30
  lbrt space SUBCOMMAND # Manage spaces
30
31
 
@@ -36,7 +37,9 @@ Options:
36
37
  [--color], [--no-color]
37
38
  # Default: true
38
39
  [--debug], [--no-debug]
40
+ ```
39
41
 
42
+ ```sh
40
43
  $ lbrt help alert
41
44
  Commands:
42
45
  lbrt alert apply FILE # Apply alerts
@@ -45,7 +48,19 @@ Commands:
45
48
 
46
49
  Options:
47
50
  [--target=TARGET]
51
+ ```
52
+
53
+ ```sh
54
+ $ brt help metric
55
+ Commands:
56
+ lbrt metric help [COMMAND] # Describe subcommands or one specific subcommand
57
+ lbrt metric peco REGRXP # Show alert by peco
48
58
 
59
+ Options:
60
+ [--target=TARGET]
61
+ ```
62
+
63
+ ```sh
49
64
  $ lbrt help service
50
65
  Commands:
51
66
  lbrt service apply FILE # Apply services
@@ -54,12 +69,15 @@ Commands:
54
69
 
55
70
  Options:
56
71
  [--target=TARGET]
72
+ ```
57
73
 
74
+ ```sh
58
75
  $ lbrt help space
59
76
  Commands:
60
77
  lbrt space apply FILE # Apply spaces
61
78
  lbrt space export [FILE] # Export spaces
62
79
  lbrt space help [COMMAND] # Describe subcommands or one specific subcommand
80
+ lbrt space peco # Show space by peco
63
81
 
64
82
  Options:
65
83
  [--target=TARGET]
@@ -208,6 +226,18 @@ template "dstat" do
208
226
  end
209
227
 
210
228
  space "my-host-001" do
211
- include_template("dstat")
229
+ include_template "dstat"
212
230
  end
213
231
  ```
232
+
233
+ ## Show metric/space by [peco](https://github.com/peco/peco)
234
+
235
+ ```sh
236
+ lbrt metric peco
237
+ ```
238
+
239
+ ```sh
240
+ lbrt space peco
241
+ ```
242
+
243
+ ![](https://raw.githubusercontent.com/winebarrel/lbrt/master/etc/peco.gif)
data/etc/peco.gif ADDED
Binary file
data/lbrt.gemspec CHANGED
@@ -23,6 +23,7 @@ Gem::Specification.new do |spec|
23
23
  spec.add_dependency 'hashie'
24
24
  spec.add_dependency 'librato-client'
25
25
  spec.add_dependency 'parallel'
26
+ spec.add_dependency 'peco_selector'
26
27
  spec.add_dependency 'term-ansicolor'
27
28
  spec.add_dependency 'thor'
28
29
 
data/lib/lbrt/cli/app.rb CHANGED
@@ -7,6 +7,9 @@ class Lbrt::CLI::App < Thor
7
7
  desc 'alert SUBCOMMAND', 'Manage alerts'
8
8
  subcommand :alert, Lbrt::CLI::Alert
9
9
 
10
+ desc 'metric SUBCOMMAND', 'Manage metrics'
11
+ subcommand :metric, Lbrt::CLI::Metric
12
+
10
13
  desc 'service SUBCOMMAND', 'Manage services'
11
14
  subcommand :service, Lbrt::CLI::Service
12
15
 
@@ -0,0 +1,10 @@
1
+ class Lbrt::CLI::Metric < Thor
2
+ include Lbrt::Utils::CLIHelper
3
+
4
+ class_option :target
5
+
6
+ desc 'peco', 'Show metric by peco'
7
+ def peco
8
+ client(Lbrt::Metric).peco
9
+ end
10
+ end
@@ -4,6 +4,11 @@ class Lbrt::CLI::Space < Thor
4
4
  class_option :target
5
5
  class_option :'export-concurrency', :type => :numeric, :default => 32
6
6
 
7
+ desc 'peco', 'Show space by peco'
8
+ def peco
9
+ client(Lbrt::Space).peco
10
+ end
11
+
7
12
  desc 'apply FILE', 'Apply spaces'
8
13
  option :'dry-run', :type => :boolean, :default => false
9
14
  def apply(file)
@@ -0,0 +1,23 @@
1
+ class Lbrt::Metric
2
+ include Lbrt::Logger::Helper
3
+
4
+ def initialize(client, options = {})
5
+ @client = client
6
+ @options = options
7
+ end
8
+
9
+ def peco
10
+ metric_names = @client.metrics.get.map {|mtrc|
11
+ mtrc['name']
12
+ }.select {|name|
13
+ Lbrt::Utils.matched?(name, @options[:target])
14
+ }
15
+
16
+ result = PecoSelector.select_from(metric_names)
17
+
18
+ result.each do |name|
19
+ url = "https://metrics.librato.com/s/metrics/#{name}"
20
+ Lbrt::Utils.open(url)
21
+ end
22
+ end
23
+ end
@@ -13,7 +13,7 @@ class Lbrt::Space::DSL::Context::Space
13
13
  private
14
14
 
15
15
  def include_template(template_name)
16
- tmplt = @templates[template_name]
16
+ tmplt = @templates[template_name.to_s]
17
17
 
18
18
  unless tmplt
19
19
  raise "Space `#{@name_or_id}`: Template `#{template_name}` is not defined"
@@ -20,7 +20,7 @@ class Lbrt::Space::DSL::Context
20
20
  private
21
21
 
22
22
  def template(name, &block)
23
- @templates[name] = block
23
+ @templates[name.to_s] = block
24
24
  end
25
25
 
26
26
  def space(name_or_id, &block)
@@ -26,6 +26,7 @@ class Lbrt::Space::Exporter
26
26
  Parallel.each(spaces, :in_threads => concurrency) do |spc|
27
27
  space_id = spc.fetch('id')
28
28
  name_or_id = spc.fetch('name') || space_id
29
+ next unless Lbrt::Utils.matched?(name_or_id, @options[:target])
29
30
  charts = @client.spaces(space_id).charts.get
30
31
 
31
32
  if space_by_name_or_id[name_or_id]
data/lib/lbrt/space.rb CHANGED
@@ -7,6 +7,24 @@ class Lbrt::Space
7
7
  @driver = Lbrt::Driver.new(@client, @options)
8
8
  end
9
9
 
10
+ def peco
11
+ space_by_name_or_id = {}
12
+
13
+ metric_names = @client.spaces.get.each do |spc|
14
+ space_id = spc.fetch('id')
15
+ name_or_id = spc.fetch('name') || space_id
16
+ next unless Lbrt::Utils.matched?(name_or_id, @options[:target])
17
+ space_by_name_or_id[name_or_id] = space_id
18
+ end
19
+
20
+ result = PecoSelector.select_from(space_by_name_or_id)
21
+
22
+ result.each do |name|
23
+ url = "https://metrics.librato.com/s/spaces/#{name}"
24
+ Lbrt::Utils.open(url)
25
+ end
26
+ end
27
+
10
28
  def export(export_options = {})
11
29
  exported = Lbrt::Space::Exporter.export(@client, @options)
12
30
  Lbrt::Space::DSL.convert(exported, @options)
@@ -28,6 +46,7 @@ class Lbrt::Space
28
46
  updated = false
29
47
 
30
48
  expected.each do |name_or_id, expected_space|
49
+ next unless Lbrt::Utils.matched?(name_or_id, @options[:target])
31
50
  actual_space = actual.delete(name_or_id)
32
51
 
33
52
  if not actual_space and name_or_id.is_a?(Integer)
data/lib/lbrt/utils.rb CHANGED
@@ -13,6 +13,12 @@ class Lbrt::Utils
13
13
  true
14
14
  end
15
15
  end
16
+
17
+ def open(url)
18
+ url = Shellwords.escape(url)
19
+ cmd = ENV['LIBRATO_OPEN'] || 'open'
20
+ system("#{cmd} #{url}")
21
+ end
16
22
  end # of class methods
17
23
 
18
24
  module ContextHelper
data/lib/lbrt/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Lbrt
2
- VERSION = '0.1.1'
2
+ VERSION = '0.1.3'
3
3
  end
data/lib/lbrt.rb CHANGED
@@ -3,6 +3,8 @@ require 'hashie'
3
3
  require 'librato/client'
4
4
  require 'logger'
5
5
  require 'parallel'
6
+ require 'peco_selector'
7
+ require 'shellwords'
6
8
  require 'singleton'
7
9
  require 'tempfile'
8
10
  require 'term/ansicolor'
@@ -16,12 +18,15 @@ require 'lbrt/utils'
16
18
 
17
19
  require 'lbrt/cli'
18
20
  require 'lbrt/cli/alert'
21
+ require 'lbrt/cli/metric'
19
22
  require 'lbrt/cli/service'
20
23
  require 'lbrt/cli/space'
21
24
  require 'lbrt/cli/app'
22
25
 
23
26
  require 'lbrt/driver'
24
27
 
28
+ require 'lbrt/metric'
29
+
25
30
  require 'lbrt/space'
26
31
  require 'lbrt/space/dsl'
27
32
  require 'lbrt/space/dsl/context'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lbrt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Genki Sugawara
@@ -14,126 +14,140 @@ dependencies:
14
14
  name: diffy
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: hashie
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - '>='
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: librato-client
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - '>='
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: parallel
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: peco_selector
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
67
81
  - !ruby/object:Gem::Version
68
82
  version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: term-ansicolor
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
- - - ">="
87
+ - - '>='
74
88
  - !ruby/object:Gem::Version
75
89
  version: '0'
76
90
  type: :runtime
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
- - - ">="
94
+ - - '>='
81
95
  - !ruby/object:Gem::Version
82
96
  version: '0'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: thor
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
- - - ">="
101
+ - - '>='
88
102
  - !ruby/object:Gem::Version
89
103
  version: '0'
90
104
  type: :runtime
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
- - - ">="
108
+ - - '>='
95
109
  - !ruby/object:Gem::Version
96
110
  version: '0'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: bundler
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
- - - ">="
115
+ - - '>='
102
116
  - !ruby/object:Gem::Version
103
117
  version: '0'
104
118
  type: :development
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
107
121
  requirements:
108
- - - ">="
122
+ - - '>='
109
123
  - !ruby/object:Gem::Version
110
124
  version: '0'
111
125
  - !ruby/object:Gem::Dependency
112
126
  name: rake
113
127
  requirement: !ruby/object:Gem::Requirement
114
128
  requirements:
115
- - - ">="
129
+ - - '>='
116
130
  - !ruby/object:Gem::Version
117
131
  version: '0'
118
132
  type: :development
119
133
  prerelease: false
120
134
  version_requirements: !ruby/object:Gem::Requirement
121
135
  requirements:
122
- - - ">="
136
+ - - '>='
123
137
  - !ruby/object:Gem::Version
124
138
  version: '0'
125
139
  - !ruby/object:Gem::Dependency
126
140
  name: rspec
127
141
  requirement: !ruby/object:Gem::Requirement
128
142
  requirements:
129
- - - ">="
143
+ - - '>='
130
144
  - !ruby/object:Gem::Version
131
145
  version: 3.0.0
132
146
  type: :development
133
147
  prerelease: false
134
148
  version_requirements: !ruby/object:Gem::Requirement
135
149
  requirements:
136
- - - ">="
150
+ - - '>='
137
151
  - !ruby/object:Gem::Version
138
152
  version: 3.0.0
139
153
  description: A tool to manage Librato. It defines the state of Librato using DSL,
@@ -145,15 +159,16 @@ executables:
145
159
  extensions: []
146
160
  extra_rdoc_files: []
147
161
  files:
148
- - ".gitignore"
149
- - ".rspec"
150
- - ".travis.yml"
162
+ - .gitignore
163
+ - .rspec
164
+ - .travis.yml
151
165
  - Gemfile
152
166
  - LICENSE.txt
153
167
  - README.md
154
168
  - Rakefile
155
169
  - bin/console
156
170
  - bin/setup
171
+ - etc/peco.gif
157
172
  - exe/lbrt
158
173
  - lbrt.gemspec
159
174
  - lib/lbrt.rb
@@ -167,11 +182,13 @@ files:
167
182
  - lib/lbrt/cli.rb
168
183
  - lib/lbrt/cli/alert.rb
169
184
  - lib/lbrt/cli/app.rb
185
+ - lib/lbrt/cli/metric.rb
170
186
  - lib/lbrt/cli/service.rb
171
187
  - lib/lbrt/cli/space.rb
172
188
  - lib/lbrt/driver.rb
173
189
  - lib/lbrt/ext/string_ext.rb
174
190
  - lib/lbrt/logger.rb
191
+ - lib/lbrt/metric.rb
175
192
  - lib/lbrt/service.rb
176
193
  - lib/lbrt/service/dsl.rb
177
194
  - lib/lbrt/service/dsl/context.rb
@@ -199,17 +216,17 @@ require_paths:
199
216
  - lib
200
217
  required_ruby_version: !ruby/object:Gem::Requirement
201
218
  requirements:
202
- - - ">="
219
+ - - '>='
203
220
  - !ruby/object:Gem::Version
204
221
  version: '0'
205
222
  required_rubygems_version: !ruby/object:Gem::Requirement
206
223
  requirements:
207
- - - ">="
224
+ - - '>='
208
225
  - !ruby/object:Gem::Version
209
226
  version: '0'
210
227
  requirements: []
211
228
  rubyforge_project:
212
- rubygems_version: 2.4.5
229
+ rubygems_version: 2.0.14
213
230
  signing_key:
214
231
  specification_version: 4
215
232
  summary: A tool to manage Librato. It defines the state of Librato using DSL, and