db4e 0.44.2__tar.gz → 0.45.0__tar.gz

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.
Files changed (128) hide show
  1. {db4e-0.44.2 → db4e-0.45.0}/PKG-INFO +1 -1
  2. {db4e-0.44.2 → db4e-0.45.0}/db4e/Constants/DDef.py +1 -1
  3. {db4e-0.44.2 → db4e-0.45.0}/db4e/Constants/DField.py +3 -0
  4. {db4e-0.44.2 → db4e-0.45.0}/db4e/Constants/DLabel.py +4 -2
  5. {db4e-0.44.2 → db4e-0.45.0}/db4e/Constants/DMethod.py +2 -0
  6. {db4e-0.44.2 → db4e-0.45.0}/db4e/Constants/DPane.py +2 -1
  7. {db4e-0.44.2 → db4e-0.45.0}/db4e/Constants/DSelect.py +13 -5
  8. {db4e-0.44.2 → db4e-0.45.0}/db4e/Modules/DeplMgr.py +1 -1
  9. {db4e-0.44.2 → db4e-0.45.0}/db4e/Modules/InstallMgr.py +1 -1
  10. {db4e-0.44.2 → db4e-0.45.0}/db4e/Modules/MessageRouter.py +37 -35
  11. {db4e-0.44.2 → db4e-0.45.0}/db4e/Modules/MiningDb.py +9 -1
  12. {db4e-0.44.2 → db4e-0.45.0}/db4e/Modules/MiningETL.py +96 -40
  13. {db4e-0.44.2 → db4e-0.45.0}/db4e/Modules/OpsMgr.py +36 -26
  14. {db4e-0.44.2 → db4e-0.45.0}/db4e/Modules/P2Pool.py +2 -2
  15. {db4e-0.44.2 → db4e-0.45.0}/db4e/Modules/PaneCatalogue.py +6 -4
  16. {db4e-0.44.2 → db4e-0.45.0}/db4e/Modules/XMRig.py +2 -2
  17. {db4e-0.44.2 → db4e-0.45.0}/db4e/Panes/ChainBlocksFoundPane.py +0 -1
  18. {db4e-0.44.2 → db4e-0.45.0}/db4e/Panes/Db4EPane.py +3 -3
  19. {db4e-0.44.2 → db4e-0.45.0}/db4e/Panes/P2PoolHashratesPane.py +1 -1
  20. {db4e-0.44.2 → db4e-0.45.0}/db4e/Panes/P2PoolPane.py +25 -16
  21. db4e-0.45.0/db4e/Panes/P2PoolSharesFoundPane.bar.py +138 -0
  22. db4e-0.45.0/db4e/Panes/P2PoolSharesFoundPane.py +80 -0
  23. db4e-0.45.0/db4e/Panes/P2PoolSharesFoundPane.stacked.py +115 -0
  24. db4e-0.44.2/db4e/Panes/UptimePane.py → db4e-0.45.0/db4e/Panes/RuntimePane.py +25 -7
  25. db4e-0.44.2/db4e/Panes/RuntimeLogPane.py → db4e-0.45.0/db4e/Panes/StartStopLogPane.py +2 -2
  26. {db4e-0.44.2 → db4e-0.45.0}/db4e/Panes/XMRigHashratesPane.py +1 -1
  27. {db4e-0.44.2 → db4e-0.45.0}/db4e/Panes/XMRigRemotePane.py +1 -1
  28. {db4e-0.44.2 → db4e-0.45.0}/db4e/Widgets/NavPane.py +5 -5
  29. {db4e-0.44.2 → db4e-0.45.0}/db4e/data_migration.py +17 -1
  30. {db4e-0.44.2 → db4e-0.45.0}/pyproject.toml +1 -1
  31. {db4e-0.44.2 → db4e-0.45.0}/LICENSE +0 -0
  32. {db4e-0.44.2 → db4e-0.45.0}/README.md +0 -0
  33. {db4e-0.44.2 → db4e-0.45.0}/db4e/App.py +0 -0
  34. {db4e-0.44.2 → db4e-0.45.0}/db4e/Constants/DButton.py +0 -0
  35. {db4e-0.44.2 → db4e-0.45.0}/db4e/Constants/DDebug.py +0 -0
  36. {db4e-0.44.2 → db4e-0.45.0}/db4e/Constants/DDir.py +0 -0
  37. {db4e-0.44.2 → db4e-0.45.0}/db4e/Constants/DElem.py +0 -0
  38. {db4e-0.44.2 → db4e-0.45.0}/db4e/Constants/DFile.py +0 -0
  39. {db4e-0.44.2 → db4e-0.45.0}/db4e/Constants/DForm.py +0 -0
  40. {db4e-0.44.2 → db4e-0.45.0}/db4e/Constants/DJob.py +0 -0
  41. {db4e-0.44.2 → db4e-0.45.0}/db4e/Constants/DMining.py +0 -0
  42. {db4e-0.44.2 → db4e-0.45.0}/db4e/Constants/DModule.py +0 -0
  43. {db4e-0.44.2 → db4e-0.45.0}/db4e/Constants/DMongo.py +0 -0
  44. {db4e-0.44.2 → db4e-0.45.0}/db4e/Constants/DOps.py +0 -0
  45. {db4e-0.44.2 → db4e-0.45.0}/db4e/Constants/DPlaceholder.py +0 -0
  46. {db4e-0.44.2 → db4e-0.45.0}/db4e/Constants/DStatus.py +0 -0
  47. {db4e-0.44.2 → db4e-0.45.0}/db4e/Constants/DSystemD.py +0 -0
  48. {db4e-0.44.2 → db4e-0.45.0}/db4e/Constants/__init__.py +0 -0
  49. {db4e-0.44.2 → db4e-0.45.0}/db4e/Db4E.tcss +0 -0
  50. {db4e-0.44.2 → db4e-0.45.0}/db4e/Messages/Db4eMsg.py +0 -0
  51. {db4e-0.44.2 → db4e-0.45.0}/db4e/Messages/Quit.py +0 -0
  52. {db4e-0.44.2 → db4e-0.45.0}/db4e/Messages/RefreshNavPane.py +0 -0
  53. {db4e-0.44.2 → db4e-0.45.0}/db4e/Messages/UpdateTopBar.py +0 -0
  54. {db4e-0.44.2 → db4e-0.45.0}/db4e/Messages/__init__.py +0 -0
  55. {db4e-0.44.2 → db4e-0.45.0}/db4e/Modules/Components.py +0 -0
  56. {db4e-0.44.2 → db4e-0.45.0}/db4e/Modules/ConfigMgr.py +0 -0
  57. {db4e-0.44.2 → db4e-0.45.0}/db4e/Modules/ConstGroup.py +0 -0
  58. {db4e-0.44.2 → db4e-0.45.0}/db4e/Modules/Db4E.py +0 -0
  59. {db4e-0.44.2 → db4e-0.45.0}/db4e/Modules/Db4ELogger.py +0 -0
  60. {db4e-0.44.2 → db4e-0.45.0}/db4e/Modules/Db4ESystemD.py +0 -0
  61. {db4e-0.44.2 → db4e-0.45.0}/db4e/Modules/DbCache.py +0 -0
  62. {db4e-0.44.2 → db4e-0.45.0}/db4e/Modules/DbMgr.py +0 -0
  63. {db4e-0.44.2 → db4e-0.45.0}/db4e/Modules/DeplClient.py +0 -0
  64. {db4e-0.44.2 → db4e-0.45.0}/db4e/Modules/HealthCache.py +0 -0
  65. {db4e-0.44.2 → db4e-0.45.0}/db4e/Modules/HealthMgr.py +0 -0
  66. {db4e-0.44.2 → db4e-0.45.0}/db4e/Modules/Helper.py +0 -0
  67. {db4e-0.44.2 → db4e-0.45.0}/db4e/Modules/InternalP2Pool.py +0 -0
  68. {db4e-0.44.2 → db4e-0.45.0}/db4e/Modules/Job.py +0 -0
  69. {db4e-0.44.2 → db4e-0.45.0}/db4e/Modules/JobQueue.py +0 -0
  70. {db4e-0.44.2 → db4e-0.45.0}/db4e/Modules/LocalSoftwareSystem.py +0 -0
  71. {db4e-0.44.2 → db4e-0.45.0}/db4e/Modules/MoneroD.py +0 -0
  72. {db4e-0.44.2 → db4e-0.45.0}/db4e/Modules/MoneroDRemote.py +0 -0
  73. {db4e-0.44.2 → db4e-0.45.0}/db4e/Modules/OpsDb.py +0 -0
  74. {db4e-0.44.2 → db4e-0.45.0}/db4e/Modules/P2PoolRemote.py +0 -0
  75. {db4e-0.44.2 → db4e-0.45.0}/db4e/Modules/P2PoolWatcher.py +0 -0
  76. {db4e-0.44.2 → db4e-0.45.0}/db4e/Modules/PaneMgr.py +0 -0
  77. {db4e-0.44.2 → db4e-0.45.0}/db4e/Modules/SoftwareSystem.py +0 -0
  78. {db4e-0.44.2 → db4e-0.45.0}/db4e/Modules/XMRigRemote.py +0 -0
  79. {db4e-0.44.2 → db4e-0.45.0}/db4e/Modules/__init__.py +0 -0
  80. {db4e-0.44.2 → db4e-0.45.0}/db4e/Panes/ChainHashratesPane.py +0 -0
  81. {db4e-0.44.2 → db4e-0.45.0}/db4e/Panes/ChainPane.py +0 -0
  82. {db4e-0.44.2 → db4e-0.45.0}/db4e/Panes/DonationsPane.py +0 -0
  83. {db4e-0.44.2 → db4e-0.45.0}/db4e/Panes/InitialSetupPane.py +0 -0
  84. {db4e-0.44.2 → db4e-0.45.0}/db4e/Panes/LogViewPane.py +0 -0
  85. {db4e-0.44.2 → db4e-0.45.0}/db4e/Panes/MoneroDPane.py +0 -0
  86. {db4e-0.44.2 → db4e-0.45.0}/db4e/Panes/MoneroDRemotePane.py +0 -0
  87. {db4e-0.44.2 → db4e-0.45.0}/db4e/Panes/P2PoolRemotePane.py +0 -0
  88. {db4e-0.44.2 → db4e-0.45.0}/db4e/Panes/ResultsPane.py +0 -0
  89. {db4e-0.44.2 → db4e-0.45.0}/db4e/Panes/TUILogPane.py +0 -0
  90. {db4e-0.44.2 → db4e-0.45.0}/db4e/Panes/WelcomePane.py +0 -0
  91. {db4e-0.44.2 → db4e-0.45.0}/db4e/Panes/XMRigPane.py +0 -0
  92. {db4e-0.44.2 → db4e-0.45.0}/db4e/Panes/__init__.py +0 -0
  93. {db4e-0.44.2 → db4e-0.45.0}/db4e/Templates/__init__.py +0 -0
  94. {db4e-0.44.2 → db4e-0.45.0}/db4e/Templates/db4e/conf/db4e-logrotate.conf +0 -0
  95. {db4e-0.44.2 → db4e-0.45.0}/db4e/Templates/db4e/systemd/db4e.service +0 -0
  96. {db4e-0.44.2 → db4e-0.45.0}/db4e/Templates/monerod-0.18.4.2/bin/monerod +0 -0
  97. {db4e-0.44.2 → db4e-0.45.0}/db4e/Templates/monerod-0.18.4.2/bin/start-monerod.sh +0 -0
  98. {db4e-0.44.2 → db4e-0.45.0}/db4e/Templates/monerod-0.18.4.2/conf/monerod.ini +0 -0
  99. {db4e-0.44.2 → db4e-0.45.0}/db4e/Templates/monerod-0.18.4.2/systemd/monerod@.service +0 -0
  100. {db4e-0.44.2 → db4e-0.45.0}/db4e/Templates/monerod-0.18.4.2/systemd/monerod@.socket +0 -0
  101. {db4e-0.44.2 → db4e-0.45.0}/db4e/Templates/p2pool-4.11/bin/p2pool +0 -0
  102. {db4e-0.44.2 → db4e-0.45.0}/db4e/Templates/p2pool-4.11/bin/start-p2pool.sh +0 -0
  103. {db4e-0.44.2 → db4e-0.45.0}/db4e/Templates/p2pool-4.11/conf/p2pool-logrotate.conf +0 -0
  104. {db4e-0.44.2 → db4e-0.45.0}/db4e/Templates/p2pool-4.11/conf/p2pool.ini +0 -0
  105. {db4e-0.44.2 → db4e-0.45.0}/db4e/Templates/p2pool-4.11/docs/LICENSE +0 -0
  106. {db4e-0.44.2 → db4e-0.45.0}/db4e/Templates/p2pool-4.11/docs/README.md +0 -0
  107. {db4e-0.44.2 → db4e-0.45.0}/db4e/Templates/p2pool-4.11/systemd/p2pool@.service +0 -0
  108. {db4e-0.44.2 → db4e-0.45.0}/db4e/Templates/p2pool-4.11/systemd/p2pool@.socket +0 -0
  109. {db4e-0.44.2 → db4e-0.45.0}/db4e/Templates/xmrig-6.24.0/bin/xmrig +0 -0
  110. {db4e-0.44.2 → db4e-0.45.0}/db4e/Templates/xmrig-6.24.0/conf/config.json +0 -0
  111. {db4e-0.44.2 → db4e-0.45.0}/db4e/Templates/xmrig-6.24.0/conf/xmrig-logrotate.conf +0 -0
  112. {db4e-0.44.2 → db4e-0.45.0}/db4e/Templates/xmrig-6.24.0/systemd/xmrig@.service +0 -0
  113. {db4e-0.44.2 → db4e-0.45.0}/db4e/Widgets/BarChart.py +0 -0
  114. {db4e-0.44.2 → db4e-0.45.0}/db4e/Widgets/Clock.py +0 -0
  115. {db4e-0.44.2 → db4e-0.45.0}/db4e/Widgets/DetailPane.py +0 -0
  116. {db4e-0.44.2 → db4e-0.45.0}/db4e/Widgets/HashratePlot.py +0 -0
  117. {db4e-0.44.2 → db4e-0.45.0}/db4e/Widgets/TopBar.py +0 -0
  118. {db4e-0.44.2 → db4e-0.45.0}/db4e/Widgets/__init__.py +0 -0
  119. {db4e-0.44.2 → db4e-0.45.0}/db4e/bin/db4e-backup.sh +0 -0
  120. {db4e-0.44.2 → db4e-0.45.0}/db4e/bin/db4e-initial-setup.sh +0 -0
  121. {db4e-0.44.2 → db4e-0.45.0}/db4e/bin/db4e-install-service.sh +0 -0
  122. {db4e-0.44.2 → db4e-0.45.0}/db4e/bin/db4e-metrics.sh +0 -0
  123. {db4e-0.44.2 → db4e-0.45.0}/db4e/bin/db4e-uninstall-service.sh +0 -0
  124. {db4e-0.44.2 → db4e-0.45.0}/db4e/enable_mre.py +0 -0
  125. {db4e-0.44.2 → db4e-0.45.0}/db4e/server.py +0 -0
  126. {db4e-0.44.2 → db4e-0.45.0}/db4e/test_barchart.py +0 -0
  127. {db4e-0.44.2 → db4e-0.45.0}/db4e/test_etl.py +0 -0
  128. {db4e-0.44.2 → db4e-0.45.0}/db4e/test_plot.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: db4e
