forked from ManageIQ/manageiq
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathkill_provision.rb
26 lines (22 loc) · 1.14 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
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.find(:all, :conditions => {: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.find(:all, :conditions => {: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."