Project

General

Profile

Actions

Bug #5598

closed

logger_rudder fails on windows

Added by Nicolas CHARLES over 9 years ago. Updated almost 2 years ago.

Status:
Released
Priority:
1
Category:
Generic methods
Target version:
Severity:
UX impact:
User visibility:
Effort required:
Priority:
0
Name check:
Fix check:
Regression:

Description

And it fails quite bad...

we can canonify with cfengine itself

 vars:

      "log_canonification_tool" string => '/bin/cat "${expected_reports_temp}" | while read line; do if echo "${line}" | grep -E "^\s*#" > /dev/null; then echo "${line}"; continue; fi; canonified=$(echo "${line}" | cut -d";" -f3 | sed "s/[^a-zA-Z0-9_]/_/g"); echo ${line} | sed -r "s/([^;]+);;[^;]+;;(.*)$/\1;;${canonified};;\2/"; done > ${expected_reports_file}';

      "expected_reports_source" string => "${sys.workdir}/inputs/rudder_expected_reports.csv";
      "expected_reports_temp"   string => "${expected_reports_source}.tmp";
      "expected_reports_file"   string => "${expected_reports_source}.res";

    windows.logger_rudder_temp_resfile_repaired::
      # 2/ On windows, we cannot rely on sed and all, so we canonify with CFEngine
      "dim" int => readstringarrayidx("reports", "${expected_reports_temp}", "\s*#[^\n]*", ";;", 9999, 999999);
      "keys" slist => getindices("reports");

      # canonify the first entry
      "reports[${keys}][canon]" string => canonify("${reports[${keys}][1]}");

    (logger_rudder_final_resfile_repaired|logger_rudder_temp_resfile_kept)::

      # 3/ Once the final expected reports file has been expanded, read in our array
      "number_lines" 
        int        => getfields("^[^;]*;;${class_prefix};;.*", "${expected_reports_file}", ";;", "report_data"),
        classes    => if_ok("report_data_read");
 files:
    # 3/ On windows, we create the result file
    logger_rudder_temp_resfile_repaired.windows::
      # first, empty the file
      "${expected_reports_file}" 
        create => "true",
        edit_line => delete_lines_matching(".*");

      # then fill it (we can't use edit_default empty, as we are adding line by line (i don't knwo how to add all at once)
      "${expected_reports_file}" 
        create => "true",
        edit_line => insert_lines("${reports[${keys}][0]};;${reports[${keys}][canon]};;${reports[${keys}][2]};;${reports[${keys}][3]};;${reports[${keys}][4]}"),
        classes       => classes_generic("logger_rudder_final_resfile");

    any::
      # 1/ First, check if the temporary file needs to be updated (The Rudder
      # provided expected reports file has changed). If so, expand the variables
      # in it into a temporary file.
      "${expected_reports_temp}" 
        create        => "true",
        edit_template => "${expected_reports_source}",
        classes       => classes_generic("logger_rudder_temp_resfile");
  commands:

    logger_rudder_temp_resfile_repaired.!windows::

      # 2/ If the temporary file has been updated, trigger this command to canonify all the values in
      # it.
      "${log_canonification_tool}" 
        contain       => in_shell,
        classes       => classes_generic("logger_rudder_final_resfile");


Related issues 2 (0 open2 closed)

Related to Rudder - Bug #5770: logger_rudder don't log anymoreReleasedMatthieu CERDAActions
Has duplicate Rudder - Bug #5555: logger_rudder doesn't properly canonify entriesRejectedJonathan CLARKEActions
Actions

Also available in: Atom PDF