Class: RbVmomi::VIM::Task
- Inherits:
-
Object
- Object
- RbVmomi::VIM::Task
- Defined in:
- lib/rbvmomi/vim/Task.rb
Overview
Copyright © 2011-2017 VMware, Inc. All Rights Reserved. SPDX-License-Identifier: MIT
Instance Method Summary collapse
-
#child_tasks ⇒ Array
Get child tasks of this task.
-
#wait_for_childtask_completion ⇒ Hash
Wait for all child tasks to finish.
-
#wait_for_completion ⇒ Object
Wait for a task to finish.
-
#wait_for_progress {|info.progress| ... } ⇒ Object
Wait for a task to finish, with progress notifications.
Instance Method Details
#child_tasks ⇒ Array
Get child tasks of this task.
58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/rbvmomi/vim/Task.rb', line 58 def child_tasks tm = _connection.serviceContent.taskManager col = tm.CreateCollectorForTasks(filter: { rootTaskKey: [self.info.key], }) # XXX: Likely this is not enough and we need to collect pages other # than the latest. tasks = col.latestPage.map{ |x| x.task } col.DestroyCollector() tasks end |
#wait_for_childtask_completion ⇒ Hash
Wait for all child tasks to finish. If any one child task failed, the exception of the first failing task is thrown.
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/rbvmomi/vim/Task.rb', line 23 def wait_for_childtask_completion si = _connection.serviceInstance tasks_props = si.wait_for_multiple_tasks( ['info.state', 'info.result', 'info.error'], self.child_tasks ) Hash[tasks_props.map do |task, props| case props['info.state'] when 'success' [task, props['info.result']] when 'error' raise props['info.error'] end end] end |
#wait_for_completion ⇒ Object
Wait for a task to finish.
9 10 11 12 13 14 15 16 17 |
# File 'lib/rbvmomi/vim/Task.rb', line 9 def wait_for_completion wait_until('info.state') { %w(success error).member? info.state } case info.state when 'success' info.result when 'error' raise info.error end end |
#wait_for_progress {|info.progress| ... } ⇒ Object
Wait for a task to finish, with progress notifications.
43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/rbvmomi/vim/Task.rb', line 43 def wait_for_progress wait_until('info.state', 'info.progress') do yield info.progress if block_given? %w(success error).member? info.state end case info.state when 'success' info.result when 'error' raise info.error end end |