backend.when_monitor   A
last analyzed

Complexity

Total Complexity 9

Size/Duplication

Total Lines 42
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 31
dl 0
loc 42
rs 10
c 0
b 0
f 0
wmc 9

3 Functions

Rating   Name   Duplication   Size   Complexity  
A main() 0 7 3
A when_monitor() 0 8 2
A domonitor() 0 14 4
1
'''David Foderick, Skylake Software Inc.
2
'''
3
from helpers.queuehelper import QueueName, QueueEntries
4
from backend.fcmapp import Component
5
6
MONITOR = Component('monitor')
7
8
def when_monitor(channel, method, properties, body):
9
    '''when its time to monitor all the machines on schedule'''
10
    try:
11
        print("[{0}] Received monitor command".format(MONITOR.app.now()))
12
        entries = domonitor()
13
        MONITOR.app.enqueue(entries)
14
    except Exception as ex:
15
        MONITOR.app.logexception(ex)
16
17
def domonitor():
18
    '''queue workers to run the individual miner monitoring'''
19
    entries = QueueEntries()
20
    try:
21
        miners = MONITOR.app.allminers()
22
        print("{0} miners configured".format(len(miners)))
23
24
        for miner in miners:
25
            if not miner.is_manually_disabled():
26
                entries.add(QueueName.Q_MONITORMINER, MONITOR.app.messageencode(miner))
27
        print("waiting for next monitor event")
28
    except Exception as theex:
29
        MONITOR.app.logexception(theex)
30
    return entries
31
32
def main():
33
    if MONITOR.app.isrunnow or MONITOR.app.isdebug:
34
        domonitor()
35
        MONITOR.app.shutdown()
36
    else:
37
        MONITOR.listeningqueue = MONITOR.app.subscribe(QueueName.Q_MONITOR, when_monitor)
38
        MONITOR.app.listen(MONITOR.listeningqueue)
39
40
if __name__ == "__main__":
41
    main()
42