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
@@ -17,6 +17,7 @@
17
17
  //= require underscore
18
18
  //= require jquery.dataTables
19
19
  //= require jquery.dataTables.custom
20
+ //= require col_reorder_with_resize
20
21
 
21
22
  function remove_fields(link) {
22
23
  jQuery(link).prev("input[type=hidden]").val("1");
@@ -348,7 +348,7 @@
348
348
  *
349
349
  * http://docs.jquery.com/UI/Autocomplete#theming
350
350
  */
351
- .ui-autocomplete { position: absolute; cursor: default; }
351
+ .ui-autocomplete { position: absolute; cursor: default; }
352
352
 
353
353
  /* workarounds */
354
354
  * html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
@@ -404,8 +404,8 @@
404
404
  .ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
405
405
  .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
406
406
  button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
407
- .ui-button-icons-only { width: 3.4em; }
408
- button.ui-button-icons-only { width: 3.7em; }
407
+ .ui-button-icons-only { width: 3.4em; }
408
+ button.ui-button-icons-only { width: 3.7em; }
409
409
 
410
410
  /*button text element */
411
411
  .ui-button .ui-button-text { display: block; line-height: 1.4; }
@@ -441,7 +441,7 @@ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra pad
441
441
  */
442
442
  .ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
443
443
  .ui-dialog .ui-dialog-titlebar { padding: .5em 1em .3em; position: relative; }
444
- .ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .2em 0; }
444
+ .ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .2em 0; }
445
445
  .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
446
446
  .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
447
447
  .ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
@@ -513,7 +513,7 @@ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra pad
513
513
  .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
514
514
  .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
515
515
  .ui-datepicker select.ui-datepicker-month-year {width: 100%;}
516
- .ui-datepicker select.ui-datepicker-month,
516
+ .ui-datepicker select.ui-datepicker-month,
517
517
  .ui-datepicker select.ui-datepicker-year { width: 49%;}
518
518
  .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
519
519
  .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
@@ -569,4 +569,4 @@ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra pad
569
569
  * http://docs.jquery.com/UI/Progressbar#theming
570
570
  */
571
571
  .ui-progressbar { height:2em; text-align: left; }
572
- .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
572
+ .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
@@ -51,18 +51,42 @@
51
51
  }
52
52
  }
53
53
 
54
- #page-select-container, #refresh-page-container {
55
- display: none;
54
+ #page-select-container {
55
+ float: right;
56
+ margin-top: -1px;
57
+ padding: 2px 2px;
58
+ width: 240px;
59
+
60
+ label {
61
+ position: relative;
62
+ top: 4px;
63
+ }
64
+
65
+ #iDisplayLength {
66
+ background-color: #FFFFFF;
67
+ }
68
+
69
+ .page-select {
70
+ border: 1px solid #E1E1E1;
71
+ cursor: pointer;
72
+ float: right;
73
+ width: 95px;
74
+ }
75
+ }
76
+
77
+ #refresh-page-container {
56
78
  float: right;
57
79
  margin-top: -1px;
58
80
  padding: 2px 2px;
59
- width: 205px;
81
+ width: 240px;
82
+ input {
83
+ width: 13px;
84
+ }
60
85
  }
61
86
 
62
87
  #datatable_wrapper {
63
88
  #datatable_processing {
64
89
  color: #45a113;
65
- font-style: bold;
66
90
  font-size: 14px;
67
91
  margin: 0 0 6px 0;
68
92
  background-color: #e5f4e1;
@@ -70,30 +94,6 @@
70
94
  padding: 4px 8px 4px 8px;
71
95
  }
72
96
 
73
- #datatable_paginate {
74
- #page-select-container {
75
- label {
76
- position: relative;
77
- top: 4px;
78
- }
79
- }
80
- #refresh-page-container {
81
- margin-right: 200px;
82
- input {
83
- width: 13px;
84
- }
85
- }
86
- #iDisplayLength {
87
- background-color: #FFFFFF;
88
- }
89
- .page-select {
90
- border: 1px solid #E1E1E1;
91
- cursor: pointer;
92
- float: right;
93
- width: 95px;
94
- }
95
- }
96
-
97
97
  #datatable {
98
98
  table-layout:fixed;
99
99
 
@@ -249,12 +249,11 @@
249
249
  }
250
250
 
