NAME

Thruk::Utils - Utilities Collection for Thruk

DESCRIPTION

Utilities Collection for Thruk

METHODS

parse_date

  my $timestamp = parse_date($c, $string)

Format: 2010-03-02 00:00:00 parse given date and return timestamp

format_date

  my $date_string = format_date($string, $format)

return date from timestamp in given format

format_number

  my $string = format_number($number)

return number with thousands seperator

format_cronentry

  my $cron_string = format_cronentry($cron_entry)

return cron entry as string

is_valid_regular_expression

  my $result = is_valid_regular_expression($expression)

return true if this is a valid regular expression

calculate_overall_processinfo

  my $process_info = calculate_overall_processinfo($process_info)

computes a combined status for process infos

get_start_end_for_timeperiod

  my($start, $end) = get_start_end_for_timeperiod($c,
                                                  $timeperiod,
                                                  $smon,
                                                  $sday,
                                                  $syear,
                                                  $shour,
                                                  $smin,
                                                  $ssec,
                                                  $emon,
                                                  $eday,
                                                  $eyear,
                                                  $ehour,
                                                  $emin,
                                                  $esec,
                                                  $t1,
                                                  $t2);

returns a start and end timestamp for a report date definition

get_start_end_for_timeperiod_from_param

  my($start, $end) = get_start_end_for_timeperiod_from_param($c)

returns a start and end timestamp for a report date definition will use cgi params for input

get_start_end_from_date_select_params

  my($start, $end) = get_start_end_from_date_select_params($c)

returns a start and end timestamp from date select, like ex.: on the showlog page

set_message

  set_message($c, $style, $text, [ $details ], [$code], [$escape])
  set_message($c, {
      'style'   => 'class', # usually fail_message or success_message
      'msg'     => 'text',
      'details' => 'more details',
      'code'    => 'http response code',
      'escape'  => 'flag wether html should be escaped, default is true',
    })

set a message in an cookie for later display

append_message

  append_message($text)

append text to current message

ssi_include

  ssi_include($c)

puts the ssi templates into the stash

read_ssi

  read_ssi($c, $page, $type)

finds all ssi files for a page of the specified type and returns the ssi content. Executable ssi files are executed and the output is appended to the ssi content. Otherwise the content of the ssi file is append to the ssi content.

read_resource_file

  read_resource_file($files, [ $macros ], [$with_comments])

returns a hash with all USER1-32 macros. macros can be a predefined hash.

version_compare

  version_compare($version1, $version2)

compare too version strings and return 1 if v1 >= v2

combine_filter

  combine_filter($operator, $filter)

combine filter by operator

set_paging_steps

  set_paging_steps($c, $data)

sets the pagins stepts, needs string like:

  *100, 500, 1000, all

get_exposed_custom_vars

  get_exposed_custom_vars($config, [$skip_wildcards])

return combined list of show_custom_vars and expose_custom_vars

get_custom_vars

  get_custom_vars($c, $obj, [$prefix], [$add_host])

return custom variables in a hash

set_custom_vars

  set_custom_vars($c, { options... })

set stash value for all allowed custom variables

check_custom_var_list

  check_custom_var_list($varname, $allowed)

returns true if custom variable name is in the list of allowed variable names

set_data_row_cust_vars

  set_data_row_cust_vars($obj, $allowed, $allowed_list)

set custom variables for host/service obj

get_user_data

  get_user_data($c, [$username])

returns user profile data

store_user_data

  store_user_data($c, $data, [$username])

store user profile data

get_global_user_data

  get_global_user_data($c)

returns global user data

store_global_user_data

  store_global_user_data($c, $data)

store global user data for section

logs2xls

  logs2xls($c)

save excel file by background job

savexls

  savexls($c)

save excel file by background job

proxifiy_url

  prepend proxy url to action url which might be proxied via thruk http

returns url with optional proxy prepended

proxifiy_me

  returns proxy url if possible

returns url with optional proxy prepended

get_remote_thruk_url

  get_remote_thruk_url($peer_key)

return url for remote thruk installation

get_pnp_url

  get_pnp_url($c, $object)

return pnp url for object (host/service)

get_histou_url

  get_histou_url($c, $object)

return histou url for object (host/service)

get_graph_url

  get_graph_url($c, $object)

return graph url for object (host/service)

get_perf_image

  get_perf_image($c, {
    host           => $hst,
    service        => $svc,
    start          => $start,
    end            => $end,
    width          => $width,
    height         => $height,
    source         => $source,
    resize_grafana => $resize_grafana_images,
    format         => $format,
    show_title     => $showtitle,
    show_legend    => $showlegend,
    follow         => 0/1,  # flag wether we simply redirect proxy requests or fetch them
    theme          => light/dark,
    font_color     => #12345,
    bg_color       => #12345,
  })

return raw pnp/grafana image if possible. An empty string will be returned if no graph can be exported.

encode_arg_refs

  encode_arg_refs($args)

returns array with replaced args, ex. replace $c with placeholder

unencode_arg_refs

  unencode_arg_refs($c, $args)

returns array with replaced args, ex. replace placeholder with $c

absolute_url

  returns a absolute url

  expects
  $VAR1 = origin url
  $VAR2 = target link

get_fake_session

  get_fake_session($c, [$sessionid], [$roles], [$address], $extra)

create and return fake session id along with session data for current user

get_action_url

  get_action_url($c, $escape_fun, $remove_render, $action_url, $obj)

