naf 1.1.4 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. data/Gemfile +4 -2
  2. data/app/assets/images/{papertrail_job.png → job.png} +0 -0
  3. data/app/assets/images/{papertrail_machine.png → machine.png} +0 -0
  4. data/app/assets/images/{papertrail_machine_runner.png → machine_runner.png} +0 -0
  5. data/app/assets/javascripts/col_reorder_with_resize.js +1228 -0
  6. data/app/assets/javascripts/dataTablesTemplates/applications.js +2 -1
  7. data/app/assets/javascripts/dataTablesTemplates/jobs.js +2 -1
  8. data/app/assets/javascripts/dataTablesTemplates/machine_runner_invocations.js +2 -1
  9. data/app/assets/javascripts/dataTablesTemplates/machine_runners.js +2 -1
  10. data/app/assets/javascripts/dataTablesTemplates/machines.js +2 -1
  11. data/app/assets/javascripts/jquery.dataTables.js +10339 -5103
  12. data/app/assets/javascripts/naf.js +1 -0
  13. data/app/assets/stylesheets/jquery_ui/jquery-ui-1.8.5.custom.css.erb +6 -6
  14. data/app/assets/stylesheets/min_naf/layout.css.scss +94 -43
  15. data/app/assets/stylesheets/naf/layout.css.scss +94 -43
  16. data/app/controllers/naf/affinities_controller.rb +1 -1
  17. data/app/controllers/naf/applications_controller.rb +3 -0
  18. data/app/controllers/naf/historical_job_affinity_tabs_controller.rb +1 -1
  19. data/app/controllers/naf/historical_jobs_controller.rb +2 -5
  20. data/app/controllers/naf/log_parsers_controller.rb +16 -0
  21. data/app/controllers/naf/log_viewer_controller.rb +19 -0
  22. data/app/controllers/naf/machine_affinity_slots_controller.rb +1 -1
  23. data/app/controllers/naf/machine_runners_controller.rb +12 -0
  24. data/app/controllers/naf/machines_controller.rb +8 -10
  25. data/app/controllers/naf/status_controller.rb +12 -0
  26. data/app/helpers/naf/application_helper.rb +19 -38
  27. data/app/helpers/naf/time_helper.rb +37 -0
  28. data/app/models/logical/naf/application.rb +13 -19
  29. data/app/models/logical/naf/construction_zone/boss.rb +1 -1
  30. data/app/models/logical/naf/construction_zone/foreman.rb +1 -1
  31. data/app/models/logical/naf/job.rb +39 -34
  32. data/app/models/logical/naf/job_creator.rb +19 -23
  33. data/app/models/logical/naf/job_fetcher.rb +36 -6
  34. data/app/models/logical/naf/log_file.rb +70 -0
  35. data/app/models/logical/naf/log_parser/base.rb +272 -0
  36. data/app/models/logical/naf/log_parser/job.rb +65 -0
  37. data/app/models/logical/naf/log_parser/machine.rb +64 -0
  38. data/app/models/logical/naf/log_parser/runner.rb +72 -0
  39. data/app/models/logical/naf/log_reader.rb +85 -0
  40. data/app/models/logical/naf/machine.rb +39 -1
  41. data/app/models/naf/affinity.rb +18 -0
  42. data/app/models/naf/application_schedule_affinity_tab.rb +1 -0
  43. data/app/models/naf/application_type.rb +2 -1
  44. data/app/models/naf/historical_job.rb +9 -29
  45. data/app/models/naf/machine.rb +8 -0
  46. data/app/models/naf/machine_runner.rb +11 -2
  47. data/app/models/naf/machine_runner_invocation.rb +9 -1
  48. data/app/models/naf/running_job.rb +40 -1
  49. data/app/models/process/naf/application.rb +3 -3
  50. data/app/models/process/naf/log_archiver.rb +78 -0
  51. data/app/models/process/naf/machine_manager.rb +3 -1
  52. data/app/models/process/naf/runner.rb +286 -162
  53. data/app/models/process/naf/runner_log.rb +26 -0
  54. data/app/views/naf/application_schedule_affinity_tabs/_form.html.erb +1 -5
  55. data/app/views/naf/applications/show.html.erb +1 -1
  56. data/app/views/naf/historical_job_affinity_tabs/_form.html.erb +1 -5
  57. data/app/views/naf/historical_jobs/_form.html.erb +1 -1
  58. data/app/views/naf/historical_jobs/_runners.html.erb +21 -12
  59. data/app/views/naf/historical_jobs/_search_container.html.erb +1 -2
  60. data/app/views/naf/historical_jobs/index.html.erb +0 -1
  61. data/app/views/naf/historical_jobs/index.json.erb +4 -4
  62. data/app/views/naf/historical_jobs/show.html.erb +57 -51
  63. data/app/views/naf/log_viewer/_job_logs.html.erb +65 -0
  64. data/app/views/naf/log_viewer/_log_display.html.erb +259 -0
  65. data/app/views/naf/log_viewer/_log_layout.html.erb +59 -0
  66. data/app/views/naf/log_viewer/_machine_logs.html.erb +62 -0
  67. data/app/views/naf/log_viewer/_runner_logs.html.erb +62 -0
  68. data/app/views/naf/log_viewer/_search_options.html.erb +36 -0
  69. data/app/views/naf/log_viewer/_update_page_title.html.erb +9 -0
  70. data/app/views/naf/log_viewer/index.html.erb +1 -0
  71. data/app/views/naf/logger_names/_form.html.erb +1 -2
  72. data/app/views/naf/machine_affinity_slots/_form.html.erb +1 -5
  73. data/app/views/naf/machine_runner_invocations/show.html.erb +4 -0
  74. data/app/views/naf/machine_runners/show.html.erb +44 -34
  75. data/app/views/naf/machines/index.json.erb +14 -6
  76. data/app/views/naf/machines/show.html.erb +44 -40
  77. data/app/views/naf/shared/_auto_resize_width.html.erb +7 -0
  78. data/app/views/naf/shared/_date_select.html.erb +65 -0
  79. data/app/views/naf/shared/_select_per_page.html.erb +48 -13
  80. data/app/views/naf/status/index.html.erb +27 -0
  81. data/bin/naf +26 -0
  82. data/config/initializers/naf.rb +13 -1
  83. data/config/routes.rb +16 -2
  84. data/db/migrate/20131106162436_add_uuid_column_to_machine_runner_invocations.rb +15 -0
  85. data/db/migrate/20131121185222_move_tabs_column_from_historical_jobs_to_running_jobs.rb +15 -0
  86. data/lib/generators/templates/config/logging/naf.yml +0 -8
  87. data/lib/generators/templates/config/logging/nafjob.yml +0 -8
  88. data/lib/generators/templates/config/logging/nafrunner.yml +0 -8
  89. data/lib/generators/templates/naf.rb +0 -8
  90. data/lib/naf.rb +0 -8
  91. data/lib/naf/configuration.rb +0 -4
  92. data/lib/naf/version.rb +1 -1
  93. data/lib/tasks/naf_tasks.rake +18 -0
  94. data/naf.gemspec +3 -1
  95. data/spec/controllers/naf/affinities_controller_spec.rb +0 -1
  96. data/spec/controllers/naf/applications_controller_spec.rb +3 -2
  97. data/spec/controllers/naf/machine_affinity_slots_controller_spec.rb +0 -1
  98. data/spec/controllers/naf/machines_controller_spec.rb +1 -1
  99. data/spec/dummy/config/logging/naf.yml +0 -8
  100. data/spec/dummy/config/logging/nafjob.yml +0 -9
  101. data/spec/dummy/config/logging/nafrunner.yml +0 -10
  102. data/spec/factories/naf.rb +4 -0
  103. data/spec/models/logical/naf/application_spec.rb +3 -4
  104. data/spec/models/logical/naf/job_creator_spec.rb +91 -21
  105. data/spec/models/logical/naf/job_spec.rb +19 -6
  106. data/spec/models/logical/naf/log_file_spec.rb +105 -0
  107. data/spec/models/logical/naf/machine_runner_invocation_spec.rb +41 -0
  108. data/spec/models/logical/naf/machine_runner_spec.rb +42 -0
  109. data/spec/models/logical/naf/machine_spec.rb +98 -28
  110. data/spec/models/naf/affinity_classification_spec.rb +20 -0
  111. data/spec/models/naf/affinity_spec.rb +21 -0
  112. data/spec/models/naf/historical_job_spec.rb +2 -44
  113. data/spec/models/naf/machine_runner_invocation_spec.rb +17 -1
  114. data/spec/models/naf/running_job_spec.rb +64 -1
  115. metadata +40 -9
  116. data/app/models/log4r/papertrail_outputter.rb +0 -19
  117. data/app/views/naf/historical_jobs/edit.html.erb +0 -11
  118. data/app/views/naf/machines/_show.html.erb +0 -169