3
- Version: 0.44.2
3
+ Version: 0.45.0
4
4
  Summary: A unified Monero XMR mining dashboard for deployment, operation and real-time analytics.
5
5
  License: GPL-3.0-or-later
6
6
  License-File: LICENSE
@@ -37,7 +37,7 @@ class DDef(ConstGroup):
37
37
  DB4E_SERVICE_FILE : str = "db4e.service"
38
38
  DB4E_START_SCRIPT : str = "db4e-server"
39
39
  DB4E_UNINSTALL_SCRIPT : str = "db4e-uninstall-service.sh"
40
- DB4E_VERSION : str = "0.44.2"
40
+ DB4E_VERSION : str = "0.45.0"
41
41
  DEPL_COLLECTION : str = "depl"
42
42
  DEV_DIR : str = "dev"
43
43
  DONATION_WALLET : str = "48aTDJfRH2JLcKW2fz4m9HJeLLVK5rMo1bKiNHFc43Ht2e2kPVh2tmk3Md7npz1WsSU7bpgtX2Xnf59RHCLUEaHfQHwao4j"
@@ -61,6 +61,7 @@ class DField(ConstGroup) :
61
61
  JOB : str = "job"
62
62
  JOBS : str = "jobs"
63
63
  LABEL : str = "label"
