| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236 |
- ################################################################################
- # $Id: Maintenance.pm 2880 2007-04-12 18:52:02Z b4rt $
- # $Date: 2007-04-12 13:52:02 -0500 (Thu, 12 Apr 2007) $
- # $Revision: 2880 $
- ################################################################################
- # #
- # LICENSE #
- # #
- # This program is free software; you can redistribute it and/or #
- # modify it under the terms of the GNU General Public License (GPL) #
- # as published by the Free Software Foundation; either version 2 #
- # of the License, or (at your option) any later version. #
- # #
- # This program is distributed in the hope that it will be useful, #
- # but WITHOUT ANY WARRANTY; without even the implied warranty of #
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
- # GNU General Public License for more details. #
- # #
- # To read the license please visit http://www.gnu.org/copyleft/gpl.html #
- # #
- # #
- ################################################################################
- package Maintenance;
- use strict;
- use warnings;
- ################################################################################
- ################################################################################
- # fields #
- ################################################################################
- # version in a var
- my $VERSION = do {
- my @r = (q$Revision: 2880 $ =~ /\d+/g); sprintf "%d"."%02d" x $#r, @r };
- # state
- my $state = Fluxd::MOD_STATE_NULL;
- # message, error etc. keep it in one string for simplicity atm.
- my $message = "";
- # loglevel
- my $loglevel = 0;
- # run-interval
- my $interval;
- # time of last run
- my $time_last_run = 0;
- # transfer-restart
- my $trestart = 0;
- ################################################################################
- # constructor + destructor #
- ################################################################################
- #------------------------------------------------------------------------------#
- # Sub: new #
- # Arguments: Null #
- # Returns: object reference #
- #------------------------------------------------------------------------------#
- sub new {
- my $class = shift;
- my $self = bless ({}, ref ($class) || $class);
- return $self;
- }
- #------------------------------------------------------------------------------#
- # Sub: destroy #
- # Arguments: Null #
- # Returns: Null #
- #------------------------------------------------------------------------------#
- sub destroy {
- # set state
- $state = Fluxd::MOD_STATE_NULL;
- # print
- Fluxd::printMessage("Maintenance", "shutdown\n");
- }
- ################################################################################
- # public methods #
- ################################################################################
- #------------------------------------------------------------------------------#
- # Sub: initialize. this is separated from constructor to call it independent #
- # from object-creation. #
- # Arguments: null #
- # Returns: 0|1 #
- #------------------------------------------------------------------------------#
- sub initialize {
- shift; # class
- # loglevel
- $loglevel = Fluxd::getLoglevel();
- if (!(defined $loglevel)) {
- # message
- $message = "loglevel not defined";
- # set state
- $state = Fluxd::MOD_STATE_ERROR;
- # return
- return 0;
- }
- # interval
- $interval = FluxDB->getFluxConfig("fluxd_Maintenance_interval");
- if (!(defined $interval)) {
- # message
- $message = "interval not defined";
- # set state
- $state = Fluxd::MOD_STATE_ERROR;
- # return
- return 0;
- }
- # transfer-restart
- $trestart = FluxDB->getFluxConfig("fluxd_Maintenance_trestart");
- if (!(defined $trestart)) {
- # message
- $message = "transfer-restart not defined";
- # set state
- $state = Fluxd::MOD_STATE_ERROR;
- # return
- return 0;
- }
- # print
- Fluxd::printMessage("Maintenance", "initializing (loglevel: ".$loglevel." ; interval: ".$interval." ; trestart: ".$trestart.")\n");
- # reset last run time
- $time_last_run = time();
- # set state
- $state = Fluxd::MOD_STATE_OK;
- # return
- return 1;
- }
- #------------------------------------------------------------------------------#
- # Sub: getVersion #
- # Arguments: null #
- # Returns: VERSION #
- #------------------------------------------------------------------------------#
- sub getVersion {
- return $VERSION;
- }
- #------------------------------------------------------------------------------#
- # Sub: getState #
- # Arguments: null #
- # Returns: state #
- #------------------------------------------------------------------------------#
- sub getState {
- return $state;
- }
- #------------------------------------------------------------------------------#
- # Sub: getMessage #
- # Arguments: null #
- # Returns: message #
- #------------------------------------------------------------------------------#
- sub getMessage {
- return $message;
- }
- #------------------------------------------------------------------------------#
- # Sub: set #
- # Arguments: Variable [value] #
- # Returns: #
- #------------------------------------------------------------------------------#
- sub set {
- }
- #------------------------------------------------------------------------------#
- # Sub: main #
- # Arguments: Null #
- # Returns: Info String #
- #------------------------------------------------------------------------------#
- sub main {
- if ((time() - $time_last_run) >= $interval) {
- # print
- if ($loglevel > 1) {
- Fluxd::printMessage("Maintenance", "executing maintenance (trestart: ".$trestart."):\n");
- }
- # exec
- tfmaintenance();
- # set last run time
- $time_last_run = time();
- }
- }
- #------------------------------------------------------------------------------#
- # Sub: command #
- # Arguments: command-string #
- # Returns: result-string #
- #------------------------------------------------------------------------------#
- sub command {
- shift; # class
- my $command = shift;
- # TODO
- return "";
- }
- #------------------------------------------------------------------------------#
- # Sub: status #
- # Arguments: Null #
- # Returns: Status information #
- #------------------------------------------------------------------------------#
- sub status {
- my $return = "";
- $return .= "\n-= Maintenance Revision ".$VERSION." =-\n";
- $return .= "interval : ".$interval." s \n";
- $return .= "trestart : ".$trestart."\n";
- return $return;
- }
- #------------------------------------------------------------------------------#
- # Sub: tfmaintenance #
- # Arguments: null #
- # Returns: 0|1 #
- #------------------------------------------------------------------------------#
- sub tfmaintenance {
- # fluxcli-call
- return Fluxd::fluxcli("maintenance", ($trestart == 1) ? "true" : "false");
- }
- ################################################################################
- # make perl happy #
- ################################################################################
- 1;
|