@@ -0,0 +1,59 @@
1
+ <h2>Logs</h2>
2
+ <div id="stdout_header">
3
+ <div>
4
+ <%= text_field_tag :log_search, nil, placeholder: 'Search query' %>
5
+ &nbsp;/&nbsp;
6
+ <%= text_field_tag :regex_options, nil, placeholder: 'Regex options' %>
7
+ &nbsp;&nbsp;
8
+ <%= button_tag 'Regex Help', id: "regex_help" %>
9
+ <div class="description">
10
+ <strong>Regex Options</strong>
11
+ <table cellpadding="5">
12
+ <thead>
13
+ <tr>
14
+ <td><b>Option</b></td>
15
+ <td><b>Notes</b></td>
16
+ </tr>
17
+ <tr>
18
+ <td>i</td>
19
+ <td>case insensitive</td>
20
+ </tr>
21
+ <tr>
22
+ <td>m</td>
23
+ <td>make dot match newlines</td>
24
+ </tr>
25
+ <tr>
26
+ <td>x</td>
27
+ <td>ignore whitespace in regex</td>
28
+ </tr>
29
+ </thead>
30
+ </table>
31
+ </div>
32
+
33
+ <div>
34
+ <%= label_tag :auto_update, 'Grep:' %>
35
+ <%= check_box_tag :grep, 1, false, id: :grep %>
36
+ </div>
37
+ </br>
38
+
39
+ <div>
40
+ <%= label_tag 'From:' %>
41
+ <%= render partial: 'naf/shared/date_select', locals: { prefix: 'date_select_from', dropdown_width: 'width: 6%;' } %>
42
+ </br>
43
+ <%= label_tag 'To:' %>&nbsp;&nbsp;&nbsp;&nbsp;
44
+ <%= render partial: 'naf/shared/date_select', locals: { prefix: 'date_select_to', dropdown_width: 'width: 6%;' } %>
45
+ </div>
46
+
47
+ <%= link_to 'Auto Scroll (ON)', '#', id: :auto_scroll %>
48
+ </br></br>
49
+ <%= submit_tag("Search the logs", id: 'log_search_submit') %>
50
+ <%= link_to 'Full Screen',
51
+ { controller: 'log_viewer', action: 'index', record_id: record_id, record_type: record_type },
52
+ { class: 'full_screen' } %>
53
+ </div>
54
+ </div>
55
+
56
+ </br>
57
+ <FONT FACE= "Courier New">
58
+ <div id="stdout" class="scrollable-output" ></div>
59
+ <FONT FACE= "Arial">
@@ -0,0 +1,62 @@
1
+ <div id='naf'>
2
+ <div id="fluid">
3
+ <div id='bd'>
4
+ <div id="record">
5
+ <FONT FACE= "Courier New">
6
+ <div id="stdout" class="scrollable-output-expanded"></div>
7
+ </br>
8
+ <FONT FACE= "Arial">
9
+
10
+ <div id="stdout_header">
11
+ <div>
12
+ <%= render partial: 'search_options' %>
13
+ <div style="width: 100%; display: table;">
14
+ <div style="display: table-row">
15
+ <div style="width: 600px; display: table-cell;">
16
+ <%= label_tag 'From:' %>
17
+ <%= render partial: 'naf/shared/date_select', locals: { prefix: 'date_select_from', dropdown_width: 'width: 15%;' } %>
18
+ </br>
19
+ <%= label_tag 'To:' %>&nbsp;&nbsp;&nbsp;&nbsp;
20
+ <%= render partial: 'naf/shared/date_select', locals: { prefix: 'date_select_to', dropdown_width: 'width: 15%;' } %>
21
+ </div>
22
+ <div style="display: table-cell;">
23
+ <strong style="margin-left: 10%; size: 10%">Machine Information</strong>
24
+ <table id='naf_table_show' style="margin-left: 10%; width: 75%">
25
+ <thead>
26
+ <tr>
27
+ <td width="7%">ID</td>
28
+ <td>Server</td>
29
+ <td>Last Seen Alive At</td>
30
+ </tr>
31
+ </thead>
32
+ <tbody>
33
+ <tr>
34
+ <td><%= @machine.id %></td>
35
+ <td><%= @machine.hostname %></td>
36
+ <td><%= @machine.last_seen_alive_at %></td>
37
+ </tr>
38
+ </tbody>
39
+ </table>
40
+ </div>
41
+ </div>
42
+ </div>
43
+ </br>
44
+
45
+ <%= submit_tag("Search the logs", id: 'log_search_submit') %>
46
+ &nbsp;&nbsp;&nbsp;
47
+ <%= link_to 'Back to Machine', { controller: 'machines', action: 'show', id: @machine.id } %>
48
+ </div>
49
+ </div>
50
+ </div>
51
+ </div>
52
+ </div>
53
+ </div>
54
+
55
+ <%= render partial: 'update_page_title', locals: { title: "Machine(#{@machine.id}) Logs" } %>
56
+ <%= render partial: 'naf/shared/auto_resize_width', locals: { div_class: '.scrollable-output-expanded' } %>
57
+ <%= render partial: 'log_display',
58
+ locals: {
59
+ logs_url: "#{http_protocol}#{::Logical::Naf::Machine.new(@machine).runner}#{naf.logs_log_parsers_path}",
60
+ record_id: @machine.id,
61
+ record_type: 'machine'
62
+ } %>
@@ -0,0 +1,62 @@
1
+ <div id='naf'>
2
+ <div id="fluid">
3
+ <div id='bd'>
4
+ <div id="record">
5
+ <FONT FACE= "Courier New">
6
+ <div id="stdout" class="scrollable-output-expanded"></div>
7
+ </br>
8
+ <FONT FACE= "Arial">
9
+
10
+ <div id="stdout_header">
11
+ <div>
12
+ <%= render partial: 'search_options' %>
13
+ <div style="width: 100%; display: table;">
14
+ <div style="display: table-row">
15
+ <div style="width: 600px; display: table-cell;">
16
+ <%= label_tag 'From:' %>
17
+ <%= render partial: 'naf/shared/date_select', locals: { prefix: 'date_select_from', dropdown_width: 'width: 15%;' } %>
18
+ </br>
19
+ <%= label_tag 'To:' %>&nbsp;&nbsp;&nbsp;&nbsp;
20
+ <%= render partial: 'naf/shared/date_select', locals: { prefix: 'date_select_to', dropdown_width: 'width: 15%;' } %>
21
+ </div>
22
+ <div style="display: table-cell;">
23
+ <strong style="margin-left: 10%; size: 10%">Runner Information</strong>
24
+ <table id='naf_table_show' style="margin-left: 10%; width: 75%">
25
+ <thead>
26
+ <tr>
27
+ <td width="7%">ID</td>
28
+ <td>Server</td>
29
+ <td>Cwd</td>
30
+ </tr>
31
+ </thead>
32
+ <tbody>
33
+ <tr>
34
+ <td><%= @runner.id %></td>
35
+ <td><%= @runner.machine.hostname %></td>
36
+ <td><%= @runner.runner_cwd %></td>
37
+ </tr>
38
+ </tbody>
39
+ </table>
40
+ </div>
41
+ </div>
42
+ </div>
43
+ </br>
44
+
45
+ <%= submit_tag("Search the logs", id: 'log_search_submit') %>
46
+ &nbsp;&nbsp;&nbsp;
47
+ <%= link_to 'Back to Runner', { controller: 'machine_runners', action: 'show', id: @runner.id } %>
48
+ </div>
49
+ </div>
50
+ </div>
51
+ </div>
52
+ </div>
53
+ </div>
54
+
55
+ <%= render partial: 'update_page_title', locals: { title: "Runner(#{@runner.id}) Logs" } %>
56
+ <%= render partial: 'naf/shared/auto_resize_width', locals: { div_class: '.scrollable-output-expanded' } %>
57
+ <%= render partial: 'log_display',
58
+ locals: {
59
+ logs_url: "#{http_protocol}#{::Logical::Naf::Machine.new(@runner.machine).runner}#{naf.logs_log_parsers_path}",
60
+ record_id: @runner.id,
61
+ record_type: 'runner'
62
+ } %>
@@ -0,0 +1,36 @@
1
+ <%= text_field_tag :log_search, nil, placeholder: 'Search query' %>
2
+ &nbsp;/&nbsp;
3
+ <%= text_field_tag :regex_options, nil, placeholder: 'Regex options' %>
4
+ &nbsp;&nbsp;
5
+ <%= button_tag 'Regex Help', id: "regex_help" %>
6
+ <div class="description">
7
+ &nbsp;
8
+ <strong>Regex Options</strong>
9
+ <table cellpadding="5">
10
+ <thead>
11
+ <tr>
12
+ <td><b>Option</b></td>
13
+ <td><b>Notes</b></td>
14
+ </tr>
15
+ <tr>
16
+ <td>i</td>
17
+ <td>case insensitive</td>
18
+ </tr>
19
+ <tr>
20
+ <td>m</td>
21
+ <td>make dot match newlines</td>
22
+ </tr>
23
+ <tr>
24
+ <td>x</td>
25
+ <td>ignore whitespace in regex</td>
26
+ </tr>
27
+ </thead>
28
+ </table>
29
+ </div>
30
+
31
+ <%= link_to 'Auto Scroll (ON)', '#', id: :auto_scroll %>
32
+ <div>
33
+ <%= label_tag :auto_update, 'Grep:' %>
34
+ <%= check_box_tag :grep, 1, false, id: :grep %>
35
+ </div>
36
+ </br>
@@ -0,0 +1,9 @@
1
+ <% content_for :javascripts do %>
2
+ <script type='text/javascript'>
3
+
4
+ jQuery(document).ready(function () {
5
+ document.title = '<%= title %>';
6
+ });
7
+
8
+ </script>
9
+ <% end %>
@@ -0,0 +1 @@
1
+ <%= render partial: @partial %>
@@ -1,11 +1,10 @@
1
1
  <%= form_for(@logger_name) do |f| %>
