naf 2.0.4 → 2.1.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.
- data/README.rdoc +28 -4
- data/RELEASE_NOTES.rdoc +8 -0
- data/app/assets/javascripts/dataTablesTemplates/application_schedules.js +72 -0
- data/app/assets/javascripts/dataTablesTemplates/applications.js +12 -21
- data/app/controllers/naf/application_schedule_affinity_tabs_controller.rb +5 -8
- data/app/controllers/naf/application_schedules_controller.rb +98 -0
- data/app/controllers/naf/applications_controller.rb +6 -98
- data/app/controllers/naf/historical_jobs_controller.rb +18 -8
- data/app/helpers/naf/application_helper.rb +47 -22
- data/app/models/logical/naf/application.rb +9 -126
- data/app/models/logical/naf/application_schedule.rb +186 -0
- data/app/models/logical/naf/construction_zone/boss.rb +4 -5
- data/app/models/logical/naf/construction_zone/foreman.rb +34 -13
- data/app/models/logical/naf/construction_zone/proletariat.rb +1 -0
- data/app/models/logical/naf/construction_zone/work_order.rb +11 -4
- data/app/models/logical/naf/job_fetcher.rb +1 -0
- data/app/models/naf/application.rb +5 -16
- data/app/models/naf/application_schedule.rb +117 -43
- data/app/models/naf/historical_job.rb +6 -3
- data/app/models/naf/queued_job.rb +3 -0
- data/app/models/naf/run_interval_style.rb +20 -0
- data/app/models/naf/running_job.rb +3 -0
- data/app/models/process/naf/data_migration/backfill_application_schedule_run_interval.rb +85 -0
- data/app/models/process/naf/log_archiver.rb +1 -1
- data/app/models/process/naf/log_reader.rb +141 -0
- data/app/models/process/naf/runner.rb +6 -49
- data/app/views/naf/application_schedule_affinity_tabs/_form.html.erb +1 -1
- data/app/views/naf/{applications → application_schedules}/_application_schedule_prerequisites.html.erb +1 -1
- data/app/views/naf/application_schedules/_form.html.erb +120 -0
- data/app/views/naf/application_schedules/edit.html.erb +11 -0
- data/app/views/naf/application_schedules/index.html.erb +47 -0
- data/app/views/naf/application_schedules/index.json.erb +8 -0
- data/app/views/naf/application_schedules/new.html.erb +11 -0
- data/app/views/naf/application_schedules/show.html.erb +130 -0
- data/app/views/naf/applications/_form.html.erb +44 -106
- data/app/views/naf/applications/_search_container.html.erb +29 -29
- data/app/views/naf/applications/index.html.erb +1 -10
- data/app/views/naf/applications/index.json.erb +22 -6
- data/app/views/naf/applications/show.html.erb +47 -97
- data/app/views/naf/logger_styles/_form.html.erb +0 -3
- data/app/views/naf/machines/_form.html.erb +3 -4
- data/config/routes.rb +3 -4
- data/db/migrate/20131219195439_add_run_interval_styles_table.rb +49 -0
- data/db/migrate/20140113183243_drop_run_start_minute_from_application_schedules.rb +18 -0
- data/lib/naf/version.rb +1 -1
- data/naf.gemspec +1 -1
- data/spec/controllers/naf/application_schedule_affinity_tabs_controller_spec.rb +34 -27
- data/spec/controllers/naf/applications_controller_spec.rb +0 -48
- data/spec/factories/naf.rb +14 -8
- data/spec/models/logical/naf/application_spec.rb +9 -37
- data/spec/models/logical/naf/machine_spec.rb +1 -1
- data/spec/models/naf/application_schedule_spec.rb +38 -50
- data/spec/models/naf/application_spec.rb +3 -3
- data/spec/models/naf/historical_job_spec.rb +4 -2
- data/spec/models/naf/queued_job_spec.rb +2 -0
- data/spec/models/naf/run_interval_style_spec.rb +28 -0
- data/spec/models/naf/running_job_spec.rb +2 -0
- metadata +19 -7
- data/app/models/logical/naf/job_creator.rb +0 -151
- data/app/views/naf/applications/_application_schedule.html.erb +0 -80
- data/spec/models/logical/naf/job_creator_spec.rb +0 -102
@@ -16,54 +16,6 @@ module Naf
|
|
16
16
|
response.should be_success
|
17
17
|
end
|
18
18
|
|
19
|
-
context "with regard to the edit action" do
|
20
|
-
|
21
|
-
it "should build a new application schedule if it was destroyed" do
|
22
|
-
@id = 5
|
23
|
-
controller.stub(:check_application_run_group_name).and_return(nil)
|
24
|
-
app_mock = mock_model(Application)
|
25
|
-
schedule_mock = mock_model(ApplicationSchedule)
|
26
|
-
schedule_prerequisites = mock_model(ApplicationSchedulePrerequisite)
|
27
|
-
Application.should_receive(:find).with("5").and_return(app_mock)
|
28
|
-
app_mock.should_receive(:application_schedule).and_return(nil)
|
29
|
-
app_mock.should_receive(:build_application_schedule).and_return(schedule_mock)
|
30
|
-
schedule_mock.should_receive(:application_schedule_prerequisites).and_return(schedule_prerequisites)
|
31
|
-
schedule_prerequisites.should_receive(:build).and_return(nil)
|
32
|
-
end
|
33
|
-
|
34
|
-
it "should respond without building a new application schedule" do
|
35
|
-
@id = 5
|
36
|
-
controller.stub(:check_application_run_group_name).and_return(nil)
|
37
|
-
app_mock = mock_model(Application)
|
38
|
-
schedule_mock = mock_model(ApplicationSchedule)
|
39
|
-
schedule_prerequisites = mock_model(ApplicationSchedulePrerequisite)
|
40
|
-
app_mock.should_receive(:application_schedule).and_return(schedule_mock)
|
41
|
-
Application.should_receive(:find).with("5").and_return(app_mock)
|
42
|
-
schedule_mock.should_receive(:application_schedule_prerequisites).and_return(schedule_prerequisites)
|
43
|
-
schedule_prerequisites.should_not_receive(:build)
|
44
|
-
app_mock.should_not_receive(:build_application_schedule)
|
45
|
-
end
|
46
|
-
|
47
|
-
after(:each) do
|
48
|
-
get :edit, id: @id
|
49
|
-
response.should render_template("naf/applications/edit")
|
50
|
-
response.should be_success
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
it "should respond with affinity new" do
|
55
|
-
app = double('app')
|
56
|
-
app_schedule = double('application_schedule')
|
57
|
-
schedule_prerequisites = double('schedule_prerequisites')
|
58
|
-
Application.should_receive(:new).and_return(app)
|
59
|
-
app.should_receive(:build_application_schedule).and_return(app_schedule)
|
60
|
-
app_schedule.should_receive(:application_schedule_prerequisites).and_return(schedule_prerequisites)
|
61
|
-
schedule_prerequisites.should_receive(:build).and_return(nil)
|
62
|
-
get :new
|
63
|
-
response.should render_template("naf/applications/new")
|
64
|
-
response.should be_success
|
65
|
-
end
|
66
|
-
|
67
19
|
context "on the create action" do
|
68
20
|
let(:application_schedule) { mock_model(ApplicationSchedule, application_run_group_name: 'command', prerequisites: []) }
|
69
21
|
let(:valid_app) { mock_model(Application, save: true, id: 5, update_attributes: true, application_schedule: application_schedule) }
|
data/spec/factories/naf.rb
CHANGED
@@ -153,10 +153,12 @@ FactoryGirl.define do
|
|
153
153
|
factory :application, parent: :application_base do
|
154
154
|
sequence(:command) { |n| "::Naf::HistoricalJob.test hello_#{n}" }
|
155
155
|
sequence(:title) { |n| "Test #{n}" }
|
156
|
-
end
|
157
156
|
|
158
|
-
|
159
|
-
|
157
|
+
factory :scheduled_application do
|
158
|
+
after(:create) do |application|
|
159
|
+
create_list(:schedule, 1, application: application)
|
160
|
+
end
|
161
|
+
end
|
160
162
|
end
|
161
163
|
|
162
164
|
#############################################################
|
@@ -166,20 +168,24 @@ FactoryGirl.define do
|
|
166
168
|
factory :schedule_base, class: ::Naf::ApplicationSchedule do
|
167
169
|
association :application, factory: :application
|
168
170
|
association :application_run_group_restriction, factory: :no_limit
|
171
|
+
association :run_interval_style, factory: :run_interval_style
|
172
|
+
run_interval 0
|
169
173
|
end
|
170
174
|
|
171
175
|
factory :schedule, parent: :schedule_base do
|
172
|
-
run_interval 1
|
173
176
|
sequence(:application_run_group_name) { |n| "Run Group #{n}" }
|
174
177
|
end
|
175
178
|
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
+
#############################################################
|
180
|
+
####### Application Schedule Prerequisites ################
|
181
|
+
#############################################################
|
182
|
+
|
183
|
+
factory :run_interval_style, class: ::Naf::RunIntervalStyle do
|
184
|
+
name 'at beginning of day'
|
179
185
|
end
|
180
186
|
|
181
187
|
#############################################################
|
182
|
-
####### Application Schedules
|
188
|
+
####### Application Schedules Prerequisite ################
|
183
189
|
#############################################################
|
184
190
|
|
185
191
|
factory :schedule_prerequisite, class: ::Naf::ApplicationSchedulePrerequisite do
|
@@ -2,26 +2,21 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
module Logical
|
4
4
|
module Naf
|
5
|
+
|
5
6
|
describe Application do
|
6
7
|
let(:columns) { [:id,
|
7
8
|
:title,
|
8
9
|
:short_name,
|
9
10
|
:script_type_name,
|
10
|
-
:
|
11
|
-
:
|
12
|
-
|
13
|
-
:enabled,
|
14
|
-
:enqueue_backlogs,
|
15
|
-
:run_time,
|
16
|
-
:affinities,
|
17
|
-
:prerequisites,
|
18
|
-
:deleted,
|
19
|
-
:visible] }
|
20
|
-
let(:physical_app) { FactoryGirl.create(:application, application_schedule: FactoryGirl.create(:schedule_base)) }
|
11
|
+
:application_schedules,
|
12
|
+
:deleted] }
|
13
|
+
let(:physical_app) { FactoryGirl.create(:application) }
|
21
14
|
let!(:logical_app) { Application.new(physical_app) }
|
22
|
-
let(:scheduled_physical_app) {
|
23
|
-
|
24
|
-
|
15
|
+
let(:scheduled_physical_app) { FactoryGirl.create(:scheduled_application) }
|
16
|
+
|
17
|
+
before do
|
18
|
+
physical_app.application_schedules << FactoryGirl.create(:schedule_base)
|
19
|
+
end
|
25
20
|
|
26
21
|
context "Class Methods" do
|
27
22
|
it "search method should return array of wrapper around physical application" do
|
@@ -39,29 +34,6 @@ module Logical
|
|
39
34
|
it "to_hash should have the specified columns" do
|
40
35
|
logical_app.to_hash.keys.should == columns
|
41
36
|
end
|
42
|
-
|
43
|
-
it "should render run_start_minute" do
|
44
|
-
scheduled_physical_app.application_schedule.run_start_minute.should be_a(Fixnum)
|
45
|
-
|
46
|
-
Application.new(scheduled_physical_app).run_start_minute.should be_a(String)
|
47
|
-
end
|
48
|
-
|
49
|
-
it "should delegate methods to its schedule" do
|
50
|
-
methods = [:application_run_group_restriction_name,
|
51
|
-
:run_interval,
|
52
|
-
:application_run_group_name,
|
53
|
-
:run_start_minute]
|
54
|
-
schedule = scheduled_physical_app.application_schedule
|
55
|
-
logical_scheduled_app = Application.new(scheduled_physical_app)
|
56
|
-
|
57
|
-
methods.each do |m|
|
58
|
-
schedule.should_receive(m).and_return(nil)
|
59
|
-
end
|
60
|
-
|
61
|
-
methods.each do |m|
|
62
|
-
logical_scheduled_app.send(m)
|
63
|
-
end
|
64
|
-
end
|
65
37
|
end
|
66
38
|
|
67
39
|
end
|
@@ -21,7 +21,7 @@ module Logical
|
|
21
21
|
|
22
22
|
describe '#self.all' do
|
23
23
|
it 'return an array of logical wrappers around machines' do
|
24
|
-
::Logical::Naf::Machine.all.map(&:id).should == [physical_machine.id, physical_machine_two.id]
|
24
|
+
::Logical::Naf::Machine.all.map(&:id).sort.should == [physical_machine.id, physical_machine_two.id]
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
@@ -12,10 +12,10 @@ module Naf
|
|
12
12
|
:priority,
|
13
13
|
:visible,
|
14
14
|
:enabled,
|
15
|
-
:run_start_minute,
|
16
15
|
:application_run_group_limit,
|
17
16
|
:application_schedule_prerequisites_attributes,
|
18
|
-
:enqueue_backlogs
|
17
|
+
:enqueue_backlogs,
|
18
|
+
:run_interval_style_id].each do |a|
|
19
19
|
it { should allow_mass_assignment_of(a) }
|
20
20
|
end
|
21
21
|
|
@@ -31,6 +31,7 @@ module Naf
|
|
31
31
|
|
32
32
|
it { should belong_to(:application) }
|
33
33
|
it { should belong_to(:application_run_group_restriction) }
|
34
|
+
it { should belong_to(:run_interval_style) }
|
34
35
|
it { should have_many(:application_schedule_affinity_tabs) }
|
35
36
|
it { should have_many(:affinities) }
|
36
37
|
it { should have_many(:application_schedule_prerequisites) }
|
@@ -71,27 +72,49 @@ module Naf
|
|
71
72
|
# *** Class Methods ***
|
72
73
|
#++++++++++++++++++++++
|
73
74
|
|
75
|
+
let!(:time) { Time.zone.now.beginning_of_day }
|
76
|
+
|
74
77
|
describe "#exact_schedules" do
|
75
|
-
|
76
|
-
|
77
|
-
::Naf::ApplicationSchedule.exact_schedules.should == [schedule]
|
78
|
+
let!(:job) { FactoryGirl.create(:finished_job) }
|
79
|
+
it "return schedule when it is ready" do
|
80
|
+
::Naf::ApplicationSchedule.exact_schedules(time, {}, {}).should == [schedule]
|
81
|
+
end
|
82
|
+
|
83
|
+
it "return no schedules when application has not finished running" do
|
84
|
+
apps = { schedule.id => job }
|
85
|
+
::Naf::ApplicationSchedule.exact_schedules(time, apps, {}).should == []
|
78
86
|
end
|
79
87
|
|
80
|
-
it "return no schedules when
|
81
|
-
schedule.
|
82
|
-
|
88
|
+
it "return no schedules when interval time has not passed" do
|
89
|
+
apps = { schedule.id => job }
|
90
|
+
schedule.run_interval = 20
|
91
|
+
::Naf::ApplicationSchedule.exact_schedules(time, {}, apps).should == []
|
92
|
+
end
|
93
|
+
|
94
|
+
it "return no schedules when it is not time to run the application" do
|
95
|
+
time = Time.zone.now
|
96
|
+
::Naf::ApplicationSchedule.exact_schedules(time, {}, {}).should == []
|
83
97
|
end
|
84
98
|
end
|
85
99
|
|
86
100
|
describe "#relative_schedules" do
|
87
|
-
|
88
|
-
|
89
|
-
|
101
|
+
let!(:job) { FactoryGirl.create(:finished_job) }
|
102
|
+
it "return schedule when it is ready" do
|
103
|
+
schedule.run_interval_style.name = 'after previous run'
|
104
|
+
schedule.run_interval_style.save
|
105
|
+
|
106
|
+
::Naf::ApplicationSchedule.relative_schedules(time, {}, {}).should == [schedule]
|
107
|
+
end
|
108
|
+
|
109
|
+
it "return no schedules when application has not finished running" do
|
110
|
+
apps = { schedule.application_id => job }
|
111
|
+
::Naf::ApplicationSchedule.relative_schedules(time, apps, {}).should == []
|
90
112
|
end
|
91
113
|
|
92
|
-
it "return no schedules when
|
93
|
-
schedule.
|
94
|
-
|
114
|
+
it "return no schedules when interval time has not passed" do
|
115
|
+
apps = { schedule.application_id => job }
|
116
|
+
schedule.run_interval = 20
|
117
|
+
::Naf::ApplicationSchedule.relative_schedules(time, {}, apps).should == []
|
95
118
|
end
|
96
119
|
end
|
97
120
|
|
@@ -107,7 +130,7 @@ module Naf
|
|
107
130
|
|
108
131
|
it "return correct parsing of app" do
|
109
132
|
schedule.to_s.should == "::Naf::ApplicationSchedule<ENABLED, id: #{schedule.id}, " +
|
110
|
-
"\"App1\",
|
133
|
+
"\"App1\", #{::Logical::Naf::ApplicationSchedule.new(schedule).display}>"
|
111
134
|
end
|
112
135
|
end
|
113
136
|
|
@@ -127,40 +150,5 @@ module Naf
|
|
127
150
|
end
|
128
151
|
end
|
129
152
|
|
130
|
-
describe "#enabled_application_id_unique" do
|
131
|
-
let(:error_message) { {
|
132
|
-
application_id: ['is enabled and has already been taken']
|
133
|
-
} }
|
134
|
-
|
135
|
-
it "return nil if enabled is false" do
|
136
|
-
schedule.enabled = false
|
137
|
-
schedule.enabled_application_id_unique.should == nil
|
138
|
-
end
|
139
|
-
|
140
|
-
it "return nil if enabled is false" do
|
141
|
-
schedule2 = FactoryGirl.create(:schedule)
|
142
|
-
schedule2.application_id = schedule.application_id
|
143
|
-
schedule2.enabled_application_id_unique
|
144
|
-
|
145
|
-
schedule2.errors.messages.should == error_message
|
146
|
-
end
|
147
|
-
end
|
148
|
-
|
149
|
-
describe "#run_interval_at_time_check" do
|
150
|
-
let(:error_messages) { {
|
151
|
-
run_interval: ['or Run start minute must be nil'],
|
152
|
-
run_start_minute: ['or Run interval must be nil']
|
153
|
-
} }
|
154
|
-
|
155
|
-
before do
|
156
|
-
schedule.run_start_minute = 1
|
157
|
-
schedule.run_interval_at_time_check
|
158
|
-
end
|
159
|
-
|
160
|
-
it "add errors to schedule" do
|
161
|
-
schedule.errors.messages.should == error_messages
|
162
|
-
end
|
163
|
-
end
|
164
|
-
|
165
153
|
end
|
166
154
|
end
|
@@ -10,8 +10,8 @@ module Naf
|
|
10
10
|
:log_level,
|
11
11
|
:short_name,
|
12
12
|
:deleted,
|
13
|
-
:
|
14
|
-
:
|
13
|
+
:application_schedules,
|
14
|
+
:application_schedules_attributes].each do |a|
|
15
15
|
it { should allow_mass_assignment_of(a) }
|
16
16
|
end
|
17
17
|
|
@@ -26,7 +26,7 @@ module Naf
|
|
26
26
|
#+++++++++++++++++++++
|
27
27
|
|
28
28
|
it { should belong_to(:application_type) }
|
29
|
-
it { should
|
29
|
+
it { should have_many(:application_schedules) }
|
30
30
|
it { should have_many(:historical_jobs) }
|
31
31
|
|
32
32
|
#--------------------
|
@@ -11,6 +11,7 @@ module Naf
|
|
11
11
|
|
12
12
|
# Mass-assignment
|
13
13
|
[:application_id,
|
14
|
+
:application_schedule_id,
|
14
15
|
:application_type_id,
|
15
16
|
:command,
|
16
17
|
:application_run_group_restriction_id,
|
@@ -40,6 +41,7 @@ module Naf
|
|
40
41
|
# *** Associations ***
|
41
42
|
#+++++++++++++++++++++
|
42
43
|
|
44
|
+
it { should belong_to(:application_schedule) }
|
43
45
|
it { should belong_to(:application_type) }
|
44
46
|
it { should belong_to(:started_on_machine) }
|
45
47
|
it { should belong_to(:marked_dead_by_machine) }
|
@@ -103,13 +105,13 @@ module Naf
|
|
103
105
|
|
104
106
|
describe "#application_last_runs" do
|
105
107
|
before do
|
106
|
-
historical_job.update_attributes!(
|
108
|
+
historical_job.update_attributes!(application_schedule_id: FactoryGirl.create(:scheduled_application).id)
|
107
109
|
end
|
108
110
|
|
109
111
|
it "return job when it finished running" do
|
110
112
|
historical_job.finished_at = Time.zone.now
|
111
113
|
historical_job.save!
|
112
|
-
::Naf::HistoricalJob.application_last_runs.first.
|
114
|
+
::Naf::HistoricalJob.application_last_runs.first.application_schedule.should == historical_job.application_schedule
|
113
115
|
end
|
114
116
|
|
115
117
|
it "return nil when job has not finished running" do
|
@@ -4,6 +4,7 @@ module Naf
|
|
4
4
|
describe QueuedJob do
|
5
5
|
# Mass-assignment
|
6
6
|
[:application_id,
|
7
|
+
:application_schedule_id,
|
7
8
|
:application_type_id,
|
8
9
|
:command,
|
9
10
|
:application_run_group_restriction_id,
|
@@ -25,6 +26,7 @@ module Naf
|
|
25
26
|
|
26
27
|
it { should belong_to(:historical_job) }
|
27
28
|
it { should belong_to(:application) }
|
29
|
+
it { should belong_to(:application_schedule) }
|
28
30
|
it { should belong_to(:application_type) }
|
29
31
|
it { should belong_to(:application_run_group_restriction) }
|
30
32
|
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Naf
|
4
|
+
describe RunIntervalStyle do
|
5
|
+
# Mass-assignment
|
6
|
+
[:name].each do |a|
|
7
|
+
it { should allow_mass_assignment_of(a) }
|
8
|
+
end
|
9
|
+
|
10
|
+
[:id,
|
11
|
+
:created_at].each do |a|
|
12
|
+
it { should_not allow_mass_assignment_of(a) }
|
13
|
+
end
|
14
|
+
|
15
|
+
#---------------------
|
16
|
+
# *** Associations ***
|
17
|
+
#+++++++++++++++++++++
|
18
|
+
|
19
|
+
it { should have_many(:application_schedules) }
|
20
|
+
|
21
|
+
#--------------------
|
22
|
+
# *** Validations ***
|
23
|
+
#++++++++++++++++++++
|
24
|
+
|
25
|
+
it { should validate_presence_of(:name) }
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
@@ -6,6 +6,7 @@ module Naf
|
|
6
6
|
|
7
7
|
# Mass-assignment
|
8
8
|
[:application_id,
|
9
|
+
:application_schedule_id,
|
9
10
|
:application_type_id,
|
10
11
|
:command,
|
11
12
|
:application_run_group_restriction_id,
|
@@ -33,6 +34,7 @@ module Naf
|
|
33
34
|
|
34
35
|
it { should belong_to(:historical_job) }
|
35
36
|
it { should belong_to(:application) }
|
37
|
+
it { should belong_to(:application_schedule) }
|
36
38
|
it { should belong_to(:application_type) }
|
37
39
|
it { should belong_to(:application_run_group_restriction) }
|
38
40
|
it { should belong_to(:started_on_machine) }
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: naf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0
|
4
|
+
version: 2.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2014-01-
|
15
|
+
date: 2014-01-24 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: rails
|
@@ -221,6 +221,7 @@ files:
|
|
221
221
|
- app/assets/images/ui-icons_cd0a0a_256x240.png
|
222
222
|
- app/assets/images/up_arrow.gif
|
223
223
|
- app/assets/javascripts/col_reorder_with_resize.js
|
224
|
+
- app/assets/javascripts/dataTablesTemplates/application_schedules.js
|
224
225
|
- app/assets/javascripts/dataTablesTemplates/applications.js
|
225
226
|
- app/assets/javascripts/dataTablesTemplates/jobs.js
|
226
227
|
- app/assets/javascripts/dataTablesTemplates/machine_runner_invocations.js
|
@@ -240,6 +241,7 @@ files:
|
|
240
241
|
- app/controllers/naf/affinities_controller.rb
|
241
242
|
- app/controllers/naf/application_controller.rb
|
242
243
|
- app/controllers/naf/application_schedule_affinity_tabs_controller.rb
|
244
|
+
- app/controllers/naf/application_schedules_controller.rb
|
243
245
|
- app/controllers/naf/applications_controller.rb
|
244
246
|
- app/controllers/naf/historical_job_affinity_tabs_controller.rb
|
245
247
|
- app/controllers/naf/historical_jobs_controller.rb
|
@@ -256,6 +258,7 @@ files:
|
|
256
258
|
- app/helpers/naf/application_helper.rb
|
257
259
|
- app/helpers/naf/time_helper.rb
|
258
260
|
- app/models/logical/naf/application.rb
|
261
|
+
- app/models/logical/naf/application_schedule.rb
|
259
262
|
- app/models/logical/naf/construction_zone/ad_hoc_work_order.rb
|
260
263
|
- app/models/logical/naf/construction_zone/application_schedule_work_order.rb
|
261
264
|
- app/models/logical/naf/construction_zone/application_work_order.rb
|
@@ -265,7 +268,6 @@ files:
|
|
265
268
|
- app/models/logical/naf/construction_zone/work_order.rb
|
266
269
|
- app/models/logical/naf/create_infrastructure.rb
|
267
270
|
- app/models/logical/naf/job.rb
|
268
|
-
- app/models/logical/naf/job_creator.rb
|
269
271
|
- app/models/logical/naf/job_fetcher.rb
|
270
272
|
- app/models/logical/naf/job_statuses/errored.rb
|
271
273
|
- app/models/logical/naf/job_statuses/finished.rb
|
@@ -311,10 +313,13 @@ files:
|
|
311
313
|
- app/models/naf/machine_runner_invocation.rb
|
312
314
|
- app/models/naf/naf_base.rb
|
313
315
|
- app/models/naf/queued_job.rb
|
316
|
+
- app/models/naf/run_interval_style.rb
|
314
317
|
- app/models/naf/running_job.rb
|
315
318
|
- app/models/process/naf/application.rb
|
319
|
+
- app/models/process/naf/data_migration/backfill_application_schedule_run_interval.rb
|
316
320
|
- app/models/process/naf/janitor.rb
|
317
321
|
- app/models/process/naf/log_archiver.rb
|
322
|
+
- app/models/process/naf/log_reader.rb
|
318
323
|
- app/models/process/naf/machine_manager.rb
|
319
324
|
- app/models/process/naf/machine_upgrader.rb
|
320
325
|
- app/models/process/naf/runner.rb
|
@@ -327,8 +332,13 @@ files:
|
|
327
332
|
- app/views/naf/application_schedule_affinity_tabs/_form.html.erb
|
328
333
|
- app/views/naf/application_schedule_affinity_tabs/edit.html.erb
|
329
334
|
- app/views/naf/application_schedule_affinity_tabs/new.html.erb
|
330
|
-
- app/views/naf/
|
331
|
-
- app/views/naf/
|
335
|
+
- app/views/naf/application_schedules/_application_schedule_prerequisites.html.erb
|
336
|
+
- app/views/naf/application_schedules/_form.html.erb
|
337
|
+
- app/views/naf/application_schedules/edit.html.erb
|
338
|
+
- app/views/naf/application_schedules/index.html.erb
|
339
|
+
- app/views/naf/application_schedules/index.json.erb
|
340
|
+
- app/views/naf/application_schedules/new.html.erb
|
341
|
+
- app/views/naf/application_schedules/show.html.erb
|
332
342
|
- app/views/naf/applications/_form.html.erb
|
333
343
|
- app/views/naf/applications/_search_container.html.erb
|
334
344
|
- app/views/naf/applications/_show.html.erb
|
@@ -404,6 +414,8 @@ files:
|
|
404
414
|
- db/migrate/20120820023848_naf_schema.rb
|
405
415
|
- db/migrate/20131106162436_add_uuid_column_to_machine_runner_invocations.rb
|
406
416
|
- db/migrate/20131121185222_move_tabs_column_from_historical_jobs_to_running_jobs.rb
|
417
|
+
- db/migrate/20131219195439_add_run_interval_styles_table.rb
|
418
|
+
- db/migrate/20140113183243_drop_run_start_minute_from_application_schedules.rb
|
407
419
|
- doc/README_FOR_APP
|
408
420
|
- lib/generators/naf_generator.rb
|
409
421
|
- lib/generators/templates/config/logging/af.yml
|
@@ -471,7 +483,6 @@ files:
|
|
471
483
|
- spec/factories/naf.rb
|
472
484
|
- spec/helpers/naf/application_helper_spec.rb
|
473
485
|
- spec/models/logical/naf/application_spec.rb
|
474
|
-
- spec/models/logical/naf/job_creator_spec.rb
|
475
486
|
- spec/models/logical/naf/job_fetcher_spec.rb
|
476
487
|
- spec/models/logical/naf/job_spec.rb
|
477
488
|
- spec/models/logical/naf/log_file_spec.rb
|
@@ -499,6 +510,7 @@ files:
|
|
499
510
|
- spec/models/naf/machine_spec.rb
|
500
511
|
- spec/models/naf/naf_base_spec.rb
|
501
512
|
- spec/models/naf/queued_job_spec.rb
|
513
|
+
- spec/models/naf/run_interval_style_spec.rb
|
502
514
|
- spec/models/naf/running_job_spec.rb
|
503
515
|
- spec/models/process/naf/application_spec.rb
|
504
516
|
- spec/models/process/naf/janitor_spec.rb
|
@@ -585,7 +597,6 @@ test_files:
|
|
585
597
|
- spec/factories/naf.rb
|
586
598
|
- spec/helpers/naf/application_helper_spec.rb
|
587
599
|
- spec/models/logical/naf/application_spec.rb
|
588
|
-
- spec/models/logical/naf/job_creator_spec.rb
|
589
600
|
- spec/models/logical/naf/job_fetcher_spec.rb
|
590
601
|
- spec/models/logical/naf/job_spec.rb
|
591
602
|
- spec/models/logical/naf/log_file_spec.rb
|
@@ -613,6 +624,7 @@ test_files:
|
|
613
624
|
- spec/models/naf/machine_spec.rb
|
614
625
|
- spec/models/naf/naf_base_spec.rb
|
615
626
|
- spec/models/naf/queued_job_spec.rb
|
627
|
+
- spec/models/naf/run_interval_style_spec.rb
|
616
628
|
- spec/models/naf/running_job_spec.rb
|
617
629
|
- spec/models/process/naf/application_spec.rb
|
618
630
|
- spec/models/process/naf/janitor_spec.rb
|