The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

HH::Unispool::Config::Entry::System - Class to group remote systems and devices

SYNOPSIS

 use strict;
 
 use HH::Unispool::Config;
 use HH::Unispool::Config::OS;
 use HH::Unispool::Config::Entry::Filter;
 use HH::Unispool::Config::Entry::System;
 use HH::Unispool::Config::Entry::Device::5;
 use HH::Unispool::Config::Entry::Device::6;
 use HH::Unispool::Config::Entry::RemoteSystem::8;
 
 # Read and write config
 my $conf1 = HH::Unispool::Config->new_from_file('t/config.sample');
 $conf1->write('t/config.sample.1.out');
 
 # Read again, modify a little and diff config
 my $conf2 = HH::Unispool::Config->new_from_file('t/config.sample');
 $conf2->delete_system('foobar.bar.org');
 my $diff = $conf1->diff($conf2);
 if ($diff) {
     print STDERR "\nTHIS OUTPUT IS EXPECTED\n";
     print STDERR "DIFFERENCES\n";
     print STDERR  $diff;
     print STDERR "\nTHIS OUTPUT WAS EXPECTED\n";
 }
 
 
 # Create a config from scratch
 my $conf3 = HH::Unispool::Config->new();
 
 # Create a filter and add it to the configuration
 my $flt = HH::Unispool::Config::Entry::Filter->new( {
     name => 'cat',
     file => '/usr/bin/cat',
 } );
 $conf3->add_filter($flt);
 
 # Create the _Network_ system and add it to the configuration
 my $sysn = HH::Unispool::Config::Entry::System->new( {
     name => '_Network_',
 } );
 $conf3->add_system($sysn);
 
 # Add a type 8 remote system to _Network_
 my $rsys = HH::Unispool::Config::Entry::RemoteSystem::8->new( {
     name => 'foo',
     os => HH::Unispool::Config::OS->new( { os => 'Solaris' } ),
     remote_node_name => 'foo.bar.org',
 } );
 $sysn->add_remote_system($rsys);
 
 # Add a type 5 device to _Network_
 my $dev = HH::Unispool::Config::Entry::Device::5->new( {
     name => 'lp',
     filter_name => 'cat',
     remote_device_name => 'lp',
     remote_system_name => 'foo',
     description => 'lp',
 } );
 $sysn->add_device($dev);
 
 # Create the foo.bar.org system and add it to the configuration
 my $sysf = HH::Unispool::Config::Entry::System->new( {
     name => 'foo.bar.org',
     local_system_name => 'foo',
     network_name => 'foo.bar.org',
     os => HH::Unispool::Config::OS->new( { os => 'Solaris' } ),
     type => 'cs',
 } );
 $conf3->add_system($sysf);
 
 # Add a type 6 device to foo.bar.org
 $dev = HH::Unispool::Config::Entry::Device::6->new( {
     name => 'lp1',
     filter_name => 'cat',
     remote_node_name => 'lp1.foo.bar.org',
     description => 'lp1',
 } );
 $sysf->add_device($dev);
 
 # Add another type 6 device to foo.bar.org
 $dev = HH::Unispool::Config::Entry::Device::6->new( {
     name => 'lp2',
     filter_name => 'cat',
     remote_node_name => 'lp2.foo.bar.org',
     description => 'lp2',
 } );
 $sysf->add_device($dev);
 
 # Add another type 3 device to foo.bar.org
 $dev = HH::Unispool::Config::Entry::Device::3->new( {
     name => 'lp',
     filter_name => 'cat',
     member_device_name => [ qw( lp1 lp2 ) ],
     description => 'lp',
 } );
 $sysf->add_device($dev);
 
 # Write the configuration
 $conf3->write('t/config.sample.3.out');

ABSTRACT

Class to group remote systems and devices

DESCRIPTION

HH::Unispool::Config::Entry::System groups remote systems and devices from UNISPOOL configuration. In different words, it groups from a configuration file anything between

 * Miscellaneous configuration items for [...]