return action_url modified for object (host/service) if we use graphite escape_fun is use to escape special char (html or quotes) remove_render remove /render in action url

extract_list

  extract_list($var, $separator)

return list by splitting $var by $sep ($var can be an array or string)

array_chunk

  array_chunk($list, $number)

return list of <number> evenly chunked parts

array_chunk_fixed_size

  array_chunk_fixed_size($list, $size)

return list of chunked parts each with $size

translate_host_status

  translate_host_status($status)

return name for status

expand_duration

  expand_duration($value)

returns expanded seconds from given abbreviation

possible conversions are 1w => 604800 1d => 86400 1h => 3600 1m => 60

update_cron_file

  update_cron_file($c, $section, $entries)

write crontab section

update_cron_file_maintenance

    update_cron_file_maintenance($c)

update maintenance cronjobs

get_cron_time_entry

  get_cron_time_entry($cronentry)

return time part of crontab entry

set_user

  set_user($c, %options)

set and authenticate a user

options are: { username => username of the resulting user auth_src => hint about where this user came from superuser => superuser can change to other user names, roles will not exceed initial role set internal => internal technical user can change into any user and has admin roles force => force setting new user, even if already authenticated roles => maximum set of roles keep_session => do not update current session cookie }

change_user

  change_user($c, $username)

changes username to given user, cannot exceed current roles and permissions

switch_realuser

  switch_realuser($uid, $groups)

switch real user and groups

check_pid_file

  check_pid_file($c)

check and write pid file if none exists

restart_later

  restart_later($c, $redirect_url)

restart fcgi process and redirects to given page

wait_after_reload

  wait_after_reload($c, [$backend], [$timestamp])

wait up to 30 seconds till the core responds

get_cron_entries_from_param

  get_cron_entries_from_param($cronentry)

return array of cron entries from param

read_data_file

  read_data_file($filename, [$c])

return data for datafile

write_data_file

  write_data_file($filename, $data, [$changed_only])

write data to datafile

backup_data_file

  backup_data_file($filename, $targetfile, $mode, $max_backups, [$save_interval], [$force])

write data to datafile

which

    which($prog)

returns path to program or undef

reduce_number

  reduce_number($number, $unit, [$divisor])

return reduced number, ex 1024B -> 1KiB

get_template_variable

  get_template_variable($c, $template, $variable)

return variable defined from template

precompile_templates

  precompile_templates($c)

precompile and load templates into memory

beautify_diff

  beautify_diff($text)

make diff output beauty

check_memory_usage

  check_memory_usage($c)

check if memory limit is above the threshold

log_error_with_details

  log_error_with_details($c, $message, $errorDetails)

log error along with details about url and logged in user

stop_all

    stop_all()

stop all thruk pids

base_folder

    base_folder($c)

return base etc folder

is_post

    is_post($c)

make sure this is a post request

check_csrf

    check_csrf($c)

ensure valid cross site request forgery token

get_plugin_name

    get_plugin_name(__FILE__, __PACKAGE__)

returns the name of the plugin

backends_list_to_hash

    backends_list_to_hash($c, $list)

returns array of backend ids converted as list of hashes

backends_hash_to_list

    backends_hash_to_list($c, $hashlist)

returns array of backends (inverts backends_list_to_hash function)

expand_relative_timefilter

    expand_relative_timefilter($string)

returns expanded timefilter value

convert_wildcards_to_regex

    convert_wildcards_to_regex($string)

returns regular expression with wildcards replaced

find_modules

    find_modules($pattern)

returns list of found modules

get_cli_modules

    get_cli_modules()

returns list of cli modules

clean_regex

    clean_regex()

returns cleaned regular expression, ex.: removes trailing .*

get_timezone_data

    get_timezone_data()

returns list of available timezones

command_disabled

    command_disabled($c, $nr)

returns true if command is disabled for current user

code2name

    code2name($coderef)

returns name for given code reference

merge_service_dependencies

    merge_service_dependencies($service, [$list, $list, ...])

merge parents, depends_exec and depends_notifiy lists into a single list

merge_host_dependencies

    merge_host_dependencies([$list, $list, ...])

merge depends_exec and depends_notifiy into a single list

dump_params

    dump_params($c->req->parameters, [$max_length], [$flat])

returns stringified parameters

dclone

    dclone($obj)

deep clones any object

text_table

    text_table( keys => [keys], data => <list of hashes>, [noheader => 1] )

    a key can be:

        - "string"
        - ["column name", "data key"]
        - { "name" => "column header", "key" => "data key", type => $type, format => $formatstring }

returns ascii text table or undef on errors or no data/columns

get_expanded_start_date

  get_expanded_start_date($c, $blocksize)

returns start of day for expanded duration

extract_time_filter

  extract_time_filter($filter)

returns start and end time filter from given query

find_files

  find_files(...)

alias for Thruk::Utils::IO::find_files

scale_out

    scale_out( scale => worker_num, jobs => list of jobs, worker => sub ref, collect => sub ref )

scale out worker, run jobs and returns result from collect sub.

page_data

  page_data($c, $data, [$result_size], [$total_size], [$already_paged])

adds paged data set to the template stash. Data will be available as 'data' The pager itself as 'pager'

render_db_profile

  render_db_profile($c, $profiles)

return rendered db query profiles

has_node_module

  has_node_module($c, $module_name)

return true if npm module is installed