lbrt 0.1.8 → 0.1.9

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: 0e85c3504123cdcc53dc2257c34ffca1fe6077f4
4
- data.tar.gz: 03a9362c3dd7f9bc111ef3398c3b0b97a2192b0d
3
+ metadata.gz: f78090ca27e8694fc5661159b0cd3d0bc30e1c40
4
+ data.tar.gz: a5bca51feaef822ca735d078dd5c88587fb307cd
5
5
  SHA512:
6
- metadata.gz: 1fea3878cabf7dc3ef6cebd89de6cdbc38a63925e819b8a2a3879f7ed82c6b1fe5d684074e9ebee6fda9141b63093200f791e1ceb971653635f5adc933a0e835
7
- data.tar.gz: eb40f7bfeb5b325369a0f30c0e2d78f97a8cb874181fc4ee5dc28ea6de2cb6127fdae43b1a75d8473eb1517966678149ccfcd742f6c84cf5e30860da25f38171
6
+ metadata.gz: b201f773aab280ecf430d30c6cb33f66e28bcf9e45ff85f5440ee5a13c913a8e6150cebb6518a26ac2fc9e34a266b0962cc50ea5159c05323d581ab0347db4e1
7
+ data.tar.gz: 2a89819c67f14f3c8484a35fed219d1574cc51c7f69df19514edceb5517260d443474fe70a296dbd03cdc44a0e152e595565367d7e9ee2185ee26794814b455d
data/README.md CHANGED
@@ -45,6 +45,7 @@ Commands:
45
45
  lbrt alert apply FILE # Apply alerts
46
46
  lbrt alert export [FILE] # Export alerts
47
47
  lbrt alert help [COMMAND] # Describe subcommands or one specific subcommand
48
+ lbrt alert list # Show alerts
48
49
  lbrt alert peco # Show alert by peco
49
50
 
50
51
  Options:
@@ -55,7 +56,8 @@ Options:
55
56
  $ brt help metric
56
57
  Commands:
57
58
  lbrt metric help [COMMAND] # Describe subcommands or one specific subcommand
58
- lbrt metric peco REGRXP # Show alert by peco
59
+ lbrt metric list # Show metrics
60
+ lbrt metric peco REGRXP # Show metric by peco
59
61
 
60
62
  Options:
61
63
  [--target=TARGET]
@@ -67,6 +69,7 @@ Commands:
67
69
  lbrt service apply FILE # Apply services
68
70
  lbrt service export [FILE] # Export services
69
71
  lbrt service help [COMMAND] # Describe subcommands or one specific subcommand
72
+ lbrt service list # Show services
70
73
 
71
74
  Options:
72
75
  [--target=TARGET]
@@ -78,11 +81,12 @@ Commands:
78
81
  lbrt space apply FILE # Apply spaces
79
82
  lbrt space export [FILE] # Export spaces
80
83
  lbrt space help [COMMAND] # Describe subcommands or one specific subcommand
84
+ lbrt space list # Show spaces
81
85
  lbrt space peco # Show space by peco
82
86
 
83
87
  Options:
84
88
  [--target=TARGET]
85
- [--export-concurrency=N]
89
+ [--concurrency=N]
86
90
  # Default: 32
