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
@@ -1,19 +0,0 @@
1
- require 'log4r/formatter/patternformatter'
2
-
3
- module Log4r
4
- class PapertrailOutputter < RemoteSyslogOutputter
5
- def initialize(name, options)
6
- cloned_options = options.clone
7
- unless cloned_options.has_key?('url')
8
- if cloned_options.has_key?('port')
9
- cloned_options['url'] = "syslog://logs.papertrailapp.com:#{cloned_options['port']}"
10
- end
11
- end
12
- if cloned_options.has_key?('program')
13
- program_formatter = Log4r::PatternFormatter.new('pattern' => cloned_options['program'])
14
- cloned_options['program'] = program_formatter.format("").chomp
15
- end
16
- super(name, cloned_options)
17
- end
18
- end
19
- end
@@ -1,11 +0,0 @@
1
- <% content_for :body do %>
2
- <div id="record">
3
- <%= link_to 'Back', @historical_job %>
4
-
5
- <h3 id="record_name">Editing a Job</h3>
6
-
7
- <%= render 'form' %>
8
- </div>
9
- <% end %>
10
-
11
- <%= render partial: 'naf/shared/application' %>
@@ -1,169 +0,0 @@
1
- <% unless @record.marked_down %>
2
- <tr>
3
- <td>Mark machine down</td>
4
- <td>
5
- <%= link_to image_tag('terminate.png',
6
- class: 'action',
7
- title: "Mark machine(id: #{@record.id}, server:#{@record.server_name.blank? ? @record.server_address : @record.server_name}) down"),
8
- "#", { class: "terminate" } %>
9
- </td>
10
- </tr>
11
- <% end %>
12
-
13
- <% content_for :javascripts do %>
14
- <script type='text/javascript'>
15
- var id = <%= @record.id %>;
16
- var system_id = '<%= @record.server_name %>';
17
- var token = "<%= Naf.papertrail_token %>";
18
- var group_id = '<%= Naf.papertrail_group_id %>';
19
- var url = 'https://papertrailapp.com/api/v1/events/search.json';
20
- var max_id = null;
21
- var timeout_id = null;
22
-
23
- jQuery(document).ready(function () {
24
- getLog();
25
- jQuery('#stdout').css('width', jQuery('#stdout').width());
26
-
27
- if(system_id.length != 0 && jQuery('#papertrail_search').val().length == 0) {
28
- jQuery('#papertrail_search').val(system_id + ' runner');
29
- }
30
-
31
- jQuery(document).on("click", '.terminate', function() {
32
- var answer = confirm("You are going to mark machine down. Are you sure that you want to do this?");
33
- if (!answer) {
34
- return false;
35
- }
36
- var url = '/job_system/machines/' + id;
37
- jQuery.ajax({
38
- url: url,
39
- type: 'POST',
40
- dataType: 'json',
41
- data: { "machine[marked_down]": 1, "terminate": true, "_method": "put" },
42
- success:function (data) {
43
- if (data.success) {
44
- jQuery("<p id='notice'>Machine was marked down!</p>").
45
- appendTo('#flash_message').slideDown().delay(5000).slideUp();
46
- setTimeout('window.location.reload()', 5600);
47
- }
48
- }
49
- });
50
- });
51
-
52
- jQuery('#papertrail_search_submit').click(function () {
53
- clearTimeout(timeout_id);
54
- timeout_id = null;
55
- getLog();
56
- });
57
-
58
- jQuery('#clock_button').click(function() {
59
- jQuery("#papertrail_time").animate({width:'toggle'},350);
60
- return false;
61
- });
62
-
63
- jQuery('#clear_stdout_submit').click(function() {
64
- jQuery('#event_list').empty();
65
- });
66
-
67
- jQuery('#auto_update').change(function() {
68
- if(jQuery(this).is(':checked')) {
69
- getTail();
70
- } else {
71
- clearTimeout(timeout_id);
72
- timeout_id = null;
73
- }
74
- });
75
- });
76
-
77
- function callAjax(data){
78
- if(group_id.length != 0) {
79
- jQuery.ajax({
80
- url: url ,
81
- headers:{ 'X-Papertrail-Token': token },
82
- dataType: 'json',
83
- data: data,
84
- success: function(response) {
85
- max_id = response['max_id'];
86
- var events = response["events"];
87
- var text = "";
88
- if(parseInt(Date.parse((-3).days().fromNow().toISOString()) / 1000) > data['min_time']) {
89
- text = setNoticeText("Oldest event reached.<br><br>Need to search older events? Download \
90
- <a target='_blank' href='https://papertrailapp.com/account/archives'>archives</a> \
91
- or increase \
92
- <a target='_blank' href='https://papertrailapp.com/account/payment'>duration</a>.");
93
- }
94
- for (var i in events) {
95
- var ev = events[i];
96
- text = text + "<li>" +
97
- ev["display_received_at"] + "&nbsp;" +
98
- ev["hostname"] + "&nbsp;" +
99
- ev["program"] + ":&nbsp;&nbsp;&nbsp;" +
100
- ev["message"] + "</li>";
101
- }
102
- if(response['backend_timeout']){
103
- text = setNoticeText("Problems on server(backend_timeout = true), retry your query.");
104
- }
105
- if(text == "" && jQuery('#event_list')[0].children.length == 0) {
106
- text = "No results were found!<br>";
107
- }
108
- jQuery('#event_list').append(text);
109
- jQuery("#stdout").scrollTop(jQuery("#stdout")[0].scrollHeight);
110
- },
111
- error: function(request) {
112
- if(request.status == 401) {
113
- jQuery('#event_list').append(setNoticeText("Authorization Required.<br><br> \
114
- Please add the correct Papertrail token to the file 'config/initializers/naf.rb'"));
115
- } else {
116
- jQuery('#event_list').append(setNoticeText("Something went wrong, retry your query."));
117
- }
118
- }
119
- });
120
- } else {
121
- jQuery('#event_list').append(setNoticeText("Papertrail group id is blank.<br><br> \
122
- Please add the correct Papertrail group id to the file 'config/initializers/naf.rb'"));
123
- }
124
- }
125
-
126
- function getSearchData(){
127
- var data = {};
128
- var search_params = jQuery('#papertrail_search').val();
129
- var time = jQuery('#papertrail_time').val();
130
- var parseTime = parseInt(Date.parse(time) / 1000);
131
-
132
- data['group_id'] = group_id;
133
- data['tail'] = false;
134
-
135
- if(parseTime != 0) {
136
- data['min_time'] = parseTime;
137
- }
138
- if(search_params.length != 0) {
139
- data['q'] = search_params;
140
- }
141
-
142
- return data;
143
- }
144
-
145
- function setNoticeText(text) {
146
- return text = "<div class='msg'>"
147
- + text +
148
- "</div>";
149
- }
150
-
151
- function getTail() {
152
- var data = getSearchData();
153
- data['min_id'] = max_id;
154
- delete data['min_time'];
155
- callAjax(data);
156
- if(jQuery('#auto_update').is(':checked')) {
157
- timeout_id = setTimeout(getTail, 5000);
158
- }
159
- }
160
-
161
- function getLog() {
162
- max_id = null;
163
- callAjax(getSearchData());
164
- if(jQuery('#auto_update').is(':checked')) {
165
- timeout_id = setTimeout(getTail, 5000);
166
- }
167
- }
168
- </script>
169
- <% end %>