2
-
3
2
  <% if @logger_name.errors.any? %>
4
3
  <div id="errorExplanation">
5
4
  <h2><%= pluralize(@logger_name.errors.count, "error") %> prohibited Logger Name from being saved:</h2>
6
5
  </div>
7
6
  <% end %>
8
-
7
+
9
8
  <div class="field">
10
9
  <%= f.label :name, "Name*" %><br />
11
10
  <%= f.text_field :name %>
@@ -10,11 +10,7 @@
10
10
 
11
11
  <div class="field">
12
12
  <%= f.label :affinity_id, "Affinity*" %></br>
13
- <%= f.select(:affinity_id,
14
- ::Naf::Affinity.selectable.map{
15
- |a| [a.affinity_classification.affinity_classification_name + ', ' + a.affinity_name, a.id]
16
- },
17
- include_blank: true) %>
13
+ <%= f.select(:affinity_id, ::Naf::Affinity.names_list, include_blank: true) %>
18
14
  </div>
19
15
  </br>
20
16
 
@@ -33,6 +33,10 @@
33
33
  <td>Pid</td>
34
34
  <td><%= @machine_runner_invocation.pid %></td>
35
35
  </tr>
36
+ <tr>
37
+ <td>UUID</td>
38
+ <td><%= @machine_runner_invocation.uuid %></td>
39
+ </tr>
36
40
  <tr>
