brigade-monitor 0.0.2 → 0.0.3

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: c22255304de44a5cedddd0d171d0eb866d1ca05c
4
- data.tar.gz: 4a4bb8e175b22587ec8407b3483799089b42cf35
3
+ metadata.gz: ac7f27e1e0e2de078f7de3da327945558eb33116
4
+ data.tar.gz: a8481f3d979e38e7e79a5f4330cb480f21815744
5
5
  SHA512:
6
- metadata.gz: 6225c2002e86843999905208a071a1ffe7c0c609b50407688cd51d442309809ffd1257b8d8812fe03e6bbb51494dc754f392c7bf8678777b368d6c838fad920a
7
- data.tar.gz: 042c517279a3f034f9fd760da843d0791869ec5a3d1fa6b7bdf3282f224d1e1b8ae260159a1272ae8aaca9a3d271f7d92afa5adcfc68e6c7a615d6b43fb815db
6
+ metadata.gz: 6a139c80c18a5cdcdcdb20097d0eff81e373f5d24ed938796e517b4e2412e42cdca33198f76e0c800031b1201f86b562f5e6c4001f3e369c6ed4112549cc636f
7
+ data.tar.gz: 3ab51d862b928e344bcd073f8dadda58793d9940ecd970efd9affc1e9efcb79c90d462a367cf9d9a7f60cabb8c30baed341977cd0720233860520937b351bf2a
data/bin/brigade-monitor CHANGED
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require 'awesome_print'
4
+ require 'brigade/monitor'
4
5
  require 'cgminer/api'
5
- require 'httparty'
6
6
  require 'optparse'
7
7
  require 'yaml'
8
8
 
@@ -38,27 +38,70 @@ fail 'Brigade API key is required' if key.nil?
38
38
 
39
39
  # build a hash-o-miner clients
40
40
  miners = config['miners'].map do |miner|
41
- name = miner[0]
42
- client = CGMiner::API::Client.new(miner[1]['host'], miner[1]['port'])
43
- { name: name, client: client }
44
- end
45
-
46
- class BrigadeAPI
47
- include HTTParty
48
- base_uri 'https://app.brigade.io/api/v1'
41
+ {
42
+ name: miner[0],
43
+ client: CGMiner::API::Client.new(miner[1]['host'], miner[1]['port'])
44
+ }
49
45
  end
50
46
 
47
+ api = Brigade::Monitor::API.new(key)
51
48
  loop do
49
+
50
+ updates = []
51
+
52
52
  miners.each do |miner|
53
53
  begin
54
- cg_response = miner[:client].devs
55
- puts cg_response.body
54
+ summary = miner[:client].summary
55
+ devs = miner[:client].devs
56
+ pools = miner[:client].pools
57
+
58
+ # XXX check status replies on each command?
59
+
60
+ update = {
61
+ host: miner[:name],
62
+ uptime: summary.body[0]['Elapsed'] / 60,
63
+ mhash: summary.body[0]['MHS 5s'],
64
+ rejectpct: summary.body[0]['Pool Rejected%'],
65
+ asics: [],
66
+ fpgas: [],
67
+ gpus: [],
68
+ pools: []
69
+ }
56
70
 
57
- api_response = BrigadeAPI.post("/hosts", query: { token: key, body: cg_response.body.to_s }, verify: false)
58
- puts api_response
71
+ devs.body.each do |dev|
72
+ if dev.has_key? 'GPU'
73
+ update[:gpus] << {
74
+ temperature: dev['Temperature'],
75
+ enabled: dev['Enabled'] == 'Y',
76
+ status: :ok, # XXX enumerate statuses
77
+ uptime: dev['Device Elapsed'] / 60,
78
+ mhash: dev['MHS 5s'],
79
+ rejectpct: dev['Device Rejected%']
80
+ }
81
+ else
82
+ puts "Skipped device: #{dev}"
83
+ end
84
+ end
85
+
86
+ pools.body.each do |pool|
87
+ update[:pools] << {
88
+ url: pool['URL'],
89
+ status: :ok, # XXX enumerate statuses
90
+ active: pool['Stratum Active'],
91
+ rejectpct: pool['Pool Rejected%']
92
+ }
93
+ end
94
+
95
+ updates << update
59
96
  rescue Net::OpenTimeout
60
97
  puts "Timed out: #{miner}"
98
+ # XXX put something in the update to indicate it barfed
61
99
  end
62
100
  end
63
- sleep 5
101
+
102
+ response = api.hosts(updates)
103
+ puts response.code
104
+
105
+ sleep 60
106
+
64
107
  end
@@ -0,0 +1,29 @@
1
+ require 'httparty'
2
+
3
+ module Brigade
4
+ module Monitor
5
+
6
+ class API
7
+
8
+ include HTTParty
9
+ base_uri 'https://app.brigade.io/api/v1'
10
+
11
+ def initialize(key)
12
+ @key = key
13
+ end
14
+
15
+ def hosts(data)
16
+ command('/hosts', updates: data)
17
+ end
18
+
19
+ private
20
+
21
+ def command(command, params)
22
+ params.merge!({ token: @key })
23
+ self.class.post(command, query: params, verify: false)
24
+ end
25
+
26
+ end
27
+
28
+ end
29
+ end
@@ -1,5 +1,5 @@
1
1
  module Brigade
2
2
  module Monitor
3
- VERSION = '0.0.2'
3
+ VERSION = '0.0.3'
4
4
  end
5
5
  end
@@ -1 +1,2 @@
1
+ require 'brigade/monitor/api'
1
2
  require 'brigade/monitor/version'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: brigade-monitor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Veys
@@ -167,6 +167,7 @@ files:
167
167
  - bin/brigade-monitor
168
168
  - brigade-monitor.gemspec
169
169
  - lib/brigade/monitor.rb
170
+ - lib/brigade/monitor/api.rb
170
171
  - lib/brigade/monitor/version.rb
171
172
  - sample-config.yaml
172
173
  - spec/spec_helper.rb