pyvmomi
VMware vSphere API Python Bindings
I am trying to restart an ESX management network through Python Pyvmomi.
Even after Google search I did not find any relevant API to do so.
Please help me if there is any API which can restart/stop ESX management network which is managed by VCentre.
Source: (StackOverflow)
I have a task of implementing a basic backup and recovery system within a django app. I have heard of pyvmomi, but never used it before.
My specific tasks at hand is:
1) make a call to a vCenter, pass the vm name, and request to make a snapshot
2) obtain the file location of the snapshot
3) and upload the snapshot file into an OpenStack Swift object store
What is the actual syntax of creating a vm snapshot using pyvmomi?
Also - what is the syntax to request the actual snapshot file from vCenter?
Source: (StackOverflow)
I am using pyvmomi for capturing vcenter events using WaitForUpdatesEx method.
But it is not able to capture vm's reset event as there is no property change in this case.
It is capturing poweron, poweroff, suspend events as state changes for them.
For all other vm related events, i am in constant state of waiting using WaitForUpdatesEx method.
Can anyone help me as i have a case where i want to perform some specific action in case vm reset event has occurred.
Source: (StackOverflow)
I have a lot of VM (dispatch with 2 hosts) and I would like to list all of them.
TO do that, i use this:
atexit.register(connect.Disconnect, self.si)
content = self.si.RetrieveContent()
children = content.rootFolder.childEntity
for child in content.rootFolder.childEntity:
if hasattr(child, 'vmFolder'):
datacenter = child
vmFolder = datacenter.vmFolder
vmList = vmFolder.childEntity
for vm in vmList:
self._getInfosVms(vm)
For my main method with this method:
def _getInfosVms(self, vm, depth = 1, i = 0):
maxdepth = 10
if hasattr(vm, 'childEntity'):
if depth > maxdepth:
return
vmList = vm.childEntity
for c in vmList:
self._getInfosVms(c, depth+1)
return
print(vm.summary)
This code list all basic informations about vms but for some vm I have an error.
I can't display vm.summry but I can print vm.
error:
File "/python_project/packages/pyVmomi/VmomiSupport.py", line 560,
in call
return self.f(*args, **kwargs)
File "/python_project/packages/pyVmomi/VmomiSupport.py", line 383,
in _InvokeAccessor
return self._stub.InvokeAccessor(self, info)
File "/python_project/packages/pyVmomi/StubAdapterAccessorImpl.py",
line 42, in InvokeAccessor
options=self._pcType.RetrieveOptions(maxObjects=1))
File "/python_project/packages/pyVmomi/VmomiSupport.py", line 566,
in
self.f(*(self.args + (obj,) + args), **kwargs)
File "/python_project/packages/pyVmomi/VmomiSupport.py", line 375,
in _InvokeMethod
return self._stub.InvokeMethod(self, info, args)
File "/python_project/packages/pyVmomi/SoapAdapter.py", line 1291,
in InvokeMethod
raise exc
pyVmomi.SoapAdapter.ParserError: 'xml document:
\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03\xedZ[o\xe3\xba\x11~\xdf_A\xf8\xa9\x05"\xcb\xb2|I\x0c\xae\x0e\x12\xc7\xd9\x04\x8d\xb3\x86\x9d\r\x82S\x14\x05-\xd11\x1b\x89\xd4!);>\xbf\xbeCJ\xf2J\xbe\x9d\x05Z\xbf\xe5\xc9\xe2\xcc7\x17\x0e\x87\xd4\x0ce\xfc\xdbG\x12\xa3\x15\x95\x8a\t\xfe\xb5\xe15[\rDy("\xc6\xdf\xbe6~<\xdf9\x97\x8d\xdf\x82/X\t\x92R\xbe\x1a\x8c\xf8\x8a\xc6"\xa5\x08\xc4\xb8\x1a\xe4\xe4\xf0kc\xa9u:p]\x15.iBT\x13\xb8\x86\xd5\x14\xf2\xcd5\x0fn\xa9\xd3m|\xa9\x89\xae~E47\xf9S\xf4CE[\xb1\xf5z\xdd\\\xfb\x16\xddn\xb5<\xf7u\xfc8\xb3\x9a*h\xf6\xd7h\x87q\xa5\t\x0fi\xa32\xd9\x1b\x11m`8\xa5Z2\xba\xa2\x13\t^H\xcd\xa8\x1a}L\xa9J\x05WE\x1c\xbe62\xc9\x07+\x96\xb4\xbb\x8d\x00K\xaaa\xb8"q\x80\xc5\xfc?4\xd4\xca>
\xbdI\xe9\xd7\xc6\x0b\x93:#\xf1\x98\x84K\xc6\xc1\xdc*q<\xaf\x83]@\x048\x05\x133\xaa\x03\xccIB\x03\x95%\t\x91\x1b\xec\xda\x11\x06\x8d\x08&38\xa4g\x96C\xc1\xfa*\xf9\x0bC\xab\x04\\\xcc\xb8fFgDW,\xa4[\xc2L\x13M\x8f\x1a\xb9\xb5\xe0i\x0e}\xe0\x0bQ\xb0GzI%\xa7zHd4\xad(\xb2\xde\xdc2\t!\x98\x10\xbd\xfcFy\xfb:\xd4lE\x83\x05\x89\x155\xae\x1c\xe4\xeeI=pb9SJ\x94\xe0/\t\xcc\xe5)\xd5\x0f\x90SIJ4\x9b\xc7\xf4:"\xa9\xa6\xf2\x19\xbc\xdeW\xbb\'\x8e\xdd\xea|\x03\xfcN7A\xa7\xd5ja\xd7<a\xb7\x8c\xcagt*\xd1\xf1>\xa3s":\xed\xcf\xe8\x9c\x88\x8e\xff\x19\x9d\x13\xd1\xe9|F\xe7Dt\xba\x9f\xd19\x11\x9d\xdegtND\xa7\xff\x19\x9d\x13\xd1\xb9\xfc\x8c\xce\x89\xe8\\\xedFg)\x94.j\xeb{x\x9cm\x94\xa6I#0d\xa7\xe3\xb5\xe1\x147\x8f\x01\x0e\x05\xe7`\x0f\x1a\xaa\\a1\xa6\x11vwY8\x15k*\xf3g\xfbH\xa3\xef\x1c\xbb\x15*^\x90,\xd6\xcf"\xa6\xd2\xb4\'9\x91\x0b=\x14|\xc1\xde2i\xb4\x1e\x82\xe0\x88\xa8\x97\x04Z\x16\x9d\xdb\xb3\x84bH\xa3@\xcb\x0cBS#\xd9a]D\x0b\x11\xab\x07\xd3\x19\xc5\xa0|,
L\x00,\x96\xeb0\x13\xcf\x85\xd0\xcf\xa6\xb7h\xb7\xbc\xae\xd3\xf2\x1c\xaf\xfd\xec\xf9\x83\x967\xe8\xf8\xcd^\xbf\xdf\xefv~\xc7\xee\x16\x85U\xa6\xa0\xd9\x8a\x1e@Z\x9a\x9e\t\x8a\xf0]\x12Nh"\xe4\xe6;\xb4\xa9KJ\xa2\xa0\xd3\xf1\xfd\xaeg^\x9b;\x0c\x9c\x90\x8fa\x9a\xfdP\xe4\r\xec_]\xc1\x12V)\x86=\xb6\x12\xf9\xd8k\x99E\xdb!b\x9e%\xe3w5\xdc\xae\x942.\xed\x13\xa1\xcd\x0b\x05d8Mc\xb2\xc9c\xce\x8a\xcc\x82\x84\xda\xe3a\xc1c\xd3\xa7A\x93\x19\xcd7e\x0c\xebD\x9c0>\xa5\x7fd\x90\xae\xd1\xe8e8\x16\x11\xfd\x07d
I"\xe7M\xd2\xcd\x12B\x1c9\\\xf8\x11\x17k\xf0\xfb
\xd8d\x9f\x121\x8b\x88q\xf3\x89\xd2\xe8\xe7\x8a\x1dba\xb1X\x18\x1f\xee(\x81\xae\x95\x16\x1a\x13\xcau\xbe\x11\xc24cQ3N\x8a\xcd\xb0\xc8aO\xa6!\xfd\xc9\xaaRM\x9b\x9a\xd1\xe0\x06\xb2c0f|\x00mCN\x81\xd9\x1e7\xb58i\xde\xbf}\x9aLGw\xa3\xe7\xe1\xfdQ?j\x98_t\xe8\x90\xd5\xd3\x9e\\\xdf\x8c\x8fz`y\xe7\xb3<\xbe=n\xd9\xf0\xcefy8\x9e\xbc\x0e\xef\xbfy\xbd\x9b\xa3\x0eT!g\xf3c\xf4\xfa|=y\x18\xce&\xc3\xa3~T!g\xf3\xe3\xee\xeeu6=\xeaB\xc1=\x9b\xf5\xc7\xeb\xfb\xbb^\xe7\xa8\xf9\x92}>\xfb\xc77\xc0\xe39\xf3\x7f\xfc0\xbb~|\xf8\xf64\xba\xfd\xf7l6:\xea\xc3.\xec|\xfe\x8c_!\xdb\x8e\xfbQ\xb0\xcff\xff\xe9\xf5\xa8m\xc3:\x9b\xdd\xc9\xf7\xc9\xf0\xe9\xf8\xbcK\xf6\xd9\xecOo\x9fg\xc3\xc9Q\xfb%\xfbl\xf6!\xab\xfc\xa3\xd6s\xe69mw\xaeO\x197\xdc\xff\xc1zY\x08\x07\xf8-\xa3\xa6\x94\xb5?\x0fP@HJ\xe7*\xeau\xbe\x19\x02vKz\x0e\xb8\xcb\xe2\xd8\x9a\xbb\x03\xd8\xcd\xec\x16\xfd\xad\xd7q\xe6L\xff\xbd\x00n\xf9yAi\n\xa2L\x05\xf6\xf9\xfb{QH\x16\xc4\x1c\xf1\x92\x7f\x8f(hV\xc7\xb3\xa1\xff\xe0\t\xe1P\xa4E\x85P\x1dw@\xb6\xfd\xab\xc2\xedB\x1a\
x1a\x16\xce\xf8\xdb\x9e\xe5\x82^\x88\xd6Q\xb61\xb0\xf3K\x17\x8arE\x9b+f4\xaf\xe9\xdc\xc9\x0b\xbc\xe6B\xe6\xcdA\x1e\x05\x96^G\x91\xa4J\x05~\xbf\xd9\xbdjz\xf0\xe3\xb5\xa1X\xfd\xc9("g\xcb9\xa8\xf3\x8b\x0f\x02\xe9bf\xf4\x97\x1f\x04\xa0\xfd\x80\x02So\x1b\xa8\xed\x18Z&\xd3\xedXk\xffL\xc3\xd0i\xb5|\xbf\xd3\xfb\x17*\x1ct\xb7\x8e&\x1f\xa6A\xda\x82\x8bJ{\xc6\xfe\xa4\xe3\x9b\xb2>\xae\x920\xa4\xda\x94*S\x97\xdb\x16\x01J\xe3\x1dJ\xa1b\x07\xb4O4u6T\xe6\x81g\x8bk\xf3d(\xd5\xe6Q\x81\x03\x96Y\'\x1aX\xd1j\xde2\xf5\xae\n\r5\x12\xce`C\x04\x9d\xb6\xef\xf7=\xdfs\x16~\xe49\xddE\x7f\xee\xf4[\xbd\x85\xe3\xfbW\xd0\xaf\xf5.I\xe8A\x0bl\xa1\xb8\xfc\xfe\xf3\xc3\x8c\xba\x10.o\xde%N\xbf\xd7\xf6\x9d\x88\xb4\xe7\x0e\xed\xcdC\xe7\xaa\xdd\x9e\xcf\xfdE\xbf\xe3G
X\x13\xf9\xbfo\x15\xc2\xa1\xcb\xcbCU,;b\n\x11d\xf4_
\x01\r\x12R"\x93!Ea\xa6\xb4H`}"\x141\xa5%\x9bgF\x0c\x89\x05*\xadh\xc2b\x01\x8d\x02Z\x08\x892PE\xac*\xd8\xf8k\xe8\xde\x10\xb4\x1fH\x8a\x0c\xda\xad&z\xe0\x88D\x11\xb3\x1a\xb4@s\n\x89\x0eX\xdb\x92.\xb2\xf8\x02-b\xfaa\x9a\xec\xad\xb8\x05\x14\x1a\xcc\xb3\xc9A\xb0\x93\\
\xa6\x11\xe3a\x9cE\xd4\x98\x8b\x050c\xf0\xd0x&\xa9\xc9Tp(?\x86\x94\xd5\x00fH\xf8\x0e{\x14)\xdb\\#\xd0.\xd6F\xe7"\x93&\t\x10\xfdH\x01H\xe6,fz\x83\xd6LCS\xa4\xad\xc3\x00\x9a\xc7\x82h\xab(\x85\x1e\x16N2\x12#E\xc3L\x1a\xec*\x8b94\xc8V\x92\x81=\x98\x1bhDs\x02\xd1\xa8\x86\xad\x89j\xe1NE\x9a\xc5D\xa2T\n\xf3)\xcf\x9aD\x90\xcb\x14\xa4\tG\x1eJ\x18D\x00b\x15\x895\x07\xfb\x91B\n\xe6\x0c\xd2Z\x99\xc9\xd3\xd4(\xbd\xc8\xbd\x92b\x05\xcb\xc68\nM\xb7\x1c\xc3FG,o\xa0\xedB+\x04\r\xfc\x9b\x9d\xae\x14\tR\x89Y\x9b\xa5H(\x82\xe4_\x0b\xf9\xae\x8c\n\xdb\x9d\xdb5\x99\x0c\xf3\xa8q\xf4:\x17\x1ffF\xe0)\x04\x0fz\xcfT\xc8\\\xe5\x05\xca8\xb3\xdfw\xed\xac\r^\xd8H\n\xf9F8\xfb\xb30\\\xd1kB\xaa\x00\xa7\xcc2\x15\x86Q~\x07\xa2\x9a\xd8\xad\xe4\xa5\xf9\\\x19ea\xf1\x8a*\xbf\x9e\x851Q\xca$\xbc\xbb}*w\x8a\xa5V\x07\x87N5\x08Q$d`\xd2vB%\xbc\x8d
-/\xd0\xe3#\x94\xf4\x05\x0b\x17\xdf\xab\x83v\xb3\xd5\xf4\x9d\xe9\xe8qtmj\xbd\x92\x8c!O\xe3\x97r\xe0\xd6F\xb9\x8a\x1f2\x0e*\x9f\x84\xcb\xe3\x10bR\x1a1\x88r~\xa7\xd0\x15\x08&ij\x7f\xdd\xed\xc36@\xc52\xc3\x8bX\x97M{yj\x1fb\xd9^\xdd\x9e\xfb\xb0\xb5\xa5\xbd\x96\x08E\x920m\xaeXz\xdd\xaew\xd9o\xb5\xdb\x06U\x12q\xc6\x7f\x0e\xbc\x96\xd7\xbf\xea\xf8W\xf6\x8e\xa4\xca\x00\x94Z\x12YW\xb2\xa5a\xf3\xee\x07g\x92\xb4\xb8\xbc\xe9:\xed\xde\xb3\xd7\x1at/\x07\xad^\xb3\xd7\xed\xb7\xbb\x97\xbf\xc3{f\x0b\xc3\xee\xd6?\xf0<|7oD\xf3\xb5\x1bV\x02\xa6\xb4\xbdx\xf1/\xe1\xe5\xb6K\xac\xa0n)\xbc\x9a\xa3]XA\xcd\x0f\xce\xea\x15M\xdf+N\xcb\xda\xbd\x8dy\xbfV\t\x9d^q#WCY\xb9{J\xa4\x9e\xc3\xc9S\xbe\xe7\xe1\x98\xe4\x85\xce]\x1e\xde\x1e\x0e4\x02\xa7Fp\xac\xc0\xce\xb5\xf5\x92\xdf\x05\x7f\x8f\xb3\xab\x92\xb9\x0f5\xe1\xab^Mx\x1f\x01k\x0f\xfb,\xdc\xd1\xda\xed\xf4M\xd4\x0fp\n\xfc\xbe"\xcf\xeb\xb5J\x99\x03fR\xc9\xe0\x9dLs\x0e\x94$\x9e\xc9\xdb*\t\xe7\xf9Q\x8cz](qk\x14\xac\xd6\x90\xf1\xdb\xa1\xb1U#\xe0\xb99\xc7\x05\xaf"vI\xf6\xde*
KhT^\xe6\x95\xeet\xf3{\xab\x03,\xbc\xd0\x8f\xe2\xed\x06rd\xcd"\xbd\x0c\x1cp|\x87\x04\x90\x19\x05\xf1\x88\xc8\xcd#L\x88\x87\x9b\x02\xb6G6\xda\xf2\xc7mR\x90\x8dUX\xa3\x9a}\x98\x9a\x12\xad:\x99=\x1a\xceR{\xa1l\x8d@\x85\xe2\x99\xadc\xbeF\xd4\xe9X\xa9h\xb6\x17\xbb]\x1av\x0f\xec\xadz\xe6\xd6\x89\xb6\xc8\xcfO\x9f\xfc\xdf$\xee\xf6\x7f(n\xe5\xcf)\xee\xa9?\xb6\x04_\xb0\xbb\xf3?\x18w\xf7O@\xc1\x7f\x01\xf4\x96\x1dv>$\x00\x00
parse error at: line:1, col:0'
Thanks for ur help.
Source: (StackOverflow)
i'm currently working on the VMware SDK in python (with Pyvmomi) and I see in all sample or example this line:
atexit.register(Disconnect, self.si)
Does anyone know what does is supposed do ? I don't understand, thanks for ur help.
Source: (StackOverflow)
I've done a good bit of research over the last day or two, both on here and good ole Google and can't seem to find any examples of adding orphaned vms to inventory with pyVmomi(or any other vSphere module for that matter).
Thanks to some examples on github, I was able to FIND the orphaned vms using pyVmomi, but man.. pyVmomi doesn't have any good documentation.
So, now I'm going to post my own question!
Thanks for any tips/help!
-Chris Mulliner
Source: (StackOverflow)
I'm trying to set the IP,NetMask,Gateway and VLAN of a VMWare Instance
so far I have:
si = connectToVCenter('192.168.7.2','nunya','vmware')
content = si.RetrieveContent()
vm = getByName(content,'sfo-lab-cob01')
for device in vm.config.hardware.device:
if isinstance(device, vim.vm.device.VirtualEthernetCard):
nicspec = vim.vm.device.VirtualDeviceSpec()
nicspec.operation = vim.vm.device.VirtualDeviceSpec.Operation.edit
nicspec.device = device
nicspec.device.wakeOnLanEnabled = True
nicspec.device.connectable.startConnected = True
nicspec.device.connectable.allowGuestControl = True
nicspec.device.addressType = 'static'
network = getObj(content,
[vim.dvs.DistributedVirtualPortgroup],
'VLAN324mgmt')
pprint(dir(device))
So what is the directive I'm looking for to set the IP/Gateway/NetMask and VLAN ?
Source: (StackOverflow)
I am trying to deploy OVF to vSphere 5.5 by a python script using pyvmomi
due to an error The operation is not supported on the object
. The deepest I could get into this error was by printing ImportVApp.error
which has this output.
(vmodl.fault.NotSupported) {
dynamicType = <unset>,
dynamicProperty = (vmodl.DynamicProperty) [],
msg = 'The operation is not supported on the object.',
faultCause = <unset>,
faultMessage = (vmodl.LocalizableMessage) []
}
The lease is giving my error after initialising and giving the error above. You can find my script here.
Source: (StackOverflow)
Trying to execute this sample code as I need to create a vm using pyvmomi
.
But the execution fails at the start in from tools import tasks
with the error: ImportError: cannot import name tasks.
I have tried for long but could not resolve the error. I have python 2.7 on centOS 6.4
tools module is installed but do not have tasks.py
inside /usr/local/lib/python2.7/site-packages/tools/
Not sure which tools packages have to be installed.
Please guide.
Source: (StackOverflow)
I am using pyVmomi api to automate some of vshpere stuff, we have recently upgragded vspher5.5 to vsphre6.0 then we started seeing error
MethodNotFound:
(vmodl.fault.MethodNotFound)
{
dynamicType = <unset>,
dynamicProperty = (vmodl.DynamicProperty) [],
msg = <unset>,
faultCause = <unset>,
faultMessage = (vmodl.LocalizableMessage) [],
receiver = 'vim.dvs.VmwareDistributedVirtualSwitch:***',
method = 'LookupPortgroup'
}
When I looked deeper then realize that it has been thrown from
port_group_obj = dvs.LookupDvPortGroup(port_group_key)
Placing entire code for your reference:
def getvmnics(self, vm):
nics = []
host_page_dict = self.get_hosts_port_groups(self.hosts)
for dev in vm.config.hardware.device:
if isinstance(dev, vim.vm.device.VirtualEthernetCard):
dev_backing = dev.backing
if hasattr(dev_backing, 'port'):
port_group_key = dev.backing.port.portgroupKey
dvs_uuid = dev.backing.port.switchUuid
try:
dvs = self.content.dvSwitchManager.QueryDvsByUuid(dvs_uuid)
except:
port_group_name = "** Error: DVS not found **"
vlan_id = "NA"
v_switch = "NA"
else:
port_group_obj = dvs.LookupDvPortGroup(port_group_key)
port_group_name = port_group_obj.config.name
vlan_id = str(port_group_obj.config.defaultPortConfig.vlan.vlanId)
v_switch = str(dvs.name)
else:
port_group_name = dev.backing.network.name
vmHost = vm.runtime.host
# global variable hosts is a list, not a dict
hosts = self.get_vm_hosts
host_pos = hosts.index(vmHost)
viewHost = hosts[host_pos]
# global variable hostPgDict stores portgroups per host
pgs = host_page_dict[viewHost]
for p in pgs:
if port_group_name in p.key:
vlan_id = str(p.spec.vlanId)
v_switch = str(p.spec.vswitchName)
if port_group_name is None:
port_group_name = 'NA'
nics.append({
'mac_address': dev.macAddress,
'portGroup': port_group_name,
'nic_number': dev.deviceInfo.label,
'vSwitch': v_switch,
'VLan': vlan_id
})
return nics
Source: (StackOverflow)
Can you use pyvmomi to track things like when an account hasn't been used for 100days?
What attributes would I need to read up on?
Source: (StackOverflow)
Currently I've got a pice of code that lists all the vmFolder.Childentities
through pyVmomi, these are used to structurize the VM's in vCenter.
But now I want to change the vmFolder of an existing virtual machine.
PS: I can't show any code because I'm currently at work
Source: (StackOverflow)
I know that there are some entries that touch this point but I am yet to find a simple vCenter VM creation example using pyVmomi. There doesn't seem to be a straight forward deploy example in the community samples (https://github.com/vmware/pyvmomi-community-samples) either.
I am looking to deploy a VM from scratch using an OVA or OVF file.
Any help would be much appreciated.
Source: (StackOverflow)
I would like to request a pyvmomi sample which would demonstrate how to to a VM snapshot. What is the Web page that I could use to enter such a request?
Source: (StackOverflow)