37
41
  <td>Wind Down At</td>
38
42
  <td><%= @machine_runner_invocation.wind_down_at %></td>
@@ -1,40 +1,14 @@
1
1
  <% content_for :body do %>
2
2
  <div id="flash_message">
3
- <% unless notice.blank? %>
4
- <script type='text/javascript'>
5
- jQuery("<p id='notice'><%= notice %></p>")
6
- .appendTo('#flash_message')
7
- .slideDown().delay(5000).slideUp();
8
- </script>
9
- <% end %>
3
+ <% unless notice.blank? %>
4
+ <script type='text/javascript'>
5
+ jQuery("<p id='notice'><%= notice %></p>")
6
+ .appendTo('#flash_message')
7
+ .slideDown().delay(5000).slideUp();
8
+ </script>
9
+ <% end %>
10
10
  </div>
11
11
 
12
- <script type='text/javascript'>
13
- // Action: Wind Down Runner
14
- jQuery(document).delegate('.wind_down', "click", function() {
15
- var answer = confirm("You are winding down this runner. Are you sure you want to do this?");
16
- if (!answer) {
17
- return false;
18
- }
19
- var id = <%= @machine_runner.machine_runner_invocations.last.id %>;
20
- var url = '/job_system/machine_runner_invocations/' + id;
21
- jQuery.ajax({
22
- url: url,
23
- type: 'POST',
24
- dataType: 'json',
25
- data: { "machine_runner_invocation[request_to_wind_down]": 1, "machine_runner_invocation_id": id, "_method": "put" },
26
- success:function (data) {
27
- if (data.success) {
28
- jQuery("<p id='notice'>The machine runner is winding down!</p>").
29
- appendTo('#flash_message').slideDown().delay(5000).slideUp();
30
- jQuery('#datatable').dataTable().fnDraw();
31
- window.location.reload()
32
- }
33
- }
34
- });
35
- });
36
- </script>
37
-
38
12
  <div id="record">
