module MiqVimObjectSet

Public Instance Methods

objectSet() click to toggle source

Construct an ObjectSpec to traverse the entire VI inventory tree.

# File lib/VMwareWebService/MiqVimObjectSet.rb, line 5
def objectSet
  #
  # Traverse VirtualApp to Vm.
  #
  virtualAppTs = VimHash.new("TraversalSpec") do |ts|
    ts.name = "virtualAppTraversalSpec"
    ts.type = "VirtualApp"
    ts.path = "vm"
    ts.skip = "false"
  end unless @v2

  #
  # Traverse ResourcePool to ResourcePool and VirtualApp.
  #
  resourcePoolTs = VimHash.new("TraversalSpec") do |ts|
    ts.name      = "resourcePoolTraversalSpec"
    ts.type      = "ResourcePool"
    ts.path      = "resourcePool"
    ts.skip      = "false"
    ts.selectSet = VimArray.new("ArrayOfSelectionSpec") do |ssa|
      ssa << VimHash.new("SelectionSpec") { |ss| ss.name = "resourcePoolTraversalSpec" }
    end
  end

  #
  # Traverse ComputeResource to ResourcePool.
  #
  computeResourceRpTs = VimHash.new("TraversalSpec") do |ts|
    ts.name      = "computeResourceRpTraversalSpec"
    ts.type      = "ComputeResource"
    ts.path      = "resourcePool"
    ts.skip      = "false"
    ts.selectSet = VimArray.new("ArrayOfSelectionSpec") do |ssa|
      ssa << VimHash.new("SelectionSpec") { |ss| ss.name = "resourcePoolTraversalSpec" }
    end
  end

  #
  # Traverse ComputeResource to host.
  #
  computeResourceHostTs = VimHash.new("TraversalSpec") do |ts|
    ts.name = "computeResourceHostTraversalSpec"
    ts.type = "ComputeResource"
    ts.path = "host"
    ts.skip = "false"
  end

  #
  # Traverse Datacenter to host folder.
  #
  datacenterHostTs = VimHash.new("TraversalSpec") do |ts|
    ts.name      = "datacenterHostTraversalSpec"
    ts.type      = "Datacenter"
    ts.path      = "hostFolder"
    ts.skip      = "false"
    ts.selectSet = VimArray.new("ArrayOfSelectionSpec") do |ssa|
      ssa << VimHash.new("SelectionSpec") { |ss| ss.name = "folderTraversalSpec" }
    end
  end

  #
  # Traverse Datacenter to VM folder.
  #
  datacenterVmTs = VimHash.new("TraversalSpec") do |ts|
    ts.name      = "datacenterVmTraversalSpec"
    ts.type      = "Datacenter"
    ts.path      = "vmFolder"
    ts.skip      = "false"
    ts.selectSet = VimArray.new("ArrayOfSelectionSpec") do |ssa|
      ssa << VimHash.new("SelectionSpec") { |ss| ss.name = "folderTraversalSpec" }
    end
  end

  #
  # Traverse Datacenter to Datastore folder.
  #
  datacenterDsFolderTs = VimHash.new("TraversalSpec") do |ts|
    ts.name      = "dcTodf"
    ts.type      = "Datacenter"
    ts.path      = "datastoreFolder"
    ts.skip      = "false"
    ts.selectSet = VimArray.new("ArrayOfSelectionSpec") do |ssa|
      ssa << VimHash.new("SelectionSpec") { |ss| ss.name = "folderTraversalSpec" }
    end
  end

  #
  # Traverse Datacenter to Datastore.
  #
  datacenterDsTs = VimHash.new("TraversalSpec") do |ts|
    ts.name = "datacenterDsTraversalSpec"
    ts.type = "Datacenter"
    ts.path = "datastore"
    ts.skip = "false"
  end

  #
  # Traverse Datacenter to Network folder
  #
  datacenterNetworkFolderTs = VimHash.new("TraversalSpec") do |ts|
    ts.name = "dcTonf"
    ts.type = "Datacenter"
    ts.path = "networkFolder"
    ts.skip = "false"
    ts.selectSet = VimArray.new("ArrayOfSelectionSpec") do |ssa|
      ssa << VimHash.new("SelectionSpec") { |ss| ss.name = "folderTraversalSpec" }
    end
  end

  #
  # Traverse Folder to children.
  #
  folderTs = VimHash.new("TraversalSpec") do |ts|
    ts.name      = "folderTraversalSpec"
    ts.type      = "Folder"
    ts.path      = "childEntity"
    ts.skip      = "false"
    ts.selectSet = VimArray.new("ArrayOfSelectionSpec") do |ssa|
      ssa << VimHash.new("SelectionSpec") { |ss| ss.name = "folderTraversalSpec" }
      ssa << datacenterHostTs
      ssa << datacenterVmTs
      ssa << datacenterDsTs
      ssa << datacenterDsFolderTs
      ssa << datacenterNetworkFolderTs
      ssa << computeResourceRpTs
      ssa << computeResourceHostTs
      ssa << resourcePoolTs
      ssa << virtualAppTs unless @v2
    end
  end

  aOobjSpec = VimArray.new("ArrayOfObjectSpec") do |osa|
    osa << VimHash.new("ObjectSpec") do |os|
      os.obj       = @sic.rootFolder
      os.skip      = "false"
      os.selectSet = VimArray.new("ArrayOfSelectionSpec") { |ssa| ssa << folderTs }
    end

    if isVirtualCenter
      osa << VimHash.new("ObjectSpec") do |os|
        os.obj = @sic.licenseManager
      end
      osa << VimHash.new("ObjectSpec") do |os|
        os.obj = @sic.extensionManager
      end
    end
  end

  (aOobjSpec)
end