line and the following

 * Miscellaneous configuration items for [...]

line or the following

 * End of configuration dumped on host ...

line.

CONSTRUCTOR

new(OPT_HASH_REF)

Creates a new HH::Unispool::Config::Entry::System object. OPT_HASH_REF is a hash reference used to pass initialization options. OPT_HASH_REF is mandatory. On error an exception Error::Simple is thrown.

Options for OPT_HASH_REF may include:

central_console_node

Passed to set_central_console_node(). Defaults to 'SYSLOG'.

clean_on_weekdays_only

Passed to set_clean_on_weekdays_only(). Defaults to 0.

date_format

Passed to set_date_format(). Defaults to HH::Unispool::Config::DateFormat->new( { date_format = 'DD/MM/YY' } )>.

default_printer

Passed to set_default_printer(). Defaults to 'lp'.

device

Passed to set_device(). Must be an ARRAY reference.

diff_number

Passed to set_diff_number(). Defaults to 0.

local_system_name

Passed to set_local_system_name(). Mandatory option but not for the _Network_ system, in which case it is set to [Network].

maximum_delay_time

Passed to set_maximum_delay_time(). Defaults to 15.

maximum_print_file_space

Passed to set_maximum_print_file_space(). Defaults to 0.

maximum_save_file_space

Passed to set_maximum_save_file_space(). Defaults to 0.

network_name

Passed to set_network_name(). Mandatory option but not for the _Network_ system, in which case it is set to some bogus value.

os

Passed to set_os(). Mandatory option but not for the _Network_ system, in which case it is set to some bogus value.

remote_system

Passed to set_remote_system(). Must be an ARRAY reference.

save_groups

Passed to set_save_groups(). Defaults to ''.

save_time_in_days

Passed to set_save_time_in_days(). Defaults to 3.

start_time_clean_job_hour

Passed to set_start_time_clean_job_hour(). Defaults to 0.

start_time_clean_job_minute

Passed to set_start_time_clean_job_minute(). Defaults to 0.

type

Passed to set_type(). Defaults to 'cc'.

Options for OPT_HASH_REF inherited through package HH::Unispool::Config::Entry may include:

name

Passed to set_name(). Mandatory option.

new_from_tokenizer(TOKENIZER)

This method is an implementation from package HH::Unispool::Config::Entry. Constructs a new HH::Unispool::Config::Entry object using tokens. TOKENIZER is an HH::Unispool::Config::File::Tokenizer reference. On error an exception Error::Simple is thrown.

METHODS

add_device( [ VALUE ... ] )

Add additional values on the list of devices for the system. Each VALUE is an object out of which the id is obtained through method get_name(). The obtained key is used to store the value and may be used for deletion and to fetch the value. 0 or more values may be supplied. Multiple occurrences of the same key yield in the last occurring key to be inserted and the rest to be ignored. Each key of the specified values is allowed to occur only once. On error an exception Error::Simple is thrown.

The values in ARRAY must be a (sub)class of:
HH::Unispool::Config::Entry::Device
add_remote_system( [ VALUE ... ] )

Add additional values on the list of remote systems for the system. Each VALUE is an object out of which the id is obtained through method get_name(). The obtained key is used to store the value and may be used for deletion and to fetch the value. 0 or more values may be supplied. Multiple occurrences of the same key yield in the last occurring key to be inserted and the rest to be ignored. Each key of the specified values is allowed to occur only once. On error an exception Error::Simple is thrown.

The values in ARRAY must be a (sub)class of:
HH::Unispool::Config::Entry::RemoteSystem
delete_device(ARRAY)

Delete elements from the list of devices for the system. Returns the number of deleted elements. On error an exception Error::Simple is thrown.

delete_remote_system(ARRAY)

Delete elements from the list of remote systems for the system. Returns the number of deleted elements. On error an exception Error::Simple is thrown.

diff(TO [, DIFF_NUMBER])

