# Copyright (c) 2008, 2009 - OpenSLX GmbH
#
# This program is free software distributed under the GPL version 2.
# See http://openslx.org/COPYING
#
# If you have any feedback please consult http://openslx.org/feedback and
# send your suggestions, praise, or complaints to feedback@openslx.org
#
# General information about OpenSLX can be found at http://openslx.org/
# -----------------------------------------------------------------------------
# InitFile.pm
# - configuration object for runlevel script
# -----------------------------------------------------------------------------
package OpenSLX::DistroUtils::InitFile;
use strict;
use warnings;
use OpenSLX::Basics;
use OpenSLX::Utils;
sub new {
my $class = shift;
my $params = shift || {};
my $self = {
};
$self->{'configHash'} = _initialConfigHash();
return bless $self, $class;
}
sub _initialConfigHash() {
return {
'name' => "",
'requiredStart' => "\$remote_fs",
'requiredStop' => "\$remote_fs",
'defaultStart' => "2 3 4 5",
'defaultStop' => "1",
'shortDesc' => "",
'blocks' => {
'head' => {
'blockDesc' => "head: file existing checks, etc.",
'content' => {}
},
'functions' => {
'blockDesc' => "functions: helper functions",
'content' => {}
}
},
'caseBlocks' => {
'start' => {
'blockDesc' => "start: defines start function for initscript",
'content' => {},
'order' => 1,
'required' => 1
},
'stop' => {
'blockDesc' => "stop: defines stop function for initscript",
'content' => {},
'order' => 2,
'required' => 1
},
'reload' => {
'blockDesc' => "reload: defines reload function for initscript",
'content' => {},
'order' => 3,
'required' => 0
},
'force-reload' => {
'blockDesc' => "force-reload: defines force-reload function for initscript",
'content' => {},
'order' => 4,
'required' => 0
},
'restart' => {
'blockDesc' => "restart: defines restart function for initscript",
'content' => {},
'order' => 5,
'required' => 1
},
'try-restart' => {
'blockDesc' => "restart: defines restart function for initscript",
'content' => {},
'order' => 6,
'required' => 0
},
'status' => {
'blockDesc' => "status: defines status function for initscript",
'content' => {},
'order' => 7,
'required' => 0
},
'usage' => {
'blockDesc' => "usage: defines usage function for initscript",
'content' => {},
'order' => 8,
'required' => 0
}
}
};
}
sub addToCase {
my $self = shift;
my $blockName = shift;
my $content = shift;
my $priority = shift || 5;
#check if block is valid..
push(@{$self->{'configHash'}->{'caseBlocks'}->{$blockName}->{'content'}->{$priority}}, $content);
return $self;
}
sub addToBlock {
my $self = shift;
my $blockName = shift;
my $content = shift;
my $priority = shift || 5;
#check if block is valid..
push(@{$self->{'configHash'}->{'blocks'}->{$blockName}->{'content'}->{$priority}}, $content);
return $self;
}
sub setName {
my $self = shift;
my $name = shift;
$self->{'configHash'}->{'name'} = $name;
return $self;
}
sub setDesc {
my $self = shift;
my $desc = shift;
$self->{'configHash'}->{'shortDesc'} = $desc;
return $self;
}
sub addFunction {
my $self = shift;
my $name = shift;
my $script = shift;
my $flags = shift || {};
my $priority = $flags->{priority} || 5;
push(@{$self->{'configHash'}->{'highlevelConfig'}},
{
name => $name,
script => $script,
priority => $priority,
type => 'function'
});
return 1;
}
sub addFunctionCall {
my $self = shift;
my $function = shift;
my $block = shift;
my $flags = shift;
my $priority = $flags->{priority} || 5;
my $parameters = $flags->{parameters} || "";
push(@{$self->{'configHash'}->{'highlevelConfig'}},
{
function => $function,
block => $block,
parameters => $parameters,
priority => $priority,
type => 'functionCall'
});
return 1;
}
sub addScript {
my $self = shift;
my $name = shift;
my $script = shift;
my $flags = shift || {};
my $block = $flags->{block} || 'start';
my $required = $flags->{required} || 1;
my $errormsg = $flags->{errormsg} || "$name failed!";
my $priority = $flags->{priority} || 5;
push(@{$self->{'configHash'}->{'highlevelConfig'}},
{
name => $name,
script => $script,
block => $block,
required => $required,
priority => $priority,
errormsg => $errormsg,
type => 'script'
});
return 1;
}
sub addDaemon {
my $self = shift;
my $binary = shift;
$binary =~ m/\/([^\/]*)$/;
my $shortname = $1;
my $parameters = shift || "";
my $flags = shift || {};
my $required = $flags->{required} || 1;
my $desc = $flags->{desc} || "$shortname";
my $errormsg = $flags->{errormsg} || "$desc failed!";
my $priority = $flags->{priority} || 5;
push(@{$self->{'configHash'}->{'highlevelConfig'}},
{
binary => $binary,
shortname => $shortname,
parameters => $parameters,
desc => $desc,
errormsg => $errormsg,
required => $required,
priority => $priority,
type => 'daemon'
});
return 1;
}
1;