canvas_sync 0.17.0.beta2 → 0.17.0.beta7
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.
- checksums.yaml +4 -4
- data/lib/canvas_sync.rb +2 -1
- data/lib/canvas_sync/job_batches/batch.rb +52 -40
- data/lib/canvas_sync/job_batches/callback.rb +14 -15
- data/lib/canvas_sync/job_batches/chain_builder.rb +17 -0
- data/lib/canvas_sync/job_batches/jobs/concurrent_batch_job.rb +1 -0
- data/lib/canvas_sync/job_batches/jobs/serial_batch_job.rb +3 -1
- data/lib/canvas_sync/job_batches/sidekiq.rb +2 -0
- data/lib/canvas_sync/job_batches/status.rb +21 -1
- data/lib/canvas_sync/jobs/begin_sync_chain_job.rb +2 -1
- data/lib/canvas_sync/jobs/sync_provisioning_report_job.rb +0 -3
- data/lib/canvas_sync/jobs/sync_terms_job.rb +3 -1
- data/lib/canvas_sync/version.rb +1 -1
- data/spec/canvas_sync/canvas_sync_spec.rb +20 -10
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/development.log +1248 -0
- data/spec/dummy/log/test.log +43258 -0
- data/spec/job_batching/batch_spec.rb +12 -3
- data/spec/job_batching/flow_spec.rb +0 -3
- data/spec/support/fixtures/reports/provisioning_csv_unzipped/courses.csv +3 -0
- data/spec/support/fixtures/reports/provisioning_csv_unzipped/users.csv +4 -0
- metadata +12 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 92aceb45ca42ac3cedcb449ea12ee0c04f437239ccc7375995f56939216ea473
|
4
|
+
data.tar.gz: 37b66818e5ba35d6b0d159ef817cbaf3c8bf66b8194e21c85876f2fdebaa30a0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 22b6826841d14ef7c9bbde34ba0d17484183a8f48247167b08b4332ced3b2b8e5bff7d2d4ea6e6e8246ea720efd79998b46768c973303094839104804c827e26
|
7
|
+
data.tar.gz: da90ec118b97081ce4f54de372e288d0033f76d91e1401ef1bcf70d7a62d589a0e08df18a83030da4e2f0b14bffe51cc33b3b97c198ec7f70f58874b118c2fd2
|
data/lib/canvas_sync.rb
CHANGED
@@ -161,6 +161,7 @@ module CanvasSync
|
|
161
161
|
###############################
|
162
162
|
|
163
163
|
per_term_chain = JobBatches::ChainBuilder.new(model_job_map[:terms])
|
164
|
+
per_term_chain.params[:term_scope] = term_scope
|
164
165
|
current_chain << per_term_chain
|
165
166
|
current_chain = per_term_chain
|
166
167
|
|
@@ -171,7 +172,7 @@ module CanvasSync
|
|
171
172
|
try_add_model_job.call('context_module_items')
|
172
173
|
|
173
174
|
current_chain.insert(
|
174
|
-
generate_provisioning_jobs(models, options,
|
175
|
+
generate_provisioning_jobs(models, options, only_split: ['users'])
|
175
176
|
)
|
176
177
|
|
177
178
|
###############################
|
@@ -118,40 +118,29 @@ module CanvasSync
|
|
118
118
|
@initialized = true
|
119
119
|
end
|
120
120
|
|
121
|
-
@ready_to_queue = []
|
121
|
+
job_queue = @ready_to_queue = []
|
122
|
+
|
123
|
+
puts "Beginning Batch #{@bidkey}"
|
122
124
|
|
123
125
|
begin
|
124
126
|
parent = Thread.current[:batch]
|
125
127
|
Thread.current[:batch] = self
|
126
128
|
yield
|
127
129
|
ensure
|
130
|
+
@ready_to_queue = nil
|
131
|
+
append_jobs(job_queue)
|
128
132
|
Thread.current[:batch] = parent
|
129
133
|
end
|
130
134
|
|
131
|
-
|
132
|
-
r.multi do
|
133
|
-
if parent_bid
|
134
|
-
r.hincrby("BID-#{parent_bid}", "children", 1)
|
135
|
-
r.hincrby("BID-#{parent_bid}", "total", @ready_to_queue.size)
|
136
|
-
r.expire("BID-#{parent_bid}", BID_EXPIRE_TTL)
|
137
|
-
end
|
138
|
-
|
139
|
-
r.hincrby(@bidkey, "pending", @ready_to_queue.size)
|
140
|
-
r.hincrby(@bidkey, "total", @ready_to_queue.size)
|
141
|
-
r.expire(@bidkey, BID_EXPIRE_TTL)
|
142
|
-
|
143
|
-
if @ready_to_queue.size > 0
|
144
|
-
r.sadd(@bidkey + "-jids", @ready_to_queue)
|
145
|
-
r.expire(@bidkey + "-jids", BID_EXPIRE_TTL)
|
146
|
-
end
|
147
|
-
end
|
148
|
-
end
|
149
|
-
|
150
|
-
@ready_to_queue
|
135
|
+
job_queue
|
151
136
|
end
|
152
137
|
|
153
138
|
def increment_job_queue(jid)
|
154
|
-
@ready_to_queue
|
139
|
+
if @ready_to_queue
|
140
|
+
@ready_to_queue << jid
|
141
|
+
else
|
142
|
+
append_jobs([jid])
|
143
|
+
end
|
155
144
|
end
|
156
145
|
|
157
146
|
def invalidate_all
|
@@ -214,6 +203,27 @@ module CanvasSync
|
|
214
203
|
@pending_attrs = {}
|
215
204
|
end
|
216
205
|
|
206
|
+
def append_jobs(jids)
|
207
|
+
redis do |r|
|
208
|
+
r.multi do
|
209
|
+
if parent_bid
|
210
|
+
r.hincrby("BID-#{parent_bid}", "children", 1)
|
211
|
+
r.hincrby("BID-#{parent_bid}", "total", jids.size)
|
212
|
+
r.expire("BID-#{parent_bid}", BID_EXPIRE_TTL)
|
213
|
+
end
|
214
|
+
|
215
|
+
r.hincrby(@bidkey, "pending", jids.size)
|
216
|
+
r.hincrby(@bidkey, "total", jids.size)
|
217
|
+
r.expire(@bidkey, BID_EXPIRE_TTL)
|
218
|
+
|
219
|
+
if jids.size > 0
|
220
|
+
r.sadd(@bidkey + "-jids", jids)
|
221
|
+
r.expire(@bidkey + "-jids", BID_EXPIRE_TTL)
|
222
|
+
end
|
223
|
+
end
|
224
|
+
end
|
225
|
+
end
|
226
|
+
|
217
227
|
class << self
|
218
228
|
def process_failed_job(bid, jid)
|
219
229
|
_, pending, failed, children, complete, parent_bid = redis do |r|
|
@@ -223,7 +233,7 @@ module CanvasSync
|
|
223
233
|
r.hincrby("BID-#{bid}", "pending", 0)
|
224
234
|
r.scard("BID-#{bid}-failed")
|
225
235
|
r.hincrby("BID-#{bid}", "children", 0)
|
226
|
-
r.scard("BID-#{bid}-complete")
|
236
|
+
r.scard("BID-#{bid}-batches-complete")
|
227
237
|
r.hget("BID-#{bid}", "parent_bid")
|
228
238
|
|
229
239
|
r.expire("BID-#{bid}-failed", BID_EXPIRE_TTL)
|
@@ -253,7 +263,7 @@ module CanvasSync
|
|
253
263
|
|
254
264
|
r.scard("BID-#{bid}-dead")
|
255
265
|
r.hincrby("BID-#{bid}", "children", 0)
|
256
|
-
r.scard("BID-#{bid}-complete")
|
266
|
+
r.scard("BID-#{bid}-batches-complete")
|
257
267
|
r.hget("BID-#{bid}", "parent_bid")
|
258
268
|
|
259
269
|
r.expire("BID-#{bid}-dead", BID_EXPIRE_TTL)
|
@@ -273,17 +283,18 @@ module CanvasSync
|
|
273
283
|
end
|
274
284
|
|
275
285
|
def process_successful_job(bid, jid)
|
276
|
-
failed, pending, children, complete, success, total, parent_bid = redis do |r|
|
286
|
+
_, failed, pending, children, complete, success, total, parent_bid = redis do |r|
|
277
287
|
r.multi do
|
288
|
+
r.srem("BID-#{bid}-failed", jid)
|
289
|
+
|
278
290
|
r.scard("BID-#{bid}-failed")
|
279
291
|
r.hincrby("BID-#{bid}", "pending", -1)
|
280
292
|
r.hincrby("BID-#{bid}", "children", 0)
|
281
|
-
r.scard("BID-#{bid}-complete")
|
282
|
-
r.scard("BID-#{bid}-success")
|
293
|
+
r.scard("BID-#{bid}-batches-complete")
|
294
|
+
r.scard("BID-#{bid}-batches-success")
|
283
295
|
r.hget("BID-#{bid}", "total")
|
284
296
|
r.hget("BID-#{bid}", "parent_bid")
|
285
297
|
|
286
|
-
r.srem("BID-#{bid}-failed", jid)
|
287
298
|
r.srem("BID-#{bid}-jids", jid)
|
288
299
|
r.expire("BID-#{bid}", BID_EXPIRE_TTL)
|
289
300
|
end
|
@@ -358,18 +369,19 @@ module CanvasSync
|
|
358
369
|
|
359
370
|
def cleanup_redis(bid)
|
360
371
|
logger.debug {"Cleaning redis of batch #{bid}"}
|
361
|
-
redis do |r|
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
372
|
+
# redis do |r|
|
373
|
+
# r.del(
|
374
|
+
# "BID-#{bid}",
|
375
|
+
# "BID-#{bid}-callbacks-complete",
|
376
|
+
# "BID-#{bid}-callbacks-success",
|
377
|
+
# "BID-#{bid}-failed",
|
378
|
+
|
379
|
+
# "BID-#{bid}-batches-success",
|
380
|
+
# "BID-#{bid}-batches-complete",
|
381
|
+
# "BID-#{bid}-batches-failed",
|
382
|
+
# "BID-#{bid}-jids",
|
383
|
+
# )
|
384
|
+
# end
|
373
385
|
end
|
374
386
|
|
375
387
|
def redis(*args, &blk)
|
@@ -87,13 +87,16 @@ module CanvasSync
|
|
87
87
|
def success(bid, status, parent_bid)
|
88
88
|
return unless parent_bid
|
89
89
|
|
90
|
-
_, _, success, _, complete, pending, children, failure = Batch.redis do |r|
|
90
|
+
_, _, success, _, _, complete, pending, children, failure = Batch.redis do |r|
|
91
91
|
r.multi do
|
92
|
-
r.sadd("BID-#{parent_bid}-success", bid)
|
93
|
-
r.expire("BID-#{parent_bid}-success", Batch::BID_EXPIRE_TTL)
|
94
|
-
r.scard("BID-#{parent_bid}-success")
|
95
|
-
|
96
|
-
r.
|
92
|
+
r.sadd("BID-#{parent_bid}-batches-success", bid)
|
93
|
+
r.expire("BID-#{parent_bid}-batches-success", Batch::BID_EXPIRE_TTL)
|
94
|
+
r.scard("BID-#{parent_bid}-batches-success")
|
95
|
+
|
96
|
+
r.srem("BID-#{parent_bid}-batches-failed", bid)
|
97
|
+
r.sadd("BID-#{parent_bid}-batches-complete", bid)
|
98
|
+
r.scard("BID-#{parent_bid}-batches-complete")
|
99
|
+
|
97
100
|
r.hincrby("BID-#{parent_bid}", "pending", 0)
|
98
101
|
r.hincrby("BID-#{parent_bid}", "children", 0)
|
99
102
|
r.scard("BID-#{parent_bid}-failed")
|
@@ -112,7 +115,7 @@ module CanvasSync
|
|
112
115
|
r.multi do
|
113
116
|
r.hincrby("BID-#{bid}", "pending", 0)
|
114
117
|
r.hincrby("BID-#{bid}", "children", 0)
|
115
|
-
r.scard("BID-#{bid}-success")
|
118
|
+
r.scard("BID-#{bid}-batches-success")
|
116
119
|
end
|
117
120
|
end
|
118
121
|
|
@@ -127,10 +130,11 @@ module CanvasSync
|
|
127
130
|
# callback may add more jobs to the parent batch
|
128
131
|
|
129
132
|
Batch.logger.debug {"Finalize parent complete bid: #{parent_bid}"}
|
130
|
-
_, complete, pending, children, failure = Batch.redis do |r|
|
133
|
+
_, _, complete, pending, children, failure = Batch.redis do |r|
|
131
134
|
r.multi do
|
132
|
-
r.sadd("BID-#{parent_bid}-complete", bid)
|
133
|
-
r.
|
135
|
+
r.sadd("BID-#{parent_bid}-batches-complete", bid)
|
136
|
+
r.sadd("BID-#{parent_bid}-batches-failed", bid)
|
137
|
+
r.scard("BID-#{parent_bid}-batches-complete")
|
134
138
|
r.hincrby("BID-#{parent_bid}", "pending", 0)
|
135
139
|
r.hincrby("BID-#{parent_bid}", "children", 0)
|
136
140
|
r.scard("BID-#{parent_bid}-failed")
|
@@ -141,11 +145,6 @@ module CanvasSync
|
|
141
145
|
end
|
142
146
|
end
|
143
147
|
end
|
144
|
-
|
145
|
-
def cleanup_redis bid, callback_bid=nil
|
146
|
-
Batch.cleanup_redis bid
|
147
|
-
Batch.cleanup_redis callback_bid if callback_bid
|
148
|
-
end
|
149
148
|
end
|
150
149
|
end
|
151
150
|
end
|
@@ -104,6 +104,16 @@ module CanvasSync
|
|
104
104
|
end
|
105
105
|
end
|
106
106
|
|
107
|
+
# Legacy Support
|
108
|
+
def merge_options(job, options)
|
109
|
+
matching_jobs = find_matching_jobs(job)
|
110
|
+
|
111
|
+
matching_jobs.each do |j|
|
112
|
+
j[:options] ||= {}
|
113
|
+
j[:options].deep_merge!(options)
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
107
117
|
private
|
108
118
|
|
109
119
|
def find_matching_jobs(search_job, parent_job = self.base_job)
|
@@ -145,6 +155,13 @@ module CanvasSync
|
|
145
155
|
def enqueue_job(job_def)
|
146
156
|
job_class = job_def[:job].constantize
|
147
157
|
job_options = job_def[:parameters] || []
|
158
|
+
|
159
|
+
# Legacy Support
|
160
|
+
if job_def[:options]
|
161
|
+
job_options << {} unless job_options[-1].is_a?(Hash)
|
162
|
+
job_options[-1].merge!(job_def[:options])
|
163
|
+
end
|
164
|
+
|
148
165
|
if job_class.respond_to? :perform_async
|
149
166
|
job_class.perform_async(*job_options)
|
150
167
|
else
|
@@ -21,6 +21,7 @@ module CanvasSync
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
+
root_batch.description = "Serial Batch Root (#{serial_id})"
|
24
25
|
root_batch.allow_context_changes = true
|
25
26
|
root_batch.context = context
|
26
27
|
root_batch.on(:success, "#{self.class.to_s}.cleanup_redis", serial_batch_id: serial_id)
|
@@ -61,7 +62,8 @@ module CanvasSync
|
|
61
62
|
|
62
63
|
Batch.new(root_bid).jobs do
|
63
64
|
Batch.new.tap do |batch|
|
64
|
-
|
65
|
+
batch.description = "Serial Batch Fiber (#{serial_id})"
|
66
|
+
batch.on(:success, "#{self.to_s}.job_succeeded_callback", serial_batch_id: serial_id)
|
65
67
|
batch.jobs do
|
66
68
|
ChainBuilder.enqueue_job(next_job)
|
67
69
|
end
|
@@ -84,6 +84,8 @@ module CanvasSync
|
|
84
84
|
end
|
85
85
|
end
|
86
86
|
::Sidekiq.const_set(:Batch, CanvasSync::JobBatches::Batch)
|
87
|
+
# This alias helps apartment-sidekiq set itself up correctly
|
88
|
+
::Sidekiq::Batch.const_set(:Server, CanvasSync::JobBatches::Sidekiq::ServerMiddleware)
|
87
89
|
::Sidekiq::Worker.send(:include, JobBatches::Sidekiq::WorkerExtension)
|
88
90
|
end
|
89
91
|
end
|
@@ -40,10 +40,26 @@ module CanvasSync
|
|
40
40
|
'true' == Batch.redis { |r| r.hget("BID-#{bid}", 'complete') }
|
41
41
|
end
|
42
42
|
|
43
|
+
def success?
|
44
|
+
'true' == Batch.redis { |r| r.hget("BID-#{bid}", 'success') }
|
45
|
+
end
|
46
|
+
|
43
47
|
def child_count
|
44
48
|
Batch.redis { |r| r.hget("BID-#{bid}", 'children') }.to_i
|
45
49
|
end
|
46
50
|
|
51
|
+
def completed_children_count
|
52
|
+
Batch.redis { |r| r.scard("BID-#{bid}-batches-complete") }.to_i
|
53
|
+
end
|
54
|
+
|
55
|
+
def successful_children_count
|
56
|
+
Batch.redis { |r| r.scard("BID-#{bid}-batches-success") }.to_i
|
57
|
+
end
|
58
|
+
|
59
|
+
def failed_children_count
|
60
|
+
Batch.redis { |r| r.scard("BID-#{bid}-batches-failed") }.to_i
|
61
|
+
end
|
62
|
+
|
47
63
|
def data
|
48
64
|
{
|
49
65
|
bid: bid,
|
@@ -52,9 +68,13 @@ module CanvasSync
|
|
52
68
|
pending: pending,
|
53
69
|
created_at: created_at,
|
54
70
|
complete: complete?,
|
71
|
+
success: success?,
|
55
72
|
failure_info: failure_info,
|
56
73
|
parent_bid: parent_bid,
|
57
|
-
child_count: child_count
|
74
|
+
child_count: child_count,
|
75
|
+
completed_children_count: completed_children_count,
|
76
|
+
successful_children_count: successful_children_count,
|
77
|
+
failed_children_count: failed_children_count,
|
58
78
|
}
|
59
79
|
end
|
60
80
|
end
|
@@ -15,6 +15,7 @@ module CanvasSync
|
|
15
15
|
JobBatches::Batch.new.tap do |b|
|
16
16
|
b.description = "CanvasSync Root Batch"
|
17
17
|
b.on(:complete, "#{self.class.to_s}.batch_completed", sync_batch_id: sync_batch.id)
|
18
|
+
b.on(:success, "#{self.class.to_s}.batch_completed", sync_batch_id: sync_batch.id)
|
18
19
|
b.context = globals
|
19
20
|
b.jobs do
|
20
21
|
JobBatches::SerialBatchJob.perform_now(chain_definition)
|
@@ -25,7 +26,7 @@ module CanvasSync
|
|
25
26
|
def self.batch_completed(status, options)
|
26
27
|
sbatch = SyncBatch.find(options['sync_batch_id'])
|
27
28
|
sbatch.update!(
|
28
|
-
status: status.
|
29
|
+
status: status.success? ? 'completed' : 'failed',
|
29
30
|
completed_at: DateTime.now,
|
30
31
|
)
|
31
32
|
end
|
@@ -2,9 +2,6 @@ module CanvasSync
|
|
2
2
|
module Jobs
|
3
3
|
# ActiveJob class that starts a Canvas provisioning report
|
4
4
|
class SyncProvisioningReportJob < CanvasSync::Job
|
5
|
-
# @param options [Hash] If options contains a :term_scope a seperate provisioning report
|
6
|
-
# will be started for each term in that scope. :models should be an array of
|
7
|
-
# models to sync.
|
8
5
|
def perform(options)
|
9
6
|
start_report(report_params(options), options)
|
10
7
|
end
|
@@ -5,7 +5,9 @@ module CanvasSync
|
|
5
5
|
#
|
6
6
|
# Terms are pre-synced so that provisioning reports can be scoped to term.
|
7
7
|
#
|
8
|
-
# @param options [Hash]
|
8
|
+
# @param options [Hash] If options contains a :term_scope a seperate provisioning report
|
9
|
+
# will be started for each term in that scope. :models should be an array of
|
10
|
+
# models to sync.
|
9
11
|
def perform(options)
|
10
12
|
CanvasSync.get_canvas_sync_client(batch_context).terms("self").all_pages!.each do |term_params|
|
11
13
|
if account_id = batch_context[:account_id]
|
data/lib/canvas_sync/version.rb
CHANGED
@@ -36,8 +36,9 @@ RSpec.describe CanvasSync do
|
|
36
36
|
{:job=>"CanvasSync::JobBatches::ConcurrentBatchJob", :parameters=>[[
|
37
37
|
{:job=>"CanvasSync::Jobs::SyncProvisioningReportJob", :options=>{:models=>["users"], :b=>2}},
|
38
38
|
{:job=>"CanvasSync::Jobs::SyncTermsJob", :parameters=>[{
|
39
|
+
:term_scope=>"active",
|
39
40
|
:sub_jobs=>[
|
40
|
-
{:job=>"CanvasSync::Jobs::SyncProvisioningReportJob", :options=>{:models=>["courses"], :
|
41
|
+
{:job=>"CanvasSync::Jobs::SyncProvisioningReportJob", :options=>{:models=>["courses"], :c=>3}}
|
41
42
|
]
|
42
43
|
}]}
|
43
44
|
]]}
|
@@ -54,8 +55,9 @@ RSpec.describe CanvasSync do
|
|
54
55
|
{:job=>"CanvasSync::JobBatches::ConcurrentBatchJob", :parameters=>[[
|
55
56
|
{:job=>"CanvasSync::Jobs::SyncProvisioningReportJob", :options=>{:models=>["users"]}},
|
56
57
|
{:job=>"CanvasSync::Jobs::SyncTermsJob", :parameters=>[{
|
58
|
+
:term_scope=>"active",
|
57
59
|
:sub_jobs=>[
|
58
|
-
{:job=>"CanvasSync::Jobs::SyncProvisioningReportJob", :options=>{:models=>["courses"]
|
60
|
+
{:job=>"CanvasSync::Jobs::SyncProvisioningReportJob", :options=>{:models=>["courses"]}}
|
59
61
|
]
|
60
62
|
}]}
|
61
63
|
]]}
|
@@ -72,8 +74,9 @@ RSpec.describe CanvasSync do
|
|
72
74
|
:parameters => [[
|
73
75
|
{:job=>"CanvasSync::JobBatches::ConcurrentBatchJob", :parameters=>[[
|
74
76
|
{:job=>"CanvasSync::Jobs::SyncTermsJob", :parameters=>[{
|
77
|
+
:term_scope=>nil,
|
75
78
|
:sub_jobs=>[
|
76
|
-
{:job=>"CanvasSync::Jobs::SyncProvisioningReportJob", :options=>{:models=>["users", "courses"]
|
79
|
+
{:job=>"CanvasSync::Jobs::SyncProvisioningReportJob", :options=>{:models=>["users", "courses"]}}
|
77
80
|
]
|
78
81
|
}]}
|
79
82
|
]]}
|
@@ -91,8 +94,9 @@ RSpec.describe CanvasSync do
|
|
91
94
|
{:job=>"CanvasSync::JobBatches::ConcurrentBatchJob", :parameters=>[[
|
92
95
|
{:job=>"CanvasSync::Jobs::SyncRolesJob", :options=>{}},
|
93
96
|
{:job=>"CanvasSync::Jobs::SyncTermsJob", :parameters=>[{
|
97
|
+
:term_scope=>"active",
|
94
98
|
:sub_jobs=>[
|
95
|
-
{:job=>"CanvasSync::Jobs::SyncProvisioningReportJob", :options=>{:models=>["courses"]
|
99
|
+
{:job=>"CanvasSync::Jobs::SyncProvisioningReportJob", :options=>{:models=>["courses"]}}
|
96
100
|
]
|
97
101
|
}]}
|
98
102
|
]]}
|
@@ -110,8 +114,9 @@ RSpec.describe CanvasSync do
|
|
110
114
|
{:job=>"CanvasSync::JobBatches::ConcurrentBatchJob", :parameters=>[[
|
111
115
|
{:job=>"CanvasSync::Jobs::SyncRolesJob", :options=>{}},
|
112
116
|
{:job=>"CanvasSync::Jobs::SyncTermsJob", :parameters=>[{
|
117
|
+
:term_scope=>nil,
|
113
118
|
:sub_jobs=>[
|
114
|
-
{:job=>"CanvasSync::Jobs::SyncProvisioningReportJob", :options=>{:models=>["courses"]
|
119
|
+
{:job=>"CanvasSync::Jobs::SyncProvisioningReportJob", :options=>{:models=>["courses"]}}
|
115
120
|
]
|
116
121
|
}]}
|
117
122
|
]]}
|
@@ -129,8 +134,9 @@ RSpec.describe CanvasSync do
|
|
129
134
|
{:job=>"CanvasSync::JobBatches::ConcurrentBatchJob", :parameters=>[[
|
130
135
|
{:job=>"CanvasSync::Jobs::SyncAdminsJob", :options=>{}},
|
131
136
|
{:job=>"CanvasSync::Jobs::SyncTermsJob", :parameters=>[{
|
137
|
+
:term_scope=>"active",
|
132
138
|
:sub_jobs=>[
|
133
|
-
{:job=>"CanvasSync::Jobs::SyncProvisioningReportJob", :options=>{:models=>["courses"]
|
139
|
+
{:job=>"CanvasSync::Jobs::SyncProvisioningReportJob", :options=>{:models=>["courses"]}}
|
134
140
|
]
|
135
141
|
}]}
|
136
142
|
]]}
|
@@ -148,8 +154,9 @@ RSpec.describe CanvasSync do
|
|
148
154
|
{:job=>"CanvasSync::JobBatches::ConcurrentBatchJob", :parameters=>[[
|
149
155
|
{:job=>"CanvasSync::Jobs::SyncAdminsJob", :options=>{}},
|
150
156
|
{:job=>"CanvasSync::Jobs::SyncTermsJob", :parameters=>[{
|
157
|
+
:term_scope=>nil,
|
151
158
|
:sub_jobs=>[
|
152
|
-
{:job=>"CanvasSync::Jobs::SyncProvisioningReportJob", :options=>{:models=>["courses"]
|
159
|
+
{:job=>"CanvasSync::Jobs::SyncProvisioningReportJob", :options=>{:models=>["courses"]}}
|
153
160
|
]
|
154
161
|
}]}
|
155
162
|
]]}
|
@@ -167,9 +174,10 @@ RSpec.describe CanvasSync do
|
|
167
174
|
:parameters => [[
|
168
175
|
{:job=>"CanvasSync::JobBatches::ConcurrentBatchJob", :parameters=>[[
|
169
176
|
{:job=>"CanvasSync::Jobs::SyncTermsJob", :parameters=>[{
|
177
|
+
:term_scope=>nil,
|
170
178
|
:sub_jobs=>[
|
171
179
|
{:job=>"CanvasSync::Jobs::SyncAssignmentsJob", :options=>{}},
|
172
|
-
{:job=>"CanvasSync::Jobs::SyncProvisioningReportJob", :options=>{:models=>["users", "enrollments"]
|
180
|
+
{:job=>"CanvasSync::Jobs::SyncProvisioningReportJob", :options=>{:models=>["users", "enrollments"]}}
|
173
181
|
]
|
174
182
|
}]}
|
175
183
|
]]}
|
@@ -187,9 +195,10 @@ RSpec.describe CanvasSync do
|
|
187
195
|
:parameters => [[
|
188
196
|
{:job=>"CanvasSync::JobBatches::ConcurrentBatchJob", :parameters=>[[
|
189
197
|
{:job=>"CanvasSync::Jobs::SyncTermsJob", :parameters=>[{
|
198
|
+
:term_scope=>nil,
|
190
199
|
:sub_jobs=>[
|
191
200
|
{:job=>"CanvasSync::Jobs::SyncSubmissionsJob", :options=>{}},
|
192
|
-
{:job=>"CanvasSync::Jobs::SyncProvisioningReportJob", :options=>{:models=>["users", "enrollments"]
|
201
|
+
{:job=>"CanvasSync::Jobs::SyncProvisioningReportJob", :options=>{:models=>["users", "enrollments"]}}
|
193
202
|
]
|
194
203
|
}]}
|
195
204
|
]]}
|
@@ -207,9 +216,10 @@ RSpec.describe CanvasSync do
|
|
207
216
|
:parameters => [[
|
208
217
|
{:job=>"CanvasSync::JobBatches::ConcurrentBatchJob", :parameters=>[[
|
209
218
|
{:job=>"CanvasSync::Jobs::SyncTermsJob", :parameters=>[{
|
219
|
+
:term_scope=>nil,
|
210
220
|
:sub_jobs=>[
|
211
221
|
{:job=>"CanvasSync::Jobs::SyncAssignmentGroupsJob", :options=>{}},
|
212
|
-
{:job=>"CanvasSync::Jobs::SyncProvisioningReportJob", :options=>{:models=>["users", "enrollments"]
|
222
|
+
{:job=>"CanvasSync::Jobs::SyncProvisioningReportJob", :options=>{:models=>["users", "enrollments"]}}
|
213
223
|
]
|
214
224
|
}]}
|
215
225
|
]]}
|