64
+ LABELS : str = "labels"
64
65
  LEVEL : str = "level"
65
66
  LOCAL : str = "local"
66
67
  LOCAL_TIMESTAMP : str = "local_timestamp"
@@ -128,6 +129,7 @@ class DField(ConstGroup) :
128
129
  RESET_DATA : str = "reset_data"
129
130
  RESULTS : str = "results"
130
131
  RETRY_TIMEOUT : str = "retry_timeout"
132
+ RIGHT : str = "right"
131
133
  RUN_BACKUP : str = "run_backup"
132
134
  RPC_BIND_PORT : str = "rpc_bind_port"
133
135
  RUNTIME_LOG : str = "runtime_log"
@@ -137,6 +139,7 @@ class DField(ConstGroup) :
137
139
  SET_PANE : str = "set_pane"
138
140
  SOCKET_FILE : str = "socket_file"
139
141
  START : str = "start"
142
+ START_STOP_LOG : str = "start_stop_log"
140
143
  STARTING : str = "starting"
141
144
  STATS_MOD : str = "stats_mod"
142
145
  STOP : str = "stop"
@@ -21,12 +21,13 @@ class DLabel(ConstGroup):
21
21
  API : str = "API"
22
22
  BLOCKCHAIN : str = "Blockchain"
23
23
  BLOCKCHAIN_DIR : str = "Blockchain Directory"
24
+ BLOCKS : str = "Blocks"
24
25
  BLOCKS_FOUND : str = "Blocks Found"
25
26
  CHAIN : str = "Chain"
26
27
  CHAIN_STATS : str = "Chain Stats"
27
28
  CONFIG : str = "Configuration"
28
29
  CONFIG_FILE : str = "Configuration File"
29
- CURRENT_UPTIME : str = "Current Uptime"
30
+ CURRENT : str = "Current"
30
31
  DAYS : str = "Days"
31
32
  DB4E : str = "Db4E Core"
32
33
  DB4E_LONG : str = "Database 4 Everything"
@@ -111,6 +112,7 @@ class DLabel(ConstGroup):
111
112
  SHOW_TIME_STATS : str = "Show Time Stats"
112
113
  SOFTWARE_SYSTEM : str = "Software System"
113
114
  START : str = "Start"
115
+ START_STOP_LOG : str = "Start/Stop Log"
114
116
  STATUS : str = "Status"
115
117
  STARTUP_SCRIPT : str = "Startup Script"
116
118
  STATS_MOD : str = "API stats_mod"
@@ -118,7 +120,7 @@ class DLabel(ConstGroup):
118
120
  STOP : str = "Stop"
119
121
  STRATUM_PORT : str = "Stratum Port"
120
122
  TIMESTAMP : str = "Timestamp"
121
- TOTAL_UPTIME : str = "Total Uptime"
123
+ TOTAL : str = "Total"
122
124
  TUI_LOG : str = "Console Log"
123
125
  TYPE : str = "Type"
124
126
  UPDATE : str = "Update"
@@ -22,6 +22,7 @@ class DMethod(ConstGroup):
22
22
  GET_DEPL : str = "get_deployment"
23
23
  GET_TUI_LOG : str = "get_tui_log"
24
24
  GET_RUNTIME_LOG : str = "get_runtime_log"
25
+ GET_START_STOP_LOG : str = "get_start_stop_log"
25
26
  GET_UPTIME : str = "get_uptime"
26
27
  HASHRATES : str = "hashrates"
27
28
  INITIAL_SETUP : str = "initial_setup"
@@ -33,5 +34,6 @@ class DMethod(ConstGroup):
33
34
  SET_DONATIONS : str = "set_donations"
34
35
  SET_PANE : str = DField.SET_PANE
35
36
  SET_PRIMARY : str = "set_primary"