This method is overloaded from package HH::Unispool::Config::Entry. Finds differences between two objects. In diff terms, the object is the from object and the specified TO parameter the to object. TO is a reference to an identical object class. Returns an empty string if no difference found and a difference descritpion string otherwise. On error an exception Error::Simple is thrown. Paremeter DIFF_NUMBER if specified, overrules the value of get_diff_number.

exists_device(ARRAY)

Returns the count of items in ARRAY that are in the list of devices for the system.

exists_remote_system(ARRAY)

Returns the count of items in ARRAY that are in the list of remote systems for the system.

get_central_console_node()

Returns the name of the system on which the console messages must be displayed.

get_date_format()

Returns the format in which UNISPOOL will show and accept date information.

get_default_printer()

Returns the printer to be used when no other one is specified.

get_local_system_name()

Returns the name of the system UNISPOOL is running on.

get_maximum_delay_time()

Returns the number of seconds the UNISPOOL main process is allowed to sleep between consecutive scans for printfiles.

get_maximum_print_file_space()

Returns the maximum number of bytes available to store UNISPOOL printfiles.

get_maximum_save_file_space()

Returns the maximum number of bytes available to store saved printfiles.

get_name()

This method is inherited from package HH::Unispool::Config::Entry. Returns the entry name.

get_network_name()

Returns the network name of the system.

get_os()

Returns the operating system running on this system.

get_save_groups()

Returns the number of savegroups (not found in UNISPOOL config -screen).

get_save_time_in_days()

Returns the number of days saved printfiles will be kept on disk before they are automatically removed.

get_start_time_clean_job_hour()

Returns the hour part of the time that the clean job must be started on a 24-hour clock.

get_start_time_clean_job_minute()

Returns the minute part of the time that the clean job must be started on a 24-hour clock.

get_type()

Returns the system type.

is_clean_on_weekdays_only()

Returns whether saved printfiles are deleted on weekdays only or not.

is_diff_number()

Returns whether diff() should consider the number attribtutes or not.

keys_device()

Returns an ARRAY containing the keys of the list of devices for the system.

keys_remote_system()

Returns an ARRAY containing the keys of the list of remote systems for the system.

set_central_console_node(VALUE)

Set the name of the system on which the console messages must be displayed. VALUE is the value. On error an exception Error::Simple is thrown.

VALUE must match regular expression:
^.+$
set_clean_on_weekdays_only(VALUE)

State that saved printfiles are deleted on weekdays only. VALUE is the value. Default value at initialization is 0. On error an exception Error::Simple is thrown.

set_date_format(VALUE)

Set the format in which UNISPOOL will show and accept date information. VALUE is the value. Default value at initialization is HH::Unispool::Config::DateFormat->new( { date_format = 'DD/MM/YY' } )>. On error an exception Error::Simple is thrown.

VALUE must be a (sub)class of:
HH::Unispool::Config::DateFormat
set_default_printer(VALUE)

Set the printer to be used when no other one is specified. VALUE is the value. Default value at initialization is lp. On error an exception Error::Simple is thrown.

VALUE must match regular expression:
^.+$
set_device( [ VALUE ... ] )

Set the list of devices for the system absolutely using values. Each VALUE is an object out of which the id is obtained through method get_name(). The obtained key is used to store the value and may be used for deletion and to fetch the value. 0 or more values may be supplied. Multiple occurrences of the same key yield in the last occurring key to be inserted and the rest to be ignored. Each key of the specified values is allowed to occur only once. On error an exception Error::Simple is thrown.

The values in ARRAY must be a (sub)class of:
HH::Unispool::Config::Entry::Device
set_diff_number(VALUE)

State that diff() should consider the number attribtutes. VALUE is the value. Default value at initialization is 0. On error an exception Error::Simple is thrown.

set_local_system_name(VALUE)

Set the name of the system UNISPOOL is running on. VALUE is the value. VALUE may not be undef. On error an exception Error::Simple is thrown.

VALUE must match regular expression:
^.+$
set_maximum_delay_time(VALUE)

