diff options
Diffstat (limited to 'src/lib/OpenSLX/DistroUtils/InitFile.pm')
-rw-r--r-- | src/lib/OpenSLX/DistroUtils/InitFile.pm | 232 |
1 files changed, 232 insertions, 0 deletions
diff --git a/src/lib/OpenSLX/DistroUtils/InitFile.pm b/src/lib/OpenSLX/DistroUtils/InitFile.pm new file mode 100644 index 00000000..ab729959 --- /dev/null +++ b/src/lib/OpenSLX/DistroUtils/InitFile.pm @@ -0,0 +1,232 @@ +# 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; |