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

NAME

ETLp::Audit::Browser::Model::Schedule - Model Class for interacting with Runtime Process Audit Schedules

SYNOPSIS

    use ETLp::Audit::Browser::Model::Schedule;
    
    my $model = ETLp::Audit::Browser::Model::Schedule->new();
    my $processes = $model->get_schedules(
        page         => 1,
        config_name  => 'ApacheLogs',
        section_name => 'NZServers'
    );

METHODS

get_schedules

Returns a resultset on the ep_schedule table, based on the supplied criteria. It will grab 10 rows at a time, and is ordered by date_updated descending

Parameters

    * page. Optional, Integer. The page you wish to return. Defaults
      to 1.
    * config_name: Optional. The name of the configuration file
    * section_name. The name of the fection in the configuration file
    

Returns

    * A DBIx::Class resultset

get_schedule_details

Returns an array ref consisting of the main schedule and associated time componnets

Parameters

    * page. Optional, Integer. The page you wish to return. Defaults
      to 1.
    * config_name: Optional. The name of the configuration file
    * section_name. The name of the fection in the configuration file
    * status. Optional. (1 = active, 0 = inactive)
    

Returns

An array ref of schedule details:

    * schedule_id
    * minutes (cron format)
    * hours (cron format)
    * dom - day of month (cron format)
    * days - days of the week (cron format)
    * month - 1-12
    * description - description of the schedule
    * comment - any comment provided by the suer who edited the schedule
    * status (1 = active, 0 = inactive)
    * config_name - name of the configuration tghe schedule is processing
    * section - the section inside the configuration file

get_day_names

Get the day names for a schedule

Parameters

    * schedule_id. Optional. The schedule's key
    

Returns

    * An array ref of day names, in day-of-week order

get_schedule

Returns the schedule withe the supplied id

Parameters

    * schedule_id. Optional.  1
    

Returns

    * A DBIx::Class row object

get_months

Returns all of the ep_months records

Parameters

None

Returns

    * An Array of DBIx::Class row objects

get_dows

Gets all of the ep_days_of_month records

Parameters

None

Returns

    * An Array of DBIx::Class row objects

get_schedule_month

Gets the month that the job is scheduled to run for

Parameters

    * schedule_id. Integer
    

Returns

    * A EtlpScheduleMonth resultset row

get_schedule_dows

Gets all of the days of the week that the job is scheduled to run for

Parameters

    * schedule_id. Integer
    

Returns

    * A hashref, where the keys are the dow_ids that are scheduled

get_schedule_cron_dows

Gets all of the days of the week that the job is scheduled to run for. The days are indexed by the cron day ids (0-6 = Sun - Sat) not the scheduled day of week surrogate key

Parameters

    * schedule_id. Integer
    

Returns

    * A hashref, where the keys are the dow_ids that are scheduled

get_schedule_doms

Gets all of the days of the month that the job is scheduled to run for

Parameters

    * schedule_id. Integer
    

Returns

    * A EtlpScheduleDayOfMonth resultset

get_schedule_minutes

Gets all of the minutes that the job is scheduled to run for

Parameters

    * schedule_id. Integer
    

Returns

    * A EtlpScheduleMinute resultset

get_schedule_hours

Gets all of the hours that the job is scheduled to run for

Parameters

    * schedule_id. Integer
    

Returns

    * A EtlpScheduleHour resultset

expand_entries

Takes section of cron entries for a given element (e.g. minutes), and expands the into an array ref. If the section contains a range then these are expanded into indvidual entries.

Example

    '1-5,16-20,23'
    

becomes

    [1,2,3,4,5,16,17.18.19.20.23]

Parameters

    * entries. String
    

Returns

    * An array ref of scheduled times

expand_days_of_week

Similar to expand_entries, Takes section of cron entries for the day of the week. Cron expects entries to run from Sun (0) t0 Sat (6). Our input runs from (1-7) so we simply subtact 1 from each entry

Example

    '1-5,16-20,23'
    

becomes

    [1,2,3,4,5,16,17,18,19,20,23]

Parameters

    * entries. String
    

Returns

    * A an arrarey of day elements

validate_entries

Takes a list of entries (Comma-separated values), and makes sure that each element is valid. The rules are

    * each element must consist of one or two digits
    * each element must be greater than the previous one
    * no entry can be greater than the limit for the type of entry
      (e.g. minutes cannot be greater than 59, and hours can't
       be greater than 23)