Set the number of seconds the UNISPOOL main process is allowed to sleep between consecutive scans for printfiles. VALUE is the value. Default value at initialization is 15. On error an exception Error::Simple is thrown.

VALUE must match regular expression:
^\d+$
set_maximum_print_file_space(VALUE)

Set the maximum number of bytes available to store UNISPOOL printfiles. VALUE is the value. Default value at initialization is 0. On error an exception Error::Simple is thrown.

VALUE must match regular expression:
^\d+$
set_maximum_save_file_space(VALUE)

Set the maximum number of bytes available to store saved printfiles. VALUE is the value. Default value at initialization is 0. On error an exception Error::Simple is thrown.

VALUE must match regular expression:
^\d+$
set_name(VALUE)

This method is inherited from package HH::Unispool::Config::Entry. Set the entry name. VALUE is the value. VALUE may not be undef. On error an exception Error::Simple is thrown.

VALUE must match regular expression:
^.+$
set_network_name(VALUE)

Set the network name of the system. VALUE is the value. VALUE may not be undef. On error an exception Error::Simple is thrown.

VALUE must match regular expression:
^.+$
set_os(VALUE)

Set the operating system running on this system. VALUE is the value. VALUE may not be undef. On error an exception Error::Simple is thrown.

VALUE must be a (sub)class of:
HH::Unispool::Config::OS
set_remote_system( [ VALUE ... ] )

Set the list of remote systems for the system absolutely using values. Each VALUE is an object out of which the id is obtained through method get_name(). The obtained key is used to store the value and may be used for deletion and to fetch the value. 0 or more values may be supplied. Multiple occurrences of the same key yield in the last occurring key to be inserted and the rest to be ignored. Each key of the specified values is allowed to occur only once. On error an exception Error::Simple is thrown.

The values in ARRAY must be a (sub)class of:
HH::Unispool::Config::Entry::RemoteSystem
set_save_groups(VALUE)

Set the number of savegroups (not found in UNISPOOL config -screen). VALUE is the value. Default value at initialization is ''. On error an exception Error::Simple is thrown.

VALUE must match regular expression:
^\d*$
set_save_time_in_days(VALUE)

Set the number of days saved printfiles will be kept on disk before they are automatically removed. VALUE is the value. Default value at initialization is 3. On error an exception Error::Simple is thrown.

VALUE must match regular expression:
^\d+$
set_start_time_clean_job_hour(VALUE)

Set the hour part of the time that the clean job must be started on a 24-hour clock. VALUE is the value. Default value at initialization is 0. On error an exception Error::Simple is thrown.

VALUE must match regular expression:
^\d+$
set_start_time_clean_job_minute(VALUE)

Set the minute part of the time that the clean job must be started on a 24-hour clock. VALUE is the value. Default value at initialization is 0. On error an exception Error::Simple is thrown.

VALUE must match regular expression:
^\d+$
set_type(VALUE)

Set the system type. VALUE is the value. Default value at initialization is cc. On error an exception Error::Simple is thrown.

VALUE must be a one of:
bcs
cc
cs
values_device( [ KEY_ARRAY ] )

Returns an ARRAY containing the values of the list of devices for the system. If KEY_ARRAY contains one or more KEYs the values related to the KEYs are returned. If no KEYs specified all values are returned.

values_remote_system( [ KEY_ARRAY ] )

Returns an ARRAY containing the values of the list of remote systems for the system. If KEY_ARRAY contains one or more KEYs the values related to the KEYs are returned. If no KEYs specified all values are returned.

write(FILE_HANDLE)

This method is an implementation from package HH::Unispool::Config::Entry. Writes the entry to the specified file handle. FILE_HANDLE is an IO::Handle reference. On error an exception Error::Simple is thrown.

SEE ALSO

