brigade-monitor 0.0.2 → 0.0.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: 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