37
+ SHARES_FOUND : str = "shares_found"
36
38
  UPDATE_DEPLOYMENT : str = "update_deployment"
37
39
  RUNTIME : str = "runtime"
@@ -27,10 +27,11 @@ class DPane(ConstGroup):
27
27
  P2POOL_ANALYTICS: str = "P2PoolAnalyticsPane"
28
28
  P2POOL_HASHRATES: str = "P2PoolHashratesPane"
29
29
  P2POOL_REMOTE: str = "P2PoolRemotePane"
30
+ P2POOL_SHARES_FOUND: str = "P2PoolSharesFoundPane"
30
31
  RESULTS: str = "ResultsPane"
31
32
  RUNTIME_LOG: str = "RuntimeLogPane"
32
33
  TUI_LOG: str = "TuiLogPane"
33
- UPTIME: str = "UptimePane"
34
+ START_STOP_LOG: str = "StartStopLogPane"
34
35
  WELCOME: str = "WelcomePane"
35
36
  XMRIG: str = "XMRigPane"
36
37
  XMRIG_HASHRATES: str = "XMRigHashratesPane"
@@ -11,13 +11,21 @@ db4e/Constants/DSelect.py
11
11
  from db4e.Constants.DLabel import DLabel
12
12
 
13
13
 
14
- WEEKS_1 = 7 * 24
15
- WEEKS_2 = 14 * 24
16
- MONTHS_1 = 30 * 24
17
- MONTHS_3 = 30 * 24 * 3
18
- MONTHS_6 = 30 * 24 * 6
14
+ WEEKS_1 = 7
15
+ WEEKS_2 = 14
16
+ MONTHS_1 = 30
17
+ MONTHS_3 = 30 * 3
18
+ MONTHS_6 = 30 * 6
19
19
 
20
20
  class DSelect:
21
+ HOURS_SELECT_LIST = [
22
+ (DLabel.WEEK_1, WEEKS_1 * 24),
23
+ (DLabel.WEEKS_2, WEEKS_2 * 24),
24
+ (DLabel.MONTH_1, MONTHS_1 * 24),
25
+ (DLabel.MONTHS_3, MONTHS_3 * 24),
26
+ (DLabel.MONTHS_6, MONTHS_6 * 24),
27
+ (DLabel.ALL_TIME, -1)
28
+ ]
21
29
  SELECT_LIST = [
22
30
  (DLabel.WEEK_1, WEEKS_1),
23
31
  (DLabel.WEEKS_2, WEEKS_2),
@@ -494,7 +494,7 @@ class DeplMgr:
494
494
 
495
495
  elif aDir == DDir.LOGROTATE:
496
496
  vendor_dir = self.get_dir(DDir.VENDOR)
497
- return os.path.abspath(os.path.join(vendor_dir, DElem.DB4E, DDir.LOGROTATE))
497
+ return os.path.abspath(os.path.join(vendor_dir, DDir.LOGROTATE))
498
498
 
499
499
  elif aDir == DElem.MONEROD:
500
500
  return DElem.MONEROD + '-' + Default.MONEROD_VERSION
@@ -380,7 +380,7 @@ class InstallMgr(Container):
380
380
  logrotate_tmpl = self.depl_mgr.get_logrotate_template(DElem.DB4E)
381
381
  vendor_dir = db4e.vendor_dir()
382
382
  fq_config = os.path.join(
383
- vendor_dir, DElem.DB4E, DDef.LOG_ROTATE, DElem.DB4E + DDef.CONF_SUFFIX)
383
+ vendor_dir, DDef.LOG_ROTATE, DElem.DB4E + DDef.CONF_SUFFIX)
384
384
 
385
385
  # Populate the config template