Parameters

An array consisting of the following entries:

    * entries. Mandatory. A string of comma-delimited entries
    * upper_limit. Mandatory. The maximum value allowed
    * zero_allowed. Optional. Whether or not 0 is a valid element for
      this type of entry
    

Returns

    * 1 (valid) or 0 (invalid)

validate_hours

Validates the cron entries for hours

Parameters

    * entries. Mandatory. A string of comma-delimited entries
    

Returns

    * 1 (valid) or 0 (invalid)

validate_minutes

Validates the cron entries for minutes

Parameters

    * entries. Mandatory. A string of comma-delimited entries
    

Returns

    * 1 (valid) or 0 (invalid)

validate_days_of_week

Validates the cron entries for days of the week

Parameters

    * entries. Mandatory. A string of comma-delimited entries
    

Returns

    * 1 (valid) or 0 (invalid)

validate_days_of_month

Validates the cron entries for days of the month

Parameters

    * entries. Mandatory. A string of comma-delimited entries
    

Returns

    * 1 (valid) or 0 (invalid)

validate_months

Validates the cron entries for the month entries

Parameters

    * entries. Mandatory. A string of comma-delimited entries
    

Returns

    * 1 (valid) or 0 (invalid)

contract_entries

Takes an array ref of cron entries and turns them back into a cron string. Consectutive values are turned into ranges, i.e.

    [1,4,5,6,10]
    

Becomes

    '1,4-6,10'

Parameters

    * entries. Mandatory. A string of comma-delimited entries
    

Returns

    * 1 (valid) or 0 (invalid)

get_contracted_doms

Returns the days of month cron string for a given schedule.

Parameters

    * schedule_id. Integer. Optional. The primary key of the schedule
    

Returns

    * cron entry string

get_contracted_cron_dows

Returns the days of the week cron string for a given schedule.

Parameters

    * schedule_id. Integer. Optional. The primary key of the schedule
    

Returns

    * cron entry string

get_contracted_hours

Returns thehours of execution cron string for a given schedule.

Parameters

    * schedule_id. Integer. Optional. The primary key of the schedule
    

Returns

    * cron entry string

get_contracted_minutes

Returns the minutes of execution cron string for a given schedule.

Parameters

    * schedule_id. Integer. Optional. The primary key of the schedule
    

Returns

    * cron entry string

save

Saves the schedule to the database

Parameters

    * params. A hashref of containing the schedule data
    

Returns

    * Void

get_scheduler_status

Sets the scheduler status

Parameters

None

Returns

    * An ep_app_config DBIx::Class row

generate_crontab

Generates a crontab from the database schedues

Parameters

    * pipeline script. String. Full path to the etl-pipeline script
    

Returns

    * crontab as a string

get_config_files

Get a list of configuration files in the application configuration directory

Parameters

    * config_dir. String. Mandatory. The directory that stores the config files
    

Returns

    * An array ref of configuration files

set_scheduler_status

Sets the scheduler status

Parameters

A string

    * The scheduler status
    

Returns

    * Void

get_sections

Get all of the sections in a configurations file

Parameters

    * configuration file. String. The *full* path to the configuration file
    

Returns

    * An array ref of sections

get_job

Given a schedule (an EPSection record), returns the job (configuration file name, section name)

Parameters

    * configuration file. String. The *full* path to the configuration file
    

Returns

    * An array; config name, section name

get_section_options

Given a config file, return the list of sections - each element will apear in HTML option tags

Parameters

    * configuration file. String. The configuration file name
    

Returns

    * An HTML string

config_exists

Determines whether a configuration file exists

Parameters

    * configuration file. String. The pull path to the configuration
      file name, excluding the .conf extension
    

Returns

    * 1 = true, 0 = false

delete

Deletes a schedule, and dependent records

Parameters

    * schedule_id. Integer. The surrogate key for the schedule
    

Returns

    * Void

get_dependencies

Returns the last of dependent jobs as specified by the "next" parameter in the application config.

Parameters

A hashref:

    * config_dir. String. The directory where the configuration files
      are found
    * config_file. String. The root config file
    * section. The section on the config file that we wish to derive
      the dependencies from
    

Returns

    * dependencies as an array