1
0

Maintenance.pm 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. ################################################################################
  2. # $Id: Maintenance.pm 2880 2007-04-12 18:52:02Z b4rt $
  3. # $Date: 2007-04-12 13:52:02 -0500 (Thu, 12 Apr 2007) $
  4. # $Revision: 2880 $
  5. ################################################################################
  6. # #
  7. # LICENSE #
  8. # #
  9. # This program is free software; you can redistribute it and/or #
  10. # modify it under the terms of the GNU General Public License (GPL) #
  11. # as published by the Free Software Foundation; either version 2 #
  12. # of the License, or (at your option) any later version. #
  13. # #
  14. # This program is distributed in the hope that it will be useful, #
  15. # but WITHOUT ANY WARRANTY; without even the implied warranty of #
  16. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
  17. # GNU General Public License for more details. #
  18. # #
  19. # To read the license please visit http://www.gnu.org/copyleft/gpl.html #
  20. # #
  21. # #
  22. ################################################################################
  23. package Maintenance;
  24. use strict;
  25. use warnings;
  26. ################################################################################
  27. ################################################################################
  28. # fields #
  29. ################################################################################
  30. # version in a var
  31. my $VERSION = do {
  32. my @r = (q$Revision: 2880 $ =~ /\d+/g); sprintf "%d"."%02d" x $#r, @r };
  33. # state
  34. my $state = Fluxd::MOD_STATE_NULL;
  35. # message, error etc. keep it in one string for simplicity atm.
  36. my $message = "";
  37. # loglevel
  38. my $loglevel = 0;
  39. # run-interval
  40. my $interval;
  41. # time of last run
  42. my $time_last_run = 0;
  43. # transfer-restart
  44. my $trestart = 0;
  45. ################################################################################
  46. # constructor + destructor #
  47. ################################################################################
  48. #------------------------------------------------------------------------------#
  49. # Sub: new #
  50. # Arguments: Null #
  51. # Returns: object reference #
  52. #------------------------------------------------------------------------------#
  53. sub new {
  54. my $class = shift;
  55. my $self = bless ({}, ref ($class) || $class);
  56. return $self;
  57. }
  58. #------------------------------------------------------------------------------#
  59. # Sub: destroy #
  60. # Arguments: Null #
  61. # Returns: Null #
  62. #------------------------------------------------------------------------------#
  63. sub destroy {
  64. # set state
  65. $state = Fluxd::MOD_STATE_NULL;
  66. # print
  67. Fluxd::printMessage("Maintenance", "shutdown\n");
  68. }
  69. ################################################################################
  70. # public methods #
  71. ################################################################################
  72. #------------------------------------------------------------------------------#
  73. # Sub: initialize. this is separated from constructor to call it independent #
  74. # from object-creation. #
  75. # Arguments: null #
  76. # Returns: 0|1 #
  77. #------------------------------------------------------------------------------#
  78. sub initialize {
  79. shift; # class
  80. # loglevel
  81. $loglevel = Fluxd::getLoglevel();
  82. if (!(defined $loglevel)) {
  83. # message
  84. $message = "loglevel not defined";
  85. # set state
  86. $state = Fluxd::MOD_STATE_ERROR;
  87. # return
  88. return 0;
  89. }
  90. # interval
  91. $interval = FluxDB->getFluxConfig("fluxd_Maintenance_interval");
  92. if (!(defined $interval)) {
  93. # message
  94. $message = "interval not defined";
  95. # set state
  96. $state = Fluxd::MOD_STATE_ERROR;
  97. # return
  98. return 0;
  99. }
  100. # transfer-restart
  101. $trestart = FluxDB->getFluxConfig("fluxd_Maintenance_trestart");
  102. if (!(defined $trestart)) {
  103. # message
  104. $message = "transfer-restart not defined";
  105. # set state
  106. $state = Fluxd::MOD_STATE_ERROR;
  107. # return
  108. return 0;
  109. }
  110. # print
  111. Fluxd::printMessage("Maintenance", "initializing (loglevel: ".$loglevel." ; interval: ".$interval." ; trestart: ".$trestart.")\n");
  112. # reset last run time
  113. $time_last_run = time();
  114. # set state
  115. $state = Fluxd::MOD_STATE_OK;
  116. # return
  117. return 1;
  118. }
  119. #------------------------------------------------------------------------------#
  120. # Sub: getVersion #
  121. # Arguments: null #
  122. # Returns: VERSION #
  123. #------------------------------------------------------------------------------#
  124. sub getVersion {
  125. return $VERSION;
  126. }
  127. #------------------------------------------------------------------------------#
  128. # Sub: getState #
  129. # Arguments: null #
  130. # Returns: state #
  131. #------------------------------------------------------------------------------#
  132. sub getState {
  133. return $state;
  134. }
  135. #------------------------------------------------------------------------------#
  136. # Sub: getMessage #
  137. # Arguments: null #
  138. # Returns: message #
  139. #------------------------------------------------------------------------------#
  140. sub getMessage {
  141. return $message;
  142. }
  143. #------------------------------------------------------------------------------#
  144. # Sub: set #
  145. # Arguments: Variable [value] #
  146. # Returns: #
  147. #------------------------------------------------------------------------------#
  148. sub set {
  149. }
  150. #------------------------------------------------------------------------------#
  151. # Sub: main #
  152. # Arguments: Null #
  153. # Returns: Info String #
  154. #------------------------------------------------------------------------------#
  155. sub main {
  156. if ((time() - $time_last_run) >= $interval) {
  157. # print
  158. if ($loglevel > 1) {
  159. Fluxd::printMessage("Maintenance", "executing maintenance (trestart: ".$trestart."):\n");
  160. }
  161. # exec
  162. tfmaintenance();
  163. # set last run time
  164. $time_last_run = time();
  165. }
  166. }
  167. #------------------------------------------------------------------------------#
  168. # Sub: command #
  169. # Arguments: command-string #
  170. # Returns: result-string #
  171. #------------------------------------------------------------------------------#
  172. sub command {
  173. shift; # class
  174. my $command = shift;
  175. # TODO
  176. return "";
  177. }
  178. #------------------------------------------------------------------------------#
  179. # Sub: status #
  180. # Arguments: Null #
  181. # Returns: Status information #
  182. #------------------------------------------------------------------------------#
  183. sub status {
  184. my $return = "";
  185. $return .= "\n-= Maintenance Revision ".$VERSION." =-\n";
  186. $return .= "interval : ".$interval." s \n";
  187. $return .= "trestart : ".$trestart."\n";
  188. return $return;
  189. }
  190. #------------------------------------------------------------------------------#
  191. # Sub: tfmaintenance #
  192. # Arguments: null #
  193. # Returns: 0|1 #
  194. #------------------------------------------------------------------------------#
  195. sub tfmaintenance {
  196. # fluxcli-call
  197. return Fluxd::fluxcli("maintenance", ($trestart == 1) ? "true" : "false");
  198. }
  199. ################################################################################
  200. # make perl happy #
  201. ################################################################################
  202. 1;