386
386
  placeholders = {
@@ -36,6 +36,8 @@ class MessageRouter:
36
36
 
37
37
  def load_routes(self):
38
38
  # Db4e core
39
+ self.register(DModule.OPS_MGR, DMethod.GET_RUNTIME_LOG, DElem.DB4E,
40
+ self.ops_mgr.get_runtime_log, DPane.RUNTIME_LOG)
39
41
  self.register(DModule.INSTALL_MGR, DMethod.INITIAL_SETUP_PROCEED, DElem.DB4E,
40
42
  self.install_mgr.initial_setup_proceed, DPane.INITIAL_SETUP)
41
43
  self.register(DModule.INSTALL_MGR, DMethod.INITIAL_SETUP, DElem.DB4E,
@@ -44,67 +46,67 @@ class MessageRouter:
44
46
  self.ops_mgr.get_deployment, DPane.DB4E)
45
47
  self.register(DModule.DEPLOYMENT_CLIENT, DMethod.UPDATE_DEPLOYMENT, DElem.DB4E,
46
48
  self.depl_client.update_deployment, DPane.WELCOME)
47
- self.register(DModule.OPS_MGR, DMethod.GET_UPTIME, DElem.DB4E,
48
- self.ops_mgr.get_uptime, DPane.UPTIME)
49
49
 
50
50
  # MoneroD - local
51
- self.register(DModule.OPS_MGR, DMethod.GET_NEW, DElem.MONEROD,
52
- self.ops_mgr.get_new, DPane.MONEROD)
53
51
  self.register(DModule.OPS_MGR, DMethod.ADD_DEPLOYMENT, DElem.MONEROD,
54
52
  self.ops_mgr.add_deployment, DPane.WELCOME)
55
- self.register(DModule.OPS_MGR, DMethod.GET_DEPL, DElem.MONEROD,
56
- self.ops_mgr.get_deployment, DPane.MONEROD)
53
+ self.register(DModule.DEPLOYMENT_CLIENT, DMethod.DELETE_DEPLOYMENT, DElem.MONEROD,
54
+ self.depl_client.delete_deployment, DPane.WELCOME)
57
55
  self.register(DModule.DEPLOYMENT_CLIENT, DMethod.DISABLE_DEPLOYMENT, DElem.MONEROD,
58
56
  self.depl_client.disable_deployment, DPane.WELCOME)
59
57
  self.register(DModule.DEPLOYMENT_CLIENT, DMethod.ENABLE_DEPLOYMENT, DElem.MONEROD,
60
58
  self.depl_client.enable_deployment, DPane.WELCOME)
59
+ self.register(DModule.OPS_MGR, DMethod.GET_DEPL, DElem.MONEROD,
60
+ self.ops_mgr.get_deployment, DPane.MONEROD)
61
+ self.register(DModule.OPS_MGR, DMethod.GET_NEW, DElem.MONEROD,
62
+ self.ops_mgr.get_new, DPane.MONEROD)
61
63
  self.register(DModule.DEPLOYMENT_CLIENT, DMethod.UPDATE_DEPLOYMENT, DElem.MONEROD,
62
64
  self.depl_client.update_deployment, DPane.WELCOME)
63
- self.register(DModule.DEPLOYMENT_CLIENT, DMethod.DELETE_DEPLOYMENT, DElem.MONEROD,
64
- self.depl_client.delete_deployment, DPane.WELCOME)
65
65
 
66
66
  # MoneroD - remote
67
- self.register(DModule.OPS_MGR, DMethod.GET_NEW, DElem.MONEROD_REMOTE,
68
- self.ops_mgr.get_new, DPane.MONEROD_REMOTE)
69
67
  self.register(DModule.OPS_MGR, DMethod.ADD_DEPLOYMENT, DElem.MONEROD_REMOTE,
70
68
  self.ops_mgr.add_deployment, DPane.WELCOME)
71
69
  self.register(DModule.OPS_MGR, DMethod.GET_DEPL, DElem.MONEROD_REMOTE,
72
70
  self.ops_mgr.get_deployment, DPane.MONEROD_REMOTE)
73
- self.register(DModule.DEPLOYMENT_CLIENT, DMethod.UPDATE_DEPLOYMENT, DElem.MONEROD_REMOTE,
74
- self.depl_client.update_deployment, DPane.WELCOME)
75
71
  self.register(DModule.DEPLOYMENT_CLIENT, DMethod.DELETE_DEPLOYMENT, DElem.MONEROD_REMOTE,
76
72
  self.depl_client.delete_deployment, DPane.WELCOME)
73
+ self.register(DModule.OPS_MGR, DMethod.GET_NEW, DElem.MONEROD_REMOTE,
74
+ self.ops_mgr.get_new, DPane.MONEROD_REMOTE)
75
+ self.register(DModule.DEPLOYMENT_CLIENT, DMethod.UPDATE_DEPLOYMENT, DElem.MONEROD_REMOTE,
76
+ self.depl_client.update_deployment, DPane.WELCOME)
77
77
 
78
78
 
79
79
  # P2Pool - Local
80
- self.register(DModule.OPS_MGR, DMethod.GET_NEW, DElem.P2POOL,
81
- self.ops_mgr.get_new, DPane.P2POOL)
82
80
  self.register(DModule.OPS_MGR, DMethod.ADD_DEPLOYMENT, DElem.P2POOL,
83
81
  self.ops_mgr.add_deployment, DPane.WELCOME)
84
- self.register(DModule.OPS_MGR, DMethod.HASHRATES, DElem.P2POOL,
85
- self.ops_mgr.hashrates, DPane.P2POOL_HASHRATES)
86
- self.register(DModule.OPS_MGR, DMethod.GET_DEPL, DElem.P2POOL,
87
- self.ops_mgr.get_deployment, DPane.P2POOL)
82
+ self.register(DModule.DEPLOYMENT_CLIENT, DMethod.DELETE_DEPLOYMENT, DElem.P2POOL,
83
+ self.depl_client.delete_deployment, DPane.WELCOME)
88
84
  self.register(DModule.DEPLOYMENT_CLIENT, DMethod.DISABLE_DEPLOYMENT, DElem.P2POOL,
89
85
  self.depl_client.disable_deployment, DPane.WELCOME)
90
86
  self.register(DModule.DEPLOYMENT_CLIENT, DMethod.ENABLE_DEPLOYMENT, DElem.P2POOL,
91
87
  self.depl_client.enable_deployment, DPane.WELCOME)
88
+ self.register(DModule.OPS_MGR, DMethod.GET_DEPL, DElem.P2POOL,
89
+ self.ops_mgr.get_deployment, DPane.P2POOL)
90
+ self.register(DModule.OPS_MGR, DMethod.HASHRATES, DElem.P2POOL,
91
+ self.ops_mgr.hashrates, DPane.P2POOL_HASHRATES)
92
+ self.register(DModule.OPS_MGR, DMethod.GET_NEW, DElem.P2POOL,
93
+ self.ops_mgr.get_new, DPane.P2POOL)
94
+ self.register(DModule.OPS_MGR, DMethod.SHARES_FOUND, DElem.P2POOL,
95
+ self.ops_mgr.shares_found, DPane.P2POOL_SHARES_FOUND)
92
96
  self.register(DModule.DEPLOYMENT_CLIENT, DMethod.UPDATE_DEPLOYMENT, DElem.P2POOL,
93
97
  self.depl_client.update_deployment, DPane.WELCOME)
94
- self.register(DModule.DEPLOYMENT_CLIENT, DMethod.DELETE_DEPLOYMENT, DElem.P2POOL,
95
- self.depl_client.delete_deployment, DPane.WELCOME)
96
98
 
97
99
  # P2Pool - Remote
98
- self.register(DModule.OPS_MGR, DMethod.GET_NEW, DElem.P2POOL_REMOTE,
99
- self.ops_mgr.get_new, DPane.P2POOL_REMOTE)
100
100
  self.register(DModule.OPS_MGR, DMethod.ADD_DEPLOYMENT, DElem.P2POOL_REMOTE,
101
101
  self.ops_mgr.add_deployment, DPane.WELCOME)
102
+ self.register(DModule.DEPLOYMENT_CLIENT, DMethod.DELETE_DEPLOYMENT, DElem.P2POOL_REMOTE,
103
+ self.depl_client.delete_deployment, DPane.WELCOME)
102
104
  self.register(DModule.OPS_MGR, DMethod.GET_DEPL, DElem.P2POOL_REMOTE,
103
105
  self.ops_mgr.get_deployment, DPane.P2POOL_REMOTE)
106
+ self.register(DModule.OPS_MGR, DMethod.GET_NEW, DElem.P2POOL_REMOTE,
107
+ self.ops_mgr.get_new, DPane.P2POOL_REMOTE)
104
108
  self.register(DModule.DEPLOYMENT_CLIENT, DMethod.UPDATE_DEPLOYMENT, DElem.P2POOL_REMOTE,
105
109
  self.depl_client.update_deployment, DPane.WELCOME)
106
- self.register(DModule.DEPLOYMENT_CLIENT, DMethod.DELETE_DEPLOYMENT, DElem.P2POOL_REMOTE,
107
- self.depl_client.delete_deployment, DPane.WELCOME)
108
110
 
109
111
  # P2Pool - Internal
110
112
  self.register(DModule.OPS_MGR, DMethod.BLOCKS_FOUND, DElem.INT_P2POOL,
@@ -115,22 +117,22 @@ class MessageRouter:
115
117
  self.ops_mgr.hashrates, DPane.CHAIN_HASHRATES)
116
118
 
117
119
  # XMRig
118
- self.register(DModule.OPS_MGR, DMethod.GET_NEW, DElem.XMRIG,
119
- self.ops_mgr.get_new, DPane.XMRIG)
120
120
  self.register(DModule.OPS_MGR, DMethod.ADD_DEPLOYMENT, DElem.XMRIG,
121
121
  self.ops_mgr.add_deployment, DPane.WELCOME)
122
- self.register(DModule.OPS_MGR, DMethod.HASHRATES, DElem.XMRIG,
123
- self.ops_mgr.hashrates, DPane.XMRIG_HASHRATES)
124
- self.register(DModule.OPS_MGR, DMethod.GET_DEPL, DElem.XMRIG,
125
- self.ops_mgr.get_deployment, DPane.XMRIG)
122
+ self.register(DModule.DEPLOYMENT_CLIENT, DMethod.DELETE_DEPLOYMENT, DElem.XMRIG,
123
+ self.depl_client.delete_deployment, DPane.WELCOME)
126
124
  self.register(DModule.DEPLOYMENT_CLIENT, DMethod.DISABLE_DEPLOYMENT, DElem.XMRIG,
127
125
  self.depl_client.disable_deployment, DPane.WELCOME)
128
126
  self.register(DModule.DEPLOYMENT_CLIENT, DMethod.ENABLE_DEPLOYMENT, DElem.XMRIG,
129
127
  self.depl_client.enable_deployment, DPane.WELCOME)
128
+ self.register(DModule.OPS_MGR, DMethod.GET_DEPL, DElem.XMRIG,
129
+ self.ops_mgr.get_deployment, DPane.XMRIG)
130
+ self.register(DModule.OPS_MGR, DMethod.GET_NEW, DElem.XMRIG,
131
+ self.ops_mgr.get_new, DPane.XMRIG)
132
+ self.register(DModule.OPS_MGR, DMethod.HASHRATES, DElem.XMRIG,
133
+ self.ops_mgr.hashrates, DPane.XMRIG_HASHRATES)
130
134
  self.register(DModule.DEPLOYMENT_CLIENT, DMethod.UPDATE_DEPLOYMENT, DElem.XMRIG,
131
135
  self.depl_client.update_deployment, DPane.WELCOME)
132
- self.register(DModule.DEPLOYMENT_CLIENT, DMethod.DELETE_DEPLOYMENT, DElem.XMRIG,
133
- self.depl_client.delete_deployment, DPane.WELCOME)
134
136
 
135
137
  # XMRig Remote
136
138
  self.register(DModule.OPS_MGR, DMethod.GET_DEPL, DElem.XMRIG_REMOTE,
@@ -150,9 +152,9 @@ class MessageRouter:
150
152
  self.register(DModule.OPS_MGR, DMethod.GET_TUI_LOG, DField.TUI_LOG,
151
153
  self.ops_mgr.get_tui_log, DPane.TUI_LOG)
152
154
 
153
- # Runtime Log
154
- self.register(DModule.OPS_MGR, DMethod.GET_RUNTIME_LOG, DField.RUNTIME_LOG,
155
- self.ops_mgr.get_runtime_log, DPane.RUNTIME_LOG)
155
+ # Start/Stop Log
156
+ self.register(DModule.OPS_MGR, DMethod.GET_START_STOP_LOG, DField.START_STOP_LOG,
157
+ self.ops_mgr.get_start_stop_log, DPane.START_STOP_LOG)
156
158
 
157
159
  # Donations
158
160
  self.register(DModule.OPS_MGR, DMethod.SET_DONATIONS, DField.DONATIONS,
@@ -347,9 +347,10 @@ class MiningDb():
347
347
 
348
348
 
349
349
  def get_block_found_events(self, instance):
350
+ print(f"MiningDb:get_block_found_events(): {instance}")
350
351
  return self.db.find_many(
351
352
  self.mining_col,
352
- { DMongo.DOC_TYPE: DMining.BLOCK_FOUND_EVENT, DMongo.INSTANCE: instance },
353
+ { DMongo.DOC_TYPE: DMining.BLOCK_FOUND_EVENT, DMongo.POOL: instance },
353
354
  { DMongo.TIMESTAMP: 1 })
354
355
 
355
356
 
@@ -397,6 +398,13 @@ class MiningDb():
397
398
  { DMongo.TIMESTAMP: 1 })
398
399
 
399
400
 
401
+ def get_share_found_events(self, pool):
402
+ return self.db.find_many(
403
+ self.mining_col,
404
+ { DMongo.DOC_TYPE: DMining.SHARE_FOUND_EVENT, DMongo.POOL: pool },
405
+ { DMongo.TIMESTAMP: 1 })
406
+
407
+
400
408
  def get_xmrigs_remote(self):
401
409
  recs = self.db.find_many(self.mining_col, {
402
410
  DMongo.DOC_TYPE: DMining.RT_MINER_HASHRATE})
@@ -29,45 +29,7 @@ class MiningETL:
29
29
 
30
30
  def get_block_found_events(self, instance):
31
31
  recs = self.mining_db.get_block_found_events(instance)
32
- if not recs:
33
- return {DField.DAYS: [], DField.VALUES: []}
34
-
35
- results = {}
36
-
37
- cur_day = recs[0][DMongo.TIMESTAMP].replace(hour=0, minute=0, second=0, microsecond=0)
38
-
39
- for rec in recs:
40
- rec_day = rec[DMongo.TIMESTAMP].replace(hour=0, minute=0, second=0, microsecond=0)
41
-
42
- # Fill in all missing days with 0
43
- while cur_day < rec_day:
44
- if cur_day not in results:
45
- results[cur_day] = 0
46
- cur_day += timedelta(days=1)
47
-
48
- # Count the block for this day
49
- results[rec_day] = results.get(rec_day, 0) + 1
50
- cur_day = rec_day
51
-
52
- # Convert dict → lists (sorted by day)
53
- times = [day.strftime("%Y-%m-%d %H:%M") for day in sorted(results.keys())]
54
- values = [results[day] for day in sorted(results.keys())]
55
-
56
- # Replace datetime days with integers for plotting
57
- new_times = range(- len(times), 0, 1)
58
-
59
- new_values = []
60
- for value in values:
61
- new_values.append(float(value))
62
-
63
- first_day = - len(new_times)
64
- new_days = list(range(first_day, 0, 1))
65
-
66
- print(f"days: {new_days}\n{new_values}")
67
- return {
68
- DField.DAYS: new_days,
69
- DField.VALUES: new_values,
70
- }
32
+ return self.get_found_events(recs)
71
33
 
72
34
 
73
35
  def get_chain_hashrate(self, instance):
@@ -125,6 +87,48 @@ class MiningETL:
125
87
  return self.get_hashrates(recs)
126
88
 
127
89
 
90
+ def get_found_events(self, recs):
91
+ if not recs:
92
+ return {DField.DAYS: [], DField.VALUES: []}
93
+
94
+ results = {}
95
+
96
+ cur_day = recs[0][DMongo.TIMESTAMP].replace(hour=0, minute=0, second=0, microsecond=0)
97
+
98
+ for rec in recs:
99
+ rec_day = rec[DMongo.TIMESTAMP].replace(hour=0, minute=0, second=0, microsecond=0)
100
+
101
+ # Fill in all missing days with 0
102
+ while cur_day < rec_day:
103
+ if cur_day not in results:
104
+ results[cur_day] = 0
105
+ cur_day += timedelta(days=1)
106
+
107
+ # Count the block for this day
108
+ results[rec_day] = results.get(rec_day, 0) + 1
109
+ cur_day = rec_day
110
+
111
+ # Convert dict → lists (sorted by day)
112
+ times = [day.strftime("%Y-%m-%d %H:%M") for day in sorted(results.keys())]
113
+ values = [results[day] for day in sorted(results.keys())]
114
+
115
+ # Replace datetime days with integers for plotting
116
+ new_times = range(- len(times), 0, 1)
117
+
118
+ new_values = []
119
+ for value in values:
120
+ new_values.append(float(value))
121
+
122
+ first_day = - len(new_times)
123
+ new_days = list(range(first_day, 0, 1))
124
+
125
+ print(f"days: {new_days}\n{new_values}")
126
+ return {
127
+ DField.DAYS: new_days,
128
+ DField.VALUES: new_values,
129
+ }
130
+
131
+
128
132
  def get_hashrates(self, recs):
129
133
  if not recs:
130
134
  return {DField.VALUES: [], DField.DAYS: [], DField.UNITS: ""}
@@ -190,4 +194,56 @@ class MiningETL:
190
194
  if rec:
191
195
  return rec[DMongo.TIMESTAMP]
192
196
  return None
193
-
197
+
198
+
199
+ def get_share_found_events(self, pool):
200
+ recs = self.mining_db.get_share_found_events(pool)
201
+ return self.get_found_events(recs)
202
+
203
+
204
+ def get_share_found_events_stacked(self, pool):
205
+ recs = self.mining_db.get_share_found_events(pool)
206
+ if not recs:
207
+ return {DField.DAYS: [], DField.VALUES: [], DField.MINERS: []}
208
+
209
+
210
+ results = {}
211
+ miner_set = set()
212
+
213
+ cur_day = recs[0][DMongo.TIMESTAMP].replace(hour=0, minute=0, second=0, microsecond=0)
214
+
215
+ for rec in recs:
216
+ rec_day = rec[DMongo.TIMESTAMP].replace(hour=0, minute=0, second=0, microsecond=0)
217
+
218
+ # Fill in all missing days with 0
219
+ while cur_day < rec_day:
220
+ results.setdefault(cur_day, {})
221
+ cur_day += timedelta(days=1)
222
+
223
+ # Get the miner name
224
+ miner = rec[DMining.MINER]
225
+ miner_set.add(miner)
226
+
227
+ # Count the share found for this day
228
+ results.setdefault(rec_day, {})
229
+ results[rec_day][miner] = results[rec_day].get(miner, 0) + 1
230
+
231
+ cur_day = rec_day
232
+
233
+ miners = sorted(miner_set)
234
+ miner_lists = {miner: [] for miner in miners}
235
+
236
+
237
+ for day in results:
238
+ for miner in miners:
239
+ miner_lists[miner].append(results[day].get(miner, 0))
240
+
241
+ new_days = range(- len(results), 0, 1)
242
+
243
+ final_results = {
244
+ DField.DAYS: list(new_days),
245
+ DField.VALUES: list(miner_lists.values()),
246
+ DField.MINERS: list(miner_set)
247
+ }
248
+ print(final_results)
249
+ return final_results
@@ -61,33 +61,14 @@ class OpsMgr:
61
61
  def blocks_found(self, form_data: dict):
62
62
  elem = form_data[DField.ELEMENT]
63
63
  if type(elem == InternalP2Pool):
64
- elem.blocks_found(self.mining_etl.get_block_found_events(instance=elem.instance()))
64
+ #elem.blocks_found(self.mining_etl.get_block_found_events(instance=elem.instance()))
65
+ res = self.mining_etl.get_block_found_events(instance=elem.instance())
66
+ elem.blocks_found(res)
67
+ print(f"OpsMgr:blocks_found() {res}")
68
+
65
69
  return elem
66
70
 
67
71
 
68
- def hashrates(self, form_data: dict):
69
- elem = form_data[DField.ELEMENT]
70
-
71
- if type(elem) == P2Pool:
72
- elem.hashrate(self.mining_etl.get_pool_hashrate(instance=elem.instance()))
73
- elem.hashrates(self.mining_etl.get_pool_hashrates(instance=elem.instance()))
74
-
75
- if type(elem) == InternalP2Pool:
76
- elem.hashrate(self.mining_etl.get_chain_hashrate(instance=elem.instance()))
77
- elem.hashrates(self.mining_etl.get_chain_hashrates(instance=elem.instance()))
78
-
79
- elif type(elem) == XMRig:
80
- elem.hashrates(self.mining_etl.get_miner_hashrates(elem.instance()))
81
- elem.hashrate(self.mining_etl.get_miner_hashrate(elem.instance()))
82
- elem.uptime(self.mining_etl.get_miner_uptime(elem.instance()))
83
-
84
- elif type(elem) == XMRigRemote:
85
- print(self.mining_etl.get_miner_hashrates(elem.instance()))
86
- elem.hashrates(self.mining_etl.get_miner_hashrates(elem.instance()))
87
-
88
- return elem
89
-
90
-
91
72
  def get_deployment(self, elem_type, instance=None):
92
73
  if type(elem_type) == dict:
93
74
  instance = elem_type[DField.INSTANCE]
@@ -144,7 +125,7 @@ class OpsMgr:
144
125
  return self.mining_etl.get_remote_xmrig_timestamp(xmrig.instance())
145
126
 
146
127
 
147
- def get_uptime(self, form_data: dict):
128
+ def get_runtime_log(self, form_data: dict):
148
129
  return self.ops_etl.get_ops_summary()
149
130
 
150
131
 
@@ -157,10 +138,33 @@ class OpsMgr:
157
138
  return self.depl_client.job_queue.get_jobs()
158
139
 
159
140
 
160
- def get_runtime_log(self, event_list: list):
141
+ def get_start_stop_log(self, event_list: list):
161
142
  return self.ops_db.get_ops_events()
162
143
 
163
144
 
145
+ def hashrates(self, form_data: dict):
146
+ elem = form_data[DField.ELEMENT]
147
+
148
+ if type(elem) == P2Pool:
149
+ elem.hashrate(self.mining_etl.get_pool_hashrate(instance=elem.instance()))
150
+ elem.hashrates(self.mining_etl.get_pool_hashrates(instance=elem.instance()))
151
+
152
+ if type(elem) == InternalP2Pool:
153
+ elem.hashrate(self.mining_etl.get_chain_hashrate(instance=elem.instance()))
154
+ elem.hashrates(self.mining_etl.get_chain_hashrates(instance=elem.instance()))
155
+
156
+ elif type(elem) == XMRig:
157
+ elem.hashrates(self.mining_etl.get_miner_hashrates(elem.instance()))
158
+ elem.hashrate(self.mining_etl.get_miner_hashrate(elem.instance()))
159
+ elem.uptime(self.mining_etl.get_miner_uptime(elem.instance()))
160
+
161
+ elif type(elem) == XMRigRemote:
162
+ print(self.mining_etl.get_miner_hashrates(elem.instance()))
163
+ elem.hashrates(self.mining_etl.get_miner_hashrates(elem.instance()))
164
+
165
+ return elem
166
+
167
+
164
168
  def log_viewer(self, form_data: dict):
165
169
  elem_type = form_data[DField.ELEMENT_TYPE]
166
170
  instance = form_data[DField.INSTANCE]
@@ -173,6 +177,12 @@ class OpsMgr:
173
177
  return plot_metadata
174
178
 
175
179
 
180
+ def shares_found(self, form_data: dict):
181
+ p2pool = form_data[DField.ELEMENT]
182
+ p2pool.shares_found(self.mining_etl.get_share_found_events(pool=p2pool.instance()))
183
+ return p2pool
184
+
185
+
176
186
  def set_donations(self, form_data: dict):
177
187
  return DPane.DONATIONS
178
188
 
@@ -138,8 +138,8 @@ class P2Pool(SoftwareSystem):
138
138
  def gen_logrotate_config(self, tmpl_file: str, vendor_dir: str, db4e_group:str):
139
139
  # Logrotate configuration file
140
140
  fq_config = os.path.join(
141
- vendor_dir, DElem.DB4E, DDef.LOG_ROTATE, DElem.P2POOL + "-" + \
142
- self.instance() + DDef.CONF_SUFFIX)
141
+ vendor_dir, DDef.LOG_ROTATE, DElem.P2POOL + "-" + self.instance() + \
142
+ DDef.CONF_SUFFIX)
143
143
 
144
144
  # Populate the config template
145
145
  placeholders = {
@@ -22,10 +22,11 @@ from db4e.Panes.P2PoolPane import P2PoolPane
22
22
  from db4e.Panes.P2PoolHashratesPane import P2PoolHashratesPane
23
23
  from db4e.Panes.ChainPane import ChainPane
24
24
  from db4e.Panes.P2PoolRemotePane import P2PoolRemotePane
25
+ from db4e.Panes.P2PoolSharesFoundPane import P2PoolSharesFoundPane
25
26
  from db4e.Panes.ResultsPane import ResultsPane
26
- from db4e.Panes.RuntimeLogPane import RuntimeLogPane
27
+ from db4e.Panes.StartStopLogPane import StartStopLogPane
27
28
  from db4e.Panes.TUILogPane import TUILogPane
28
- from db4e.Panes.UptimePane import UptimePane
29
+ from db4e.Panes.RuntimePane import RuntimePane
29
30
  from db4e.Panes.WelcomePane import WelcomePane
30
31
  from db4e.Panes.XMRigHashratesPane import XMRigHashratesPane
31
32
  from db4e.Panes.XMRigPane import XMRigPane
@@ -49,10 +50,11 @@ REGISTRY = {
49
50
  DPane.P2POOL: (P2PoolPane, DLabel.P2POOL, DLabel.NEW),
50
51
  DPane.P2POOL_HASHRATES: (P2PoolHashratesPane, DLabel.P2POOL, DLabel.HASHRATES),
51
52
  DPane.P2POOL_REMOTE: (P2PoolRemotePane, DLabel.P2POOL_REMOTE, DLabel.CONFIG),
53
+ DPane.P2POOL_SHARES_FOUND: (P2PoolSharesFoundPane, DLabel.P2POOL, DLabel.SHARES_FOUND),
52
54
  DPane.RESULTS: (ResultsPane, DLabel.DB4E_LONG, DLabel.RESULTS),
53
- DPane.RUNTIME_LOG: (RuntimeLogPane, DLabel.LOG, DLabel.RUNTIME_LOG),
55
+ DPane.START_STOP_LOG: (StartStopLogPane, DLabel.LOG, DLabel.START_STOP_LOG),
54
56
  DPane.TUI_LOG: (TUILogPane, DLabel.LOG, DLabel.TUI_LOG),
55
- DPane.UPTIME: (UptimePane, DLabel.DB4E_LONG, DLabel.RUNTIME),
57
+ DPane.RUNTIME_LOG: (RuntimePane, DLabel.DB4E_LONG, DLabel.RUNTIME_LOG),
56
58
  DPane.WELCOME: (WelcomePane, DLabel.DB4E_LONG, DLabel.WELCOME),
57
59
  DPane.XMRIG: (XMRigPane, DLabel.XMRIG, DLabel.NEW),
58
60
  DPane.XMRIG_HASHRATES: (XMRigHashratesPane, DLabel.XMRIG, DLabel.HASHRATES),
@@ -111,8 +111,8 @@ class XMRig(SoftwareSystem):
111
111
  def gen_logrotate_config(self, tmpl_file: str, vendor_dir: str, db4e_group:str):
112
112
  # Logrotate configuration file
113
113
  fq_config = os.path.join(
114
- vendor_dir, DElem.DB4E, DDef.LOG_ROTATE, DElem.XMRIG + "-" + \
115
- self.instance() + DDef.CONF_SUFFIX)
114
+ vendor_dir, DDef.LOG_ROTATE, DElem.XMRIG + "-" + self.instance() + \
115
+ DDef.CONF_SUFFIX)
116
116
 
117
117
  # Populate the config template placeholders
118
118
  placeholders = {
@@ -53,7 +53,6 @@ class ChainBlocksFoundPane(Container):
53
53
  classes=DForm.PANE_BOX)
54
54
 
55
55
  def on_mount(self) -> None:
56
- print(f"ChainBlocksFoundPane:on_mount()")
57
56
  plt = self.query_one(PlotextPlot).plt
58
57
  plt.bar(self.days, self.blocks_found, color="blue")
59
58
  plt.title("Blocks Found")
@@ -84,7 +84,7 @@ class Db4EPane(Container):
84
84
 
85
85
  Horizontal(
86
86
  Button(label=DLabel.UPDATE, id=DButton.UPDATE),
87
- Button(label=DLabel.UPTIME, id=DButton.UPTIME),
87
+ Button(label=DLabel.RUNTIME, id=DButton.RUNTIME),
88
88
  classes=DForm.BUTTON_ROW
89
89
  ),
90
90
  classes=DForm.PANE_BOX))
@@ -133,10 +133,10 @@ class Db4EPane(Container):
133
133
  DField.ELEMENT: self.db4e,
134
134
  }
135
135
 
136
- elif button_id == DButton.UPTIME:
136
+ elif button_id == DButton.RUNTIME:
137
137
  form_data = {
138
138
  DField.TO_MODULE: DModule.OPS_MGR,
139
- DField.TO_METHOD: DMethod.GET_UPTIME,
139
+ DField.TO_METHOD: DMethod.GET_RUNTIME_LOG,
140
140
  DField.ELEMENT_TYPE: DElem.DB4E,
141
141
  DField.ELEMENT: self.db4e,
142
142
  }