39
13
  <h2>Machine Runner</h2>
40
14
  <%= link_to 'Back to Machine Runners', machine_runners_path %>
@@ -107,7 +81,43 @@
107
81
  </tbody>
108
82
  </table>
109
83
  </br>
110
-
84
+ <%= render partial: 'naf/log_viewer/log_layout', locals: { record_id: @machine_runner.id, record_type: 'runner' } %>
111
85
  </div>
112
86
  <% end %>
87
+
113
88
  <%= render partial: 'naf/shared/application' %>
89
+ <%= render partial: 'naf/shared/auto_resize_width', locals: { div_class: '.scrollable-output' } %>
90
+ <%= render partial: 'naf/log_viewer/log_display',
91
+ locals: {
92
+ logs_url: "#{http_protocol}#{::Logical::Naf::Machine.new(@machine_runner.machine).runner}#{naf.logs_log_parsers_path}",
93
+ record_id: @machine_runner.id,
94
+ record_type: 'runner'
95
+ } %>
96
+
97
+ <% content_for :javascripts do %>
98
+ <script type='text/javascript'>
99
+ // Action: Wind Down Runner
100
+ jQuery(document).delegate('.wind_down', "click", function() {
101
+ var answer = confirm("You are winding down this runner. Are you sure you want to do this?");
102
+ if (!answer) {
103
+ return false;
104
+ }
105
+ var id = <%= @machine_runner.machine_runner_invocations.last.id %>;
106
+ var url = '/job_system/machine_runner_invocations/' + id;
107
+ jQuery.ajax({
108
+ url: url,
109
+ type: 'POST',
110
+ dataType: 'json',
111
+ data: { "machine_runner_invocation[request_to_wind_down]": 1, "machine_runner_invocation_id": id, "_method": "put" },
112
+ success:function (data) {
113
+ if (data.success) {
114
+ jQuery("<p id='notice'>The machine runner is winding down!</p>").
115
+ appendTo('#flash_message').slideDown().delay(5000).slideUp();
116
+ jQuery('#datatable').dataTable().fnDraw();
117
+ window.location.reload()
118
+ }
119
+ }
120
+ });
121
+ });
122
+ </script>
123
+ <% end %>
@@ -1,14 +1,22 @@
1
1
  <%
