master
go 51 lines 1.12 KB
Raw
1 package hdfs
2
3 import (
4 "encoding/json"
5 "strings"
6 )
7
8 type (
9 rawData map[string]json.RawMessage
10 rawJMX struct {
11 Beans []rawData
12 }
13 )
14
15 func (r rawJMX) isEmpty() bool {
16 return len(r.Beans) == 0
17 }
18
19 func (r rawJMX) find(f func(rawData) bool) rawData {
20 for _, v := range r.Beans {
21 if f(v) {
22 return v
23 }
24 }
25 return nil
26 }
27
28 func (r rawJMX) findJvm() rawData {
29 f := func(data rawData) bool { return string(data["modelerType"]) == "\"JvmMetrics\"" }
30 return r.find(f)
31 }
32
33 func (r rawJMX) findRPCActivity() rawData {
34 f := func(data rawData) bool { return strings.HasPrefix(string(data["modelerType"]), "\"RpcActivityForPort") }
35 return r.find(f)
36 }
37
38 func (r rawJMX) findFSNameSystem() rawData {
39 f := func(data rawData) bool { return string(data["modelerType"]) == "\"FSNamesystem\"" }
40 return r.find(f)
41 }
42
43 func (r rawJMX) findFSDatasetState() rawData {
44 f := func(data rawData) bool { return string(data["modelerType"]) == "\"FSDatasetState\"" }
45 return r.find(f)
46 }
47
48 func (r rawJMX) findDataNodeActivity() rawData {
49 f := func(data rawData) bool { return strings.HasPrefix(string(data["modelerType"]), "\"DataNodeActivity") }
50 return r.find(f)
51 }