251
251
  .scrollable-output {
252
- border: 1px solid #E1E1E1;
253
252
  height: 500px;
254
253
  overflow-x:auto;
255
- width: 98%;
256
- background-color: #2d2d2d;
257
- color: #ffffff;
254
+ width: 99%;
255
+ background-color: #F4F4F4;
256
+ color: #000000;
258
257
  padding: 5px 10px 5px 0px;
259
258
 
260
259
  #event_list {
@@ -283,18 +282,44 @@
283
282
  }
284
283
  }
285
284
 
286
- #stdout_header {
287
- width: 98%;
288
- input {
289
- width: 24em;
285
+ .scrollable-output-expanded {
286
+ height: 720px;
287
+ overflow-x:auto;
288
+ width: 99%;
289
+ background-color: #F4F4F4;
290
+ color: #000000;
291
+ padding: 5px 10px 5px 0px;
292
+
293
+ #event_list {
294
+ word-wrap: break-word;
295
+ padding-left: 10px;
296
+ margin: 0;
297
+ list-style: none outside none;
298
+ li {
299
+ padding-left: 20px;
300
+ text-indent: -15px;
301
+ }
290
302
  }
291
303
 
292
- #papertrail_search_submit {
293
- width: 12em;
304
+ .msg {
305
+ background: none repeat scroll 0 0 #202020;
306
+ border: 1px solid #303030;
307
+ box-shadow: 0 0 5px #000000;
308
+ border-radius: 5px 5px 5px 5px;
309
+ margin: 20px auto;
310
+ min-width: 600px;
311
+ padding: 40px 25px;
312
+ position: relative;
313
+ text-align: center;
314
+ width: 65%;
315
+ font-size: 20px;
294
316
  }
317
+ }
295
318
 
296
- #papertrail_time {
297
- display: none;
319
+ #stdout_header {
320
+ width: 98%;
321
+ input {
322
+ width: 24em;
298
323
  }
299
324
 
300
325
  #automatic_data_update {
@@ -309,12 +334,38 @@
309
334
  width: 100px;
310
335
  }
311
336
  }
337
+
338
+ a {
339
+ float:right;
340
+ }
341
+
342
+ #log_search {
343
+ width: 50%;
344
+ }
345
+
346
+ #regex_options {
347
+ width: 10%;
348
+ }
349
+
350
+ .description {
351
+ display: none;
352
+ position: absolute;
353
+ background: #F4F4F4;
354
+ border: 1px solid #000;
355
+ width: 400px;
356
+ height: 125px;
357
+ margin: 0% 0% 0% 65%;
358
+ }
312
359
  }
313
360
 
314
361
  h4 {
315
362
  margin: 10px 0 5px 0;
316
363
  font-weight: bold;
317
364
  }
365
+
366
+ .auto_scroll_off {
367
+ color: #CD0A0A;
368
+ }
318
369
  }
319
370
 
320
371
  #parent_links {
@@ -326,15 +377,15 @@
326
377
  }
327
378
  }
328
379
 
329
- .winding-down, .queued {
380
+ .winding-down, .queued, .winding-down-count {
330
381
  color: #f8a800;
331
382
  }
332
383
 
333
- .running {
384
+ .running, .running-count {
334
385
  color: #45a113;
335
386
  }
336
387
 
337
- .dead {
388
+ .dead, .error, .down-count {
338
389
  color: #CD0A0A;
339
390
  }
340
391
  }
@@ -193,18 +193,42 @@ html {
193
193
  }
194
194
  }
195
195
 
196
- #page-select-container, #refresh-page-container {
197
- display: none;
196
+ #page-select-container {
198
197
  float: right;
199
198
  margin-top: -1px;
200
199
  padding: 2px 2px;
201
- width: 205px;
200
+ width: 240px;
201
+
202
+ label {
203
+ position: relative;
204
+ top: 4px;
205
+ }
206
+
207
+ #iDisplayLength {
208
+ background-color: #FFFFFF;
209
+ }
210
+
211
+ .page-select {
212
+ border: 1px solid #E1E1E1;
213
+ cursor: pointer;
214
+ float: right;
215
+ width: 95px;
216
+ }
217
+ }
218
+
219
+ #refresh-page-container {
220
+ float: right;
221
+ margin-top: -1px;
222
+ padding: 2px 2px;
223
+ width: 240px;
224
+ input {
225
+ width: 13px;
226
+ }
202
227
  }
203
228
 
204
229
  #datatable_wrapper {
205
230
  #datatable_processing {
206
231
  color: #45a113;
