Log collector module

New:
  - [Done] multiple namespace selector
  - [Done] keyword-based pod selector
  - [Done] per-pod logs syntax detection and parsing
  - [Differed] in-place filtering for shorter logs
  - [Done] individual logs timestamp detection
  - [Done] Unix time bases Timestamp sorting
  - [Done] Single file logs output using common format
  - [Done] add all log types from all MOS namespaces and pods

Update:
  - resource preparation can be skipped per module
  - updated log collection using multiple threads
  - new setting LOG_COLLECT_THREADS

Fixes:
  - Network MTU fix
  - Faster cmd execution on single pod
  - Ceph benchmark validations
  - Ceph benchmark report sorting
  - Daemonset deployment with nodes skipped
  - Network tree debugging script
  - Tree depth limiter, i.e. stackoverflow prevention

  Related-PROD: PROD-36845

Change-Id: Icf229ac62078c6418ab4dbdff12b0d27ed42af1d
diff --git a/templates/ceph_bench_html.j2 b/templates/ceph_bench_html.j2
index 4e04560..f1f767b 100644
--- a/templates/ceph_bench_html.j2
+++ b/templates/ceph_bench_html.j2
@@ -448,7 +448,7 @@
                 </div>
             </td>
         </tr>
-        {% for time,dt in results.items() %}
+        {% for time,dt in results.items() | sort %}
         {% set t = dt["totals"] %}
         {% set o = dt["input_options"] %}
         {% set tstripped = time | tstrip %}
@@ -700,7 +700,7 @@
                 </div>
             </td>
         </tr>
-        {% for time,dt in results.items() %}
+        {% for time,dt in results.items() | sort %}
         {% set b = dt["osd_summary"]["before"] %}
         {% set a = dt["osd_summary"]["after"] %}
         {% set s = dt["osd_summary"]["active"] %}