-
Notifications
You must be signed in to change notification settings - Fork 900
/
Copy pathkill_provision.rb
executable file
·29 lines (24 loc) · 1.18 KB
/
kill_provision.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/usr/bin/env ruby
require File.expand_path('../config/environment', __dir__)
st = Time.now
@stop_message = "Provisioning stopped by external script."
@processed = []
def kill_provision_task(prov_id, queue)
puts "Found Queue ID:#{queue.id} - #{queue.class_name}:#{queue.instance_id} - #{queue.method_name}"
queue.destroy
prov = MiqProvision.find_by(:id => prov_id)
prov.update_and_notify_parent(:state => "finished", :status => "Error", :message => @stop_message)
@processed << prov_id unless @processed.include?(prov_id)
end
args = $ARGV.join(',').gsub(',,', ',').split(',').uniq
provisions = args.collect { |a| a =~ /miq_provision_(\d*)/ ? $1.to_i : a.to_i }
puts "Checking for provisions IDs:<#{provisions.inspect}>"
provisions.each do |prov_id|
MiqQueue.where(:method_name => 'do_post_provision', :class_name => 'MiqProvision', :instance_id => prov_id, :state => 'ready').each do |queue|
kill_provision_task(prov_id, queue)
end
MiqQueue.where(:task_id => "miq_provision_#{prov_id}", :state => 'ready').each do |queue|
kill_provision_task(prov_id, queue)
end
end
puts "Successfully processed <#{@processed.length}> of <#{provisions.length}> in #{Time.now - st} seconds."