207
- font-style: bold;
208
232
  font-size: 14px;
209
233
  margin: 0 0 6px 0;
210
234
  background-color: #e5f4e1;
@@ -212,30 +236,6 @@ html {
212
236
  padding: 4px 8px 4px 8px;
213
237
  }
214
238
 
215
- #datatable_paginate {
216
- #page-select-container {
217
- label {
218
- position: relative;
219
- top: 4px;
220
- }
221
- }
222
- #refresh-page-container {
223
- margin-right: 200px;
224
- input {
225
- width: 13px;
226
- }
227
- }
228
- #iDisplayLength {
229
- background-color: #FFFFFF;
230
- }
231
- .page-select {
232
- border: 1px solid #E1E1E1;
233
- cursor: pointer;
234
- float: right;
235
- width: 95px;
236
- }
237
- }
238
-
239
239
  #datatable {
240
240
  table-layout:fixed;
241
241
 
@@ -391,12 +391,11 @@ html {
391
391
  }
392
392
 
393
393
  .scrollable-output {
394
- border: 1px solid #E1E1E1;
395
394
  height: 500px;
396
395
  overflow-x:auto;
397
- width: 98%;
398
- background-color: #2d2d2d;
399
- color: #ffffff;
396
+ width: 99%;
397
+ background-color: #F4F4F4;
398
+ color: #000000;
400
399
  padding: 5px 10px 5px 0px;
401
400
 
402
401
  #event_list {
@@ -425,18 +424,44 @@ html {
425
424
  }
426
425
  }
427
426
 
428
- #stdout_header {
429
- width: 98%;
430
- input {
431
- width: 24em;
427
+ .scrollable-output-expanded {
428
+ height: 720px;
429
+ overflow-x:auto;
430
+ width: 99%;
431
+ background-color: #F4F4F4;
432
+ color: #000000;
433
+ padding: 5px 10px 5px 0px;
434
+
435
+ #event_list {
436
+ word-wrap: break-word;
437
+ padding-left: 10px;
438
+ margin: 0;
439
+ list-style: none outside none;
440
+ li {
441
+ padding-left: 20px;
442
+ text-indent: -15px;
443
+ }
432
444
  }
433
445
 
434
- #papertrail_search_submit {
435
- width: 12em;
446
+ .msg {
447
+ background: none repeat scroll 0 0 #202020;
448
+ border: 1px solid #303030;
449
+ box-shadow: 0 0 5px #000000;
450
+ border-radius: 5px 5px 5px 5px;
451
+ margin: 20px auto;
452
+ min-width: 600px;
453
+ padding: 40px 25px;
454
+ position: relative;
455
+ text-align: center;
456
+ width: 65%;
457
+ font-size: 20px;
436
458
  }
459
+ }
437
460
 
438
- #papertrail_time {
439
- display: none;
461
+ #stdout_header {
462
+ width: 98%;
463
+ input {
464
+ width: 24em;
440
465
  }
441
466
 
442
467
  #automatic_data_update {
@@ -451,12 +476,38 @@ html {
451
476
  width: 100px;
452
477
  }
453
478
  }
479
+
480
+ a {
481
+ float:right;
482
+ }
483
+
484
+ #log_search {
485
+ width: 50%;
486
+ }
487
+
488
+ #regex_options {
489
+ width: 10%;
490
+ }
491
+
492
+ .description {
493
+ display: none;
494
+ position: absolute;
495
+ background: #F4F4F4;
496
+ border: 1px solid #000;
497
+ width: 400px;
498
+ height: 125px;
499
+ margin: 0% 0% 0% 65%;
500
+ }
454
501
  }
455
502
 
456
503
  h4 {
457
504
  margin: 10px 0 5px 0;
458
505
  font-weight: bold;
459
506
  }
507
+
508
+ .auto_scroll_off {
509
+ color: #CD0A0A;
510
+ }
460
511
  }
461
512
 
462
513
  #parent_links {
@@ -468,15 +519,15 @@ html {
468
519
  }
469
520
  }
470
521
 
471
- .winding-down, .queued {
522
+ .winding-down, .queued, .winding-down-count {
472
523
  color: #f8a800;
473
524
  }
474
525
 
475
- .running {
526
+ .running, .running-count {
476
527
  color: #45a113;
477
528
  }
478
529
 
479
- .dead, .error {
530
+ .dead, .error, .down-count {
480
531
  color: #CD0A0A;
481
532
  }
482
533
  }