summaryrefslogblamecommitdiffstats
path: root/src/lib/OpenSLX/DistroUtils/InitFile.pm
blob: ab729959200ba210ee3bfdbb3ae1f0e3d6913bb9 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
                                         











                                                                               




                                       


                    













                                                 

                                         


                                    








                                                                  
          
















































                                                                                                



         












                                                                                                     







                              
                                                                                                 



















                                                 
                 



                             






























                                                       
               



                              




















                                                            

                                 


                                              
                                                     





                                                            
                                








                                  

 
  
# 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;