2
2
  rows = @machines.each do |machine|
3
- machine[11] = link_to image_tag('papertrail_machine.png',
3
+ machine[11] = link_to image_tag('machine.png',
4
4
  class: 'action',
5
- title: "View machine(id: #{machine[0]}, server:#{machine[1].blank? ? machine[2] : machine[1]}) log in Papertrail"),
6
- machine[11], { target: '_blank', class: "papertrail", id: machine[0] }
5
+ title: "View machine(id: #{machine[0]}, server:#{machine[1].blank? ? machine[2] : machine[1]}) log"),
6
+ url_for({ controller: 'log_viewer',
7
+ action: 'index',
8
+ record_id: machine[0],
9
+ record_type: 'machine' }),
10
+ { target: '_blank', id: machine[0] }
7
11
  machine[11] << "&nbsp;&nbsp;".html_safe
8
- machine[11] << (link_to image_tag('papertrail_machine_runner.png',
12
+ machine[11] << (link_to image_tag('machine_runner.png',
9
13
  class: 'action',
10
- title: "View machine(id: #{machine[0]}, server:#{machine[1].blank? ? machine[2] : machine[1]}) runner log in Papertrail"),
11
- machine[12], { target: '_blank', class: "papertrail", id: machine[0] })
14
+ title: "View machine(id: #{machine[0]}, server:#{machine[1].blank? ? machine[2] : machine[1]}) runner log"),
15
+ url_for({ controller: 'log_viewer',
16
+ action: 'index',
17
+ record_id: ::Naf::Machine.find_by_id(machine[0]).machine_runners.order(:id).last.try(:id),
18
+ record_type: 'runner' }),
19
+ { target: '_blank', id: machine[0] })
12
20
  machine[11] << "&nbsp;&nbsp;".html_safe
