Skip to content

Instantly share code, notes, and snippets.

@johnf
Created May 31, 2012 06:39
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save johnf/2841513 to your computer and use it in GitHub Desktop.
Save johnf/2841513 to your computer and use it in GitHub Desktop.
name = 'mp-tst-02'
vim = @compute.instance_variable_get :@connection
rootFolder = vim.serviceInstance.content.rootFolder
propertyCollector = vim.serviceInstance.content.propertyCollector
# Traversal to get to the vmFolder from DataCenter
dataCenterToVMFolder = RbVmomi::VIM::TraversalSpec(
:name => 'DataCenterToVMFolder',
:type => 'Datacenter',
:path => 'vmFolder',
:skip => false,
:selectSet => [ RbVmomi::VIM::SelectionSpec(:name => 'VisitFolders') ]
);
# TraversalSpec to get to the DataCenter from rootFolder
traversalSpec = RbVmomi::VIM::TraversalSpec(
:name => 'VisitFolders',
:type => 'Folder',
:path => 'childEntity',
:skip => false,
:selectSet => [ RbVmomi::VIM::SelectionSpec(:name => 'VisitFolders'), dataCenterToVMFolder]
)
propertySpec = RbVmomi::VIM::PropertySpec(
:all => false,
:pathSet => ['name'],
:type => 'VirtualMachine',
)
objectSpec = RbVmomi::VIM::ObjectSpec(
:obj => rootFolder,
:skip => true,
:selectSet => [traversalSpec]
)
propertyFilterSpec = RbVmomi::VIM::PropertyFilterSpec(
:objectSet => [objectSpec],
:propSet => [propertySpec],
)
results = propertyCollector.RetrieveProperties :specSet => [propertyFilterSpec]
vm = results.find do |r|
name_prop = r.props[:propSet].find {|x| x.name == 'name'}
name_prop.val == name
end.obj
p vm
vm.PowerOnVM_Task
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment