summaryrefslogblamecommitdiffstats
path: root/config-db/OpenSLX/AttributeRoster.pm
blob: c37421c88bae9092304d8f1bba171c7d0ebe4e2b (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11










                                                                               
                                                          





                                                                               
                    

                              
 











                                                                            

















































































































































































































































































































































                                                                             
 
















                                                 


























                                                                      

 















                                                                       
                      
 
                                       
 





                                                       

 















                                                  
                      
 
                                       
 


                                                           

















                                                  
                      
 
                                       
 


                                                           


  
# Copyright (c) 2006, 2007 - 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/
# -----------------------------------------------------------------------------
# AttributeRoster.pm
#    - provides information about all available attributes
# -----------------------------------------------------------------------------
package OpenSLX::AttributeRoster;

use strict;
use warnings;

use OpenSLX::Basics;
use OpenSLX::OSPlugin::Roster;
use OpenSLX::Utils;

my %AttributeInfo;

#=item C<_init()>
#
#Integrates info about all known attributes (from core and from the plugins)
#into one big hash.
#Returns info about all attributes.
#
#=cut
#
sub _init
{
    my $class = shift;

    # set core attributes
    %AttributeInfo = (
        'automnt_dir' => {
            applies_to_systems => 1,
            applies_to_clients => 1,
            description => unshiftHereDoc(<<'            End-of-Here'),
                !!!descriptive text missing here!!!
            End-of-Here
            content_regex => undef,
            content_descr => undef,
            default => '',
        },
        'automnt_src' => {
            applies_to_systems => 1,
            applies_to_clients => 1,
            description => unshiftHereDoc(<<'            End-of-Here'),
                !!!descriptive text missing here!!!
            End-of-Here
            content_regex => undef,
            content_descr => undef,
            default => '',
        },
        'country' => {
            applies_to_systems => 1,
            applies_to_clients => 1,
            description => unshiftHereDoc(<<'            End-of-Here'),
                !!!descriptive text missing here!!!
            End-of-Here
            content_regex => undef,
            content_descr => undef,
            default => 'de',
        },
        'dm_allow_shutdown' => {
            applies_to_systems => 1,
            applies_to_clients => 1,
            description => unshiftHereDoc(<<'            End-of-Here'),
                !!!descriptive text missing here!!!
            End-of-Here
            content_regex => undef,
            content_descr => undef,
            default => 'user',
        },
        'hw_graphic' => {
            applies_to_systems => 1,
            applies_to_clients => 1,
            description => unshiftHereDoc(<<'            End-of-Here'),
                !!!descriptive text missing here!!!
            End-of-Here
            content_regex => undef,
            content_descr => undef,
            default => '',
        },
        'hw_monitor' => {
            applies_to_systems => 1,
            applies_to_clients => 1,
            description => unshiftHereDoc(<<'            End-of-Here'),
                !!!descriptive text missing here!!!
            End-of-Here
            content_regex => undef,
            content_descr => undef,
            default => '',
        },
        'hw_mouse' => {
            applies_to_systems => 1,
            applies_to_clients => 1,
            description => unshiftHereDoc(<<'            End-of-Here'),
                !!!descriptive text missing here!!!
            End-of-Here
            content_regex => undef,
            content_descr => undef,
            default => '',
        },
        'netbios_workgroup' => {
            applies_to_systems => 1,
            applies_to_clients => 1,
            description => unshiftHereDoc(<<'            End-of-Here'),
                !!!descriptive text missing here!!!
            End-of-Here
            content_regex => undef,
            content_descr => undef,
            default => 'slx-network',
        },
        'nis_domain' => {
            applies_to_systems => 1,
            applies_to_clients => 1,
            description => unshiftHereDoc(<<'            End-of-Here'),
                !!!descriptive text missing here!!!
            End-of-Here
            content_regex => undef,
            content_descr => undef,
            default => '',
        },
        'nis_servers' => {
            applies_to_systems => 1,
            applies_to_clients => 1,
            description => unshiftHereDoc(<<'            End-of-Here'),
                !!!descriptive text missing here!!!
            End-of-Here
            content_regex => undef,
            content_descr => undef,
            default => '',
        },
        'ramfs_fsmods' => {
            applies_to_systems => 1,
            applies_to_clients => 0,
            description => unshiftHereDoc(<<'            End-of-Here'),
                list of filesystem kernel modules to load
            End-of-Here
            content_regex => undef,
            content_descr => undef,
            default => '',
        },
        'ramfs_miscmods' => {
            applies_to_systems => 1,
            applies_to_clients => 0,
            description => unshiftHereDoc(<<'            End-of-Here'),
                list of miscellaneous kernel modules to load
            End-of-Here
            content_regex => undef,
            content_descr => undef,
            default => '',
        },
        'ramfs_nicmods' => {
            applies_to_systems => 1,
            applies_to_clients => 0,
            description => unshiftHereDoc(<<'            End-of-Here'),
                list of network card modules to load
            End-of-Here
            content_regex => undef,
            content_descr => undef,
            default => 'forcedeth e1000 e100 tg3 via-rhine r8169 pcnet32',
        },
        'sane_scanner' => {
            applies_to_systems => 1,
            applies_to_clients => 1,
            description => unshiftHereDoc(<<'            End-of-Here'),
                !!!descriptive text missing here!!!
            End-of-Here
            content_regex => undef,
            content_descr => undef,
            default => '',
        },
        'scratch' => {
            applies_to_systems => 1,
            applies_to_clients => 1,
            description => unshiftHereDoc(<<'            End-of-Here'),
                !!!descriptive text missing here!!!
            End-of-Here
            content_regex => undef,
            content_descr => undef,
            default => '',
        },
        'slxgrp' => {
            applies_to_systems => 1,
            applies_to_clients => 1,
            description => unshiftHereDoc(<<'            End-of-Here'),
                !!!descriptive text missing here!!!
            End-of-Here
            content_regex => undef,
            content_descr => undef,
            default => '',
        },
        'start_alsasound' => {
            applies_to_systems => 1,
            applies_to_clients => 1,
            description => unshiftHereDoc(<<'            End-of-Here'),
                !!!descriptive text missing here!!!
            End-of-Here
            content_regex => undef,
            content_descr => undef,
            default => 'yes',
        },
        'start_atd' => {
            applies_to_systems => 1,
            applies_to_clients => 1,
            description => unshiftHereDoc(<<'            End-of-Here'),
                !!!descriptive text missing here!!!
            End-of-Here
            content_regex => undef,
            content_descr => undef,
            default => 'no',
        },
        'start_cron' => {
            applies_to_systems => 1,
            applies_to_clients => 1,
            description => unshiftHereDoc(<<'            End-of-Here'),
                !!!descriptive text missing here!!!
            End-of-Here
            content_regex => undef,
            content_descr => undef,
            default => 'no',
        },
        'start_dreshal' => {
            applies_to_systems => 1,
            applies_to_clients => 1,
            description => unshiftHereDoc(<<'            End-of-Here'),
                !!!descriptive text missing here!!!
            End-of-Here
            content_regex => undef,
            content_descr => undef,
            default => 'yes',
        },
        'start_ntp' => {
            applies_to_systems => 1,
            applies_to_clients => 1,
            description => unshiftHereDoc(<<'            End-of-Here'),
                !!!descriptive text missing here!!!
            End-of-Here
            content_regex => undef,
            content_descr => undef,
            default => 'initial',
        },
        'start_nfsv4' => {
            applies_to_systems => 1,
            applies_to_clients => 1,
            description => unshiftHereDoc(<<'            End-of-Here'),
                !!!descriptive text missing here!!!
            End-of-Here
            content_regex => undef,
            content_descr => undef,
            default => 'no',
        },
        'start_printer' => {
            applies_to_systems => 1,
            applies_to_clients => 1,
            description => unshiftHereDoc(<<'            End-of-Here'),
                !!!descriptive text missing here!!!
            End-of-Here
            content_regex => undef,
            content_descr => undef,
            default => 'no',
        },
        'start_samba' => {
            applies_to_systems => 1,
            applies_to_clients => 1,
            description => unshiftHereDoc(<<'            End-of-Here'),
                !!!descriptive text missing here!!!
            End-of-Here
            content_regex => undef,
            content_descr => undef,
            default => 'may',
        },
        'start_snmp' => {
            applies_to_systems => 1,
            applies_to_clients => 1,
            description => unshiftHereDoc(<<'            End-of-Here'),
                !!!descriptive text missing here!!!
            End-of-Here
            content_regex => undef,
            content_descr => undef,
            default => 'no',
        },
        'start_sshd' => {
            applies_to_systems => 1,
            applies_to_clients => 1,
            description => unshiftHereDoc(<<'            End-of-Here'),
                !!!descriptive text missing here!!!
            End-of-Here
            content_regex => undef,
            content_descr => undef,
            default => 'yes',
        },
        'start_syslogd' => {
            applies_to_systems => 1,
            applies_to_clients => 1,
            description => unshiftHereDoc(<<'            End-of-Here'),
                !!!descriptive text missing here!!!
            End-of-Here
            content_regex => undef,
            content_descr => undef,
            default => 'yes',
        },
        'start_x' => {
            applies_to_systems => 1,
            applies_to_clients => 1,
            description => unshiftHereDoc(<<'            End-of-Here'),
                !!!descriptive text missing here!!!
            End-of-Here
            content_regex => undef,
            content_descr => undef,
            default => 'yes',
        },
        'start_xdmcp' => {
            applies_to_systems => 1,
            applies_to_clients => 1,
            description => unshiftHereDoc(<<'            End-of-Here'),
                !!!descriptive text missing here!!!
            End-of-Here
            content_regex => undef,
            content_descr => undef,
            default => 'kdm',
        },
        'tex_enable' => {
            applies_to_systems => 1,
            applies_to_clients => 1,
            description => unshiftHereDoc(<<'            End-of-Here'),
                !!!descriptive text missing here!!!
            End-of-Here
            content_regex => undef,
            content_descr => undef,
            default => 'no',
        },
        'timezone' => {
            applies_to_systems => 1,
            applies_to_clients => 1,
            description => unshiftHereDoc(<<'            End-of-Here'),
                textual timezone (e.g. 'Europe/Berlin')
            End-of-Here
            content_regex => undef,
            content_descr => undef,
            default => 'Europe/Berlin',
        },
        'tvout' => {
            applies_to_systems => 1,
            applies_to_clients => 1,
            description => unshiftHereDoc(<<'            End-of-Here'),
                !!!descriptive text missing here!!!
            End-of-Here
            content_regex => undef,
            content_descr => undef,
            default => 'no',
        },
        'vmware' => {
            applies_to_systems => 1,
            applies_to_clients => 1,
            description => unshiftHereDoc(<<'            End-of-Here'),
                !!!descriptive text missing here!!!
            End-of-Here
            content_regex => undef,
            content_descr => undef,
            default => 'no',
        },
    );
    
    # and add all plugin attributes, too
    OpenSLX::OSPlugin::Roster->addAllStage3AttributesToHash(\%AttributeInfo);
}

=item C<getAttrInfo()>

Returns info about all attributes.

=over

=item Return Value

An hash-ref with info about all known attributes.

=back

=cut

sub getAttrInfo
{
    my $class  = shift;
    my $params = shift;

    $class->_init() if !%AttributeInfo;

    if (defined $params->{name}) {
        my $attrInfo = $AttributeInfo{$params->{name}};
        return if !defined $attrInfo;
        return { $params->{name} => $AttributeInfo{$params->{name}} };
    }
    elsif (defined $params->{scope}) {
        my %MatchingAttributeInfo;
        my $selectedScope = lc($params->{scope});
        foreach my $attr (keys %AttributeInfo) {
            my $attrScope = '';
            if ($attr =~ m{^(.+?)::}) {
                $attrScope = lc($1);
            }
            if ((!$attrScope && $selectedScope eq 'core') 
            || $attrScope eq $selectedScope) {
                $MatchingAttributeInfo{$attr} = $AttributeInfo{$attr};
            }
        }
        return \%MatchingAttributeInfo;
    }

    return \%AttributeInfo;
}

=item C<getStage3Attrs()>

Returns the stage3 attribute names (which apply to systems or clients).

=over

=item Return Value

An array of attribute names.

=back

=cut

sub getStage3Attrs
{
    my $class = shift;

    $class->_init() if !%AttributeInfo;

    return 
        grep { 
            $AttributeInfo{$_}->{applies_to_systems} 
            || $AttributeInfo{$_}->{applies_to_client} 
        }
        keys %AttributeInfo
}

=item C<getSystemAttrs()>

Returns the attribute names that apply to systems.

=over

=item Return Value

An array of attribute names.

=back

=cut

sub getSystemAttrs
{
    my $class = shift;

    $class->_init() if !%AttributeInfo;

    return 
        grep { $AttributeInfo{$_}->{"applies_to_systems"} }
        keys %AttributeInfo
}

=item C<getClientAttrs()>

Returns the attribute names that apply to clients.

=over

=item Return Value

An array of attribute names.

=back

=cut

sub getClientAttrs
{
    my $class = shift;

    $class->_init() if !%AttributeInfo;

    return 
        grep { $AttributeInfo{$_}->{"applies_to_clients"} }
        keys %AttributeInfo
}

1;