summaryrefslogtreecommitdiffstats
path: root/src/lib/OpenSLX/DistroUtils/InitFile.pm
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/OpenSLX/DistroUtils/InitFile.pm')
-rw-r--r--src/lib/OpenSLX/DistroUtils/InitFile.pm232
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;