87
91
  ```
88
92
 
data/lbrt.gemspec CHANGED
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
21
21
 
22
22
  spec.add_dependency 'diffy'
23
23
  spec.add_dependency 'hashie'
24
- spec.add_dependency 'librato-client'
24
+ spec.add_dependency 'librato-client', '>= 0.1.1'
25
25
  spec.add_dependency 'parallel'
26
26
  spec.add_dependency 'peco_selector'
27
27
  spec.add_dependency 'term-ansicolor'
data/lib/lbrt/alert.rb CHANGED
@@ -1,27 +1,45 @@
1
1
  class Lbrt::Alert
2
2
  include Lbrt::Logger::Helper
3
3
 
4
+ DEFAULT_CONCURRENCY = 32
5
+
4
6
  def initialize(client, options = {})
5
7
  @client = client
6
8
  @options = options
7
9
  @driver = Lbrt::Driver.new(@client, @options)
8
10
  end
9
11
 
10
- def peco
11
- alert_by_name = {}
12
+ def list
13
+ json = {}
14
+ alert_by_name = build_alert_by_name
12
15
 
13
- @client.alerts.get.each do |alrt|
14
- alert_id = alrt.fetch('id')
15
- name = alrt.fetch('name')
16
- next unless Lbrt::Utils.matched?(name, @options[:target])
17
- alert_by_name[name] = alert_id
16
+ alert_by_name.each do |name, alrt|
17
+ alert_id = alrt[:id]
18
+
19
+ json[alert_id] = {
20
+ name: name,
21
+ url: alert_url(alert_id),
22
+ status: alrt[:status],
23
+ }
18
24
  end
19
25
 
20
- result = PecoSelector.select_from(alert_by_name)
26
+ puts JSON.pretty_generate(json)
27
+ end
28
+
29
+ def peco
30
+ alert_id_by_name = {}
31
+
32
+ build_alert_by_name.select {|name, alrt|
33
+ @options[:status].nil? or @options[:status] == alrt[:status]
34
+ }.map {|name, alrt| alert_id_by_name[name] = alrt[:id] }
21
35
 
22
- result.each do |alert_id|
23
- url = "https://metrics.librato.com/alerts#/#{alert_id}"
24
- Lbrt::Utils.open(url)
36
+ unless alert_id_by_name.empty?
37
+ result = PecoSelector.select_from(alert_id_by_name)
38
+
39
+ result.each do |alert_id|
40
+ url = alert_url(alert_id)
41
+ Lbrt::Utils.open(url)
42
+ end
25
43
  end
26
44
  end
27
45
 
@@ -36,6 +54,31 @@ class Lbrt::Alert
36
54
 
37
55
  private
38
56
 
57
+ def build_alert_by_name
58
+ alert_by_name = {}
59
+
60
+ @client.alerts.get.each do |alrt|
61
+ alert_id = alrt.fetch('id')
62
+ name = alrt.fetch('name')
63
+ next unless Lbrt::Utils.matched?(name, @options[:target])
64
+ alert_by_name[name] = {id: alert_id}
65
+ end
66
+
67
+ concurrency = @options[:concurrency] || DEFAULT_CONCURRENCY
68
+
69
+ Parallel.each(alert_by_name, :in_threads => concurrency) do |name, alrt|
70
+ alert_id = alrt[:id]
71
+ status = @client.alerts(alert_id).status.get
72
+ alrt[:status] = status['status']
73
+ end
74
+
75
+ alert_by_name
76
+ end
77
+
78
+ def alert_url(alert_id)
79
+ "https://metrics.librato.com/alerts#/#{alert_id}"
80
+ end
81
+
39
82
  def walk(file)
40
83
  expected = load_file(file)
41
84
  actual = Lbrt::Alert::Exporter.export(@client, @options)
@@ -3,7 +3,16 @@ class Lbrt::CLI::Alert < Thor
3
3
 
4
4
  class_option :target
5
5
 
6
+ desc 'list', 'Show alerts'
7
+ option :'status'
8
+ option :'concurrency', :type => :numeric, :default => 32
9
+ def list
10
+ client(Lbrt::Alert).list
11
+ end
12
+
6
13
  desc 'peco', 'Show alert by peco'
14
+ option :'status'
15
+ option :'concurrency', :type => :numeric, :default => 32
7
16
  def peco
8
17
  client(Lbrt::Alert).peco
9
18
  end
@@ -3,6 +3,11 @@ class Lbrt::CLI::Metric < Thor
3
3
 
4
4
  class_option :target
5
5
 
6
+ desc 'list', 'Show metrics'
7
+ def list
8
+ client(Lbrt::Metric).list
9
+ end
10
+
6
11
  desc 'peco', 'Show metric by peco'
7
12
  def peco
8
13
  client(Lbrt::Metric).peco
@@ -3,6 +3,11 @@ class Lbrt::CLI::Service < Thor
3
3
 
4
4
  class_option :target
5
5
 
6
+ desc 'list', 'Show services'
7
+ def list
8
+ client(Lbrt::Service).list
9
+ end
10
+
6
11
  desc 'apply FILE', 'Apply services'
7
12
  option :'dry-run', :type => :boolean, :default => false
8
13
  def apply(file)
@@ -2,7 +2,12 @@ class Lbrt::CLI::Space < Thor
2
2
  include Lbrt::Utils::CLIHelper
3
3
 
4
4
  class_option :target
5
- class_option :'export-concurrency', :type => :numeric, :default => 32
5
+ class_option :'concurrency', :type => :numeric, :default => 32
6
+
7
+ desc 'list', 'Show spaces'
8
+ def list
9
+ client(Lbrt::Space).list
10
+ end
6
11
 
7
12
  desc 'peco', 'Show space by peco'
8
13
  def peco
data/lib/lbrt/metric.rb CHANGED
@@ -6,18 +6,42 @@ class Lbrt::Metric
6
6
  @options = options
7
7
  end
8
8
 
9
+ def list
10
+ json = {}
11
+ metric_names = build_metric_names
12
+
13
+ metric_names.each do |name|
14
+ json[name] = {
15
+ url: metric_url(name),
16
+ }
17
+ end
18
+
19
+ puts JSON.pretty_generate(json)
20
+ end
21
+
9
22
  def peco
23
+ metric_names = build_metric_names
24
+ result = PecoSelector.select_from(metric_names)
25
+
26
+ result.each do |name|
27
+ url = metric_url(name)
28
+ Lbrt::Utils.open(url)
29
+ end
30
+ end
31
+
32
+ private
33
+
34
+ def build_metric_names
10
35
  metric_names = @client.metrics.get.map {|mtrc|
11
36
  mtrc.fetch('name')
12
37
  }.select {|name|
13
38
  Lbrt::Utils.matched?(name, @options[:target])
14
39
  }
15
40
 
16
- result = PecoSelector.select_from(metric_names)
41
+ metric_names
42
+ end
17
43
 
18
- result.each do |name|
19
- url = "https://metrics.librato.com/s/metrics/#{name}"
20
- Lbrt::Utils.open(url)
21
- end
44
+ def metric_url(name)
45
+ "https://metrics.librato.com/s/metrics/#{name}"
22
46
  end
23
47
  end
data/lib/lbrt/service.rb CHANGED
@@ -1,6 +1,23 @@
1
1
  class Lbrt::Service
2
2
  include Lbrt::Logger::Helper
3
3
 
4
+ def list
5
+ json = {}
6
+ service_by_key = build_service_by_key
7
+
8
+ service_by_key.each do |service_key, srvc|
9
+ service_id = srvc.delete('id')
10
+ type, title = service_key
11
+
12
+ json[service_id] = {
13
+ type: type,
14
+ title: title,
15
+ }.merge(srvc)
16
+ end
17
+
18
+ puts JSON.pretty_generate(json)
19
+ end
20
+
4
21
  def initialize(client, options = {})
5
22
  @client = client
6
23
  @options = options
@@ -18,6 +35,20 @@ class Lbrt::Service
18
35
 
19
36
  private
20
37
 
38
+ def build_service_by_key
39
+ service_by_key = {}
40
+
41
+ @client.services.get.each do |srvc|
42
+ type = srvc.delete('type')
43
+ title = srvc.delete('title')
44
+ service_key = [type, title]
45
+ next unless service_key.any? {|i| Lbrt::Utils.matched?(i, @options[:target]) }
46
+ service_by_key[service_key] = srvc
47
+ end
48
+
49
+ service_by_key
50
+ end
51
+
21
52
  def walk(file)
22
53
  expected = load_file(file)
23
54
  actual = Lbrt::Service::Exporter.export(@client, @options)
@@ -21,7 +21,7 @@ class Lbrt::Space::Exporter
21
21
 
22
22
  def normalize_spaces(spaces)
23
23
  space_by_name_or_id = {}
24
- concurrency = @options[:export_concurrency] || DEFAULT_CONCURRENCY
24
+ concurrency = @options[:concurrency] || DEFAULT_CONCURRENCY
25
25
 
26
26
  Parallel.each(spaces, :in_threads => concurrency) do |spc|
27
27
  space_id = spc.fetch('id')
data/lib/lbrt/space.rb CHANGED
@@ -7,20 +7,26 @@ 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
- @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
10
+ def list
11
+ json = {}
12
+ space_by_name_or_id = build_space_by_name_or_id
13
+
14
+ space_by_name_or_id.each do |name_or_id, space_id|
15
+ json[space_id] = {
16
+ name: name_or_id,
17
+ url: space_url(space_id),
18
+ }
18
19
  end
19
20
 
21
+ puts JSON.pretty_generate(json)
22
+ end
23
+
24
+ def peco
25
+ space_by_name_or_id = build_space_by_name_or_id
20
26
  result = PecoSelector.select_from(space_by_name_or_id)
21
27
 
22
28
  result.each do |space_id|
23
- url = "https://metrics.librato.com/s/spaces/#{space_id}"
29
+ url = space_url(space_id)
24
30
  Lbrt::Utils.open(url)
25
31
  end
26
32
  end
@@ -36,6 +42,23 @@ class Lbrt::Space
36
42
 
37
43
  private
38
44
 
45
+ def build_space_by_name_or_id
46
+ space_by_name_or_id = {}
47
+
48
+ @client.spaces.get.each do |spc|
49
+ space_id = spc.fetch('id')
50
+ name_or_id = spc.fetch('name') || space_id
51
+ next unless Lbrt::Utils.matched?(name_or_id, @options[:target])
52
+ space_by_name_or_id[name_or_id] = space_id
53
+ end
54
+
55
+ space_by_name_or_id
56
+ end
57
+
58
+ def space_url(space_id)
59
+ "https://metrics.librato.com/s/spaces/#{space_id}"
60
+ end
61
+
39
62
  def walk(file)
40
63
  expected = load_file(file)
41
64
  actual = Lbrt::Space::Exporter.export(@client, @options)
data/lib/lbrt/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Lbrt
2
- VERSION = '0.1.8'
2
+ VERSION = '0.1.9'
3
3
  end
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.8
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Genki Sugawara
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: 0.1.1
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
- version: '0'
54
+ version: 0.1.1
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: parallel
57
57
  requirement: !ruby/object:Gem::Requirement