HH::Unispool::Config, HH::Unispool::Config::DateFormat, HH::Unispool::Config::Entry, HH::Unispool::Config::Entry::Device, HH::Unispool::Config::Entry::Device::0, HH::Unispool::Config::Entry::Device::1, HH::Unispool::Config::Entry::Device::2, HH::Unispool::Config::Entry::Device::3, HH::Unispool::Config::Entry::Device::4, HH::Unispool::Config::Entry::Device::5, HH::Unispool::Config::Entry::Device::6, HH::Unispool::Config::Entry::Device::7, HH::Unispool::Config::Entry::Filter, HH::Unispool::Config::Entry::Numbered, HH::Unispool::Config::Entry::RemoteSystem, HH::Unispool::Config::Entry::RemoteSystem::3, HH::Unispool::Config::Entry::RemoteSystem::6, HH::Unispool::Config::Entry::RemoteSystem::7, HH::Unispool::Config::Entry::RemoteSystem::8, HH::Unispool::Config::ExecPri, HH::Unispool::Config::File::Token, HH::Unispool::Config::File::Token::Comment, HH::Unispool::Config::File::Token::Comment::Cs, HH::Unispool::Config::File::Token::Comment::Date, HH::Unispool::Config::File::Token::Comment::Device, HH::Unispool::Config::File::Token::Comment::Filter, HH::Unispool::Config::File::Token::Comment::Group, HH::Unispool::Config::File::Token::Comment::Head, HH::Unispool::Config::File::Token::Comment::Misc, HH::Unispool::Config::File::Token::Comment::NetDesc, HH::Unispool::Config::File::Token::Comment::RSys, HH::Unispool::Config::File::Token::Comment::Scope, HH::Unispool::Config::File::Token::Comment::Tail, HH::Unispool::Config::File::Token::Factory, HH::Unispool::Config::File::Token::Numbered, HH::Unispool::Config::File::Token::Numbered::Device, HH::Unispool::Config::File::Token::Numbered::Device::0, HH::Unispool::Config::File::Token::Numbered::Device::1, HH::Unispool::Config::File::Token::Numbered::Device::2, HH::Unispool::Config::File::Token::Numbered::Device::3, HH::Unispool::Config::File::Token::Numbered::Device::4, HH::Unispool::Config::File::Token::Numbered::Device::5, HH::Unispool::Config::File::Token::Numbered::Device::6, HH::Unispool::Config::File::Token::Numbered::Device::7, HH::Unispool::Config::File::Token::Numbered::Device::Group, HH::Unispool::Config::File::Token::Numbered::Device::Info, HH::Unispool::Config::File::Token::Numbered::Device::P, HH::Unispool::Config::File::Token::Numbered::Network, HH::Unispool::Config::File::Token::Numbered::System, HH::Unispool::Config::File::Token::Numbered::System::3, HH::Unispool::Config::File::Token::Numbered::System::6, HH::Unispool::Config::File::Token::Numbered::System::7, HH::Unispool::Config::File::Token::Numbered::System::8, HH::Unispool::Config::File::Token::Numbered::System::Info, HH::Unispool::Config::File::Token::Numbered::X, HH::Unispool::Config::File::Token::Unnumbered, HH::Unispool::Config::File::Token::Unnumbered::Bcs, HH::Unispool::Config::File::Token::Unnumbered::CSN, HH::Unispool::Config::File::Token::Unnumbered::Cs, HH::Unispool::Config::File::Token::Unnumbered::CsBcs, HH::Unispool::Config::File::Token::Unnumbered::Filter, HH::Unispool::Config::File::Token::Unnumbered::Host, HH::Unispool::Config::File::Token::Unnumbered::Misc, HH::Unispool::Config::File::Tokenizer, HH::Unispool::Config::FilterType, HH::Unispool::Config::OS, HH::Unispool::Config::Scope

BUGS

None known (yet.)

HISTORY

First development: February 2003 Last update: September 2003

AUTHOR

Vincenzo Zocca

COPYRIGHT

Copyright 2003 by Vincenzo Zocca

LICENSE

This file is part of the HH::Unispool::Config module hierarchy for Perl by Vincenzo Zocca.

The HH::Unispool::Config module hierarchy is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

The HH::Unispool::Config module hierarchy is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with the HH::Unispool::Config module hierarchy; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA