Sha256: 50a409f52e606aff6a3ca5ff8bb6d786621fa52e3cb0a8c434963a54dfe5ad43

Contents?: true

Size: 1.93 KB

Versions: 28

Compression:

Stored size: 1.93 KB

Contents

# Copyright (c) 2011-2017 VMware, Inc.  All Rights Reserved.
# SPDX-License-Identifier: MIT

class RbVmomi::VIM::ServiceInstance
  # Retrieve a Datacenter.
  # If no path is given the first datacenter will be returned.
  # @param path (see Folder#traverse)
  # @return [Datacenter]
  def find_datacenter path=nil
    if path
      content.rootFolder.traverse path, RbVmomi::VIM::Datacenter
    else
      content.rootFolder.childEntity.grep(RbVmomi::VIM::Datacenter).first
    end
  end

  # Wait for several tasks to complete.
  # @param interested [Array] Property paths to watch for updates.
  # @param tasks [Array] Tasks to wait on.
  # @yield [Hash] Called when a property is updated on a task.
  #               The parameter is a hash from tasks to hashes from
  #               property path to value.
  # @return [void]
  def wait_for_multiple_tasks interested, tasks
    version = ''
    interested = (interested + ['info.state']).uniq
    task_props = Hash.new { |h,k| h[k] = {} }

    filter = _connection.propertyCollector.CreateFilter :spec => {
      :propSet => [{ :type => 'Task', :all => false, :pathSet => interested }],
      :objectSet => tasks.map { |x| { :obj => x } },
    }, :partialUpdates => false

    begin
      until task_props.size == tasks.size and task_props.all? { |k,h| %w(success error).member? h['info.state'] }
        result = _connection.propertyCollector.WaitForUpdates(:version => version)
        version = result.version
        os = result.filterSet[0].objectSet

        os.each do |o|
          changes = Hash[o.changeSet.map { |x| [x.name, x.val] }]

          interested.each do |k|
            task = tasks.find { |x| x._ref == o.obj._ref }
            task_props[task][k] = changes[k] if changes.member? k
          end
        end

        yield task_props if block_given?
      end
    ensure
      _connection.propertyCollector.CancelWaitForUpdates
      filter.DestroyPropertyFilter
    end

    task_props
  end
end

Version data entries

28 entries across 26 versions & 3 rubygems

Version Path
rbvmomi2-3.0.0 lib/rbvmomi/vim/ServiceInstance.rb
rbvmomi-3.0.0 lib/rbvmomi/vim/ServiceInstance.rb
rbvmomi-2.4.1 lib/rbvmomi/vim/ServiceInstance.rb
rbvmomi-2.4.0 lib/rbvmomi/vim/ServiceInstance.rb
rbvmomi-2.3.1 lib/rbvmomi/vim/ServiceInstance.rb
rbvmomi-2.3.0 lib/rbvmomi/vim/ServiceInstance.rb
rbvmomi-2.3.0.beta1 lib/rbvmomi/vim/ServiceInstance.rb
rbvmomi-2.2.0 lib/rbvmomi/vim/ServiceInstance.rb
rbvmomi-2.1.2 lib/rbvmomi/vim/ServiceInstance.rb
rbvmomi-2.1.1 lib/rbvmomi/vim/ServiceInstance.rb
rbvmomi-2.1.0 lib/rbvmomi/vim/ServiceInstance.rb
rbvmomi-2.0.1 lib/rbvmomi/vim/ServiceInstance.rb
rbvmomi-2.0.0 lib/rbvmomi/vim/ServiceInstance.rb
vagrant-packet-0.1.1 vendor/bundle/ruby/2.4.0/gems/rbvmomi-1.13.0/lib/rbvmomi/vim/ServiceInstance.rb
vagrant-packet-0.1.1 vendor/bundle/ruby/2.5.0/gems/rbvmomi-1.13.0/lib/rbvmomi/vim/ServiceInstance.rb
vagrant-packet-0.1.1 vendor/bundle/ruby/2.3.0/gems/rbvmomi-1.13.0/lib/rbvmomi/vim/ServiceInstance.rb
rbvmomi-1.13.0 lib/rbvmomi/vim/ServiceInstance.rb
rbvmomi-1.12.0 lib/rbvmomi/vim/ServiceInstance.rb
rbvmomi-1.11.7 lib/rbvmomi/vim/ServiceInstance.rb
rbvmomi-1.11.6 lib/rbvmomi/vim/ServiceInstance.rb