13
21
  unless machine[10]
14
22
  machine[11] << (link_to image_tag('terminate.png',
@@ -1,42 +1,14 @@
1
1
  <% content_for :body do %>
2
2
  <div id="flash_message">
3
- <% unless notice.blank? %>
4
- <script type='text/javascript'>
5
- jQuery("<p id='notice'><%= notice %></p>")
6
- .appendTo('#flash_message')
7
- .slideDown().delay(5000).slideUp();
8
- </script>
9
- <% end %>
3
+ <% unless notice.blank? %>
4
+ <script type='text/javascript'>
5
+ jQuery("<p id='notice'><%= notice %></p>")
6
+ .appendTo('#flash_message')
7
+ .slideDown().delay(5000).slideUp();
8
+ </script>
9
+ <% end %>
10
10
  </div>
11
11
 
12
- <% content_for :javascripts do %>
13
- <script type='text/javascript'>
14
- jQuery(document).ready(function () {
15
- jQuery(document).delegate('.terminate', "click", function(){
16
- var answer = confirm("You are going to mark machine down. Are you sure you want to do this?");
17
- if (!answer) {
18
- return false;
19
- }
20
- var id = <%= @machine.id %>;
21
- var url = '/job_system/machines/' + id;
22
- jQuery.ajax({
23
- url: url,
24
- type: 'POST',
25
- dataType: 'json',
26
- data: { "machine[marked_down]": 1, "terminate": true, "_method": "put" },
27
- success:function (data) {
28
- if (data.success) {
29
- jQuery("<p id='notice'>Machine was marked down!</p>").
30
- appendTo('#flash_message').slideDown().delay(5000).slideUp();
31
- setTimeout('window.location.reload()', 5600);
32
- }
33
- }
34
- });
35
- });
36
- });
37
- </script>
38
- <% end %>
39
-
40
12
  <div id="record">
41
13
  <h2>Machine</h2>
42
14
  <%= link_to 'Back to Machines', machines_path %>
@@ -82,11 +54,43 @@
82
54
  </tbody>
83
55
  </table>
84
56
  </br>
85
-
86
- <h2>Stdout</h2>
87
- <iframe src="<%= naf_papertrail_link(@machine, true) %>" id="stdout" class="scrollable-output">
88
- Your browser doesn't support iframe!
89
- </iframe>
57
+ <%= render partial: 'naf/log_viewer/log_layout', locals: { record_id: @machine.id, record_type: 'machine' } %>
90
58
  </div>
91
59
  <% end %>
60
+
92
61
  <%= render partial: 'naf/shared/application' %>
62
+ <%= render partial: 'naf/shared/auto_resize_width', locals: { div_class: '.scrollable-output' } %>
63
+ <%= render partial: 'naf/log_viewer/log_display',
64
+ locals: {
65
+ logs_url: "#{http_protocol}#{::Logical::Naf::Machine.new(@machine).runner}#{naf.logs_log_parsers_path}",
66
+ record_id: @machine.id,
67
+ record_type: 'machine'
68
+ } %>
69
+
70
+ <% content_for :javascripts do %>
71
+ <script type='text/javascript'>
72
+ jQuery(document).ready(function () {
73
+ jQuery(document).delegate('.terminate', "click", function(){
74
+ var answer = confirm("You are going to mark machine down. Are you sure you want to do this?");
75
+ if (!answer) {
76
+ return false;
77
+ }
78
+ var id = <%= @machine.id %>;
79
+ var url = '/job_system/machines/' + id;
80
+ jQuery.ajax({
81
+ url: url,
82
+ type: 'POST',
83
+ dataType: 'json',
84
+ data: { "machine[marked_down]": 1, "terminate": true, "_method": "put" },
85
+ success:function (data) {
86
+ if (data.success) {
87
+ jQuery("<p id='notice'>Machine was marked down!</p>").
88
+ appendTo('#flash_message').slideDown().delay(5000).slideUp();
89
+ setTimeout('window.location.reload()', 5600);
90
+ }
91
+ }
92
+ });
93
+ });
94
+ });
95
+ </script>
96
+ <% end %>